Skip to content

yggdrasil.plan.sql_parser

sql_parser

Full SQL query parser → plan nodes.

Reuses the tokenizer from :mod:yggdrasil.execution.expr.backends.sql and extends the grammar from predicate-only to full SELECT/INSERT/MERGE statements with CTEs, JOINs, GROUP BY, ORDER BY, HAVING, LATERAL VIEW, window functions, function calls, CASE WHEN, and set operations.

Dialect-aware: the base parser handles ANSI + common extensions. :class:DatabricksSQLParser (in :mod:databricks) adds Databricks specifics (LATERAL VIEW EXPLODE, date_trunc, etc.).

SQLQueryParser

SQLQueryParser(sql: str, dialect: Dialect)

Recursive-descent parser for full SQL queries.

parse_sql

parse_sql(
    sql: str,
    *,
    dialect: "Dialect | str | None" = None,
    parser_class: type[SQLQueryParser] | None = None,
    default: "Any" = ...
) -> "PlanNode | Any"

Parse a SQL query string into a :class:PlanNode tree.

When default is ... (the sentinel), parsing errors raise :class:ValueError. When default is anything else, parsing errors return default instead.