Skip to main content

Class: VariableMapper

Defined in: packages/core/src/visitors/variable-mapper.ts:43

Translates identifiers used in the query plan into numerical indices. The executor may then represent a scope using an array instead of a map.

Extended by​

Implements​

Constructors​

Constructor​

new VariableMapper(vmap): VariableMapper

Defined in: packages/core/src/visitors/variable-mapper.ts:44

Parameters​

ParameterTypeDescription
vmapRecord<string, PlanVisitor<void, VariableMapperCtx>>Per-language visitor map used for recursive descent.

Returns​

VariableMapper

Properties​

vmap​

protected vmap: Record<string, PlanVisitor<void, VariableMapperCtx>>

Defined in: packages/core/src/visitors/variable-mapper.ts:46

Per-language visitor map used for recursive descent.

Methods​

mapVariables()​

mapVariables(plan): VariableMapperCtx

Defined in: packages/core/src/visitors/variable-mapper.ts:54

Traverses plan and returns a fully populated VariableMapperCtx in which every named identifier has been replaced with a numeric index. The resulting context is passed to Executor.execute to drive array-based scope lookups.

Parameters​

ParameterType
planPlanOperator

Returns​

VariableMapperCtx


removeFromCurrScope()​

protected removeFromCurrScope(attr, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:107

Removes an identifier from the current scope. For example, a projection may drop an attribute, and it should no longer be visible in the current scope. Instead, a previously shadowed variable may now be visible.

Parameters​

ParameterType
attrASTIdentifier
ctxVariableMapperCtx

Returns​

void


setTranslations()​

protected setTranslations(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:141

Snapshots the current scope stack into ctx.translations for operator, recording both the operator's own scope (top of stack) and the merged external view.

Parameters​

ParameterType
operatorPlanOperator
ctxVariableMapperCtx

Returns​

void


translate()​

protected translate(attr, ctx, depth?): ASTIdentifier

Defined in: packages/core/src/visitors/variable-mapper.ts:75

Translates an identifier into a numerical index. Sometimes it may be necessary to specify depth as 1 and shadow existing translations. Other times, it may be necessary to first add new scope and THEN set depth to 1 (and force a new translation). For example, when a projection writes new content into an existing variable, this might conflict with, e.g., projection concats upstream that depend on that variable

Parameters​

ParameterTypeDefault value
attrASTIdentifierundefined
ctxVariableMapperCtxundefined
depthnumberctx.scopeStack.length

Returns​

ASTIdentifier


translateArray()​

protected translateArray(array, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:112

Translates each ASTIdentifier in array in place; recurses into operators.

Parameters​

ParameterType
arrayOpOrId[]
ctxVariableMapperCtx

Returns​

void


union()​

protected union(a, ...bs): VariableMap

Defined in: packages/core/src/visitors/variable-mapper.ts:124

Returns a new VariableMap containing all entries from a and every map in bs, with later maps winning on collision.

Parameters​

ParameterType
aVariableMap
...bsVariableMap[]

Returns​

VariableMap


visitAggregate()​

visitAggregate(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:340

Parameters​

ParameterType
operatorAggregateCall
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitAggregate


visitBidirectionalRecursion()​

visitBidirectionalRecursion(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:483

Parameters​

ParameterType
operatorBidirectionalRecursion
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitBidirectionalRecursion


visitCalculation()​

visitCalculation(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:238

Parameters​

ParameterType
operatorCalculation
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitCalculation


visitCartesianProduct()​

visitCartesianProduct(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:266

Parameters​

ParameterType
operatorCartesianProduct
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitCartesianProduct


visitConditional()​

visitConditional(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:245

Parameters​

ParameterType
operatorConditional
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitConditional


visitDifference()​

visitDifference(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:400

Parameters​

ParameterType
operatorDifference
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitDifference


visitDistinct()​

visitDistinct(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:403

Parameters​

ParameterType
operatorDistinct
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitDistinct


visitFnCall()​

visitFnCall(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:224

Parameters​

ParameterType
operatorFnCall
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitFnCall


visitGroupBy()​

visitGroupBy(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:353

Parameters​

ParameterType
operatorGroupBy
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitGroupBy


visitIndexedRecursion()​

visitIndexedRecursion(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:463

Parameters​

ParameterType
operatorIndexedRecursion
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitIndexedRecursion


visitIndexScan()​

visitIndexScan(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:456

Parameters​

ParameterType
operatorIndexScan
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitIndexScan


visitIntersection()​

visitIntersection(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:397

Parameters​

ParameterType
operatorIntersection
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitIntersection


visitItemFnSource()​

visitItemFnSource(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:421

Parameters​

ParameterType
operatorItemFnSource
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitItemFnSource


visitItemSource()​

visitItemSource(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:221

Parameters​

ParameterType
operatorItemSource
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitItemSource


visitJoin()​

visitJoin(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:281

Parameters​

ParameterType
operatorJoin
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitJoin


visitLimit()​

visitLimit(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:373

Parameters​

ParameterType
operatorLimit
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitLimit


visitLiteral()​

visitLiteral(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:235

Parameters​

ParameterType
operatorLiteral
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitLiteral


visitMapFromItem()​

visitMapFromItem(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:315

Parameters​

ParameterType
operatorMapFromItem
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitMapFromItem


visitMapToItem()​

visitMapToItem(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:309

Parameters​

ParameterType
operatorMapToItem
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitMapToItem


visitNullSource()​

visitNullSource(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:417

Parameters​

ParameterType
operatorNullSource
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitNullSource


visitOrderBy()​

visitOrderBy(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:329

Parameters​

ParameterType
operatorOrderBy
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitOrderBy


visitProjection()​

visitProjection(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:159

Parameters​

ParameterType
operatorProjection
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitProjection


visitProjectionConcat()​

visitProjectionConcat(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:287

Parameters​

ParameterType
operatorProjectionConcat
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitProjectionConcat


visitProjectionIndex()​

visitProjectionIndex(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:321

Parameters​

ParameterType
operatorProjectionIndex
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitProjectionIndex


visitQuantifier()​

visitQuantifier(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:452

Parameters​

ParameterType
operatorQuantifier
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitQuantifier


visitRecursion()​

visitRecursion(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:150

Parameters​

ParameterType
operatorRecursion
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitRecursion


visitSelection()​

visitSelection(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:206

Parameters​

ParameterType
operatorSelection
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitSelection


visitSetOp()​

protected visitSetOp(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:377

Parameters​

ParameterType
operatorSetOperator
ctxVariableMapperCtx

Returns​

void


visitTupleFnSource()​

visitTupleFnSource(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:432

Parameters​

ParameterType
operatorTupleFnSource
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitTupleFnSource


visitTupleSource()​

visitTupleSource(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:211

Parameters​

ParameterType
operatorTupleSource
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitTupleSource


visitUnion()​

visitUnion(operator, ctx): void

Defined in: packages/core/src/visitors/variable-mapper.ts:394

Parameters​

ParameterType
operatorUnion
ctxVariableMapperCtx

Returns​

void

Implementation of​

PlanVisitor.visitUnion