Skip to Content

This matrix describes the current SQL path used by spiral sql and SpiralSession::sql_statement. The parser may accept additional syntax before the binder rejects it.

FeatureStatusNotes
SELECTSupportedOne FROM relation or left-deep join chain, one table function, or no FROM.
DuckDB-style FROM-first querySupportedFROM t SELECT a WHERE b.
TABLE nameSupportedResolves a registered table relation.
VALUESSupportedLiteral rows only; output columns are column1, column2, and so on.
Table referencesSupportedRegistered relation catalog entries. In the SQL REPL, local .open and schema-created tables live under the memory catalog.
Table aliasesSupportedCatalog table aliases do not support column alias lists. CTE definitions, derived tables, and CTE references can rename output columns.
Table functionsSupportedRegistered source functions and logical relation functions; positional and named arguments are bound, but each function owns its own argument contract.
Metadata table functionsSupportedspql.meta.table_functions, source_functions, scalar_functions, aggregate_functions, extension_types, and copy_formats.
Local file table functionsSupportedspql.vortex.read, spql.arrow.read_ipc, spql.parquet.read; path arguments must be literal strings.
Hugging Face handle functionSupportedhf.dataset returns one provenance/handle row; it does not fetch Hub rows yet.
WHERESupportedPredicate must bind to boolean.
Projection expressionsSupportedColumn references, scalar expressions, aliases, and unqualified *.
Catalog child projection traversalSupported for registered relationship edgesMultipart projection paths can auto-join child relations when the catalog exposes compatible edges.
Qualified wildcardNot yet boundWildcard options such as EXCLUDE, REPLACE, and RENAME are rejected.
GROUP BYSupportedField references and scalar expressions. GROUP BY ALL is rejected.
AggregatesSupportedDirect aggregate calls in projection and aggregate calls in HAVING; count(*) is supported.
Aggregate nested projection expressionsNot yet boundsum(x) + 1 in projection is rejected; use a derived table or CTE.
HAVINGSupportedAggregate queries only.
ORDER BYSupportedOutput columns and scalar expressions. Without LIMIT, only ascending NULLS FIRST ordering is supported.
ORDER BY plus finite LIMITSupportedLowers to Top-K and supports descending order and null placement.
LIMIT / OFFSETSupportedInteger literals only.
Scalar function callsSupportedCatalog-resolved calls with positional or named arguments.
Async scalar callsSupportedSupported in scalar relational contexts; currently executed sequentially per morsel.
Function modifiersNot yet boundFunction parameters, DISTINCT, FILTER, call-level ORDER BY, and OVER are rejected.
CastsSupportedPrimitive, decimal, and registered extension dtype factory targets; TRY_CAST is rejected.
Searched CASEPartialOne WHEN branch plus required ELSE.
BETWEEN, IS NULL, IS NOT NULLSupportedNOT BETWEEN rewrites through NOT; other IS predicates are rejected.
EXPLAINSupportedText and Graphviz formats.
EXPLAIN ANALYZESupportedText format.
CREATE VIEWSupportedBinds the query immediately and stores the bound logical plan in the session catalog.
CREATE TABLE name AS querySupportedMaterializes the query result into a session-local in-memory table.
CREATE TABLE name (...)REPL-localIn-memory tables only.
INSERTREPL-localLiteral VALUES into in-memory tables.
COPY TOSupportedLocal file targets; Vortex by default, Arrow IPC when the CLI Arrow plugin is registered.
SET traceSupportedtrace, trace.output, trace.level, and trace.next.
USE namespaceSupportedUSE CATALOG, USE PROJECT, and USE DATASET.
Explicit SQL joinsPartialLeft-deep INNER JOIN ... ON chains over field-reference equality predicates. USING, NATURAL, outer/semi/anti joins, residual ON filters, computed join keys, duplicate output field names, and duplicate join aliases are rejected.
CTEsSupportedNon-recursive CTEs are bound inline. Recursive CTEs are rejected.
Derived tablesSupportedNon-lateral subqueries in FROM are bound inline. Lateral derived tables are rejected.
DISTINCTNot yet boundParser conversion exists, binder rejects distinct select.
Set operationsNot yet boundParser conversion exists, binder rejects set operations.
QUALIFYNot yet boundRejected.
Window functionsNot yet boundFunction OVER is rejected.
Subquery expressionsNot yet boundEXISTS, scalar subqueries, and IN (SELECT ...) are represented but rejected.
LIKE and ILIKESupportedPlain and NOT forms bind to the Vortex LIKE kernel; ANY, ESCAPE, SIMILAR TO, and RLIKE are not supported.
Tuples, arraysNot yet boundRejected by scalar expression binding.

Statement boundaries

The REPL accepts one SQL statement per submission. End SQL with ;:

SELECT 1;

Do not submit two statements at once:

SELECT 1; SELECT 2;

That returns expected one statement.

Last updated on