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
| Parameter | Type | Description |
|---|---|---|
vmap | Record<string, SQLPlanVisitor<IdSet, IdSet>> | Per-language visitor map used to recurse into operators of other languages. |
db | DortDBAsFriend | Database instance used to resolve nested language plan builders during visitLangSwitch. |
Returns
SchemaInferrer
Properties
db
protecteddb:DortDBAsFriend
Defined in: lang-sql/src/visitors/schema-inferrer.ts:51
Database instance used to resolve nested language plan builders during visitLangSwitch.
vmap
protectedvmap: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()
protectedgetRelNames(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
| Parameter | Type |
|---|---|
operator | PlanTupleOperator |
Returns
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
| Parameter | Type |
|---|---|
operator | PlanOperator |
ctx | IdSet |
Returns
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()
protectedprefixTupleSourceAttrs(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
| Parameter | Type |
|---|---|
operator | TupleSource | TupleFnSource |
Returns
void
processArg()
protectedprocessArg(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
| Parameter | Type |
|---|---|
operator | PlanTupleOperator |
arg | ASTIdentifier | PlanOperator |
ctx | IdSet |
Returns
void
processSetOp()
protectedprocessSetOp(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
| Parameter | Type |
|---|---|
operator | SetOperator |
ctx | IdSet |
Returns
visitAggregate()
visitAggregate(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:590
Parameters
| Parameter | Type |
|---|---|
operator | AggregateCall |
ctx | IdSet |
Returns
Implementation of
visitBidirectionalRecursion()
visitBidirectionalRecursion(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:754
Parameters
| Parameter | Type |
|---|---|
operator | BidirectionalRecursion |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitBidirectionalRecursion
visitCalculation()
visitCalculation(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:236
Parameters
| Parameter | Type |
|---|---|
operator | Calculation | ItemFnSource | TupleFnSource |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitCalculation
visitCartesianProduct()
visitCartesianProduct(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:331
Parameters
| Parameter | Type |
|---|---|
operator | CartesianProduct |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitCartesianProduct
visitConditional()
visitConditional(
operator):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:252
Parameters
| Parameter | Type |
|---|---|
operator | Conditional |
Returns
Implementation of
SQLPlanVisitor.visitConditional
visitDifference()
visitDifference(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:573
Parameters
| Parameter | Type |
|---|---|
operator | Difference |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitDifference
visitDistinct()
visitDistinct(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:576
Parameters
| Parameter | Type |
|---|---|
operator | Distinct |
ctx | IdSet |
Returns
Implementation of
visitFnCall()
visitFnCall(
operator):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:230
Parameters
| Parameter | Type |
|---|---|
operator | FnCall |
Returns
Implementation of
visitGroupBy()
visitGroupBy(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:521
Parameters
| Parameter | Type |
|---|---|
operator | GroupBy |
ctx | IdSet |
Returns
Implementation of
visitIndexedRecursion()
visitIndexedRecursion(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:740
Parameters
| Parameter | Type |
|---|---|
operator | IndexedRecursion |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitIndexedRecursion
visitIndexScan()
visitIndexScan(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:223
Parameters
| Parameter | Type |
|---|---|
operator | IndexScan |
ctx | IdSet |
Returns
Implementation of
visitIntersection()
visitIntersection(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:570
Parameters
| Parameter | Type |
|---|---|
operator | Intersection |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitIntersection
visitItemFnSource()
visitItemFnSource(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:593
Parameters
| Parameter | Type |
|---|---|
operator | ItemFnSource |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitItemFnSource
visitItemSource()
visitItemSource(
operator):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:227
Parameters
| Parameter | Type |
|---|---|
operator | ItemSource |
Returns
Implementation of
SQLPlanVisitor.visitItemSource
visitJoin()
visitJoin(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:386
Parameters
| Parameter | Type |
|---|---|
operator | Join |
ctx | IdSet |
Returns
Implementation of
visitLangSwitch()
visitLangSwitch(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:693
Parameters
| Parameter | Type |
|---|---|
operator | LangSwitch |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitLangSwitch
visitLimit()
visitLimit(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:553
Parameters
| Parameter | Type |
|---|---|
operator | Limit |
ctx | IdSet |
Returns
Implementation of
visitLiteral()
visitLiteral(
operator):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:233
Parameters
| Parameter | Type |
|---|---|
operator | Literal |
Returns
Implementation of
visitMapFromItem()
visitMapFromItem(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:431
Parameters
| Parameter | Type |
|---|---|
operator | MapFromItem |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitMapFromItem
visitMapToItem()
visitMapToItem(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:423
Parameters
| Parameter | Type |
|---|---|
operator | MapToItem |
ctx | IdSet |
Returns
Implementation of
visitNullSource()
visitNullSource(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:585
Parameters
| Parameter | Type |
|---|---|
operator | NullSource |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitNullSource
visitOrderBy()
visitOrderBy(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:453
Parameters
| Parameter | Type |
|---|---|
operator | OrderBy |
ctx | IdSet |
Returns
Implementation of
visitProjection()
visitProjection(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:84
Parameters
| Parameter | Type |
|---|---|
operator | Projection |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitProjection
visitProjectionConcat()
visitProjectionConcat(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:392
Parameters
| Parameter | Type |
|---|---|
operator | ProjectionConcat |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitProjectionConcat
visitProjectionIndex()
visitProjectionIndex(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:442
Parameters
| Parameter | Type |
|---|---|
operator | ProjectionIndex |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitProjectionIndex
visitQuantifier()
visitQuantifier(
operator):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:641
Parameters
| Parameter | Type |
|---|---|
operator | Quantifier |
Returns
Implementation of
SQLPlanVisitor.visitQuantifier
visitRecursion()
visitRecursion(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:120
Parameters
| Parameter | Type |
|---|---|
operator | Recursion |
ctx | IdSet |
Returns
Implementation of
visitSelection()
visitSelection(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:115
Parameters
| Parameter | Type |
|---|---|
operator | Selection |
ctx | IdSet |
Returns
Implementation of
visitTableAlias()
visitTableAlias(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:168
Parameters
| Parameter | Type |
|---|---|
operator | TableAlias |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitTableAlias
visitTupleFnSource()
visitTupleFnSource(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:596
Parameters
| Parameter | Type |
|---|---|
operator | TupleFnSource |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitTupleFnSource
visitTupleSource()
visitTupleSource(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:202
Parameters
| Parameter | Type |
|---|---|
operator | TupleSource |
ctx | IdSet |
Returns
Implementation of
SQLPlanVisitor.visitTupleSource
visitUnion()
visitUnion(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:567
Parameters
| Parameter | Type |
|---|---|
operator | Union |
ctx | IdSet |
Returns
Implementation of
visitUsing()
visitUsing(
operator,ctx):IdSet
Defined in: lang-sql/src/visitors/schema-inferrer.ts:645
Parameters
| Parameter | Type |
|---|---|
operator | Using |
ctx | IdSet |