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
| Parameter | Type | Description |
|---|---|---|
db | DortDBAsFriend | Internal database interface. |
Returns
MergeProjections
Properties
calcBuilderVmap
protectedcalcBuilderVmap:Record<string,PlanVisitor<CalculationParams>>
Defined in: packages/core/src/optimizer/rules/merge-projections.ts:38
Per-language calculation-builder visitor instances.
db
protecteddb:DortDBAsFriend
Defined in: packages/core/src/optimizer/rules/merge-projections.ts:44
Internal database interface.
eqCheckersVmap
protectedeqCheckersVmap: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
tdepsVmap
protectedtdepsVmap:Record<string,TransitiveDependencies>
Defined in: packages/core/src/optimizer/rules/merge-projections.ts:36
Per-language transitive-dependency visitor instances.
Methods
calcToFnCall()
protectedcalcToFnCall(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
| Parameter | Type |
|---|---|
calc | Calculation |
args | OpOrId[] |
Returns
canMergeIntoOne()
protectedcanMergeIntoOne(a,b,projMap,calcInputDeps): [boolean, [Calculation|ASTIdentifier,ASTIdentifier][]]
Defined in: packages/core/src/optimizer/rules/merge-projections.ts:170
Parameters
| Parameter | Type |
|---|---|
a | Projection |
b | Projection |
projMap | ProjMap |
calcInputDeps | Map<Calculation, IdSet> |
Returns
[boolean, [Calculation | ASTIdentifier, ASTIdentifier][]]
[canMerge, attributes of b that are not filtered out by a]
getCalcInputDeps()
protectedgetCalcInputDeps(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
| Parameter | Type |
|---|---|
calc | Calculation |
Returns
getNewCalc()
protectedgetNewCalc(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
| Parameter | Type |
|---|---|
calc | Calculation |
projMap | ProjMap |
Returns
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
| Parameter | Type | Description |
|---|---|---|
node | Projection | The plan operator to match. |
Returns
PatternRuleMatchResult<MergeProjectionsBindings>
Implementation of
mergeProjections()
protectedmergeProjections(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
| Parameter | Type |
|---|---|
a | Projection |
b | Projection |
Returns
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
| Parameter | Type | Description |
|---|---|---|
node | Projection | The plan operator to transform. |
bindings | MergeProjectionsBindings | The bindings to use for the transformation. |