Getting Started
This page walks through installing Ferret as a Go dependency, running a query, and working with the result.
Installation
Add the module to your project:
go get github.com/MontFerret/ferret/v2
Running a query
The simplest way to execute a query is engine.Run. It compiles the source, runs it in a fresh session, and returns the encoded output.
source.NewAnonymous wraps a query string into a *source.Source. For named sources use source.New(name, text) — the name appears in error messages and debug output.
Compiling and reusing a plan
When the same query runs many times — with different parameters, in different goroutines, or on a schedule — compile it once and create sessions from the resulting plan:
The plan manages an internal pool of virtual machines. Sessions borrow a VM from the pool and return it on close, so creating many sessions from the same plan is efficient.
Passing parameters
Parameters let the host application inject values into a query at runtime. In FQL, parameters are referenced with the @ prefix.
Engine-level parameters apply to every session:
Session-level parameters override engine defaults for a single execution:
You can inspect which parameters a compiled query declares:
See Parameters for the full parameter API.
Handling errors
Ferret returns standard Go errors. Compilation errors include source location information:
Runtime errors from query execution are returned by session.Run:
Context cancellation and timeouts work as expected:
The VM observes cancellation at structural execution boundaries rather than polling every native operation. Blocking host functions, iterators, queries, streams, and other context-aware capabilities receive this same context and must observe it while they retain control. Cancellation and deadline errors propagate to the caller and cannot be suppressed by FQL error recovery.