@quereus/quereus 4.17.0 → 4.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/core/database.d.ts.map +1 -1
- package/dist/src/core/database.js +18 -10
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/func/builtins/schema.d.ts.map +1 -1
- package/dist/src/func/builtins/schema.js +39 -64
- package/dist/src/func/builtins/schema.js.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts +9 -1
- package/dist/src/planner/analysis/constraint-extractor.d.ts.map +1 -1
- package/dist/src/planner/analysis/constraint-extractor.js +55 -26
- package/dist/src/planner/analysis/constraint-extractor.js.map +1 -1
- package/dist/src/planner/building/default-scope.d.ts +11 -1
- package/dist/src/planner/building/default-scope.d.ts.map +1 -1
- package/dist/src/planner/building/default-scope.js +13 -2
- package/dist/src/planner/building/default-scope.js.map +1 -1
- package/dist/src/planner/building/insert.d.ts.map +1 -1
- package/dist/src/planner/building/insert.js +161 -107
- package/dist/src/planner/building/insert.js.map +1 -1
- package/dist/src/planner/building/select-aggregates.d.ts +8 -0
- package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
- package/dist/src/planner/building/select-aggregates.js +30 -25
- package/dist/src/planner/building/select-aggregates.js.map +1 -1
- package/dist/src/planner/building/select.d.ts.map +1 -1
- package/dist/src/planner/building/select.js +15 -18
- package/dist/src/planner/building/select.js.map +1 -1
- package/dist/src/planner/cost/index.d.ts +14 -0
- package/dist/src/planner/cost/index.d.ts.map +1 -1
- package/dist/src/planner/cost/index.js +14 -0
- package/dist/src/planner/cost/index.js.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.d.ts +1 -0
- package/dist/src/planner/nodes/plan-node-type.d.ts.map +1 -1
- package/dist/src/planner/nodes/plan-node-type.js +1 -0
- package/dist/src/planner/nodes/plan-node-type.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts +39 -0
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +77 -0
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.d.ts +21 -0
- package/dist/src/planner/nodes/table-access-nodes.d.ts.map +1 -1
- package/dist/src/planner/nodes/table-access-nodes.js +38 -0
- package/dist/src/planner/nodes/table-access-nodes.js.map +1 -1
- package/dist/src/planner/optimizer.d.ts.map +1 -1
- package/dist/src/planner/optimizer.js +25 -0
- package/dist/src/planner/optimizer.js.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.d.ts.map +1 -1
- package/dist/src/planner/rules/access/rule-select-access-path.js +17 -9
- package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.d.ts.map +1 -1
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js +24 -4
- package/dist/src/planner/rules/join/rule-quickpick-enumeration.js.map +1 -1
- package/dist/src/planner/rules/join/rule-semi-join-pushdown.d.ts +107 -0
- package/dist/src/planner/rules/join/rule-semi-join-pushdown.d.ts.map +1 -0
- package/dist/src/planner/rules/join/rule-semi-join-pushdown.js +214 -0
- package/dist/src/planner/rules/join/rule-semi-join-pushdown.js.map +1 -0
- package/dist/src/planner/util/column-refs.d.ts +17 -0
- package/dist/src/planner/util/column-refs.d.ts.map +1 -0
- package/dist/src/planner/util/column-refs.js +30 -0
- package/dist/src/planner/util/column-refs.js.map +1 -0
- package/dist/src/runtime/emit/alter-table.d.ts +25 -5
- package/dist/src/runtime/emit/alter-table.d.ts.map +1 -1
- package/dist/src/runtime/emit/alter-table.js +144 -62
- package/dist/src/runtime/emit/alter-table.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +4 -6
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/insert.d.ts.map +1 -1
- package/dist/src/runtime/emit/insert.js +7 -0
- package/dist/src/runtime/emit/insert.js.map +1 -1
- package/dist/src/runtime/emit/update.d.ts.map +1 -1
- package/dist/src/runtime/emit/update.js +15 -10
- package/dist/src/runtime/emit/update.js.map +1 -1
- package/dist/src/runtime/emit/write-coercion.d.ts +7 -0
- package/dist/src/runtime/emit/write-coercion.d.ts.map +1 -0
- package/dist/src/runtime/emit/write-coercion.js +20 -0
- package/dist/src/runtime/emit/write-coercion.js.map +1 -0
- package/dist/src/runtime/register.d.ts.map +1 -1
- package/dist/src/runtime/register.js +2 -0
- package/dist/src/runtime/register.js.map +1 -1
- package/dist/src/runtime/scalar-fusion.d.ts.map +1 -1
- package/dist/src/runtime/scalar-fusion.js +4 -0
- package/dist/src/runtime/scalar-fusion.js.map +1 -1
- package/dist/src/schema/catalog.d.ts +99 -2
- package/dist/src/schema/catalog.d.ts.map +1 -1
- package/dist/src/schema/catalog.js +100 -26
- package/dist/src/schema/catalog.js.map +1 -1
- package/dist/src/schema/manager.d.ts.map +1 -1
- package/dist/src/schema/manager.js +10 -0
- package/dist/src/schema/manager.js.map +1 -1
- package/package.json +3 -3
|
@@ -17,12 +17,23 @@ import { ColumnReferenceNode } from '../nodes/reference.js';
|
|
|
17
17
|
* view-write envelope (`view-mutation-builder.ts`) so `new.<col>` resolves the same
|
|
18
18
|
* way on both paths.
|
|
19
19
|
*/
|
|
20
|
-
export function buildRowDefaultScope(parentScope, targetColumns, sourceAttributes, mutationContextVarNames
|
|
20
|
+
export function buildRowDefaultScope(parentScope, targetColumns, sourceAttributes, mutationContextVarNames,
|
|
21
|
+
/**
|
|
22
|
+
* Position to record on each reference, parallel to `targetColumns`. Defaults to
|
|
23
|
+
* the target-list position, which is where the column sits when the caller passes
|
|
24
|
+
* the source relation's own attributes. A caller whose attributes come from a row
|
|
25
|
+
* laid out differently — the INSERT row expansion, where a supplied column sits at
|
|
26
|
+
* its *table* position — passes the positions in that row instead, so the recorded
|
|
27
|
+
* index stays true for the planner analyses that read it (value lookup itself goes
|
|
28
|
+
* through the attribute id, not this field).
|
|
29
|
+
*/
|
|
30
|
+
columnIndexes) {
|
|
21
31
|
const scope = new RegisteredScope(parentScope);
|
|
22
32
|
targetColumns.forEach((targetCol, index) => {
|
|
23
33
|
if (index >= sourceAttributes.length)
|
|
24
34
|
return;
|
|
25
35
|
const sourceAttr = sourceAttributes[index];
|
|
36
|
+
const columnIndex = columnIndexes?.[index] ?? index;
|
|
26
37
|
const colNameLower = targetCol.name.toLowerCase();
|
|
27
38
|
// Resolve against the target column's *declared* type when available (it
|
|
28
39
|
// carries the declared collation), so a DEFAULT comparing a supplied sibling
|
|
@@ -30,7 +41,7 @@ export function buildRowDefaultScope(parentScope, targetColumns, sourceAttribute
|
|
|
30
41
|
// attribute's type reflects the supplied expression (e.g. a VALUES literal),
|
|
31
42
|
// which is collation-blind.
|
|
32
43
|
const refType = targetCol.type ?? sourceAttr.type;
|
|
33
|
-
const makeRef = (exp, s) => new ColumnReferenceNode(s, exp, refType, sourceAttr.id,
|
|
44
|
+
const makeRef = (exp, s) => new ColumnReferenceNode(s, exp, refType, sourceAttr.id, columnIndex);
|
|
34
45
|
scope.registerSymbol(`new.${colNameLower}`, makeRef);
|
|
35
46
|
if (!mutationContextVarNames?.has(colNameLower)) {
|
|
36
47
|
scope.registerSymbol(colNameLower, makeRef);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-scope.js","sourceRoot":"","sources":["../../../../src/planner/building/default-scope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CACnC,WAAkB,EAClB,aAAmF,EACnF,gBAA0C,EAC1C,uBAA6C;
|
|
1
|
+
{"version":3,"file":"default-scope.js","sourceRoot":"","sources":["../../../../src/planner/building/default-scope.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CACnC,WAAkB,EAClB,aAAmF,EACnF,gBAA0C,EAC1C,uBAA6C;AAC7C;;;;;;;;GAQG;AACH,aAAqC;IAErC,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;QAC1C,IAAI,KAAK,IAAI,gBAAgB,CAAC,MAAM;YAAE,OAAO;QAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,WAAW,GAAG,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QACpD,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAClD,yEAAyE;QACzE,6EAA6E;QAC7E,oEAAoE;QACpE,6EAA6E;QAC7E,4BAA4B;QAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC;QAClD,MAAM,OAAO,GAAsB,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAC7C,IAAI,mBAAmB,CAAC,CAAC,EAAE,GAAqB,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACxF,KAAK,CAAC,cAAc,CAAC,OAAO,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,uBAAuB,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACjD,KAAK,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"insert.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAU9D,OAAO,EAAE,QAAQ,EAAE,KAAK,kBAAkB,EAA2D,MAAM,uBAAuB,CAAC;AAKnI,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAShD,OAAO,EAA+B,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA6oB9F,wBAAgB,eAAe,CAC9B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;GAMG;AACH,gBAAgB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AACzD;;;;;;;;;GASG;AACH,cAAc,CAAC,EAAE,kBAAkB;AACnC;;;;;;GAMG;AACH,UAAU,UAAQ;AAClB;;;;;;;;;;;;GAYG;AACH,sBAAsB,CAAC,EAAE,KAAK,GAC5B,QAAQ,CAuaV"}
|
|
@@ -14,6 +14,8 @@ import { RegisteredScope } from '../scopes/registered.js';
|
|
|
14
14
|
import { buildRowDefaultScope } from './default-scope.js';
|
|
15
15
|
import { buildGeneratedColumnExpr } from './generated-column-scope.js';
|
|
16
16
|
import { ColumnReferenceNode } from '../nodes/reference.js';
|
|
17
|
+
import { WriteCoercionNode } from '../nodes/scalar.js';
|
|
18
|
+
import { buildCellCoercion } from '../../types/validation.js';
|
|
17
19
|
import { SinkNode } from '../nodes/sink-node.js';
|
|
18
20
|
import { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
|
|
19
21
|
import { RowOpFlag } from '../../schema/table.js';
|
|
@@ -35,14 +37,153 @@ import { isViewSchema } from '../../schema/view.js';
|
|
|
35
37
|
import { validateReservedTags } from '../../schema/reserved-tags.js';
|
|
36
38
|
import { raiseStmtTagDiagnostics } from './tag-diagnostics.js';
|
|
37
39
|
import { buildMutationContextAttributes, buildMutationContextValues, registerMutationContextSymbols } from './mutation-context.js';
|
|
40
|
+
/**
|
|
41
|
+
* Wrap a produced cell in a {@link WriteCoercionNode} converting it to `column`'s
|
|
42
|
+
* declared type — write-path semantics (`buildCellCoercion`: throws MISMATCH,
|
|
43
|
+
* identity-guards), applied inside the row-expansion projection chain so DEFAULT
|
|
44
|
+
* and generated expressions evaluated later in the chain read the DECLARED form.
|
|
45
|
+
* Skipped when provably inert, to keep untyped columns free of plan noise.
|
|
46
|
+
*/
|
|
47
|
+
function coerceToDeclared(ctx, node, column) {
|
|
48
|
+
// A type imposing neither parse nor validate (e.g. ANY) — the converter could
|
|
49
|
+
// never change or reject a value.
|
|
50
|
+
if (!column.logicalType.parse && !column.logicalType.validate)
|
|
51
|
+
return node;
|
|
52
|
+
// Identity-matched source with no conformance guard — provably nothing to do.
|
|
53
|
+
if (buildCellCoercion(node.getType().logicalType, column.logicalType, column.name) === undefined)
|
|
54
|
+
return node;
|
|
55
|
+
return new WriteCoercionNode(ctx.scope, node, columnSchemaToScalarType(column), column.name);
|
|
56
|
+
}
|
|
57
|
+
/** A cell the expansion fills in at a later stage — NULL until then. */
|
|
58
|
+
function nullPlaceholder(ctx) {
|
|
59
|
+
return buildExpression(ctx, { type: 'literal', value: null });
|
|
60
|
+
}
|
|
61
|
+
/** Projection that re-reads the cell a previous stage already produced at `colIdx`. */
|
|
62
|
+
function passThroughCell(ctx, attr, colIdx, alias) {
|
|
63
|
+
return {
|
|
64
|
+
node: new ColumnReferenceNode(ctx.scope, { type: 'column', name: attr.name }, attr.type, attr.id, colIdx),
|
|
65
|
+
alias,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/** True when the column's DEFAULT is an AST expression rather than a literal value. */
|
|
69
|
+
function isExpressionDefault(dflt) {
|
|
70
|
+
return dflt !== undefined && typeof dflt === 'object' && dflt !== null && 'type' in dflt;
|
|
71
|
+
}
|
|
72
|
+
/** True when the source already produces exactly the table's columns, in table order. */
|
|
73
|
+
function sourceMatchesTableShape(targetColumns, tableSchema) {
|
|
74
|
+
return targetColumns.length === tableSchema.columns.length
|
|
75
|
+
&& targetColumns.every((tc, i) => tc.name.toLowerCase() === tableSchema.columns[i].name.toLowerCase());
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Projection A: expand the source to the table's column structure, converting each
|
|
79
|
+
* supplied or literal-default cell to its column's declared type in place. Expression
|
|
80
|
+
* defaults and generated columns get a NULL placeholder here; later stages replace them.
|
|
81
|
+
*/
|
|
82
|
+
function buildBaseExpansion(ctx, sourceNode, targetColumns, tableSchema) {
|
|
83
|
+
const sourceAttributes = sourceNode.getAttributes();
|
|
84
|
+
const expressionDefaultCols = [];
|
|
85
|
+
const projections = tableSchema.columns.map((tableColumn, tableColIdx) => {
|
|
86
|
+
const targetColIndex = targetColumns.findIndex(tc => tc.name.toLowerCase() === tableColumn.name.toLowerCase());
|
|
87
|
+
if (tableColumn.generated) {
|
|
88
|
+
if (targetColIndex >= 0) {
|
|
89
|
+
throw new QuereusError(`Cannot INSERT into generated column '${tableColumn.name}'`, StatusCode.ERROR);
|
|
90
|
+
}
|
|
91
|
+
// Replaced by the generated-column chain.
|
|
92
|
+
return { node: nullPlaceholder(ctx), alias: tableColumn.name };
|
|
93
|
+
}
|
|
94
|
+
if (targetColIndex >= 0) {
|
|
95
|
+
if (targetColIndex >= sourceAttributes.length) {
|
|
96
|
+
throw new QuereusError(`Source has fewer columns than expected for INSERT target columns`, StatusCode.ERROR);
|
|
97
|
+
}
|
|
98
|
+
const sourceAttr = sourceAttributes[targetColIndex];
|
|
99
|
+
const columnRef = new ColumnReferenceNode(ctx.scope, { type: 'column', name: sourceAttr.name }, sourceAttr.type, sourceAttr.id, targetColIndex);
|
|
100
|
+
// NOTE: wrapping a supplied cell for conversion makes it a computed projection, so
|
|
101
|
+
// ProjectNode stops carrying the source's unique keys / functional dependencies
|
|
102
|
+
// through it. Correct conservatively — a conversion collapses spellings, so
|
|
103
|
+
// distinctness is not preserved in general. If an optimizer rule ever needs the
|
|
104
|
+
// expanded source's key set, teach the coercion node an injectivity claim for the
|
|
105
|
+
// conversions that provably preserve distinctness; do not drop the wrap.
|
|
106
|
+
return { node: coerceToDeclared(ctx, columnRef, tableColumn), alias: tableColumn.name };
|
|
107
|
+
}
|
|
108
|
+
const dflt = tableColumn.defaultValue;
|
|
109
|
+
if (isExpressionDefault(dflt)) {
|
|
110
|
+
// Computed by projection B against this projection's CONVERTED row, so a
|
|
111
|
+
// `new.<sibling>` read sees the declared form.
|
|
112
|
+
expressionDefaultCols.push(tableColIdx);
|
|
113
|
+
return { node: nullPlaceholder(ctx), alias: tableColumn.name };
|
|
114
|
+
}
|
|
115
|
+
if (dflt !== undefined) {
|
|
116
|
+
// Literal default — no row scope needed; convert to declared form.
|
|
117
|
+
return {
|
|
118
|
+
node: coerceToDeclared(ctx, buildExpression(ctx, { type: 'literal', value: dflt }), tableColumn),
|
|
119
|
+
alias: tableColumn.name
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// Omitted, no default — NULL, nothing to convert.
|
|
123
|
+
return { node: nullPlaceholder(ctx), alias: tableColumn.name };
|
|
124
|
+
});
|
|
125
|
+
return { node: new ProjectNode(ctx.scope, sourceNode, projections), expressionDefaultCols };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Projection B: compute the omitted columns' *expression* defaults against projection
|
|
129
|
+
* A's converted row.
|
|
130
|
+
*
|
|
131
|
+
* A default can derive from a sibling the INSERT actually supplied, e.g.
|
|
132
|
+
* `slug text default (lower(new.title))`; the `new.`-qualified form is always
|
|
133
|
+
* available, and the bare form resolves too unless a same-named mutation-context
|
|
134
|
+
* variable shadows it (preserving the WITH CONTEXT precedence). Columns the INSERT
|
|
135
|
+
* omitted are intentionally NOT registered: they have no value yet in this same
|
|
136
|
+
* projection, so a default cannot depend on another column's default (which would
|
|
137
|
+
* impose an evaluation-order race).
|
|
138
|
+
*/
|
|
139
|
+
function buildExpressionDefaultProjection(ctx, inputNode, expressionDefaultCols, targetColumns, tableSchema, defaultParentScope) {
|
|
140
|
+
const inputAttrs = inputNode.getAttributes();
|
|
141
|
+
// buildRowDefaultScope pairs targetColumns[i] with suppliedAttrs[i], so hand it
|
|
142
|
+
// projection A's output attributes AT THE SUPPLIED COLUMNS' TABLE POSITIONS: the
|
|
143
|
+
// supplied values now live in the expanded row (in declared form), no longer in
|
|
144
|
+
// the original source layout. Those same table positions are the ones the scope
|
|
145
|
+
// records on each reference.
|
|
146
|
+
const suppliedIndexes = targetColumns.map(tc => tableSchema.columnIndexMap.get(tc.name.toLowerCase()));
|
|
147
|
+
const suppliedAttrs = suppliedIndexes.map(idx => inputAttrs[idx]);
|
|
148
|
+
const contextVarNames = new Set((tableSchema.mutationContext ?? []).map(v => v.name.toLowerCase()));
|
|
149
|
+
const defaultScope = buildRowDefaultScope(defaultParentScope, targetColumns, suppliedAttrs, contextVarNames, suppliedIndexes);
|
|
150
|
+
const defaultCtx = { ...ctx, scope: defaultScope };
|
|
151
|
+
const exprDefaultSet = new Set(expressionDefaultCols);
|
|
152
|
+
const projections = tableSchema.columns.map((col, colIdx) => {
|
|
153
|
+
if (!exprDefaultSet.has(colIdx)) {
|
|
154
|
+
return passThroughCell(ctx, inputAttrs[colIdx], colIdx, col.name);
|
|
155
|
+
}
|
|
156
|
+
const defaultNode = buildExpression(defaultCtx, col.defaultValue);
|
|
157
|
+
// Validate that the default expression is deterministic — skip when the
|
|
158
|
+
// `nondeterministic_schema` option permits non-deterministic defaults.
|
|
159
|
+
if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
|
|
160
|
+
validateDeterministicDefault(defaultNode, col.name, tableSchema.name);
|
|
161
|
+
}
|
|
162
|
+
return { node: coerceToDeclared(ctx, defaultNode, col), alias: col.name };
|
|
163
|
+
});
|
|
164
|
+
return new ProjectNode(ctx.scope, inputNode, projections);
|
|
165
|
+
}
|
|
38
166
|
/**
|
|
39
167
|
* Creates a uniform row expansion projection that maps any relational source
|
|
40
168
|
* to the target table's column structure, filling in defaults for omitted columns.
|
|
41
169
|
* This ensures INSERT works orthogonally with any relational source.
|
|
42
170
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
171
|
+
* Every produced cell is converted to its column's DECLARED type in place
|
|
172
|
+
* (via {@link coerceToDeclared}), so anything evaluated later in the chain —
|
|
173
|
+
* an expression DEFAULT reading a supplied sibling via `new.<col>`, a generated
|
|
174
|
+
* column — sees the value in the form that will be stored, matching what the
|
|
175
|
+
* UPDATE and upsert DO UPDATE paths hand the same expressions. `emitInsert`'s
|
|
176
|
+
* row conversion then degrades to conformance guards (identity skip), keeping
|
|
177
|
+
* the convert-exactly-once discipline.
|
|
178
|
+
*
|
|
179
|
+
* The chain, each stage present only when needed:
|
|
180
|
+
* 1. {@link buildBaseExpansion} expands the source to table structure.
|
|
181
|
+
* 2. {@link buildExpressionDefaultProjection}, only when ≥1 omitted column carries
|
|
182
|
+
* an *expression* default — preserving the hot-path property that the common
|
|
183
|
+
* insert (every column supplied, or only literal/NULL defaults) allocates
|
|
184
|
+
* nothing here.
|
|
185
|
+
* 3. {@link createGeneratedColumnProjection} computes generated values, each
|
|
186
|
+
* converted before the next reads it.
|
|
46
187
|
*/
|
|
47
188
|
function createRowExpansionProjection(ctx, sourceNode, targetColumns, tableReference, contextScope,
|
|
48
189
|
/**
|
|
@@ -57,105 +198,19 @@ function createRowExpansionProjection(ctx, sourceNode, targetColumns, tableRefer
|
|
|
57
198
|
defaultRowContextScope) {
|
|
58
199
|
const tableSchema = tableReference.tableSchema;
|
|
59
200
|
const hasGeneratedColumns = tableSchema.columns.some(col => col.generated);
|
|
60
|
-
//
|
|
61
|
-
if (!hasGeneratedColumns && targetColumns
|
|
62
|
-
|
|
63
|
-
if (allColumnsMatch) {
|
|
64
|
-
return sourceNode; // Source already matches table structure
|
|
65
|
-
}
|
|
201
|
+
// Source already matches the table structure — no expansion needed.
|
|
202
|
+
if (!hasGeneratedColumns && sourceMatchesTableShape(targetColumns, tableSchema)) {
|
|
203
|
+
return sourceNode;
|
|
66
204
|
}
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// projection, so a default cannot depend on another column's default (which would
|
|
77
|
-
// impose an evaluation-order race). The scope is parented on contextScope so
|
|
78
|
-
// mutation-context variables stay resolvable.
|
|
79
|
-
//
|
|
80
|
-
// INSERT is a hot path, so this is constructed only on demand — the first time an
|
|
81
|
-
// omitted column carries an *expression* default. The common insert (every column
|
|
82
|
-
// supplied, or only literal/NULL defaults) allocates nothing here.
|
|
83
|
-
let rowScopedDefaultCtx;
|
|
84
|
-
const defaultCtxFor = () => {
|
|
85
|
-
if (rowScopedDefaultCtx)
|
|
86
|
-
return rowScopedDefaultCtx;
|
|
87
|
-
const contextVarNames = new Set((tableReference.tableSchema.mutationContext ?? []).map(v => v.name.toLowerCase()));
|
|
88
|
-
const defaultScope = buildRowDefaultScope(contextScope ?? defaultRowContextScope ?? ctx.scope, targetColumns, sourceAttributes, contextVarNames);
|
|
89
|
-
rowScopedDefaultCtx = { ...ctx, scope: defaultScope };
|
|
90
|
-
return rowScopedDefaultCtx;
|
|
91
|
-
};
|
|
92
|
-
tableSchema.columns.forEach((tableColumn) => {
|
|
93
|
-
// Find if this table column is in the target columns
|
|
94
|
-
const targetColIndex = targetColumns.findIndex(tc => tc.name.toLowerCase() === tableColumn.name.toLowerCase());
|
|
95
|
-
if (tableColumn.generated) {
|
|
96
|
-
// Generated columns cannot be explicitly provided in INSERT
|
|
97
|
-
if (targetColIndex >= 0) {
|
|
98
|
-
throw new QuereusError(`Cannot INSERT into generated column '${tableColumn.name}'`, StatusCode.ERROR);
|
|
99
|
-
}
|
|
100
|
-
// Placeholder NULL — will be replaced in the second projection pass
|
|
101
|
-
projections.push({
|
|
102
|
-
node: buildExpression(ctx, { type: 'literal', value: null }),
|
|
103
|
-
alias: tableColumn.name
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
else if (targetColIndex >= 0) {
|
|
107
|
-
// This column is provided by the source - reference the source column
|
|
108
|
-
if (targetColIndex < sourceAttributes.length) {
|
|
109
|
-
const sourceAttr = sourceAttributes[targetColIndex];
|
|
110
|
-
// Create a column reference to the source attribute
|
|
111
|
-
const columnRef = new ColumnReferenceNode(ctx.scope, { type: 'column', name: sourceAttr.name }, sourceAttr.type, sourceAttr.id, targetColIndex);
|
|
112
|
-
projections.push({
|
|
113
|
-
node: columnRef,
|
|
114
|
-
alias: tableColumn.name
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
throw new QuereusError(`Source has fewer columns than expected for INSERT target columns`, StatusCode.ERROR);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
// This column is omitted - use its default expression (which may read a
|
|
123
|
-
// populated sibling via `new.`) or NULL.
|
|
124
|
-
let defaultNode;
|
|
125
|
-
if (tableColumn.defaultValue !== undefined) {
|
|
126
|
-
// Use default value
|
|
127
|
-
if (typeof tableColumn.defaultValue === 'object' && tableColumn.defaultValue !== null && 'type' in tableColumn.defaultValue) {
|
|
128
|
-
// AST expression default — resolve against the row-scoped context that
|
|
129
|
-
// exposes populated siblings as `new.<column>` (built lazily, on first use).
|
|
130
|
-
defaultNode = buildExpression(defaultCtxFor(), tableColumn.defaultValue);
|
|
131
|
-
// Validate that the default expression is deterministic — skip when the
|
|
132
|
-
// `nondeterministic_schema` option permits non-deterministic defaults.
|
|
133
|
-
if (!ctx.db.options.getBooleanOption('nondeterministic_schema')) {
|
|
134
|
-
validateDeterministicDefault(defaultNode, tableColumn.name, tableSchema.name);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
// Literal default value — no row scope needed.
|
|
139
|
-
defaultNode = buildExpression(ctx, { type: 'literal', value: tableColumn.defaultValue });
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
// No default value - use NULL (no row scope needed).
|
|
144
|
-
defaultNode = buildExpression(ctx, { type: 'literal', value: null });
|
|
145
|
-
}
|
|
146
|
-
projections.push({
|
|
147
|
-
node: defaultNode,
|
|
148
|
-
alias: tableColumn.name
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
// Create first projection node that expands source to table structure
|
|
153
|
-
let resultNode = new ProjectNode(ctx.scope, sourceNode, projections);
|
|
154
|
-
// Second pass: compute generated column values using the expanded row
|
|
155
|
-
if (hasGeneratedColumns) {
|
|
156
|
-
resultNode = createGeneratedColumnProjection(ctx, resultNode, tableSchema);
|
|
157
|
-
}
|
|
158
|
-
return resultNode;
|
|
205
|
+
const { node: expanded, expressionDefaultCols } = buildBaseExpansion(ctx, sourceNode, targetColumns, tableSchema);
|
|
206
|
+
const withDefaults = expressionDefaultCols.length === 0
|
|
207
|
+
? expanded
|
|
208
|
+
: buildExpressionDefaultProjection(ctx, expanded, expressionDefaultCols, targetColumns, tableSchema,
|
|
209
|
+
// Parented on contextScope so mutation-context variables stay resolvable.
|
|
210
|
+
contextScope ?? defaultRowContextScope ?? ctx.scope);
|
|
211
|
+
return hasGeneratedColumns
|
|
212
|
+
? createGeneratedColumnProjection(ctx, withDefaults, tableSchema)
|
|
213
|
+
: withDefaults;
|
|
159
214
|
}
|
|
160
215
|
/**
|
|
161
216
|
* Creates a chain of projections that compute generated column values in
|
|
@@ -182,13 +237,12 @@ function createGeneratedColumnProjection(ctx, sourceNode, tableSchema) {
|
|
|
182
237
|
const genProjections = tableSchema.columns.map((col, colIdx) => {
|
|
183
238
|
if (colIdx === genColIdx) {
|
|
184
239
|
const genNode = buildGeneratedColumnExpr(ctx, tableSchema, genColumn.name, genColumn.generatedExpr, inputAttributes);
|
|
185
|
-
|
|
240
|
+
// Convert to declared form HERE, so a generated column reading another
|
|
241
|
+
// generated column sees the converted value — matching the per-cell
|
|
242
|
+
// order of the upsert DO UPDATE recompute (runtime/emit/dml-executor.ts).
|
|
243
|
+
return { node: coerceToDeclared(ctx, genNode, genColumn), alias: col.name };
|
|
186
244
|
}
|
|
187
|
-
|
|
188
|
-
return {
|
|
189
|
-
node: new ColumnReferenceNode(ctx.scope, { type: 'column', name: attr.name }, attr.type, attr.id, colIdx),
|
|
190
|
-
alias: col.name,
|
|
191
|
-
};
|
|
245
|
+
return passThroughCell(ctx, inputAttributes[colIdx], colIdx, col.name);
|
|
192
246
|
});
|
|
193
247
|
currentNode = new ProjectNode(ctx.scope, currentNode, genProjections);
|
|
194
248
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"insert.js","sourceRoot":"","sources":["../../../../src/planner/building/insert.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,14 @@ export declare function buildAggregatePhase(input: RelationalPlanNode, stmt: AST
|
|
|
13
13
|
alias: string;
|
|
14
14
|
}[], hasAggregates: boolean, projections: Projection[], hasWrappedAggregates?: boolean, selectList?: readonly SelectListEntry[], starProjectionsByColumn?: ReadonlyMap<AST.ResultColumn, readonly Projection[]>): {
|
|
15
15
|
output: RelationalPlanNode;
|
|
16
|
+
/**
|
|
17
|
+
* Whether this SELECT is an aggregate query — it names an aggregate function
|
|
18
|
+
* anywhere, has a GROUP BY, or has a HAVING (which makes one implicit group on its
|
|
19
|
+
* own). False means every field below is the early-out shape and `output` is the
|
|
20
|
+
* untouched input. Callers read this rather than re-deriving it: it is also what
|
|
21
|
+
* decides whether an ORDER BY may name an aggregate.
|
|
22
|
+
*/
|
|
23
|
+
isAggregateQuery: boolean;
|
|
16
24
|
aggregateScope?: RegisteredScope;
|
|
17
25
|
needsFinalProjection: boolean;
|
|
18
26
|
preAggregateSort: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,kBAAkB,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACtI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAO1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAIhD,OAAO,EAAwD,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKjH;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,kBAAkB,EACzB,IAAI,EAAE,GAAG,CAAC,UAAU,EACpB,aAAa,EAAE,eAAe,EAC9B,UAAU,EAAE;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,EAC3D,aAAa,EAAE,OAAO,EACtB,WAAW,EAAE,UAAU,EAAE,EACzB,oBAAoB,GAAE,OAAe,EACrC,UAAU,GAAE,SAAS,eAAe,EAAO,EAC3C,uBAAuB,GAAE,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAa,GACvF;IACF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oBAAoB,EAAE,OAAO,CAAC;IAC9B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAC;IACtC,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,iBAAiB,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAClD,wEAAwE;IACxE,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,sFAAsF;IACtF,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;CAChD,
|
|
1
|
+
{"version":3,"file":"select-aggregates.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/select-aggregates.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,24 +43,27 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
|
|
|
43
43
|
// later — so `hasOrderByOnlyAggregates` stays false for it.
|
|
44
44
|
const needsPostAggregateSort = orderByNeedsPostAggregateSort(stmt.orderBy, selectContext, selectList);
|
|
45
45
|
let hasOrderByOnlyAggregates = false;
|
|
46
|
-
if (needsPostAggregateSort && (hasAggregates || hasGroupBy)) {
|
|
47
|
-
const orderByAggs = collectOrderByAggregates(stmt.orderBy, selectContext, aggregates);
|
|
48
|
-
if (orderByAggs.length > 0) {
|
|
49
|
-
aggregates.push(...orderByAggs);
|
|
50
|
-
hasAggregates = true;
|
|
51
|
-
hasOrderByOnlyAggregates = true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
46
|
// A `having` clause makes this an aggregate query on its own, exactly as SQLite and
|
|
55
47
|
// PostgreSQL define it: with no `group by` the query has ONE implicit group over all
|
|
56
48
|
// input rows, and `having` filters that single group. So a query with a `having` and
|
|
57
49
|
// neither aggregates nor `group by` still goes through the aggregate pipeline below —
|
|
58
50
|
// it builds an AggregateNode with no grouping keys and no aggregates, which yields
|
|
59
51
|
// exactly one (empty) row, and every clause above it is subject to the usual coverage
|
|
60
|
-
// rule. Returning early
|
|
52
|
+
// rule. Returning early instead is what silently dropped the predicate. This is
|
|
53
|
+
// computed HERE, above the ORDER BY collection, because that collection asks the same
|
|
54
|
+
// question: `select 1 from t having 1 = 1 order by count(*)` is an aggregate query,
|
|
55
|
+
// so its ORDER BY aggregate is legal and must be collected.
|
|
61
56
|
const isAggregateQuery = hasAggregates || hasGroupBy || Boolean(stmt.having);
|
|
57
|
+
if (needsPostAggregateSort && isAggregateQuery) {
|
|
58
|
+
const orderByAggs = collectOrderByAggregates(stmt.orderBy, selectContext, aggregates);
|
|
59
|
+
if (orderByAggs.length > 0) {
|
|
60
|
+
aggregates.push(...orderByAggs);
|
|
61
|
+
hasAggregates = true;
|
|
62
|
+
hasOrderByOnlyAggregates = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
62
65
|
if (!isAggregateQuery) {
|
|
63
|
-
return { output: input, needsFinalProjection: false, preAggregateSort: false };
|
|
66
|
+
return { output: input, isAggregateQuery: false, needsFinalProjection: false, preAggregateSort: false };
|
|
64
67
|
}
|
|
65
68
|
let currentInput = input;
|
|
66
69
|
// Handle pre-aggregate sorting for ORDER BY without GROUP BY. Skip when the
|
|
@@ -83,9 +86,9 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
|
|
|
83
86
|
// Build GROUP BY expressions, resolving 1-based positional references against the SELECT list.
|
|
84
87
|
const groupByExpressions = stmt.groupBy ?
|
|
85
88
|
stmt.groupBy.map(expr => buildOrdinalAwareExpression(selectContext, expr, selectList, 'GROUP BY', false)) : [];
|
|
86
|
-
// Validate
|
|
89
|
+
// Validate SELECT-list coverage (must run after groupByExpressions are built
|
|
87
90
|
// so we can check column-coverage of SELECT projections against GROUP BY)
|
|
88
|
-
validateAggregateProjections(projections,
|
|
91
|
+
validateAggregateProjections(projections, groupByExpressions);
|
|
89
92
|
// Create AggregateNode
|
|
90
93
|
const aggregateNode = new AggregateNode(selectContext.scope, currentInput, groupByExpressions, aggregates);
|
|
91
94
|
currentInput = aggregateNode;
|
|
@@ -150,6 +153,7 @@ export function buildAggregatePhase(input, stmt, selectContext, aggregates, hasA
|
|
|
150
153
|
|| !aggregateOutputIsSelectList(stmt, projections, aggregates, groupByExpressions, starProjectionsByColumn, selectContext);
|
|
151
154
|
return {
|
|
152
155
|
output: currentInput,
|
|
156
|
+
isAggregateQuery: true,
|
|
153
157
|
aggregateScope: aggregateOutputScope,
|
|
154
158
|
needsFinalProjection,
|
|
155
159
|
preAggregateSort,
|
|
@@ -565,7 +569,7 @@ function findUngroupedPostAggregateRef(node, context, skipSubqueries = false, in
|
|
|
565
569
|
return null;
|
|
566
570
|
}
|
|
567
571
|
/**
|
|
568
|
-
* Validates that
|
|
572
|
+
* Validates that every SELECT-list item is covered by this query's grouping.
|
|
569
573
|
* Every non-aggregate column reference in the SELECT list must either (a) match a
|
|
570
574
|
* GROUP BY column by attribute id, or (b) appear inside a subtree whose AST matches
|
|
571
575
|
* a GROUP BY expression. This is intentionally stricter than full functional-dependency
|
|
@@ -574,22 +578,23 @@ function findUngroupedPostAggregateRef(node, context, skipSubqueries = false, in
|
|
|
574
578
|
*
|
|
575
579
|
* Only {@link buildAggregatePhase} calls this, and only from inside its
|
|
576
580
|
* `isAggregateQuery` guard, so "no GROUP BY" here means "one implicit group with an
|
|
577
|
-
* EMPTY set of grouping keys" — not "no grouping at all". The coverage walk
|
|
578
|
-
*
|
|
581
|
+
* EMPTY set of grouping keys" — not "no grouping at all". The coverage walk runs for
|
|
582
|
+
* that shape too, and the empty coverage set is exactly what makes it come out right:
|
|
583
|
+
* a bare column reference is rejected (the implicit group carries no base-table
|
|
584
|
+
* column), while an item that references no column of the query's input — a literal,
|
|
585
|
+
* a constant-folding expression, a scalar subquery, a `case` over an aggregate — has
|
|
586
|
+
* nothing for the walk to reject and is admitted. `select 'total', count(*) from t` is
|
|
587
|
+
* legal standard SQL; `select a, count(*) from t` is not, and the walk is what tells
|
|
588
|
+
* them apart.
|
|
579
589
|
*/
|
|
580
|
-
function validateAggregateProjections(projections,
|
|
590
|
+
function validateAggregateProjections(projections, groupByExpressions) {
|
|
581
591
|
if (projections.length === 0)
|
|
582
592
|
return;
|
|
583
|
-
if (hasAggregates && !hasGroupBy) {
|
|
584
|
-
throw new QuereusError('Cannot mix aggregate and non-aggregate columns in SELECT list without GROUP BY', StatusCode.ERROR);
|
|
585
|
-
}
|
|
586
593
|
// The SELECT list is built against the pre-aggregate scope, so no aggregate
|
|
587
|
-
// output attributes participate.
|
|
588
|
-
//
|
|
589
|
-
//
|
|
590
|
-
//
|
|
591
|
-
// raise its internal-consistency assert ("Internal: SELECT * column 'id' is not a
|
|
592
|
-
// GROUP BY key", StatusCode.INTERNAL) at the user instead of this message.
|
|
594
|
+
// output attributes participate. Skipping the walk for the ungrouped shape is what
|
|
595
|
+
// let `select * from t having 1 = 1` fall through to buildFinalAggregateProjections
|
|
596
|
+
// and raise its internal-consistency assert ("Internal: SELECT * column 'id' is not
|
|
597
|
+
// a GROUP BY key", StatusCode.INTERNAL) at the user instead of this message.
|
|
593
598
|
const coverage = buildGroupByCoverage(groupByExpressions);
|
|
594
599
|
for (const proj of projections) {
|
|
595
600
|
assertGroupByCoverage(proj.node, coverage);
|