@quereus/quereus 4.9.0 → 4.10.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 +19 -4
- package/dist/src/core/database.js.map +1 -1
- package/dist/src/core/statement.d.ts.map +1 -1
- package/dist/src/core/statement.js +74 -15
- package/dist/src/core/statement.js.map +1 -1
- package/dist/src/func/builtins/aggregate.d.ts.map +1 -1
- package/dist/src/func/builtins/aggregate.js +85 -33
- package/dist/src/func/builtins/aggregate.js.map +1 -1
- package/dist/src/func/builtins/explain.d.ts.map +1 -1
- package/dist/src/func/builtins/explain.js +9 -2
- package/dist/src/func/builtins/explain.js.map +1 -1
- package/dist/src/func/builtins/scalar.d.ts.map +1 -1
- package/dist/src/func/builtins/scalar.js +4 -2
- package/dist/src/func/builtins/scalar.js.map +1 -1
- package/dist/src/func/registration.d.ts +6 -0
- package/dist/src/func/registration.d.ts.map +1 -1
- package/dist/src/func/registration.js +1 -0
- package/dist/src/func/registration.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/planner/nodes/scalar.d.ts.map +1 -1
- package/dist/src/planner/nodes/scalar.js +13 -1
- package/dist/src/planner/nodes/scalar.js.map +1 -1
- package/dist/src/runtime/emission-context.d.ts +14 -1
- package/dist/src/runtime/emission-context.d.ts.map +1 -1
- package/dist/src/runtime/emission-context.js +17 -5
- package/dist/src/runtime/emission-context.js.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.d.ts +44 -8
- package/dist/src/runtime/emit/aggregate-setup.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate-setup.js +79 -15
- package/dist/src/runtime/emit/aggregate-setup.js.map +1 -1
- package/dist/src/runtime/emit/aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/aggregate.js +21 -106
- package/dist/src/runtime/emit/aggregate.js.map +1 -1
- package/dist/src/runtime/emit/asof-scan.js +1 -1
- package/dist/src/runtime/emit/asof-scan.js.map +1 -1
- package/dist/src/runtime/emit/between.d.ts +2 -0
- package/dist/src/runtime/emit/between.d.ts.map +1 -1
- package/dist/src/runtime/emit/between.js +7 -8
- package/dist/src/runtime/emit/between.js.map +1 -1
- package/dist/src/runtime/emit/binary.d.ts +27 -5
- package/dist/src/runtime/emit/binary.d.ts.map +1 -1
- package/dist/src/runtime/emit/binary.js +266 -177
- package/dist/src/runtime/emit/binary.js.map +1 -1
- package/dist/src/runtime/emit/case.d.ts +34 -0
- package/dist/src/runtime/emit/case.d.ts.map +1 -1
- package/dist/src/runtime/emit/case.js +18 -11
- package/dist/src/runtime/emit/case.js.map +1 -1
- package/dist/src/runtime/emit/cast.d.ts +2 -0
- package/dist/src/runtime/emit/cast.d.ts.map +1 -1
- package/dist/src/runtime/emit/cast.js +7 -5
- package/dist/src/runtime/emit/cast.js.map +1 -1
- package/dist/src/runtime/emit/column-reference.d.ts +3 -1
- package/dist/src/runtime/emit/column-reference.d.ts.map +1 -1
- package/dist/src/runtime/emit/column-reference.js +6 -2
- package/dist/src/runtime/emit/column-reference.js.map +1 -1
- package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
- package/dist/src/runtime/emit/dml-executor.js +21 -0
- package/dist/src/runtime/emit/dml-executor.js.map +1 -1
- package/dist/src/runtime/emit/filter.d.ts +1 -1
- package/dist/src/runtime/emit/filter.js +1 -1
- package/dist/src/runtime/emit/hash-aggregate.d.ts.map +1 -1
- package/dist/src/runtime/emit/hash-aggregate.js +18 -88
- package/dist/src/runtime/emit/hash-aggregate.js.map +1 -1
- package/dist/src/runtime/emit/literal.d.ts +14 -1
- package/dist/src/runtime/emit/literal.d.ts.map +1 -1
- package/dist/src/runtime/emit/literal.js +33 -7
- package/dist/src/runtime/emit/literal.js.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts +7 -1
- package/dist/src/runtime/emit/materialized-view-helpers.d.ts.map +1 -1
- package/dist/src/runtime/emit/materialized-view-helpers.js +121 -32
- package/dist/src/runtime/emit/materialized-view-helpers.js.map +1 -1
- package/dist/src/runtime/emit/parameter.d.ts +3 -1
- package/dist/src/runtime/emit/parameter.d.ts.map +1 -1
- package/dist/src/runtime/emit/parameter.js +7 -2
- package/dist/src/runtime/emit/parameter.js.map +1 -1
- package/dist/src/runtime/emit/scalar-function.d.ts +29 -1
- package/dist/src/runtime/emit/scalar-function.d.ts.map +1 -1
- package/dist/src/runtime/emit/scalar-function.js +66 -16
- package/dist/src/runtime/emit/scalar-function.js.map +1 -1
- package/dist/src/runtime/emit/scalar-op.d.ts +63 -0
- package/dist/src/runtime/emit/scalar-op.d.ts.map +1 -0
- package/dist/src/runtime/emit/scalar-op.js +37 -0
- package/dist/src/runtime/emit/scalar-op.js.map +1 -0
- package/dist/src/runtime/emit/scan.d.ts.map +1 -1
- package/dist/src/runtime/emit/scan.js +19 -1
- package/dist/src/runtime/emit/scan.js.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts +18 -8
- package/dist/src/runtime/emit/temporal-arithmetic.d.ts.map +1 -1
- package/dist/src/runtime/emit/temporal-arithmetic.js +29 -311
- package/dist/src/runtime/emit/temporal-arithmetic.js.map +1 -1
- package/dist/src/runtime/emit/unary.d.ts +2 -0
- package/dist/src/runtime/emit/unary.d.ts.map +1 -1
- package/dist/src/runtime/emit/unary.js +125 -53
- package/dist/src/runtime/emit/unary.js.map +1 -1
- package/dist/src/runtime/emitters.d.ts +22 -0
- package/dist/src/runtime/emitters.d.ts.map +1 -1
- package/dist/src/runtime/emitters.js +29 -0
- package/dist/src/runtime/emitters.js.map +1 -1
- package/dist/src/runtime/scalar-fusion.d.ts +47 -0
- package/dist/src/runtime/scalar-fusion.d.ts.map +1 -0
- package/dist/src/runtime/scalar-fusion.js +275 -0
- package/dist/src/runtime/scalar-fusion.js.map +1 -0
- package/dist/src/runtime/strict-flags.d.ts +9 -0
- package/dist/src/runtime/strict-flags.d.ts.map +1 -1
- package/dist/src/runtime/strict-flags.js +9 -0
- package/dist/src/runtime/strict-flags.js.map +1 -1
- package/dist/src/runtime/strict-fork.js +2 -2
- package/dist/src/runtime/strict-fork.js.map +1 -1
- package/dist/src/runtime/strict-representation.d.ts +78 -0
- package/dist/src/runtime/strict-representation.d.ts.map +1 -0
- package/dist/src/runtime/strict-representation.js +159 -0
- package/dist/src/runtime/strict-representation.js.map +1 -0
- package/dist/src/schema/function.d.ts +15 -0
- package/dist/src/schema/function.d.ts.map +1 -1
- package/dist/src/schema/function.js.map +1 -1
- package/dist/src/types/builtin-types.d.ts.map +1 -1
- package/dist/src/types/builtin-types.js +17 -8
- package/dist/src/types/builtin-types.js.map +1 -1
- package/dist/src/types/temporal-ops.d.ts +119 -0
- package/dist/src/types/temporal-ops.d.ts.map +1 -0
- package/dist/src/types/temporal-ops.js +348 -0
- package/dist/src/types/temporal-ops.js.map +1 -0
- package/dist/src/types/temporal-types.d.ts.map +1 -1
- package/dist/src/types/temporal-types.js +8 -3
- package/dist/src/types/temporal-types.js.map +1 -1
- package/dist/src/util/coercion.d.ts +22 -7
- package/dist/src/util/coercion.d.ts.map +1 -1
- package/dist/src/util/coercion.js +28 -15
- package/dist/src/util/coercion.js.map +1 -1
- package/dist/src/util/comparison.d.ts +25 -0
- package/dist/src/util/comparison.d.ts.map +1 -1
- package/dist/src/util/comparison.js +25 -0
- package/dist/src/util/comparison.js.map +1 -1
- package/dist/src/util/key-tuple-codec.d.ts +12 -3
- package/dist/src/util/key-tuple-codec.d.ts.map +1 -1
- package/dist/src/util/key-tuple-codec.js.map +1 -1
- package/dist/src/util/numeric-canonical.d.ts +26 -0
- package/dist/src/util/numeric-canonical.d.ts.map +1 -0
- package/dist/src/util/numeric-canonical.js +66 -0
- package/dist/src/util/numeric-canonical.js.map +1 -0
- package/dist/src/vtab/module.d.ts +25 -0
- package/dist/src/vtab/module.d.ts.map +1 -1
- package/package.json +4 -3
|
@@ -1,19 +1,14 @@
|
|
|
1
1
|
import { asRun } from '../types.js';
|
|
2
2
|
import { emitPlanNode, emitCallFromPlan } from '../emitters.js';
|
|
3
|
-
import { isAggregateFunctionSchema } from '../../schema/function.js';
|
|
4
|
-
import { AggregateFunctionCallNode } from '../../planner/nodes/aggregate-function.js';
|
|
5
3
|
import { isRelationalNode } from '../../planner/nodes/plan-node.js';
|
|
6
4
|
import { createValueSet } from '../../util/value-set.js';
|
|
7
5
|
import { logContextPush, logContextPop } from '../utils.js';
|
|
8
|
-
import { coerceForAggregate } from '../../util/coercion.js';
|
|
9
|
-
import { quereusError } from '../../common/errors.js';
|
|
10
|
-
import { StatusCode } from '../../common/types.js';
|
|
11
6
|
import { buildRowDescriptor } from '../../util/row-descriptor.js';
|
|
12
7
|
import { serializeKeyNullGrouping } from '../../util/key-serializer.js';
|
|
13
8
|
import { semanticKeyTransform } from '../../util/comparison.js';
|
|
14
9
|
import { hashKeyCollationName } from '../../planner/analysis/comparison-collation.js';
|
|
15
10
|
import { cloneInitialValue, findSourceRelation, ctxLog } from './aggregate.js';
|
|
16
|
-
import { bindAggregateSchemas, buildDistinctComparators,
|
|
11
|
+
import { bindAggregateSchemas, buildDistinctComparators, computeAggregateValueTransforms, emitAggregateArgInstructions, evalArgsSync } from './aggregate-setup.js';
|
|
17
12
|
export function emitHashAggregate(plan, ctx) {
|
|
18
13
|
const sourceRelation = findSourceRelation(plan.source);
|
|
19
14
|
const sourceAttributes = plan.source.getAttributes();
|
|
@@ -46,25 +41,19 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
46
41
|
const keyCanonicalizers = plan.groupBy.map(expr => semanticKeyTransform(expr.getType().logicalType));
|
|
47
42
|
const hasKeyCanonicalizer = keyCanonicalizers.some(c => c !== undefined);
|
|
48
43
|
const distinctComparators = buildDistinctComparators(plan.aggregates, ctx);
|
|
49
|
-
const
|
|
50
|
-
const { schemas: aggregateSchemas, distinctFlags: aggregateDistinctFlags } = bindAggregateSchemas(plan.aggregates, ctx);
|
|
44
|
+
const aggregateValueTransforms = computeAggregateValueTransforms(plan.aggregates);
|
|
45
|
+
const { schemas: aggregateSchemas, distinctFlags: aggregateDistinctFlags, argCounts: aggregateArgCounts } = bindAggregateSchemas(plan.aggregates, ctx);
|
|
51
46
|
async function* run(ctx, sourceRows, ...groupByAndAggregateArgs) {
|
|
52
47
|
const numGroupBy = plan.groupBy.length;
|
|
53
48
|
const groupByFunctions = groupByAndAggregateArgs.slice(0, numGroupBy);
|
|
54
49
|
let aggregateArgOffset = numGroupBy;
|
|
55
50
|
const aggregateArgFunctions = [];
|
|
56
|
-
for (const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
60
|
-
}
|
|
61
|
-
const args = funcNode.args || [];
|
|
62
|
-
const aggregateArgs = groupByAndAggregateArgs.slice(aggregateArgOffset, aggregateArgOffset + args.length);
|
|
63
|
-
aggregateArgFunctions.push(aggregateArgs);
|
|
64
|
-
aggregateArgOffset += args.length;
|
|
51
|
+
for (const argCount of aggregateArgCounts) {
|
|
52
|
+
aggregateArgFunctions.push(groupByAndAggregateArgs.slice(aggregateArgOffset, aggregateArgOffset + argCount));
|
|
53
|
+
aggregateArgOffset += argCount;
|
|
65
54
|
}
|
|
66
55
|
function createAccumulators() {
|
|
67
|
-
return aggregateSchemas.map(schema => cloneInitialValue(
|
|
56
|
+
return aggregateSchemas.map(schema => cloneInitialValue(schema.initialValue));
|
|
68
57
|
}
|
|
69
58
|
function createDistinctTrees() {
|
|
70
59
|
return aggregateDistinctFlags.map((isDistinct, i) => isDistinct ? createValueSet(distinctComparators[i]) : null);
|
|
@@ -80,30 +69,16 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
80
69
|
logContextPush(scanRowDescriptor, 'scan-row', sourceAttributes);
|
|
81
70
|
try {
|
|
82
71
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
83
|
-
const schema = aggregateSchemas[i];
|
|
84
72
|
const isDistinct = aggregateDistinctFlags[i];
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
88
|
-
}
|
|
89
|
-
const args = funcNode.args || [];
|
|
90
|
-
const argFunctions = aggregateArgFunctions[i];
|
|
91
|
-
const skipCoercion = aggregateSkipCoercion[i];
|
|
92
|
-
const argValues = [];
|
|
93
|
-
for (let j = 0; j < args.length; j++) {
|
|
94
|
-
const rawValue = await argFunctions[j](ctx);
|
|
95
|
-
const coercedValue = skipCoercion ? rawValue : coerceForAggregate(rawValue, funcNode.functionName || 'unknown');
|
|
96
|
-
argValues.push(coercedValue);
|
|
97
|
-
}
|
|
73
|
+
const argValuesMaybe = evalArgsSync(ctx, aggregateArgFunctions[i], aggregateValueTransforms[i]);
|
|
74
|
+
const argValues = argValuesMaybe instanceof Promise ? await argValuesMaybe : argValuesMaybe;
|
|
98
75
|
if (isDistinct) {
|
|
99
76
|
const distinctValue = argValues.length === 1 ? argValues[0] : argValues;
|
|
100
77
|
const existingPath = distinctTrees[i].insert(distinctValue);
|
|
101
78
|
if (!existingPath.on)
|
|
102
79
|
continue;
|
|
103
80
|
}
|
|
104
|
-
|
|
105
|
-
accumulators[i] = schema.stepFunction(accumulators[i], ...argValues);
|
|
106
|
-
}
|
|
81
|
+
accumulators[i] = aggregateSchemas[i].stepFunction(accumulators[i], ...argValues);
|
|
107
82
|
}
|
|
108
83
|
}
|
|
109
84
|
finally {
|
|
@@ -113,15 +88,7 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
113
88
|
}
|
|
114
89
|
const aggregateRow = [];
|
|
115
90
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
116
|
-
|
|
117
|
-
let finalValue;
|
|
118
|
-
if (isAggregateFunctionSchema(schema)) {
|
|
119
|
-
finalValue = schema.finalizeFunction(accumulators[i]);
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
finalValue = accumulators[i];
|
|
123
|
-
}
|
|
124
|
-
aggregateRow.push(finalValue);
|
|
91
|
+
aggregateRow.push(aggregateSchemas[i].finalizeFunction(accumulators[i]));
|
|
125
92
|
}
|
|
126
93
|
const fullRow = lastSourceRow ? [...aggregateRow, ...lastSourceRow] : aggregateRow;
|
|
127
94
|
if (lastSourceRow) {
|
|
@@ -151,10 +118,8 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
151
118
|
logContextPush(scanRowDescriptor, 'scan-row', sourceAttributes);
|
|
152
119
|
try {
|
|
153
120
|
// Evaluate GROUP BY expressions
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
groupValues.push(await groupByFunc(ctx));
|
|
157
|
-
}
|
|
121
|
+
const groupValuesMaybe = evalArgsSync(ctx, groupByFunctions);
|
|
122
|
+
const groupValues = groupValuesMaybe instanceof Promise ? await groupValuesMaybe : groupValuesMaybe;
|
|
158
123
|
// Serialize key using collation-aware serialization (NULLs group together per SQL standard)
|
|
159
124
|
const keyValues = hasKeyCanonicalizer
|
|
160
125
|
? groupValues.map((v, i) => keyCanonicalizers[i] ? keyCanonicalizers[i](v) : v)
|
|
@@ -173,30 +138,16 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
173
138
|
}
|
|
174
139
|
// Evaluate aggregate arguments and step accumulators
|
|
175
140
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
176
|
-
const schema = aggregateSchemas[i];
|
|
177
141
|
const isDistinct = aggregateDistinctFlags[i];
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
181
|
-
}
|
|
182
|
-
const args = funcNode.args || [];
|
|
183
|
-
const argFunctions = aggregateArgFunctions[i];
|
|
184
|
-
const skipCoercion = aggregateSkipCoercion[i];
|
|
185
|
-
const argValues = [];
|
|
186
|
-
for (let j = 0; j < args.length; j++) {
|
|
187
|
-
const rawValue = await argFunctions[j](ctx);
|
|
188
|
-
const coercedValue = skipCoercion ? rawValue : coerceForAggregate(rawValue, funcNode.functionName || 'unknown');
|
|
189
|
-
argValues.push(coercedValue);
|
|
190
|
-
}
|
|
142
|
+
const argValuesMaybe = evalArgsSync(ctx, aggregateArgFunctions[i], aggregateValueTransforms[i]);
|
|
143
|
+
const argValues = argValuesMaybe instanceof Promise ? await argValuesMaybe : argValuesMaybe;
|
|
191
144
|
if (isDistinct) {
|
|
192
145
|
const distinctValue = argValues.length === 1 ? argValues[0] : argValues;
|
|
193
146
|
const existingPath = group.distinctTrees[i].insert(distinctValue);
|
|
194
147
|
if (!existingPath.on)
|
|
195
148
|
continue;
|
|
196
149
|
}
|
|
197
|
-
|
|
198
|
-
group.accumulators[i] = schema.stepFunction(group.accumulators[i], ...argValues);
|
|
199
|
-
}
|
|
150
|
+
group.accumulators[i] = aggregateSchemas[i].stepFunction(group.accumulators[i], ...argValues);
|
|
200
151
|
}
|
|
201
152
|
}
|
|
202
153
|
finally {
|
|
@@ -211,15 +162,7 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
211
162
|
aggregateRow.push(...group.groupValues);
|
|
212
163
|
// Finalized aggregate values
|
|
213
164
|
for (let i = 0; i < plan.aggregates.length; i++) {
|
|
214
|
-
|
|
215
|
-
let finalValue;
|
|
216
|
-
if (isAggregateFunctionSchema(schema)) {
|
|
217
|
-
finalValue = schema.finalizeFunction(group.accumulators[i]);
|
|
218
|
-
}
|
|
219
|
-
else {
|
|
220
|
-
finalValue = group.accumulators[i];
|
|
221
|
-
}
|
|
222
|
-
aggregateRow.push(finalValue);
|
|
165
|
+
aggregateRow.push(aggregateSchemas[i].finalizeFunction(group.accumulators[i]));
|
|
223
166
|
}
|
|
224
167
|
// Set up combined context (output + representative source row) for HAVING
|
|
225
168
|
const fullRow = [...aggregateRow, ...group.representativeSourceRow];
|
|
@@ -252,20 +195,7 @@ export function emitHashAggregate(plan, ctx) {
|
|
|
252
195
|
}
|
|
253
196
|
const sourceInstruction = emitPlanNode(plan.source, ctx);
|
|
254
197
|
const groupByInstructions = plan.groupBy.map(expr => emitCallFromPlan(expr, ctx));
|
|
255
|
-
const aggregateArgInstructions =
|
|
256
|
-
for (const agg of plan.aggregates) {
|
|
257
|
-
const funcNode = agg.expression;
|
|
258
|
-
if (!(funcNode instanceof AggregateFunctionCallNode)) {
|
|
259
|
-
quereusError(`Expected AggregateFunctionCallNode but got ${funcNode.constructor.name}`, StatusCode.INTERNAL);
|
|
260
|
-
}
|
|
261
|
-
const args = funcNode.args || [];
|
|
262
|
-
for (const arg of args) {
|
|
263
|
-
if (!arg) {
|
|
264
|
-
quereusError(`Aggregate argument is undefined for function ${funcNode.functionName}`, StatusCode.INTERNAL);
|
|
265
|
-
}
|
|
266
|
-
aggregateArgInstructions.push(emitCallFromPlan(arg, ctx));
|
|
267
|
-
}
|
|
268
|
-
}
|
|
198
|
+
const aggregateArgInstructions = emitAggregateArgInstructions(plan.aggregates, ctx);
|
|
269
199
|
return {
|
|
270
200
|
params: [sourceInstruction, ...groupByInstructions, ...aggregateArgInstructions],
|
|
271
201
|
run: asRun(run),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hash-aggregate.js","sourceRoot":"","sources":["../../../../src/runtime/emit/hash-aggregate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hash-aggregate.js","sourceRoot":"","sources":["../../../../src/runtime/emit/hash-aggregate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
import type { Instruction } from "../types.js";
|
|
2
2
|
import type { LiteralNode } from "../../planner/nodes/scalar.js";
|
|
3
3
|
import type { EmissionContext } from "../emission-context.js";
|
|
4
|
-
|
|
4
|
+
import { type ScalarOpSpec } from "./scalar-op.js";
|
|
5
|
+
/**
|
|
6
|
+
* Zero-operand spec yielding the literal's value, or `undefined` when the value is an
|
|
7
|
+
* unresolved Promise.
|
|
8
|
+
*
|
|
9
|
+
* The constant-folding pass (planner/analysis/const-pass.ts) parks the result of an
|
|
10
|
+
* *async* fold straight into `LiteralExpr.value` without awaiting it and lets the
|
|
11
|
+
* scheduler resolve it, so a literal's body is `MaybePromise<SqlValue>` in general —
|
|
12
|
+
* which is not a {@link ScalarOpSpec} body. Rather than widen the spec contract for
|
|
13
|
+
* every scalar op, that rare arm has no spec and its consumers fall back: the emitter
|
|
14
|
+
* below builds the Instruction itself, and a fusion consumer must decline to fuse.
|
|
15
|
+
*/
|
|
16
|
+
export declare function buildLiteralSpec(plan: LiteralNode): ScalarOpSpec | undefined;
|
|
17
|
+
export declare function emitLiteral(plan: LiteralNode, ctx: EmissionContext): Instruction;
|
|
5
18
|
//# sourceMappingURL=literal.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/literal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"literal.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/literal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,GAAG,SAAS,CAS5E;AAOD,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,eAAe,GAAG,WAAW,CAUhF"}
|
|
@@ -1,13 +1,39 @@
|
|
|
1
|
-
import { asRun } from "../types.js";
|
|
2
1
|
import { safeJsonStringify } from "../../util/serialization.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
import { emitScalarOp } from "./scalar-op.js";
|
|
3
|
+
/**
|
|
4
|
+
* Zero-operand spec yielding the literal's value, or `undefined` when the value is an
|
|
5
|
+
* unresolved Promise.
|
|
6
|
+
*
|
|
7
|
+
* The constant-folding pass (planner/analysis/const-pass.ts) parks the result of an
|
|
8
|
+
* *async* fold straight into `LiteralExpr.value` without awaiting it and lets the
|
|
9
|
+
* scheduler resolve it, so a literal's body is `MaybePromise<SqlValue>` in general —
|
|
10
|
+
* which is not a {@link ScalarOpSpec} body. Rather than widen the spec contract for
|
|
11
|
+
* every scalar op, that rare arm has no spec and its consumers fall back: the emitter
|
|
12
|
+
* below builds the Instruction itself, and a fusion consumer must decline to fuse.
|
|
13
|
+
*/
|
|
14
|
+
export function buildLiteralSpec(plan) {
|
|
15
|
+
const value = plan.expression.value;
|
|
16
|
+
if (value instanceof Promise)
|
|
17
|
+
return undefined;
|
|
18
|
+
return {
|
|
19
|
+
operands: [],
|
|
20
|
+
run: (_rctx) => value,
|
|
21
|
+
note: literalNote(value)
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Note text shared by both arms — `safeJsonStringify` of a Promise spells `{}`, as before. */
|
|
25
|
+
function literalNote(value) {
|
|
26
|
+
return `literal(${safeJsonStringify(value)})`;
|
|
27
|
+
}
|
|
28
|
+
export function emitLiteral(plan, ctx) {
|
|
29
|
+
const spec = buildLiteralSpec(plan);
|
|
30
|
+
if (spec)
|
|
31
|
+
return emitScalarOp(spec, ctx);
|
|
32
|
+
const deferred = plan.expression.value;
|
|
7
33
|
return {
|
|
8
34
|
params: [],
|
|
9
|
-
run:
|
|
10
|
-
note:
|
|
35
|
+
run: (_rctx) => deferred,
|
|
36
|
+
note: literalNote(deferred)
|
|
11
37
|
};
|
|
12
38
|
}
|
|
13
39
|
//# sourceMappingURL=literal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../../src/runtime/emit/literal.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../../src/runtime/emit/literal.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAqB,MAAM,gBAAgB,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAiB;IACjD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACpC,IAAI,KAAK,YAAY,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/C,OAAO;QACN,QAAQ,EAAE,EAAE;QACZ,GAAG,EAAE,CAAC,KAAqB,EAAE,EAAE,CAAC,KAAK;QACrC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;KACxB,CAAC;AACH,CAAC;AAED,+FAA+F;AAC/F,SAAS,WAAW,CAAC,KAAmC;IACvD,OAAO,WAAW,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAiB,EAAE,GAAoB;IAClE,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,IAAI;QAAE,OAAO,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;IACvC,OAAO;QACN,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,CAAC,KAAqB,EAAE,EAAE,CAAC,QAAQ;QACxC,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;KAC3B,CAAC;AACH,CAAC"}
|
|
@@ -376,8 +376,14 @@ export declare function createMaintainedTable(db: Database, stmt: AST.CreateTabl
|
|
|
376
376
|
* behavior. The caller is responsible for staleness re-validation when relevant;
|
|
377
377
|
* this helper assumes the derivation body plans. Throws if the table is missing
|
|
378
378
|
* from the catalog.
|
|
379
|
+
*
|
|
380
|
+
* `validationColumns` is the reshape arm's column preview
|
|
381
|
+
* ({@link previewReshapedColumns}) — the type/collation attributes the reshape's
|
|
382
|
+
* still-pending post-reconcile ops are about to land — forwarded to the scan so
|
|
383
|
+
* the CHECK / FK resolve against the final declared shape. `undefined` on every
|
|
384
|
+
* other path (and on a reshape that shifts neither attribute).
|
|
379
385
|
*/
|
|
380
|
-
export declare function rebuildBacking(db: Database, mv: MaintainedTableSchema): Promise<void>;
|
|
386
|
+
export declare function rebuildBacking(db: Database, mv: MaintainedTableSchema, validationColumns?: readonly ColumnSchema[]): Promise<void>;
|
|
381
387
|
/**
|
|
382
388
|
* True iff the live backing `TableSchema` is structurally identical to what the
|
|
383
389
|
* derived `shape` would build — so a `refresh` can take the data-only fast path
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialized-view-helpers.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/materialized-view-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAc,KAAK,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAEhD,OAAO,KAAK,EAAY,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAMrF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,KAAK,WAAW,EAAsF,MAAM,uBAAuB,CAAC;AAQ7I,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAA8B,MAAM,sBAAsB,CAAC;AACnF,OAAO,EAAqB,KAAK,qBAAqB,EAAwB,MAAM,4BAA4B,CAAC;AAEjH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,4BAA4B,CAAC;AAahF,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,CAS/F;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CASjH;AAED,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,UAAU,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC3D,0EAA0E;IAC1E,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;0EAMsE;IACtE,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;;;sEAIkE;IAClE,aAAa,CAAC,EAAE,aAAa,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;CACrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CACjC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,GAChD,YAAY,CAMd;AA+HD;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAa7G;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACtC,EAAE,EAAE,QAAQ,EACZ,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,YAAY,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC/C,8FAA8F;AAC9F,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,GACvC,WAAW,CAyCb;AAED;wFACwF;AACxF,wBAAsB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAkBvG;AAED;;;;;GAKG;AACH,MAAM,WAAW,yBAAyB;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,8FAA8F;IAC9F,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC;IACzB,wFAAwF;IACxF,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1C;uDACmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,iBAAiB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,yBAAyB,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CAOnG;AAkED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,yBAAyB,EAAE,eAAe,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAmElJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,qBAAqB,CAC1C,EAAE,EAAE,QAAQ,EACZ,GAAG,EAAE,yBAAyB,EAC9B,WAAW,EAAE,WAAW,EACxB,KAAK,EAAE,YAAY,GACjB,OAAO,CAAC,qBAAqB,CAAC,CAuBhC;
|
|
1
|
+
{"version":3,"file":"materialized-view-helpers.d.ts","sourceRoot":"","sources":["../../../../src/runtime/emit/materialized-view-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -777,14 +777,30 @@ function hasApplicableConstraints(db, mt) {
|
|
|
777
777
|
* the LIVE record here. So the live record is swapped for a constraint-stripped
|
|
778
778
|
* clone for the duration of the scans (the ADD COLUMN intermediate-schema
|
|
779
779
|
* discipline, see `runtime/emit/alter-table.ts`), then restored.
|
|
780
|
+
*
|
|
781
|
+
* `validationColumns` (the reshape arms only, {@link previewReshapedColumns})
|
|
782
|
+
* overrides the clone's column list with the attributes the reshape is ABOUT TO
|
|
783
|
+
* land, so a CHECK / FK resolves its affinity and collation from the final
|
|
784
|
+
* declared shape rather than the one being replaced. Comparison semantics are a
|
|
785
|
+
* function of the DECLARED column attributes, and the reshape's `retype` /
|
|
786
|
+
* `recollate` module ops run after this scan (they convert stored rows, so they
|
|
787
|
+
* must); without the override this scan would evaluate `v < '9'` on a column
|
|
788
|
+
* moving TEXT → INTEGER as a text comparison and admit a row that violates the
|
|
789
|
+
* constraint under the type it is about to have. Omitted (⇒ `mt.columns`) on
|
|
790
|
+
* every non-reshape path, so those stay byte-identical.
|
|
780
791
|
*/
|
|
781
|
-
async function validateDeclaredConstraintsOverContents(db, mt) {
|
|
792
|
+
async function validateDeclaredConstraintsOverContents(db, mt, validationColumns) {
|
|
782
793
|
const applicableChecks = mt.checkConstraints.filter(c => (c.operations & (RowOpFlag.INSERT | RowOpFlag.UPDATE)) !== 0);
|
|
783
794
|
const fks = mt.foreignKeys ?? [];
|
|
784
795
|
if (applicableChecks.length === 0 && fks.length === 0)
|
|
785
796
|
return;
|
|
786
797
|
const schema = db.schemaManager.getSchemaOrFail(mt.schemaName);
|
|
787
|
-
const stripped = {
|
|
798
|
+
const stripped = {
|
|
799
|
+
...mt,
|
|
800
|
+
columns: validationColumns ?? mt.columns,
|
|
801
|
+
checkConstraints: Object.freeze([]),
|
|
802
|
+
foreignKeys: undefined,
|
|
803
|
+
};
|
|
788
804
|
schema.addTable(stripped);
|
|
789
805
|
try {
|
|
790
806
|
await validateChecksOverExistingRows(db, mt, applicableChecks, (check, exprSql) => maintainedTableCheckViolationError(mt.schemaName, mt.name, check.name ?? `_check_${mt.checkConstraints.indexOf(check)}`, exprSql));
|
|
@@ -1079,8 +1095,11 @@ discardBackingOnFailure = false) {
|
|
|
1079
1095
|
changes = await host.applyMaintenance(conn, [{ kind: 'replace-all', rows }]);
|
|
1080
1096
|
// Declared CHECK / child-side FK over the reconciled (derived) row set —
|
|
1081
1097
|
// inside this try so a violation restores the prior record; the pending
|
|
1082
|
-
// reconcile writes roll back with the failing statement.
|
|
1083
|
-
|
|
1098
|
+
// reconcile writes roll back with the failing statement. On the reshape arm
|
|
1099
|
+
// the scan resolves against the attributes the post-reconcile ops below are
|
|
1100
|
+
// about to land, keeping this path identical to the refresh reshape arm
|
|
1101
|
+
// (`reshapeBackingInPlace` → `rebuildBacking`).
|
|
1102
|
+
await validateDeclaredConstraintsOverContents(db, live, reshapePlan ? previewReshapedColumns(live, shape) : undefined);
|
|
1084
1103
|
if (reshapePlan && reshapePlan.postReconcileOps.length > 0) {
|
|
1085
1104
|
// Data-validating attribute ops (retype / recollate / tighten NOT NULL)
|
|
1086
1105
|
// must validate the RECONCILED body rows, not the stale backing — but the
|
|
@@ -1320,8 +1339,14 @@ export async function createMaintainedTable(db, stmt) {
|
|
|
1320
1339
|
* behavior. The caller is responsible for staleness re-validation when relevant;
|
|
1321
1340
|
* this helper assumes the derivation body plans. Throws if the table is missing
|
|
1322
1341
|
* from the catalog.
|
|
1342
|
+
*
|
|
1343
|
+
* `validationColumns` is the reshape arm's column preview
|
|
1344
|
+
* ({@link previewReshapedColumns}) — the type/collation attributes the reshape's
|
|
1345
|
+
* still-pending post-reconcile ops are about to land — forwarded to the scan so
|
|
1346
|
+
* the CHECK / FK resolve against the final declared shape. `undefined` on every
|
|
1347
|
+
* other path (and on a reshape that shifts neither attribute).
|
|
1323
1348
|
*/
|
|
1324
|
-
export async function rebuildBacking(db, mv) {
|
|
1349
|
+
export async function rebuildBacking(db, mv, validationColumns) {
|
|
1325
1350
|
const bodySql = astToString(mv.derivation.selectAst);
|
|
1326
1351
|
const rows = await collectBodyRows(db, mv.schemaName, bodySql);
|
|
1327
1352
|
const backing = db.schemaManager.getTable(mv.schemaName, mv.name);
|
|
@@ -1367,23 +1392,15 @@ export async function rebuildBacking(db, mv) {
|
|
|
1367
1392
|
// leaving the pre-refresh committed contents intact (the MV stays stale, so the
|
|
1368
1393
|
// next read re-validates rather than serving the rejected set).
|
|
1369
1394
|
//
|
|
1370
|
-
//
|
|
1371
|
-
//
|
|
1372
|
-
//
|
|
1373
|
-
// `recollate`
|
|
1374
|
-
//
|
|
1375
|
-
//
|
|
1376
|
-
//
|
|
1377
|
-
//
|
|
1378
|
-
|
|
1379
|
-
// row '10' — lexicographic-true then numeric-false) passes here and is retyped into
|
|
1380
|
-
// violation. Not closed: this commit is load-bearing (commit-first parity + the
|
|
1381
|
-
// post-reconcile ops scan committed contents), and the attach reshape path uses the
|
|
1382
|
-
// identical ordering. See docs/materialized-views.md § REFRESH MATERIALIZED VIEW
|
|
1383
|
-
// "Known limitation — collation-sensitive CHECK" / "… type-sensitive CHECK" and
|
|
1384
|
-
// maintained-table-refresh-revalidation.spec.ts § "reshape arm: collation-
|
|
1385
|
-
// sensitive CHECK" / "reshape arm: type-sensitive CHECK".
|
|
1386
|
-
await validateDeclaredConstraintsOverContents(db, backing);
|
|
1395
|
+
// On the reshape arm `validationColumns` carries the attributes the reshape is
|
|
1396
|
+
// about to land ({@link previewReshapedColumns}), so a CHECK / FK is evaluated
|
|
1397
|
+
// under the column's FINAL type and collation even though the `retype` /
|
|
1398
|
+
// `recollate` module ops still run post-reconcile in reshapeBackingInPlace. That
|
|
1399
|
+
// keeps this commit's ordering exactly as it was — the scan stays before the
|
|
1400
|
+
// commit, the post-reconcile ops still scan committed contents — while removing
|
|
1401
|
+
// the wrong-semantics gap. The attach reshape path passes the same preview at its
|
|
1402
|
+
// own call site, so both arms reject identically.
|
|
1403
|
+
await validateDeclaredConstraintsOverContents(db, backing, validationColumns);
|
|
1387
1404
|
await conn.commit();
|
|
1388
1405
|
}
|
|
1389
1406
|
/**
|
|
@@ -2111,6 +2128,76 @@ function reshapeOpToChange(op) {
|
|
|
2111
2128
|
function graftReshapedRecord(moduleSchema, source) {
|
|
2112
2129
|
return { ...moduleSchema, derivation: source.derivation, tags: source.tags };
|
|
2113
2130
|
}
|
|
2131
|
+
/**
|
|
2132
|
+
* The column list a reshape is ABOUT TO land, for the declared-constraint scan that
|
|
2133
|
+
* runs mid-reshape ({@link validateDeclaredConstraintsOverContents}).
|
|
2134
|
+
*
|
|
2135
|
+
* A reshape's data-validating ops (`retype` / `recollate`) must run AFTER the data
|
|
2136
|
+
* reconcile — they convert/re-key STORED rows, so running them first would validate
|
|
2137
|
+
* the about-to-be-discarded contents and throw spuriously. But a SQL comparison
|
|
2138
|
+
* takes its type affinity and its collation from the column's DECLARED attributes,
|
|
2139
|
+
* so a scan against the live (pre-op) record evaluates a declared CHECK under the
|
|
2140
|
+
* attributes the reshape is replacing: `check (v < '9')` on a column moving
|
|
2141
|
+
* TEXT → INTEGER compares as text ('10' < '9' is true) and never as the numeric
|
|
2142
|
+
* comparison it is becoming. Previewing the attributes fixes the semantics without
|
|
2143
|
+
* moving a single op — the scan stays exactly where it was, still before the commit.
|
|
2144
|
+
*
|
|
2145
|
+
* Maps `live`'s columns onto `shape`'s **by name** (names and order already agree:
|
|
2146
|
+
* the reshape's pre-reconcile batch has applied every rename / add / drop before
|
|
2147
|
+
* either caller reaches this) and overrides only `logicalType` and `collation`.
|
|
2148
|
+
* Returns `undefined` when neither attribute shifts, so a reshape with no
|
|
2149
|
+
* `retype`/`recollate` — and every non-reshape path — behaves exactly as before.
|
|
2150
|
+
*
|
|
2151
|
+
* Deliberately NOT previewed:
|
|
2152
|
+
* - **`notNull`.** The tighten-NOT-NULL op stays a post-reconcile module op and
|
|
2153
|
+
* keeps validating there. Declaring `notNull` early would let the optimizer fold
|
|
2154
|
+
* a nullability-sensitive CHECK into a vacuous pass — the same class of unsound
|
|
2155
|
+
* folding the caller's constraint-stripped-clone swap exists to prevent.
|
|
2156
|
+
* - **`defaultValue` and the generated-column attributes.** A reshape never moves
|
|
2157
|
+
* them, so previewing them could only introduce drift.
|
|
2158
|
+
*
|
|
2159
|
+
* Physical-PK columns need no special handling: `describePhysicalPkChange` refuses
|
|
2160
|
+
* a reshape whose key column changes type or collation, so a previewed attribute
|
|
2161
|
+
* can never desynchronize the key encoding `assertRefreshRowsAreSet` or the host's
|
|
2162
|
+
* keyed diff rely on.
|
|
2163
|
+
*
|
|
2164
|
+
* NOTE: the scan sees the rebuilt values in their PRE-conversion physical form but
|
|
2165
|
+
* under the POST-conversion declared type. These agree in practice — the target
|
|
2166
|
+
* attribute is derived FROM the body's own output type, so the body already emits
|
|
2167
|
+
* values of the new type. A retype whose conversion genuinely rewrites the value
|
|
2168
|
+
* (a text → date canonicalization turning '2024-06-05T00:00:00Z' into '2024-06-05')
|
|
2169
|
+
* would have the CHECK see the un-normalized spelling. Not chased; revisit if a
|
|
2170
|
+
* value-rewriting conversion is ever added to the reshape's op set.
|
|
2171
|
+
*
|
|
2172
|
+
* NOTE: with the preview in place, a body emitting a value that does not conform to
|
|
2173
|
+
* its own declared output type now trips the physical-representation checker
|
|
2174
|
+
* (`QUEREUS_REPR_STRICT`) at this scan rather than sliding through. That is a
|
|
2175
|
+
* genuine defect surfacing at the earliest honest point, not a regression.
|
|
2176
|
+
*
|
|
2177
|
+
* NOTE: this RE-DERIVES the attribute shift from live-vs-shape rather than reading
|
|
2178
|
+
* `ReshapePlan.postReconcileOps`, which is the authoritative list of the `retype` /
|
|
2179
|
+
* `recollate` ops that will actually run. The two agree today because the
|
|
2180
|
+
* pre-reconcile structural ops preserve attributes exactly ({@link backingColumnDef}
|
|
2181
|
+
* carries type + collation through a rename, and an `add` lands the shape column's
|
|
2182
|
+
* own attributes), so every live-vs-shape shift has a queued op and vice versa. If a
|
|
2183
|
+
* structural op ever stops preserving an attribute, this would preview an attribute
|
|
2184
|
+
* no op lands and the scan would reject rows the finished reshape accepts — build the
|
|
2185
|
+
* preview from `postReconcileOps` then.
|
|
2186
|
+
*/
|
|
2187
|
+
function previewReshapedColumns(live, shape) {
|
|
2188
|
+
const byName = new Map(shape.columns.map(c => [c.name.toLowerCase(), c]));
|
|
2189
|
+
let shifted = false;
|
|
2190
|
+
const preview = live.columns.map(col => {
|
|
2191
|
+
const target = byName.get(col.name.toLowerCase());
|
|
2192
|
+
if (!target)
|
|
2193
|
+
return col;
|
|
2194
|
+
if (backingTypeMatches(col, target) && backingCollationMatches(col, target))
|
|
2195
|
+
return col;
|
|
2196
|
+
shifted = true;
|
|
2197
|
+
return { ...col, logicalType: target.logicalType, collation: target.collation };
|
|
2198
|
+
});
|
|
2199
|
+
return shifted ? Object.freeze(preview) : undefined;
|
|
2200
|
+
}
|
|
2114
2201
|
/**
|
|
2115
2202
|
* The sited error a refresh raises when the re-derived body shape cannot be
|
|
2116
2203
|
* reconciled onto the live maintained table in place — an interleaving column
|
|
@@ -2209,8 +2296,10 @@ async function reshapeBackingInPlace(db, mv, shape, plan) {
|
|
|
2209
2296
|
let live = graftReshapedRecord(current, mv);
|
|
2210
2297
|
schema.addTable(live);
|
|
2211
2298
|
// Data reconcile: re-run the body and swap contents (the identity-preserving
|
|
2212
|
-
// data-only path — same host, same incarnation).
|
|
2213
|
-
|
|
2299
|
+
// data-only path — same host, same incarnation). The column preview lets that
|
|
2300
|
+
// path's declared-constraint scan resolve against the type/collation the
|
|
2301
|
+
// post-reconcile ops below will land, not the ones they replace.
|
|
2302
|
+
await rebuildBacking(db, live, previewReshapedColumns(live, shape));
|
|
2214
2303
|
// Post-reconcile data-validating ops (retype / recollate / tighten NOT NULL): the
|
|
2215
2304
|
// reconciled body rows satisfy the new attribute where the discarded backing
|
|
2216
2305
|
// might not, so each validates the fresh data, not the stale rows. Re-register
|
|
@@ -2221,14 +2310,14 @@ async function reshapeBackingInPlace(db, mv, shape, plan) {
|
|
|
2221
2310
|
// partial throw. Per-op registration keeps the catalog tracking the module so a
|
|
2222
2311
|
// mid-batch failure leaves a coherent, re-runnable table.
|
|
2223
2312
|
//
|
|
2224
|
-
//
|
|
2225
|
-
//
|
|
2226
|
-
//
|
|
2227
|
-
//
|
|
2228
|
-
//
|
|
2229
|
-
//
|
|
2230
|
-
//
|
|
2231
|
-
//
|
|
2313
|
+
// These ops still run after step 3's rebuildBacking has validated + committed,
|
|
2314
|
+
// but the declared-CHECK/FK scan inside that step is no longer blind to them:
|
|
2315
|
+
// the `previewReshapedColumns` argument above hands it the type/collation each
|
|
2316
|
+
// `retype` / `recollate` here is about to land, so a constraint whose truth
|
|
2317
|
+
// flips under the new attribute (`v <> 'abc'` recollated BINARY → NOCASE over
|
|
2318
|
+
// 'ABC'; `v < '9'` retyped TEXT → INTEGER over '10') is rejected there, before
|
|
2319
|
+
// the commit, with nothing written. A tighten-NOT-NULL is deliberately NOT
|
|
2320
|
+
// previewed and keeps validating right here — see previewReshapedColumns.
|
|
2232
2321
|
for (const op of plan.postReconcileOps) {
|
|
2233
2322
|
current = await module.alterTable(db, mv.schemaName, mv.name, reshapeOpToChange(op));
|
|
2234
2323
|
live = graftReshapedRecord(current, mv);
|