Skip to main content

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

ParameterTypeDescription
dbDortDBAsFriendInternal database interface.

Returns

XQueryLogicalPlanBuilder

Properties

calcBuilders

protected calcBuilders: 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

protected dataAdapter: XQueryDataAdapter<unknown>

Defined in: lang-xquery/src/visitors/builder.ts:157

XQuery data adapter used to construct and traverse node values.


db

protected db: DortDBAsFriend

Defined in: lang-xquery/src/visitors/builder.ts:161

Internal database interface.


eqCheckers

protected eqCheckers: Record<string, EqualityChecker>

Defined in: lang-xquery/src/visitors/builder.ts:144

Per-language equality checkers for plan-node structural comparison.


langCtx

protected langCtx: 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

protected localLangCtx: 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

protected tdeps: Record<string, TransitiveDependencies>

Defined in: lang-xquery/src/visitors/builder.ts:146

Per-language transitive-dependency visitors used during schema resolution.


prefixCounter

protected static prefixCounter: number = 0

Defined in: lang-xquery/src/visitors/builder.ts:155

Counter for generating unique attribute-name prefixes across builder instances.

Methods

atomize()

protected atomize(item): unknown

Defined in: lang-xquery/src/visitors/builder.ts:241

Reduces a value to its atomic XDM representation via the data adapter.

Parameters

ParameterType
itemunknown

Returns

unknown


buildPlan()

buildPlan(node, ctx, langCtx): BuildPlanResult

Defined in: lang-xquery/src/visitors/builder.ts:190

LogicalPlanBuilder.buildPlan

Parameters

ParameterType
nodeASTNode
ctxIdSet
langCtxRecord<string, unknown>

Returns

BuildPlanResult

Implementation of

LogicalPlanBuilder.buildPlan


cloneConstrContent()

protected cloneConstrContent(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

ParameterType
originalstring | ASTNode
processedASTIdentifier | PlanOpAsArg

Returns

ASTIdentifier | PlanOpAsArg


cloneLangCtx()

protected cloneLangCtx(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

ParameterType
ctxXQueryLangCtx

Returns

XQueryLangCtx


idToQName()

protected idToQName(id, source?): [string, string]

Defined in: lang-xquery/src/visitors/builder.ts:811

returns [ns uri, prefixed:name]

Parameters

ParameterType
idASTIdentifier
source?unknown

Returns

[string, string]


initLangCtx()

protected initLangCtx(): XQueryLangCtx

Defined in: lang-xquery/src/visitors/builder.ts:172

Creates a fresh XQueryLangCtx seeded with the default XHTML namespace binding.

Returns

XQueryLangCtx


joinAggArgs()

protected joinAggArgs(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

ParameterType
argsPlanTupleOperator[]

Returns

PlanTupleOperator


maybeProjectConcat()

protected maybeProjectConcat(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

ParameterType
opPlanTupleOperator
srcPlanTupleOperator

Returns

PlanTupleOperator


maybeUnwind()

protected maybeUnwind(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

ParameterType
itemASTNode
argsDescentArgs

Returns

PlanOperator


prepareAggArg()

protected prepareAggArg(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

ParameterTypeDefault value
argPlanOperatorundefined
atomizebooleantrue

Returns

PlanTupleOperator


processAggregateFn()

protected processAggregateFn(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

ParameterType
nodeASTFunction
dargsDescentArgs
implXQueryAggregate

Returns

PlanOperator


processDirConstrContent()

protected processDirConstrContent(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

ParameterType
contentstring | ASTNode
argsDescentArgs

Returns

ASTIdentifier | PlanOpAsArg


processFnArg()

protected processFnArg(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

ParameterType
itemASTNode
argsDescentArgs

Returns

ASTIdentifier | PlanOpAsArg


processGroupByItem()

protected processGroupByItem(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

ParameterType
item[ASTVariable, ASTNode]
argsDescentArgs

Returns

Aliased<ASTIdentifier | Calculation>


processNode()

protected processNode(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

ParameterType
itemASTNode
argsDescentArgs

Returns

OpOrId


processOpArg()

protected processOpArg(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

ParameterType
itemASTNode
argsDescentArgs

Returns

PlanOpAsArg


processOrderItem()

protected processOrderItem(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

ParameterType
itemOrderByItem
argsDescentArgs

Returns

Order


processPathStart()

protected processPathStart(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

ParameterType
firstASTNode
argsDescentArgs

Returns

PlanTupleOperator

Throws

if a leading axis step is used without a context item in scope.


processPathStep()

protected processPathStep(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

ParameterType
stepASTNode
removeDuplicatesboolean
argsDescentArgs

Returns

PlanTupleOperator


renameAggSource()

protected renameAggSource(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

ParameterType
srcPlanTupleOperator
dotASTIdentifier
lenASTIdentifier
posASTIdentifier

Returns

Projection


toCalc()

Call Signature

protected toCalc(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
ParameterType
nodeASTNode
argsDescentArgs
Returns

ASTIdentifier | Calculation

Call Signature

protected toCalc(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
ParameterType
nodeASTNode
argsDescentArgs
skipVarsfalse
Returns

Calculation


visitBaseURIDeclaration()

visitBaseURIDeclaration(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:295

Parameters

ParameterType
nodeBaseURIDeclaration
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitBaseURIDeclaration


visitBoundFunction()

visitBoundFunction(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1007

Parameters

ParameterType
nodeBoundFunction
dargsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitBoundFunction


visitCastExpr()

visitCastExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:617

Parameters

ParameterType
nodeCastExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitCastExpr


visitComputedConstructor()

visitComputedConstructor(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:936

Parameters

ParameterType
nodeComputedConstructor
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitComputedConstructor


visitDefaultNSDeclaration()

visitDefaultNSDeclaration(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:288

Parameters

ParameterType
nodeDefaultNSDeclaration
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDefaultNSDeclaration


visitDirConstrContent()

visitDirConstrContent(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:906

Parameters

ParameterType
nodeDirConstrContent
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDirConstrContent


visitDirectCommentConstructor()

visitDirectCommentConstructor(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:928

Parameters

ParameterType
nodeDirectCommentConstructor
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDirectCommentConstructor


visitDirectElementConstructor()

visitDirectElementConstructor(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:864

Parameters

ParameterType
nodeDirectElementConstructor
dargsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDirectElementConstructor


visitDirectPIConstructor()

visitDirectPIConstructor(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:920

Parameters

ParameterType
nodeDirectPIConstructor
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDirectPIConstructor


visitDynamicFunctionCall()

visitDynamicFunctionCall(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:784

Parameters

ParameterType
nodeDynamicFunctionCall
dargsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitDynamicFunctionCall


visitEmptyOrderDeclaration()

visitEmptyOrderDeclaration(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:307

Parameters

ParameterType
nodeEmptyOrderDeclaration
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitEmptyOrderDeclaration


visitFilterExpr()

visitFilterExpr(node, args): PlanTupleOperator

Defined in: lang-xquery/src/visitors/builder.ts:780

Parameters

ParameterType
nodeFilterExpr
argsDescentArgs

Returns

PlanTupleOperator

Implementation of

XQueryVisitor.visitFilterExpr


visitFLWORCount()

visitFLWORCount(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:492

Parameters

ParameterType
nodeFLWORCount
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORCount


visitFLWORExpr()

visitFLWORExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:354

Parameters

ParameterType
nodeFLWORExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORExpr


visitFLWORFor()

visitFLWORFor(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:379

Parameters

ParameterType
nodeFLWORFor
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORFor


visitFLWORForBinding()

visitFLWORForBinding(node, args): PlanTupleOperator

Defined in: lang-xquery/src/visitors/builder.ts:390

Parameters

ParameterType
nodeFLWORForBinding
argsDescentArgs

Returns

PlanTupleOperator

Implementation of

XQueryVisitor.visitFLWORForBinding


visitFLWORGroupBy()

visitFLWORGroupBy(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:459

Parameters

ParameterType
nodeFLWORGroupBy
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORGroupBy


visitFLWORLet()

visitFLWORLet(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:421

Parameters

ParameterType
nodeFLWORLet
dargsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORLet


visitFLWOROrderBy()

visitFLWOROrderBy(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:485

Parameters

ParameterType
nodeFLWOROrderBy
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWOROrderBy


visitFLWORReturn()

visitFLWORReturn(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:496

Parameters

ParameterType
nodeFLWORReturn
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORReturn


visitFLWORWhere()

visitFLWORWhere(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:434

Parameters

ParameterType
nodeFLWORWhere
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORWhere


visitFLWORWindow()

visitFLWORWindow(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:431

Parameters

ParameterType
nodeFLWORWindow
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitFLWORWindow


visitFunction()

visitFunction(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1207

Parameters

ParameterType
nodeASTFunction
dargsDescentArgs

Returns

PlanOperator

Implementation of

LogicalPlanBuilder.visitFunction


visitIdentifier()

visitIdentifier(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1271

Parameters

ParameterType
nodeASTIdentifier
argsDescentArgs

Returns

PlanOperator

Implementation of

LogicalPlanBuilder.visitIdentifier


visitIfExpr()

visitIfExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:592

Parameters

ParameterType
nodeIfExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitIfExpr


visitInlineFn()

visitInlineFn(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1004

Parameters

ParameterType
nodeInlineFunction
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitInlineFn


visitInstanceOfExpr()

visitInstanceOfExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:611

Parameters

ParameterType
nodeInstanceOfExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitInstanceOfExpr


visitItemType()

visitItemType(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:631

Parameters

ParameterType
nodeASTItemType
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitItemType


visitLangSwitch()

visitLangSwitch(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1254

Parameters

ParameterType
nodeLangSwitch
argsDescentArgs

Returns

PlanOperator

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

ParameterType
nodeASTLiteral<U>
argsDescentArgs

Returns

PlanOperator

Implementation of

LogicalPlanBuilder.visitLiteral


visitModule()

visitModule(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:912

Parameters

ParameterType
nodeModule
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitModule


visitNSDeclaration()

visitNSDeclaration(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:313

Parameters

ParameterType
nodeNSDeclaration
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitNSDeclaration


visitNumberLiteral()

visitNumberLiteral(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:323

Parameters

ParameterType
nodeASTNumberLiteral
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitNumberLiteral


visitOperator()

visitOperator(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:1056

Parameters

ParameterType
nodeASTOperator
argsDescentArgs

Returns

PlanOperator

Implementation of

LogicalPlanBuilder.visitOperator


visitOrderedExpr()

visitOrderedExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:806

Parameters

ParameterType
nodeOrderedExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitOrderedExpr


visitOrderingDeclaration()

visitOrderingDeclaration(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:301

Parameters

ParameterType
nodeOrderingDeclaration
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitOrderingDeclaration


visitPathAxis()

visitPathAxis(node, args): PlanTupleOperator

Defined in: lang-xquery/src/visitors/builder.ts:764

Parameters

ParameterType
nodePathAxis
argsDescentArgs

Returns

PlanTupleOperator

Implementation of

XQueryVisitor.visitPathAxis


visitPathExpr()

visitPathExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:721

Parameters

ParameterType
nodePathExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitPathExpr


visitPathPredicate()

visitPathPredicate(node, dargs): PlanTupleOperator

Defined in: lang-xquery/src/visitors/builder.ts:737

Parameters

ParameterType
nodePathPredicate
dargsDescentArgs

Returns

PlanTupleOperator

Implementation of

XQueryVisitor.visitPathPredicate


visitProlog()

visitProlog(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:282

Parameters

ParameterType
nodeProlog
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitProlog


visitQuantifiedExpr()

visitQuantifiedExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:535

Parameters

ParameterType
nodeQuantifiedExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitQuantifiedExpr


visitSequenceConstructor()

visitSequenceConstructor(node, dargs): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:796

Parameters

ParameterType
nodeSequenceConstructor
dargsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitSequenceConstructor


visitSequenceType()

visitSequenceType(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:605

Parameters

ParameterType
nodeASTSequenceType
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitSequenceType


visitSimpleMapExpr()

visitSimpleMapExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:731

Parameters

ParameterType
nodeSimpleMapExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitSimpleMapExpr


visitStringLiteral()

visitStringLiteral(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:317

Parameters

ParameterType
nodeASTStringLiteral
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitStringLiteral


visitSwitchExpr()

visitSwitchExpr(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:579

Parameters

ParameterType
nodeSwitchExpr
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitSwitchExpr


visitVariable()

visitVariable(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:335

Parameters

ParameterType
nodeASTVariable
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitVariable


visitXQueryIdentifier()

visitXQueryIdentifier(node, args): PlanOperator

Defined in: lang-xquery/src/visitors/builder.ts:329

Parameters

ParameterType
nodeXQueryIdentifier
argsDescentArgs

Returns

PlanOperator

Implementation of

XQueryVisitor.visitXQueryIdentifier