Class: XQueryLogicalPlanBuilder
Defined in: lang-xquery/src/visitors/builder.ts:138
Traverses an XQuery AST and converts it into a logical query plan.
Example
const db = new DortDB({ languages: [XQuery] });
const builder = new XQueryLogicalPlanBuilder(db as DortDBAsFriend);
const { plan } = builder.buildPlan(astRoot, ctx, langCtx);
Implements
Constructors
Constructor
new XQueryLogicalPlanBuilder(
db):XQueryLogicalPlanBuilder
Defined in: lang-xquery/src/visitors/builder.ts:159
Parameters
| Parameter | Type | Description |
|---|---|---|
db | DortDBAsFriend | Internal database interface. |
Returns
XQueryLogicalPlanBuilder
Properties
calcBuilders
protectedcalcBuilders:Record<string,PlanVisitor<CalculationParams>>
Defined in: lang-xquery/src/visitors/builder.ts:142
Per-language calculation builders used to convert plan fragments into plan.Calculation nodes.
dataAdapter
protecteddataAdapter:XQueryDataAdapter<unknown>
Defined in: lang-xquery/src/visitors/builder.ts:157
XQuery data adapter used to construct and traverse node values.
db
protecteddb:DortDBAsFriend
Defined in: lang-xquery/src/visitors/builder.ts:161
Internal database interface.
eqCheckers
protectedeqCheckers:Record<string,EqualityChecker>
Defined in: lang-xquery/src/visitors/builder.ts:144
Per-language equality checkers for plan-node structural comparison.
langCtx
protectedlangCtx:Record<string,unknown> &object
Defined in: lang-xquery/src/visitors/builder.ts:148
Shared language context passed in via buildPlan; the xquery entry holds the outer XQueryLangCtx.
Type Declaration
xquery
xquery:
XQueryLangCtx
The XQuery-specific language context for the current query scope.
localLangCtx
protectedlocalLangCtx:XQueryLangCtx
Defined in: lang-xquery/src/visitors/builder.ts:153
Local copy of the language context, kept separate so the outer context is left untouched.
tdeps
protectedtdeps:Record<string,TransitiveDependencies>
Defined in: lang-xquery/src/visitors/builder.ts:146
Per-language transitive-dependency visitors used during schema resolution.
prefixCounter
protectedstaticprefixCounter:number=0
Defined in: lang-xquery/src/visitors/builder.ts:155
Counter for generating unique attribute-name prefixes across builder instances.
Methods
atomize()
protectedatomize(item):unknown
Defined in: lang-xquery/src/visitors/builder.ts:241
Reduces a value to its atomic XDM representation via the data adapter.
Parameters
| Parameter | Type |
|---|---|
item | unknown |
Returns
unknown
buildPlan()
buildPlan(
node,ctx,langCtx):BuildPlanResult
Defined in: lang-xquery/src/visitors/builder.ts:190
LogicalPlanBuilder.buildPlan
Parameters
| Parameter | Type |
|---|---|
node | ASTNode |
ctx | IdSet |
langCtx | Record<string, unknown> |
Returns
Implementation of
cloneConstrContent()
protectedcloneConstrContent(original,processed):ASTIdentifier|PlanOpAsArg
Defined in: lang-xquery/src/visitors/builder.ts:841
When inserting content into a direct or computed constructor, the content may refer to existing nodes in the source tree. In such cases, the content must be cloned.
Parameters
| Parameter | Type |
|---|---|
original | string | ASTNode |
processed | ASTIdentifier | PlanOpAsArg |
Returns
cloneLangCtx()
protectedcloneLangCtx(ctx):XQueryLangCtx
Defined in: lang-xquery/src/visitors/builder.ts:180
Returns a copy of ctx with its prolog namespace map cloned, so nested scopes can extend it independently.
Parameters
| Parameter | Type |
|---|---|
ctx | XQueryLangCtx |
Returns
idToQName()
protectedidToQName(id,source?): [string,string]
Defined in: lang-xquery/src/visitors/builder.ts:811
returns [ns uri, prefixed:name]
Parameters
| Parameter | Type |
|---|---|
id | ASTIdentifier |
source? | unknown |
Returns
[string, string]
initLangCtx()
protectedinitLangCtx():XQueryLangCtx
Defined in: lang-xquery/src/visitors/builder.ts:172
Creates a fresh XQueryLangCtx seeded with the default XHTML namespace binding.
Returns
joinAggArgs()
protectedjoinAggArgs(args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:1095
Positionally aligns multiple aggregate argument sources by full-outer-joining them on matching index (with single-value broadcasting).
Parameters
| Parameter | Type |
|---|---|
args | PlanTupleOperator[] |
Returns
maybeProjectConcat()
protectedmaybeProjectConcat(op,src):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:370
Joins op onto src with a plan.ProjectionConcat when src is present, otherwise returns op unchanged.
Parameters
| Parameter | Type |
|---|---|
op | PlanTupleOperator |
src | PlanTupleOperator |
Returns
maybeUnwind()
protectedmaybeUnwind(item,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:246
Visits item and, if it yields a calculation, wraps it in an unwind item source so its sequence is flattened into items.
Parameters
| Parameter | Type |
|---|---|
item | ASTNode |
args | DescentArgs |
Returns
prepareAggArg()
protectedprepareAggArg(arg,atomize?):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:1125
Normalizes an aggregate argument into a tuple source, unwinding a calculation (with sequence coalescing) into items when needed.
Parameters
| Parameter | Type | Default value |
|---|---|---|
arg | PlanOperator | undefined |
atomize | boolean | true |
Returns
processAggregateFn()
protectedprocessAggregateFn(node,dargs,impl):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1164
Builds the plan.GroupBy that evaluates an aggregate function call over its (positionally joined) argument sources.
Parameters
| Parameter | Type |
|---|---|
node | ASTFunction |
dargs | DescentArgs |
impl | XQueryAggregate |
Returns
processDirConstrContent()
protectedprocessDirConstrContent(content,args):ASTIdentifier|PlanOpAsArg
Defined in: lang-xquery/src/visitors/builder.ts:826
Turns one piece of direct-constructor content into a function argument: a literal for static text, or the visited node otherwise.
Parameters
| Parameter | Type |
|---|---|
content | string | ASTNode |
args | DescentArgs |
Returns
processFnArg()
protectedprocessFnArg(item,args):ASTIdentifier|PlanOpAsArg
Defined in: lang-xquery/src/visitors/builder.ts:271
Bound helper: turns item into a function argument, passing variables through and wrapping other nodes as sequence-accepting plan args.
Parameters
| Parameter | Type |
|---|---|
item | ASTNode |
args | DescentArgs |
Returns
processGroupByItem()
protectedprocessGroupByItem(item,args):Aliased<ASTIdentifier|Calculation>
Defined in: lang-xquery/src/visitors/builder.ts:448
Builds a grouping key from a group by binding: atomizes the key expression and aliases it to the bound variable.
Parameters
| Parameter | Type |
|---|---|
item | [ASTVariable, ASTNode] |
args | DescentArgs |
Returns
Aliased<ASTIdentifier | Calculation>
processNode()
protectedprocessNode(item,args):OpOrId
Defined in: lang-xquery/src/visitors/builder.ts:263
Bound helper: passes variable references through (recording the dependency) and visits any other node.
Parameters
| Parameter | Type |
|---|---|
item | ASTNode |
args | DescentArgs |
Returns
processOpArg()
protectedprocessOpArg(item,args):PlanOpAsArg
Defined in: lang-xquery/src/visitors/builder.ts:1046
Turns an operator operand into a plan argument, wrapping a bare variable in an identity plan.FnCall so it can carry a sequence.
Parameters
| Parameter | Type |
|---|---|
item | ASTNode |
args | DescentArgs |
Returns
processOrderItem()
protectedprocessOrderItem(item,args):Order
Defined in: lang-xquery/src/visitors/builder.ts:475
Converts an order by item into a plan.Order descriptor, resolving its sort key and null-ordering.
Parameters
| Parameter | Type |
|---|---|
item | OrderByItem |
args | DescentArgs |
Returns
processPathStart()
protectedprocessPathStart(first,args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:641
Builds the tuple source for the first step of a path expression - seeding from the
context item (.) for a leading axis step, or from the evaluated leading expression otherwise.
Parameters
| Parameter | Type |
|---|---|
first | ASTNode |
args | DescentArgs |
Returns
Throws
if a leading axis step is used without a context item in scope.
processPathStep()
protectedprocessPathStep(step,removeDuplicates,args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:693
Builds the operator for a single path step relative to args.src, handling ., filter steps, axis steps, and general step expressions.
Parameters
| Parameter | Type |
|---|---|
step | ASTNode |
removeDuplicates | boolean |
args | DescentArgs |
Returns
renameAggSource()
protectedrenameAggSource(src,dot,len,pos):Projection
Defined in: lang-xquery/src/visitors/builder.ts:1072
Projects an aggregate argument source to the given item/length/position attribute names, adding size and index projections if missing.
Parameters
| Parameter | Type |
|---|---|
src | PlanTupleOperator |
dot | ASTIdentifier |
len | ASTIdentifier |
pos | ASTIdentifier |
Returns
toCalc()
Call Signature
protectedtoCalc(node,args):ASTIdentifier|Calculation
Defined in: lang-xquery/src/visitors/builder.ts:217
Converts an AST node to a plan.Calculation, passing variable references through unchanged.
Parameters
| Parameter | Type |
|---|---|
node | ASTNode |
args | DescentArgs |
Returns
Call Signature
protectedtoCalc(node,args,skipVars):Calculation
Defined in: lang-xquery/src/visitors/builder.ts:222
Converts an AST node to a plan.Calculation, materializing variable references too.
Parameters
| Parameter | Type |
|---|---|
node | ASTNode |
args | DescentArgs |
skipVars | false |
Returns
visitBaseURIDeclaration()
visitBaseURIDeclaration(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:295
Parameters
| Parameter | Type |
|---|---|
node | BaseURIDeclaration |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitBaseURIDeclaration
visitBoundFunction()
visitBoundFunction(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1007
Parameters
| Parameter | Type |
|---|---|
node | BoundFunction |
dargs | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitBoundFunction
visitCastExpr()
visitCastExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:617
Parameters
| Parameter | Type |
|---|---|
node | CastExpr |
args | DescentArgs |
Returns
Implementation of
visitComputedConstructor()
visitComputedConstructor(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:936
Parameters
| Parameter | Type |
|---|---|
node | ComputedConstructor |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitComputedConstructor
visitDefaultNSDeclaration()
visitDefaultNSDeclaration(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:288
Parameters
| Parameter | Type |
|---|---|
node | DefaultNSDeclaration |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDefaultNSDeclaration
visitDirConstrContent()
visitDirConstrContent(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:906
Parameters
| Parameter | Type |
|---|---|
node | DirConstrContent |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDirConstrContent
visitDirectCommentConstructor()
visitDirectCommentConstructor(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:928
Parameters
| Parameter | Type |
|---|---|
node | DirectCommentConstructor |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDirectCommentConstructor
visitDirectElementConstructor()
visitDirectElementConstructor(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:864
Parameters
| Parameter | Type |
|---|---|
node | DirectElementConstructor |
dargs | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDirectElementConstructor
visitDirectPIConstructor()
visitDirectPIConstructor(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:920
Parameters
| Parameter | Type |
|---|---|
node | DirectPIConstructor |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDirectPIConstructor
visitDynamicFunctionCall()
visitDynamicFunctionCall(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:784
Parameters
| Parameter | Type |
|---|---|
node | DynamicFunctionCall |
dargs | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitDynamicFunctionCall
visitEmptyOrderDeclaration()
visitEmptyOrderDeclaration(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:307
Parameters
| Parameter | Type |
|---|---|
node | EmptyOrderDeclaration |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitEmptyOrderDeclaration
visitFilterExpr()
visitFilterExpr(
node,args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:780
Parameters
| Parameter | Type |
|---|---|
node | FilterExpr |
args | DescentArgs |
Returns
Implementation of
visitFLWORCount()
visitFLWORCount(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:492
Parameters
| Parameter | Type |
|---|---|
node | FLWORCount |
args | DescentArgs |
Returns
Implementation of
visitFLWORExpr()
visitFLWORExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:354
Parameters
| Parameter | Type |
|---|---|
node | FLWORExpr |
args | DescentArgs |
Returns
Implementation of
visitFLWORFor()
visitFLWORFor(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:379
Parameters
| Parameter | Type |
|---|---|
node | FLWORFor |
args | DescentArgs |
Returns
Implementation of
visitFLWORForBinding()
visitFLWORForBinding(
node,args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:390
Parameters
| Parameter | Type |
|---|---|
node | FLWORForBinding |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitFLWORForBinding
visitFLWORGroupBy()
visitFLWORGroupBy(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:459
Parameters
| Parameter | Type |
|---|---|
node | FLWORGroupBy |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitFLWORGroupBy
visitFLWORLet()
visitFLWORLet(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:421
Parameters
| Parameter | Type |
|---|---|
node | FLWORLet |
dargs | DescentArgs |
Returns
Implementation of
visitFLWOROrderBy()
visitFLWOROrderBy(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:485
Parameters
| Parameter | Type |
|---|---|
node | FLWOROrderBy |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitFLWOROrderBy
visitFLWORReturn()
visitFLWORReturn(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:496
Parameters
| Parameter | Type |
|---|---|
node | FLWORReturn |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitFLWORReturn
visitFLWORWhere()
visitFLWORWhere(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:434
Parameters
| Parameter | Type |
|---|---|
node | FLWORWhere |
args | DescentArgs |
Returns
Implementation of
visitFLWORWindow()
visitFLWORWindow(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:431
Parameters
| Parameter | Type |
|---|---|
node | FLWORWindow |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitFLWORWindow
visitFunction()
visitFunction(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1207
Parameters
| Parameter | Type |
|---|---|
node | ASTFunction |
dargs | DescentArgs |
Returns
Implementation of
LogicalPlanBuilder.visitFunction
visitIdentifier()
visitIdentifier(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1271
Parameters
| Parameter | Type |
|---|---|
node | ASTIdentifier |
args | DescentArgs |
Returns
Implementation of
LogicalPlanBuilder.visitIdentifier
visitIfExpr()
visitIfExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:592
Parameters
| Parameter | Type |
|---|---|
node | IfExpr |
args | DescentArgs |
Returns
Implementation of
visitInlineFn()
visitInlineFn(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1004
Parameters
| Parameter | Type |
|---|---|
node | InlineFunction |
args | DescentArgs |
Returns
Implementation of
visitInstanceOfExpr()
visitInstanceOfExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:611
Parameters
| Parameter | Type |
|---|---|
node | InstanceOfExpr |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitInstanceOfExpr
visitItemType()
visitItemType(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:631
Parameters
| Parameter | Type |
|---|---|
node | ASTItemType |
args | DescentArgs |
Returns
Implementation of
visitLangSwitch()
visitLangSwitch(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1254
Parameters
| Parameter | Type |
|---|---|
node | LangSwitch |
args | DescentArgs |
Returns
Implementation of
LogicalPlanBuilder.visitLangSwitch
visitLiteral()
visitLiteral<
U>(node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1042
Type Parameters
| Type Parameter |
|---|
U |
Parameters
| Parameter | Type |
|---|---|
node | ASTLiteral<U> |
args | DescentArgs |
Returns
Implementation of
LogicalPlanBuilder.visitLiteral
visitModule()
visitModule(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:912
Parameters
| Parameter | Type |
|---|---|
node | Module |
args | DescentArgs |
Returns
Implementation of
visitNSDeclaration()
visitNSDeclaration(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:313
Parameters
| Parameter | Type |
|---|---|
node | NSDeclaration |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitNSDeclaration
visitNumberLiteral()
visitNumberLiteral(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:323
Parameters
| Parameter | Type |
|---|---|
node | ASTNumberLiteral |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitNumberLiteral
visitOperator()
visitOperator(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:1056
Parameters
| Parameter | Type |
|---|---|
node | ASTOperator |
args | DescentArgs |
Returns
Implementation of
LogicalPlanBuilder.visitOperator
visitOrderedExpr()
visitOrderedExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:806
Parameters
| Parameter | Type |
|---|---|
node | OrderedExpr |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitOrderedExpr
visitOrderingDeclaration()
visitOrderingDeclaration(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:301
Parameters
| Parameter | Type |
|---|---|
node | OrderingDeclaration |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitOrderingDeclaration
visitPathAxis()
visitPathAxis(
node,args):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:764
Parameters
| Parameter | Type |
|---|---|
node | PathAxis |
args | DescentArgs |
Returns
Implementation of
visitPathExpr()
visitPathExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:721
Parameters
| Parameter | Type |
|---|---|
node | PathExpr |
args | DescentArgs |
Returns
Implementation of
visitPathPredicate()
visitPathPredicate(
node,dargs):PlanTupleOperator
Defined in: lang-xquery/src/visitors/builder.ts:737
Parameters
| Parameter | Type |
|---|---|
node | PathPredicate |
dargs | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitPathPredicate
visitProlog()
visitProlog(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:282
Parameters
| Parameter | Type |
|---|---|
node | Prolog |
args | DescentArgs |
Returns
Implementation of
visitQuantifiedExpr()
visitQuantifiedExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:535
Parameters
| Parameter | Type |
|---|---|
node | QuantifiedExpr |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitQuantifiedExpr
visitSequenceConstructor()
visitSequenceConstructor(
node,dargs):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:796
Parameters
| Parameter | Type |
|---|---|
node | SequenceConstructor |
dargs | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitSequenceConstructor
visitSequenceType()
visitSequenceType(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:605
Parameters
| Parameter | Type |
|---|---|
node | ASTSequenceType |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitSequenceType
visitSimpleMapExpr()
visitSimpleMapExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:731
Parameters
| Parameter | Type |
|---|---|
node | SimpleMapExpr |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitSimpleMapExpr
visitStringLiteral()
visitStringLiteral(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:317
Parameters
| Parameter | Type |
|---|---|
node | ASTStringLiteral |
args | DescentArgs |
Returns
Implementation of
XQueryVisitor.visitStringLiteral
visitSwitchExpr()
visitSwitchExpr(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:579
Parameters
| Parameter | Type |
|---|---|
node | SwitchExpr |
args | DescentArgs |
Returns
Implementation of
visitVariable()
visitVariable(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:335
Parameters
| Parameter | Type |
|---|---|
node | ASTVariable |
args | DescentArgs |
Returns
Implementation of
visitXQueryIdentifier()
visitXQueryIdentifier(
node,args):PlanOperator
Defined in: lang-xquery/src/visitors/builder.ts:329
Parameters
| Parameter | Type |
|---|---|
node | XQueryIdentifier |
args | DescentArgs |