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