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