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