Skip to main content

Class: SchemaInferrer

Defined in: lang-sql/src/visitors/schema-inferrer.ts:46

Infers the schema of a logical plan. Each method returns external references.

Implements​

Constructors​

Constructor​

new SchemaInferrer(vmap, db): SchemaInferrer

Defined in: lang-sql/src/visitors/schema-inferrer.ts:47

Parameters​

ParameterTypeDescription
vmapRecord<string, SQLPlanVisitor<IdSet, IdSet>>Per-language visitor map used to recurse into operators of other languages.
dbDortDBAsFriendDatabase instance used to resolve nested language plan builders during visitLangSwitch.

Returns​

SchemaInferrer

Properties​

db​

protected db: DortDBAsFriend

Defined in: lang-sql/src/visitors/schema-inferrer.ts:51

Database instance used to resolve nested language plan builders during visitLangSwitch.


vmap​

protected vmap: Record<string, SQLPlanVisitor<IdSet, IdSet>>

Defined in: lang-sql/src/visitors/schema-inferrer.ts:49

Per-language visitor map used to recurse into operators of other languages.

Methods​

getRelNames()​

protected getRelNames(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:263

Walks up through projections and aliases to determine the set of relation names exposed by operator; used by visitCartesianProduct to detect duplicate table aliases and route schema attributes to the correct side.

Parameters​

ParameterType
operatorPlanTupleOperator

Returns​

IdSet

Throws​

If duplicate table aliases are found across a join.


inferSchema()​

inferSchema(operator, ctx): [PlanOperator, IdSet]

Defined in: lang-sql/src/visitors/schema-inferrer.ts:62

Infers and finalises the schema of operator, resolving external attribute references and detecting ambiguous column names.

Parameters​

ParameterType
operatorPlanOperator
ctxIdSet

Returns​

[PlanOperator, IdSet]

A tuple of the (possibly rewritten) root operator and the set of external references that must be satisfied by an enclosing scope.

Throws​

If any column name is ambiguous across joined relations.


prefixTupleSourceAttrs()​

protected prefixTupleSourceAttrs(operator): void

Defined in: lang-sql/src/visitors/schema-inferrer.ts:136

Inserts a plan.Projection above operator to strip relation-name prefixes from its attributes, replacing prefixed identifiers with their unqualified equivalents in the schema.

Parameters​

ParameterType
operatorTupleSource | TupleFnSource

Returns​

void


processArg()​

protected processArg(operator, arg, ctx): void

Defined in: lang-sql/src/visitors/schema-inferrer.ts:104

Adds arg to operator's schema - directly for identifiers, or by visiting sub-operators for plan nodes.

Parameters​

ParameterType
operatorPlanTupleOperator
argASTIdentifier | PlanOperator
ctxIdSet

Returns​

void


processSetOp()​

protected processSetOp(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:558

Infers schemas of both sides of a set operator and merges their external references.

Parameters​

ParameterType
operatorSetOperator
ctxIdSet

Returns​

IdSet


visitAggregate()​

visitAggregate(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:590

Parameters​

ParameterType
operatorAggregateCall
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitAggregate


visitBidirectionalRecursion()​

visitBidirectionalRecursion(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:754

Parameters​

ParameterType
operatorBidirectionalRecursion
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitBidirectionalRecursion


visitCalculation()​

visitCalculation(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:236

Parameters​

ParameterType
operatorCalculation | ItemFnSource | TupleFnSource
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitCalculation


visitCartesianProduct()​

visitCartesianProduct(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:331

Parameters​

ParameterType
operatorCartesianProduct
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitCartesianProduct


visitConditional()​

visitConditional(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:252

Parameters​

ParameterType
operatorConditional

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitConditional


visitDifference()​

visitDifference(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:573

Parameters​

ParameterType
operatorDifference
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitDifference


visitDistinct()​

visitDistinct(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:576

Parameters​

ParameterType
operatorDistinct
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitDistinct


visitFnCall()​

visitFnCall(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:230

Parameters​

ParameterType
operatorFnCall

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitFnCall


visitGroupBy()​

visitGroupBy(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:521

Parameters​

ParameterType
operatorGroupBy
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitGroupBy


visitIndexedRecursion()​

visitIndexedRecursion(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:740

Parameters​

ParameterType
operatorIndexedRecursion
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitIndexedRecursion


visitIndexScan()​

visitIndexScan(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:223

Parameters​

ParameterType
operatorIndexScan
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitIndexScan


visitIntersection()​

visitIntersection(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:570

Parameters​

ParameterType
operatorIntersection
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitIntersection


visitItemFnSource()​

visitItemFnSource(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:593

Parameters​

ParameterType
operatorItemFnSource
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitItemFnSource


visitItemSource()​

visitItemSource(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:227

Parameters​

ParameterType
operatorItemSource

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitItemSource


visitJoin()​

visitJoin(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:386

Parameters​

ParameterType
operatorJoin
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitJoin


visitLangSwitch()​

visitLangSwitch(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:693

Parameters​

ParameterType
operatorLangSwitch
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitLangSwitch


visitLimit()​

visitLimit(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:553

Parameters​

ParameterType
operatorLimit
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitLimit


visitLiteral()​

visitLiteral(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:233

Parameters​

ParameterType
operatorLiteral

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitLiteral


visitMapFromItem()​

visitMapFromItem(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:431

Parameters​

ParameterType
operatorMapFromItem
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitMapFromItem


visitMapToItem()​

visitMapToItem(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:423

Parameters​

ParameterType
operatorMapToItem
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitMapToItem


visitNullSource()​

visitNullSource(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:585

Parameters​

ParameterType
operatorNullSource
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitNullSource


visitOrderBy()​

visitOrderBy(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:453

Parameters​

ParameterType
operatorOrderBy
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitOrderBy


visitProjection()​

visitProjection(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:84

Parameters​

ParameterType
operatorProjection
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitProjection


visitProjectionConcat()​

visitProjectionConcat(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:392

Parameters​

ParameterType
operatorProjectionConcat
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitProjectionConcat


visitProjectionIndex()​

visitProjectionIndex(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:442

Parameters​

ParameterType
operatorProjectionIndex
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitProjectionIndex


visitQuantifier()​

visitQuantifier(operator): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:641

Parameters​

ParameterType
operatorQuantifier

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitQuantifier


visitRecursion()​

visitRecursion(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:120

Parameters​

ParameterType
operatorRecursion
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitRecursion


visitSelection()​

visitSelection(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:115

Parameters​

ParameterType
operatorSelection
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitSelection


visitTableAlias()​

visitTableAlias(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:168

Parameters​

ParameterType
operatorTableAlias
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitTableAlias


visitTupleFnSource()​

visitTupleFnSource(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:596

Parameters​

ParameterType
operatorTupleFnSource
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitTupleFnSource


visitTupleSource()​

visitTupleSource(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:202

Parameters​

ParameterType
operatorTupleSource
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitTupleSource


visitUnion()​

visitUnion(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:567

Parameters​

ParameterType
operatorUnion
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitUnion


visitUsing()​

visitUsing(operator, ctx): IdSet

Defined in: lang-sql/src/visitors/schema-inferrer.ts:645

Parameters​

ParameterType
operatorUsing
ctxIdSet

Returns​

IdSet

Implementation of​

SQLPlanVisitor.visitUsing