Skip to main content

Class: UnnestSubqueries

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:37

Replaces eligible nested operators with plan.ProjectionConcat.

Implements

Constructors

Constructor

new UnnestSubqueries(db): UnnestSubqueries

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:56

Parameters

ParameterTypeDescription
dbDortDBAsFriendInternal database interface.

Returns

UnnestSubqueries

Properties

calcBuilders

protected calcBuilders: Record<string, PlanVisitor<CalculationParams>>

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:52

Per-language calculation-builder visitor instances.


db

protected db: DortDBAsFriend

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:58

Internal database interface.


eqCheckers

protected eqCheckers: Record<string, EqualityChecker>

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:54

Per-language equality-checker visitor instances.


operator

operator: (typeof Selection | typeof Projection | typeof GroupBy | typeof OrderBy | typeof Distinct)[]

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:41

The operator this rule starts matching at.

Implementation of

PatternRule.operator


tdepsVmap

protected tdepsVmap: Record<string, TransitiveDependencies>

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:50

Per-language transitive-dependency visitor instances.

Methods

isGuaranteedValue()

protected isGuaranteedValue(node): boolean

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:157

Returns true when node is guaranteed to produce at least one result, allowing the outer join to be skipped.

Parameters

ParameterType
nodePlanOperator

Returns

boolean


match()

match(node): PatternRuleMatchResult<UnnestSubqueriesBindings>

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:65

Matches the given plan operator against this rule.

Parameters

ParameterTypeDescription
nodeTupleOperatorWithSourceThe plan operator to match.

Returns

PatternRuleMatchResult<UnnestSubqueriesBindings>

Implementation of

PatternRule.match


removeSubq()

protected removeSubq(calc, argI, newAttr): void

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:124

Replaces the sub-operator at argument position argI in calc with a reference to the synthetic newAttr.

Parameters

ParameterType
calcCalculation
argInumber
newAttrASTIdentifier

Returns

void


transform()

transform(node, bindings): PlanOperator

Defined in: packages/core/src/optimizer/rules/unnest-subqueries.ts:86

Transforms the given plan operator using the provided bindings.

Parameters

ParameterTypeDescription
nodeTupleOperatorWithSourceThe plan operator to transform.
bindingsUnnestSubqueriesBindingsThe bindings to use for the transformation.

Returns

PlanOperator

Implementation of

PatternRule.transform