Skip to content

yggdrasil.plan.nodes

nodes

Immutable plan-node tree for SQL-like execution plans.

Each node is a frozen dataclass describing one relational operation. Composite plans (CTEs, subqueries, joins) compose by nesting nodes.

The tree is pure data — execution lives in :mod:execute, SQL emission in :mod:emitters.sql, parsing in :mod:parsers.

PlanNode

Abstract base for all plan nodes.

Subclasses are frozen dataclasses. The base provides :meth:from_sql and :meth:to_sql hooks so every node can round-trip through SQL.

from_sql classmethod

from_sql(
    sql: str, dialect: "Dialect | str | None" = None, default: "Any" = ...
) -> "PlanNode | Any"

Parse SQL into a plan node. Returns default on failure when default is not ...; raises otherwise.

ScanNode dataclass

ScanNode(
    name: str | None = None,
    tabular: "Tabular | None" = None,
    alias: str | None = None,
)

Bases: PlanNode

Leaf — references a named table or a concrete Tabular.

from_sql classmethod

from_sql(
    sql: str, dialect: "Dialect | str | None" = None, default: "Any" = ...
) -> "PlanNode | Any"

Parse SQL into a plan node. Returns default on failure when default is not ...; raises otherwise.

SelectNode dataclass

SelectNode(
    projections: list[Any] = list(),
    from_clause: FromItem | PlanNode | None = None,
    where: "Predicate | None" = None,
    group_by: list[Any] | None = None,
    having: "Predicate | None" = None,
    qualify: "Predicate | None" = None,
    order_by: list[Any] | None = None,
    limit: int | None = None,
    offset: int | None = None,
    distinct: bool = False,
    ctes: list[CTE] | None = None,
    set_ops: list[SetOp] | None = None,
    lateral_views: list[LateralViewItem] | None = None,
)

Bases: PlanNode

SELECT [DISTINCT] projections FROM source [WHERE ...] [GROUP BY ...] ...

from_sql classmethod

from_sql(
    sql: str, dialect: "Dialect | str | None" = None, default: "Any" = ...
) -> "PlanNode | Any"

Parse SQL into a plan node. Returns default on failure when default is not ...; raises otherwise.

InsertNode dataclass

InsertNode(
    target: TableRef | None = None,
    columns: list[str] | None = None,
    source: PlanNode | None = None,
    values: list[list[Any]] | None = None,
)

Bases: PlanNode

INSERT INTO target [(columns)] source_plan | VALUES (...)

from_sql classmethod

from_sql(
    sql: str, dialect: "Dialect | str | None" = None, default: "Any" = ...
) -> "PlanNode | Any"

Parse SQL into a plan node. Returns default on failure when default is not ...; raises otherwise.

MergeNode dataclass

MergeNode(
    target: TableRef | None = None,
    source: PlanNode | FromItem | None = None,
    on: "Predicate | None" = None,
    when_matched: list[Any] | None = None,
    when_not_matched: list[Any] | None = None,
)

Bases: PlanNode

MERGE INTO target USING source ON condition WHEN ...

from_sql classmethod

from_sql(
    sql: str, dialect: "Dialect | str | None" = None, default: "Any" = ...
) -> "PlanNode | Any"

Parse SQL into a plan node. Returns default on failure when default is not ...; raises otherwise.