You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: reframe operators as query primitives, not SQL mappings
Remove SQL-centric framing from operator table — operations are
code-first primitives, not SQL translations. Add HAVING as composition
example, mark vector NEAR and sample as planned, add SQL→AST→operators
as future frontend layer.
Copy file name to clipboardExpand all lines: README.md
+49-18Lines changed: 49 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -50,24 +50,49 @@ Your app code IS the query execution. The WASM engine is a library function your
50
50
51
51
## Query engine as code
52
52
53
-
Every SQL clause is a composable code primitive. They all implement the same pull-based `Operator` interface — `next() → RowBatch | null` — so you chain them however you want, not how a SQL planner decides.
53
+
Every query operation is a composable code primitive. They all implement the same pull-based `Operator` interface — `next() → RowBatch | null` — so you chain them however you want.
54
54
55
55
```
56
-
SQL clause Operator class What it does
56
+
Operation Operator class What it does
57
57
───────── ────────────── ────────────
58
-
WHERE FilterOperator Predicate pushdown on rows
59
-
SELECT ProjectOperator Column projection
60
-
ORDER BY ExternalSortOperator Disk-spilling merge sort
For users who prefer SQL syntax, a future layer can parse SQL into an AST and compile it to operator composition — same zero-copy pipeline underneath, SQL is just another frontend.
163
+
133
164
### Why this matters
134
165
135
-
Traditional engines give you SQL or a DataFrame API. You can't put a window function before a join, run custom logic between pipeline stages, or swap the sort implementation. The planner decides.
166
+
Traditional engines give you a fixed query language. You can't put a window function before a join, run custom logic between pipeline stages, or swap the sort implementation. The planner decides.
136
167
137
168
With QueryMode, operators are building blocks. Your code assembles the pipeline, controls the memory budget, decides when to spill. The query engine isn't a service you call — it's a library your code composes.
0 commit comments