Skip to main content

Class: MergeProjections

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:30

Merge multiple projections into a single projection.

Implements​

Constructors​

Constructor​

new MergeProjections(db): MergeProjections

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:42

Parameters​

ParameterTypeDescription
dbDortDBAsFriendInternal database interface.

Returns​

MergeProjections

Properties​

calcBuilderVmap​

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

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:38

Per-language calculation-builder visitor instances.


db​

protected db: DortDBAsFriend

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:44

Internal database interface.


eqCheckersVmap​

protected eqCheckersVmap: Record<string, EqualityChecker>

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:40

Per-language equality-checker visitor instances.


operator​

operator: typeof Projection = plan.Projection

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:34

The operator this rule starts matching at.

Implementation of​

PatternRule.operator


tdepsVmap​

protected tdepsVmap: Record<string, TransitiveDependencies>

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:36

Per-language transitive-dependency visitor instances.

Methods​

calcToFnCall()​

protected calcToFnCall(calc, args): FnCall

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:118

Rebuilds a plan.FnCall from a calculation template with a new argument list, preserving aggregate metadata.

Parameters​

ParameterType
calcCalculation
argsOpOrId[]

Returns​

FnCall


canMergeIntoOne()​

protected canMergeIntoOne(a, b, projMap, calcInputDeps): [boolean, [Calculation | ASTIdentifier, ASTIdentifier][]]

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:170

Parameters​

ParameterType
aProjection
bProjection
projMapProjMap
calcInputDepsMap<Calculation, IdSet>

Returns​

[boolean, [Calculation | ASTIdentifier, ASTIdentifier][]]

[canMerge, attributes of b that are not filtered out by a]


getCalcInputDeps()​

protected getCalcInputDeps(calc): IdSet

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:218

Returns the union of transitive dependencies of all sub-operator arguments of calc.

Parameters​

ParameterType
calcCalculation

Returns​

IdSet


getNewCalc()​

protected getNewCalc(calc, projMap): Calculation

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:138

Substitutes identifiers in calc using projMap and rebuilds the calculation.

Parameters​

ParameterType
calcCalculation
projMapProjMap

Returns​

Calculation


match()​

match(node): PatternRuleMatchResult<MergeProjectionsBindings>

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:51

Matches the given plan operator against this rule.

Parameters​

ParameterTypeDescription
nodeProjectionThe plan operator to match.

Returns​

PatternRuleMatchResult<MergeProjectionsBindings>

Implementation of​

PatternRule.match


mergeProjections()​

protected mergeProjections(a, b): Projection

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:76

Merges the inner projection b into the outer projection a, returning the surviving projection.

Parameters​

ParameterType
aProjection
bProjection

Returns​

Projection


transform()​

transform(node, bindings): PlanOperator

Defined in: packages/core/src/optimizer/rules/merge-projections.ts:63

Transforms the given plan operator using the provided bindings.

Parameters​

ParameterTypeDescription
nodeProjectionThe plan operator to transform.
bindingsMergeProjectionsBindingsThe bindings to use for the transformation.

Returns​

PlanOperator

Implementation of​

PatternRule.transform