Playground #
Search the teaching dataset right on this page — the Pizza engine compiled
to WebAssembly runs in your browser, and nothing you type leaves the page.
Queries use Pizza’s
canonical DSL,
and the results are engine-level output (no gateway envelope: no _key,
_shards or _collection wrappers; the engine’s parsed_query plan
string appears only behind the result panel’s debug 🐛 toggle).
Flip the editor to SQL to run SELECT statements through the engine’s
SQL frontend — the same parse/lower/shape
path the /_sql gateway wire rides. The example chips load per-dataset
statements covering the subset (filters, MATCH/SCORE()/HIGHLIGHT,
KNN, CASE, scalar functions, GROUP BY with DATE_TRUNC/HISTOGRAM
bucketing, COUNT(DISTINCT), $1 parameters, an EXPLAIN chip showing
the compiled DSL plan — and one deliberately rejected statement to show
a positioned plan error). SQL answers render as
the gateway’s frozen columns/rows envelope — a typed table, with a
raw JSON view one click away. The composite cursor walk chip shows
keyset paging: a full grouped page hands back a cursor, and Next page
resubmits the identical statement with it — exactly what /_sql’s
cursor request field does.
The same widget embeds across the documentation, not just on this page:
every
tutorial lesson pairs its DSL examples
with the SQL spelling of the same question wherever the
SQL subset reaches — a
▶ Try it live (SQL) button runs the statement through this identical
wasm lane (the relations and geo lessons mark what stays DSL-side).
Widgets that carry both spellings show a DSL | SQL toggle next to the
Run button — the default lane is DSL, the switch keeps each side’s
edits, and Run follows the lane you are on.
The data #
The playground mounts the teaching dataset as pre-built read-only segments — the same deterministic data behind every example in this documentation:
| Collection | Docs | Good for |
|---|---|---|
sales | 120 | metric aggregations, histograms, terms, ranges |
logs | 150 | full-text match/phrase, fuzzy/wildcard/regexp/suffix |
products | 30 | nested queries, in-place columns |
customers | 20 | join queries, terms |
places | 15 | geo queries |
articles | 44 | custom analyzers, graph traversal |
embeddings | 24 | vector search (three 8-dim clusters) |
If something is missing #
The widget explains itself when the wasm bundle or the dataset segments have not been built yet — from a source checkout that is:
make dataset-seed # load the dataset into a local node
make dataset-fire # export read-only segments for the browser
make wasm # build the wasm engine bundle
Write-path, cluster and operations APIs are not part of the playground — they need a real node; see the references. The relational story (joins, references, FK-routed writes, salting) lives there too — Lesson 8 — joins walks it step by step.