@quereus/quereus 4.20.3 → 4.21.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.
Files changed (68) hide show
  1. package/README.md +2 -0
  2. package/dist/src/common/constants.d.ts +8 -1
  3. package/dist/src/common/constants.d.ts.map +1 -1
  4. package/dist/src/common/constants.js +7 -0
  5. package/dist/src/common/constants.js.map +1 -1
  6. package/dist/src/core/database.d.ts +4 -1
  7. package/dist/src/core/database.d.ts.map +1 -1
  8. package/dist/src/core/database.js +10 -4
  9. package/dist/src/core/database.js.map +1 -1
  10. package/dist/src/core/statement.d.ts +12 -0
  11. package/dist/src/core/statement.d.ts.map +1 -1
  12. package/dist/src/core/statement.js +20 -2
  13. package/dist/src/core/statement.js.map +1 -1
  14. package/dist/src/func/builtins/scalar.d.ts.map +1 -1
  15. package/dist/src/func/builtins/scalar.js +3 -0
  16. package/dist/src/func/builtins/scalar.js.map +1 -1
  17. package/dist/src/func/registration.d.ts +4 -0
  18. package/dist/src/func/registration.d.ts.map +1 -1
  19. package/dist/src/func/registration.js +11 -1
  20. package/dist/src/func/registration.js.map +1 -1
  21. package/dist/src/index.d.ts +2 -0
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +1 -0
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/planner/analysis/change-scope.d.ts +58 -2
  26. package/dist/src/planner/analysis/change-scope.d.ts.map +1 -1
  27. package/dist/src/planner/analysis/change-scope.js +94 -73
  28. package/dist/src/planner/analysis/change-scope.js.map +1 -1
  29. package/dist/src/planner/analysis/non-det-functions.d.ts +10 -0
  30. package/dist/src/planner/analysis/non-det-functions.d.ts.map +1 -0
  31. package/dist/src/planner/analysis/non-det-functions.js +17 -0
  32. package/dist/src/planner/analysis/non-det-functions.js.map +1 -0
  33. package/dist/src/planner/analysis/value-provenance.d.ts +119 -0
  34. package/dist/src/planner/analysis/value-provenance.d.ts.map +1 -0
  35. package/dist/src/planner/analysis/value-provenance.js +406 -0
  36. package/dist/src/planner/analysis/value-provenance.js.map +1 -0
  37. package/dist/src/planner/analysis/write-scope.d.ts +150 -0
  38. package/dist/src/planner/analysis/write-scope.d.ts.map +1 -0
  39. package/dist/src/planner/analysis/write-scope.js +95 -0
  40. package/dist/src/planner/analysis/write-scope.js.map +1 -0
  41. package/dist/src/planner/analysis/write-site-analysis.d.ts +67 -0
  42. package/dist/src/planner/analysis/write-site-analysis.d.ts.map +1 -0
  43. package/dist/src/planner/analysis/write-site-analysis.js +354 -0
  44. package/dist/src/planner/analysis/write-site-analysis.js.map +1 -0
  45. package/dist/src/planner/building/delete.d.ts.map +1 -1
  46. package/dist/src/planner/building/delete.js +9 -1
  47. package/dist/src/planner/building/delete.js.map +1 -1
  48. package/dist/src/planner/building/insert.d.ts.map +1 -1
  49. package/dist/src/planner/building/insert.js +8 -1
  50. package/dist/src/planner/building/insert.js.map +1 -1
  51. package/dist/src/planner/building/update.d.ts.map +1 -1
  52. package/dist/src/planner/building/update.js +9 -2
  53. package/dist/src/planner/building/update.js.map +1 -1
  54. package/dist/src/planner/nodes/dml-executor-node.d.ts +18 -1
  55. package/dist/src/planner/nodes/dml-executor-node.d.ts.map +1 -1
  56. package/dist/src/planner/nodes/dml-executor-node.js +12 -2
  57. package/dist/src/planner/nodes/dml-executor-node.js.map +1 -1
  58. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  59. package/dist/src/runtime/emit/dml-executor.js +39 -12
  60. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  61. package/dist/src/schema/assertion.d.ts +3 -1
  62. package/dist/src/schema/assertion.d.ts.map +1 -1
  63. package/dist/src/schema/assertion.js.map +1 -1
  64. package/dist/src/vtab/table.d.ts +16 -0
  65. package/dist/src/vtab/table.d.ts.map +1 -1
  66. package/dist/src/vtab/table.js +7 -0
  67. package/dist/src/vtab/table.js.map +1 -1
  68. package/package.json +3 -3
@@ -0,0 +1,95 @@
1
+ import { DmlExecutorNode } from '../nodes/dml-executor-node.js';
2
+ import { bindParameters, deserializeTableWatch, normalizeNonDet, serializeTableWatch, sortedDedupParamIndices, } from './change-scope.js';
3
+ /* --- Statement-level analysis ------------------------------------------------- */
4
+ /**
5
+ * The write scope of a built plan: every write site's memoized analysis, in plan
6
+ * order, with the non-deterministic sources and unbound parameters unioned. A plan
7
+ * with no write site yields empty `writes`, never `undefined`.
8
+ */
9
+ export function analyzeWriteScope(plan, db) {
10
+ const scopes = collectWriteSites(plan).map(site => site.analyze(db));
11
+ return mergeWriteScopes(scopes);
12
+ }
13
+ /** Every write site in a plan, in plan order, through the memo its builder attached. */
14
+ function collectWriteSites(plan) {
15
+ const sites = [];
16
+ const visited = new Set();
17
+ function walk(node) {
18
+ if (visited.has(node))
19
+ return;
20
+ visited.add(node);
21
+ if (node instanceof DmlExecutorNode && node.writeSite)
22
+ sites.push(node.writeSite);
23
+ for (const child of node.getChildren())
24
+ walk(child);
25
+ // A nested DML's write target sits outside its children (see change-scope's
26
+ // table walk); follow relations too so no executor is missed.
27
+ for (const relation of node.getRelations())
28
+ walk(relation);
29
+ }
30
+ walk(plan);
31
+ return sites;
32
+ }
33
+ function mergeWriteScopes(scopes) {
34
+ const unbound = new Set();
35
+ for (const scope of scopes)
36
+ for (const id of scope.unboundParameters)
37
+ unbound.add(id);
38
+ return {
39
+ writes: scopes.flatMap(scope => scope.writes),
40
+ nonDeterministicSources: normalizeNonDet(scopes.flatMap(scope => scope.nonDeterministicSources)),
41
+ unboundParameters: sortedDedupParamIndices(unbound),
42
+ };
43
+ }
44
+ /* --- Parameter binding --------------------------------------------------------- */
45
+ /**
46
+ * Substitute bound parameters into every selection and read watch, dropping the bound
47
+ * indices from `unboundParameters` and `nonDeterministicSources`. Same key spellings,
48
+ * and the same `MisuseError` on binding one parameter twice, as change-scope's
49
+ * `bindParameters` — which does the work, per watch.
50
+ */
51
+ export function bindWriteParameters(scope, params) {
52
+ const top = bindParameters({
53
+ watches: [],
54
+ nonDeterministicSources: scope.nonDeterministicSources,
55
+ unboundParameters: scope.unboundParameters,
56
+ }, params);
57
+ return {
58
+ writes: scope.writes.map(write => bindTableWrite(write, params)),
59
+ nonDeterministicSources: top.nonDeterministicSources,
60
+ unboundParameters: top.unboundParameters,
61
+ };
62
+ }
63
+ /**
64
+ * Substitute bound parameters into one write's selection and read watches. The DML
65
+ * executor applies it per execution to the write it hands an opted-in module
66
+ * (`UpdateArgs.writeScope`).
67
+ */
68
+ export function bindTableWrite(write, params) {
69
+ const reads = bindParameters({ watches: write.reads, nonDeterministicSources: [], unboundParameters: [] }, params).watches;
70
+ return { ...write, reads, selection: bindSelection(write.selection, write.table, params) };
71
+ }
72
+ /** A `rows` selection is a `rows` watch scope by construction, so the watch binder serves it unchanged. */
73
+ function bindSelection(selection, table, params) {
74
+ if (selection.kind !== 'rows')
75
+ return selection;
76
+ const asWatch = { table, columns: 'all', scope: { kind: 'rows', key: selection.key, values: selection.values } };
77
+ const bound = bindParameters({ watches: [asWatch], nonDeterministicSources: [], unboundParameters: [] }, params).watches[0].scope;
78
+ return bound.kind === 'rows' ? { kind: 'rows', key: bound.key, values: bound.values } : selection;
79
+ }
80
+ /** The only non-plain field is `TableWatch.columns`; everything else is JSON already. */
81
+ export function serializeWriteScope(scope) {
82
+ return {
83
+ writes: scope.writes.map(write => ({ ...write, reads: write.reads.map(serializeTableWatch) })),
84
+ nonDeterministicSources: [...scope.nonDeterministicSources],
85
+ unboundParameters: [...scope.unboundParameters],
86
+ };
87
+ }
88
+ export function deserializeWriteScope(obj) {
89
+ return {
90
+ writes: obj.writes.map(write => ({ ...write, reads: write.reads.map(deserializeTableWatch) })),
91
+ nonDeterministicSources: [...obj.nonDeterministicSources],
92
+ unboundParameters: [...obj.unboundParameters],
93
+ };
94
+ }
95
+ //# sourceMappingURL=write-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-scope.js","sourceRoot":"","sources":["../../../../src/planner/analysis/write-scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Per-write-site analysis behind `WriteScope`.
3
+ *
4
+ * Every write site in a plan is one `DmlExecutorNode`, and the analysis needs the
5
+ * LOGICAL shape under it — the `ConstraintCheckNode`, the Insert / Update / Delete
6
+ * node, the Filter over the target reference — which physical optimization replaces
7
+ * with access-path operators. So the three DML builders capture that shape here at
8
+ * build time and hang the memo on the executor; `withChildren` carries it, so every
9
+ * optimized copy of the node shares one analysis, and the executor can serve the
10
+ * same object to a module on every execution path at the cost of one memo read.
11
+ *
12
+ * Conservative by construction: a selection the analysis cannot decode is `global`,
13
+ * a value it cannot describe is `other` (value-provenance.ts), a constraint whose
14
+ * reach is unknown is `cross-row`. It never throws on an unexpected shape.
15
+ */
16
+ import type { Database } from '../../core/database.js';
17
+ import { ConflictResolution } from '../../common/constants.js';
18
+ import type { RowOp } from '../../common/types.js';
19
+ import { TableReferenceNode } from '../nodes/reference.js';
20
+ import type { ConstraintCheckNode } from '../nodes/constraint-check-node.js';
21
+ import type { UpsertClausePlan } from '../nodes/dml-executor-node.js';
22
+ import type { WriteScope } from './write-scope.js';
23
+ export interface WriteSiteInputs {
24
+ /** The logical constraint-check node, holding the DML prep node as its source. */
25
+ readonly check: ConstraintCheckNode;
26
+ /** The executor's write target. */
27
+ readonly table: TableReferenceNode;
28
+ readonly operation: RowOp;
29
+ readonly onConflict: ConflictResolution | undefined;
30
+ readonly upsertClauses: ReadonlyArray<UpsertClausePlan> | undefined;
31
+ }
32
+ /**
33
+ * Memo of one write site's analysis. `analyze` runs once; later calls return the
34
+ * same object. The result is a `WriteScope` holding exactly one `TableWrite`, so a
35
+ * statement over several sites merges them and a module reads `writes[0]`.
36
+ *
37
+ * NOTE: the analysis runs on the captured subtree AS BUILT, with no optimizer pass.
38
+ * `where id = :p` and `where id = 7` are a Filter over the target reference, which
39
+ * the binding extractor already decodes; a shape that needs constant folding or a
40
+ * structural rewrite to decode (`where id = 1 + 1`, `where id = (select 1)`)
41
+ * classifies `global`, the conservative answer the contract allows. Revisit when a
42
+ * host needs one of those shapes decoded: run `optimizeForAnalysis` over the
43
+ * captured subtree first — the pass pipeline accepts any node — and re-check that
44
+ * the `relationKeyOf` labels survive the rewrite.
45
+ *
46
+ * NOTE: `Statement.getWriteScope()` builds a fresh analysis plan, and so a fresh
47
+ * memo, on every call — consistent with `getChangeScope()`, and not hot. Revisit
48
+ * with per-statement caching if a host calls it per execution.
49
+ *
50
+ * NOTE: the cached result freezes catalog facts read through `db` at first
51
+ * `analyze` — the `foreign_keys` option, the inbound-FK index, the assertion
52
+ * list. A fresh memo per `getWriteScope()` call never sees them change. The
53
+ * module hook (`UpdateArgs.writeScope`, emit/dml-executor.ts) reads one memo
54
+ * across every execution of a prepared plan: a schema change invalidates the
55
+ * statement and so the memo; a `foreign_keys` toggle does not, but the DML
56
+ * builders bake that option into the plan's own FK checks too, so the
57
+ * description is no staler than the enforcement it describes until recompile.
58
+ * Revisit if `foreign_keys` ever invalidates prepared plans on change.
59
+ */
60
+ export declare class WriteSiteAnalysis {
61
+ private readonly inputs;
62
+ private cached?;
63
+ constructor(inputs: WriteSiteInputs);
64
+ /** `db` is needed for the constraint catalog (inbound foreign keys, assertions) only and is not retained. */
65
+ analyze(db: Database): WriteScope;
66
+ }
67
+ //# sourceMappingURL=write-site-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-site-analysis.d.ts","sourceRoot":"","sources":["../../../../src/planner/analysis/write-site-analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAKnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAmB,MAAM,mCAAmC,CAAC;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAetE,OAAO,KAAK,EAAgF,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIjI,MAAM,WAAW,eAAe;IAC/B,kFAAkF;IAClF,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,mCAAmC;IACnC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACpD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,gBAAgB,CAAC,GAAG,SAAS,CAAC;CACpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,iBAAiB;IAGjB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAC,CAAa;gBAEC,MAAM,EAAE,eAAe;IAEpD,6GAA6G;IAC7G,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG,UAAU;CAIjC"}
@@ -0,0 +1,354 @@
1
+ import { ConflictResolution } from '../../common/constants.js';
2
+ import { createLogger } from '../../common/logger.js';
3
+ import { resolveReferencedColumns } from '../../schema/table.js';
4
+ import { TableReferenceNode } from '../nodes/reference.js';
5
+ import { InsertNode } from '../nodes/insert-node.js';
6
+ import { UpdateNode } from '../nodes/update-node.js';
7
+ import { DeleteNode } from '../nodes/delete-node.js';
8
+ import { extractBindings } from './binding-extractor.js';
9
+ import { relationBaseName, relationKeyOf } from './relation-key.js';
10
+ import { analyzeReads, buildScopeForMode, qualifiedNameOf, sortedDedupParamIndices, } from './change-scope.js';
11
+ import { classifyInsertColumns, classifyUpdateColumns, classifyUpsertUpdateColumns } from './value-provenance.js';
12
+ const log = createLogger('planner:analysis:write-site');
13
+ /**
14
+ * Memo of one write site's analysis. `analyze` runs once; later calls return the
15
+ * same object. The result is a `WriteScope` holding exactly one `TableWrite`, so a
16
+ * statement over several sites merges them and a module reads `writes[0]`.
17
+ *
18
+ * NOTE: the analysis runs on the captured subtree AS BUILT, with no optimizer pass.
19
+ * `where id = :p` and `where id = 7` are a Filter over the target reference, which
20
+ * the binding extractor already decodes; a shape that needs constant folding or a
21
+ * structural rewrite to decode (`where id = 1 + 1`, `where id = (select 1)`)
22
+ * classifies `global`, the conservative answer the contract allows. Revisit when a
23
+ * host needs one of those shapes decoded: run `optimizeForAnalysis` over the
24
+ * captured subtree first — the pass pipeline accepts any node — and re-check that
25
+ * the `relationKeyOf` labels survive the rewrite.
26
+ *
27
+ * NOTE: `Statement.getWriteScope()` builds a fresh analysis plan, and so a fresh
28
+ * memo, on every call — consistent with `getChangeScope()`, and not hot. Revisit
29
+ * with per-statement caching if a host calls it per execution.
30
+ *
31
+ * NOTE: the cached result freezes catalog facts read through `db` at first
32
+ * `analyze` — the `foreign_keys` option, the inbound-FK index, the assertion
33
+ * list. A fresh memo per `getWriteScope()` call never sees them change. The
34
+ * module hook (`UpdateArgs.writeScope`, emit/dml-executor.ts) reads one memo
35
+ * across every execution of a prepared plan: a schema change invalidates the
36
+ * statement and so the memo; a `foreign_keys` toggle does not, but the DML
37
+ * builders bake that option into the plan's own FK checks too, so the
38
+ * description is no staler than the enforcement it describes until recompile.
39
+ * Revisit if `foreign_keys` ever invalidates prepared plans on change.
40
+ */
41
+ export class WriteSiteAnalysis {
42
+ inputs;
43
+ cached;
44
+ constructor(inputs) {
45
+ this.inputs = inputs;
46
+ }
47
+ /** `db` is needed for the constraint catalog (inbound foreign keys, assertions) only and is not retained. */
48
+ analyze(db) {
49
+ if (!this.cached)
50
+ this.cached = analyzeWriteSite(this.inputs, db);
51
+ return this.cached;
52
+ }
53
+ }
54
+ const NONE = { kind: 'none' };
55
+ /** The lowercased name a scope reports a column under. */
56
+ function columnName(tableSchema, index) {
57
+ return tableSchema.columns[index].name.toLowerCase();
58
+ }
59
+ const GLOBAL = { kind: 'global' };
60
+ function analyzeWriteSite(inputs, db) {
61
+ const { check, operation } = inputs;
62
+ const tableSchema = inputs.table.tableSchema;
63
+ const dml = check.source;
64
+ const unbound = new Set();
65
+ const columns = writtenColumns(operation, dml, tableSchema);
66
+ const upsertClauses = inputs.upsertClauses?.map(clause => describeUpsertClause(clause, tableSchema, columns));
67
+ const { selection, targetRef } = selectTargetRows(operation, dml, tableSchema, unbound);
68
+ // NOTE: a foreign key's parent arrives here as a `full` watch — the child-side
69
+ // existence probe is a correlated subquery, which the binding extractor cannot pin
70
+ // to a key. Sound but coarse; revisit by narrowing it to `rows` keyed by the FK
71
+ // columns' provenance when every one of them is a literal or an input.
72
+ const reads = analyzeReads(check, {
73
+ // The executor's own target is reachable only through `.table` (a relation, not
74
+ // a child), so a children-only walk is what keeps it out of the reads.
75
+ followRelations: false,
76
+ wholeRowOutputs: false,
77
+ refineWatch: (ref, watch) => ref === targetRef ? targetReads(watch, selection) : watch,
78
+ });
79
+ const assigned = operation === 'update' ? new Set(columns.map(c => c.column)) : undefined;
80
+ const written = [...columns, ...(upsertClauses ?? []).flatMap(clause => clause.columns)];
81
+ const write = {
82
+ table: qualifiedNameOf(tableSchema),
83
+ operation,
84
+ disposition: disposition(inputs.onConflict, upsertClauses),
85
+ selection,
86
+ columns,
87
+ reads: reads.watches,
88
+ constraints: writeConstraints(operation, tableSchema, check.constraintChecks, db, assigned),
89
+ selfIndependent: written.every(c => c.provenance.kind !== 'self' && c.provenance.kind !== 'other'),
90
+ };
91
+ for (const id of reads.unboundParameters)
92
+ unbound.add(id);
93
+ return {
94
+ writes: [write],
95
+ nonDeterministicSources: reads.nonDeterministicSources,
96
+ unboundParameters: sortedDedupParamIndices(unbound),
97
+ };
98
+ }
99
+ /* --- Written values ----------------------------------------------------------- */
100
+ function writtenColumns(operation, dml, tableSchema) {
101
+ switch (operation) {
102
+ case 'insert':
103
+ if (dml instanceof InsertNode)
104
+ return classifyInsertColumns(dml);
105
+ log('insert site %s: expected an InsertNode under the check, got %s; every column is other', tableSchema.name, dml.nodeType);
106
+ return tableSchema.columns.map(col => ({ column: col.name.toLowerCase(), provenance: { kind: 'other' } }));
107
+ case 'update':
108
+ if (dml instanceof UpdateNode)
109
+ return classifyUpdateColumns(dml);
110
+ log('update site %s: expected an UpdateNode under the check, got %s; no assignment described', tableSchema.name, dml.nodeType);
111
+ return [];
112
+ case 'delete':
113
+ return [];
114
+ }
115
+ }
116
+ function describeUpsertClause(clause, tableSchema, insertColumns) {
117
+ return {
118
+ target: clause.conflictTargetIndices
119
+ ? clause.conflictTargetIndices.map(i => columnName(tableSchema, i))
120
+ : 'primary-key',
121
+ action: clause.action,
122
+ columns: classifyUpsertUpdateColumns(clause, tableSchema, insertColumns),
123
+ conditional: clause.whereCondition !== undefined,
124
+ };
125
+ }
126
+ /** An upsert clause takes precedence over a statement-level OR clause; `undefined` is the ABORT default. */
127
+ function disposition(onConflict, upsertClauses) {
128
+ if (upsertClauses && upsertClauses.length > 0)
129
+ return { kind: 'upsert', clauses: upsertClauses };
130
+ switch (onConflict) {
131
+ case ConflictResolution.ROLLBACK: return { kind: 'rollback' };
132
+ case ConflictResolution.FAIL: return { kind: 'fail' };
133
+ case ConflictResolution.IGNORE: return { kind: 'ignore' };
134
+ case ConflictResolution.REPLACE: return { kind: 'replace' };
135
+ default: return { kind: 'abort' };
136
+ }
137
+ }
138
+ /* --- Target selection --------------------------------------------------------- */
139
+ /**
140
+ * How UPDATE / DELETE chose their rows: the binding mode of the source's reference
141
+ * to the target table (built by the DML builder separately from the executor's
142
+ * `.table` reference, so it is matched by schema, never by node identity). `row`
143
+ * mode on a decodable non-empty key is `rows`; anything else is `global`.
144
+ */
145
+ function selectTargetRows(operation, dml, tableSchema, unbound) {
146
+ if (operation === 'insert')
147
+ return { selection: NONE };
148
+ if (!(dml instanceof UpdateNode) && !(dml instanceof DeleteNode))
149
+ return { selection: GLOBAL };
150
+ const targetRef = findTargetReference(dml.source, tableSchema);
151
+ if (!targetRef) {
152
+ log('%s site %s: no source reference to the target table; selection is global', operation, tableSchema.name);
153
+ return { selection: GLOBAL };
154
+ }
155
+ const relKey = relationKeyOf(targetRef);
156
+ const mode = extractBindings(dml.source).perRelation.get(relKey);
157
+ if (!mode || mode.kind !== 'row' || mode.keyColumns.length === 0)
158
+ return { selection: GLOBAL, targetRef };
159
+ const scope = buildScopeForMode(dml.source, targetRef, relKey, mode, unbound);
160
+ return {
161
+ selection: scope.kind === 'rows' ? { kind: 'rows', key: scope.key, values: scope.values } : GLOBAL,
162
+ targetRef,
163
+ };
164
+ }
165
+ /** The source's scan of the target table: the same schema object when the builders agree, the same name otherwise. */
166
+ function findTargetReference(source, tableSchema) {
167
+ const base = relationBaseName(tableSchema);
168
+ let byName;
169
+ const pending = [source];
170
+ while (pending.length > 0) {
171
+ const node = pending.shift();
172
+ if (node instanceof TableReferenceNode) {
173
+ if (node.tableSchema === tableSchema)
174
+ return node;
175
+ if (!byName && relationBaseName(node.tableSchema) === base)
176
+ byName = node;
177
+ }
178
+ pending.push(...node.getChildren());
179
+ }
180
+ return byName;
181
+ }
182
+ /**
183
+ * The target's own watch keeps only the non-key columns the write read; the key is
184
+ * the selection's business. Nothing column-specific read (`'all'` here can only mean
185
+ * that, with the whole-row rule off) or nothing left → no watch.
186
+ */
187
+ function targetReads(watch, selection) {
188
+ if (watch.columns === 'all')
189
+ return undefined;
190
+ const remaining = new Set(watch.columns);
191
+ if (selection.kind === 'rows')
192
+ for (const key of selection.key)
193
+ remaining.delete(key);
194
+ return remaining.size === 0 ? undefined : { ...watch, columns: remaining };
195
+ }
196
+ /* --- Constraints -------------------------------------------------------------- */
197
+ /**
198
+ * Keys, NOT NULLs and foreign keys come from the catalog; CHECKs from the checks the
199
+ * builder planned for this operation (their `needsDeferred` is exactly "has a
200
+ * relational descendant or a committed-state reference"); assertions from the
201
+ * catalog's dependent-table lists. For UPDATE, a key or FK applies only when an
202
+ * assigned column is among its columns, NOT NULL only for assigned columns.
203
+ *
204
+ * Foreign keys are read from the catalog rather than the planned checks because the
205
+ * parent-side per-row probes are not built when the engine batches RESTRICT
206
+ * enforcement at statement end (`getBatchableRestrictFks`) — the common plain
207
+ * DELETE — and the child-side check does not carry its FK schema.
208
+ */
209
+ function writeConstraints(operation, tableSchema, checks, db, assigned) {
210
+ const touches = (columns) => assigned === undefined || columns.some(c => assigned.has(c));
211
+ const out = [];
212
+ if (operation !== 'delete') {
213
+ out.push(...keyConstraints(tableSchema, touches));
214
+ out.push(...notNullConstraints(tableSchema, assigned));
215
+ }
216
+ out.push(...checkConstraints(checks));
217
+ if (db.options.getBooleanOption('foreign_keys')) {
218
+ if (operation !== 'delete')
219
+ out.push(...childForeignKeys(tableSchema, touches));
220
+ if (operation !== 'insert')
221
+ out.push(...parentForeignKeys(operation, tableSchema, db, touches));
222
+ }
223
+ out.push(...assertionConstraints(tableSchema, db));
224
+ return out;
225
+ }
226
+ function keyConstraints(tableSchema, touches) {
227
+ const name = (i) => columnName(tableSchema, i);
228
+ const out = [];
229
+ const pk = tableSchema.primaryKeyDefinition.map(d => name(d.index));
230
+ if (touches(pk))
231
+ out.push({ kind: 'primary-key', columns: pk, locality: 'cross-row', timing: 'immediate' });
232
+ for (const unique of tableSchema.uniqueConstraints ?? []) {
233
+ const columns = unique.columns.map(name);
234
+ if (!touches(columns))
235
+ continue;
236
+ out.push({
237
+ ...(unique.name !== undefined ? { name: unique.name } : {}),
238
+ kind: 'unique',
239
+ columns,
240
+ locality: 'cross-row',
241
+ timing: 'immediate',
242
+ partial: unique.predicate !== undefined,
243
+ });
244
+ }
245
+ return out;
246
+ }
247
+ function notNullConstraints(tableSchema, assigned) {
248
+ return tableSchema.columns
249
+ .filter(col => col.notNull && (assigned === undefined || assigned.has(col.name.toLowerCase())))
250
+ .map(col => ({ kind: 'not-null', columns: [col.name.toLowerCase()], locality: 'row', timing: 'immediate' }));
251
+ }
252
+ function checkConstraints(checks) {
253
+ return checks
254
+ .filter(check => check.kind === 'check')
255
+ .map(check => ({
256
+ ...(check.constraint.name !== undefined ? { name: check.constraint.name } : {}),
257
+ kind: 'check',
258
+ columns: [],
259
+ locality: check.needsDeferred ? 'cross-row' : 'row',
260
+ timing: check.needsDeferred || check.initiallyDeferred ? 'deferred' : 'immediate',
261
+ }));
262
+ }
263
+ /** The table's own FKs. The engine checks parent existence with a subquery, so the probe always runs at commit. */
264
+ function childForeignKeys(tableSchema, touches) {
265
+ const out = [];
266
+ for (const fk of tableSchema.foreignKeys ?? []) {
267
+ const columns = fk.columns.map(i => columnName(tableSchema, i));
268
+ if (!touches(columns))
269
+ continue;
270
+ out.push({
271
+ ...(fk.name !== undefined ? { name: fk.name } : {}),
272
+ kind: 'foreign-key-child',
273
+ columns,
274
+ locality: 'cross-row',
275
+ timing: 'deferred',
276
+ references: { schema: (fk.referencedSchema ?? tableSchema.schemaName).toLowerCase(), table: fk.referencedTable.toLowerCase() },
277
+ });
278
+ }
279
+ return out;
280
+ }
281
+ /**
282
+ * FKs declared on other tables that reference this one, whatever their action: a
283
+ * RESTRICT rejects the write when children exist, and a cascading action lands it
284
+ * differently depending on which children exist — both are "other rows can affect
285
+ * it". Only the action for THIS operation counts (`on delete` for a DELETE,
286
+ * `on update` for an UPDATE — the same split `getBatchableRestrictFks` and
287
+ * `buildParentSideFKChecks` make): a RESTRICT is checked within the statement; the
288
+ * engine treats the others as deferrable.
289
+ */
290
+ function parentForeignKeys(operation, tableSchema, db, touches) {
291
+ const out = [];
292
+ for (const { childTable, fk } of db.schemaManager.getReferencingForeignKeys(tableSchema.schemaName, tableSchema.name)) {
293
+ const columns = referencedColumnNames(fk, tableSchema, childTable);
294
+ if (!touches(columns))
295
+ continue;
296
+ const restrict = (operation === 'delete' ? fk.onDelete : fk.onUpdate) === 'restrict';
297
+ out.push({
298
+ ...(fk.name !== undefined ? { name: fk.name } : {}),
299
+ kind: 'foreign-key-parent',
300
+ columns,
301
+ locality: 'cross-row',
302
+ timing: restrict ? 'immediate' : 'deferred',
303
+ references: qualifiedNameOf(childTable),
304
+ });
305
+ }
306
+ return out;
307
+ }
308
+ function referencedColumnNames(fk, parent, child) {
309
+ try {
310
+ return resolveReferencedColumns(fk, parent).map(i => columnName(parent, i));
311
+ }
312
+ catch (e) {
313
+ // A malformed FK is refused when the write runs; until then its reach is unknown.
314
+ log('FK from %s to %s does not resolve on the parent: %s', child.name, parent.name, e instanceof Error ? e.message : String(e));
315
+ return [];
316
+ }
317
+ }
318
+ /**
319
+ * Every assertion, in any schema, whose body depends on the target table. Always
320
+ * commit-time, always over other rows.
321
+ *
322
+ * NOTE: `dependentTables` is recorded once at CREATE ASSERTION and is informational
323
+ * (see its doc in schema/assertion.ts): it goes stale when a view in the body is
324
+ * redefined over different tables, so this list can then miss or over-list an
325
+ * assertion. If a host needs it live, re-derive it on schema change as that doc
326
+ * describes rather than planning every assertion body here.
327
+ */
328
+ function assertionConstraints(tableSchema, db) {
329
+ const base = relationBaseName(tableSchema);
330
+ const out = [];
331
+ for (const schema of db.schemaManager._getAllSchemas()) {
332
+ for (const assertion of schema.getAllAssertions()) {
333
+ const dependents = assertion.dependentTables ?? [];
334
+ if (!dependents.some(d => d.base === base))
335
+ continue;
336
+ const other = dependents.find(d => d.base !== base);
337
+ out.push({
338
+ name: assertion.name,
339
+ kind: 'assertion',
340
+ columns: [],
341
+ locality: 'cross-row',
342
+ timing: 'deferred',
343
+ ...(other ? { references: qualifiedNameFromBase(other.base) } : {}),
344
+ });
345
+ }
346
+ }
347
+ return out;
348
+ }
349
+ /** The inverse of `relationBaseName`: a schema name never contains a dot, so the first one splits. */
350
+ function qualifiedNameFromBase(base) {
351
+ const dot = base.indexOf('.');
352
+ return dot < 0 ? { schema: 'main', table: base } : { schema: base.slice(0, dot), table: base.slice(dot + 1) };
353
+ }
354
+ //# sourceMappingURL=write-site-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-site-analysis.js","sourceRoot":"","sources":["../../../../src/planner/analysis/write-site-analysis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAoE,MAAM,uBAAuB,CAAC;AASnH,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAoB5E,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;;GAOG;AACH,qBAAqB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AAC9D;;;;;;GAMG;AACH,UAAU,UAAQ,GACjB,QAAQ,CA+SV"}
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../../src/planner/building/delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,QAAQ,EAAoE,MAAM,uBAAuB,CAAC;AASnH,OAAO,EAAa,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAqB5E,wBAAgB,eAAe,CAC7B,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,GAAG,CAAC,UAAU;AACpB;;;;;;;GAOG;AACH,qBAAqB,GAAE,aAAa,CAAC,mBAAmB,CAAM;AAC9D;;;;;;GAMG;AACH,UAAU,UAAQ,GACjB,QAAQ,CAuTV"}
@@ -15,6 +15,7 @@ import { ReturningNode } from '../nodes/returning-node.js';
15
15
  import { expandReturningStar } from './returning-star.js';
16
16
  import { buildOldNewRowDescriptors } from '../../util/row-descriptor.js';
17
17
  import { DmlExecutorNode } from '../nodes/dml-executor-node.js';
18
+ import { WriteSiteAnalysis } from '../analysis/write-site-analysis.js';
18
19
  import { buildConstraintChecks } from './constraint-builder.js';
19
20
  import { columnSchemaToScalarType } from '../type-utils.js';
20
21
  import { buildParentSideFKChecks, getBatchableRestrictFks } from './foreign-key-builder.js';
@@ -196,7 +197,14 @@ lensRouted = false) {
196
197
  // Add DML executor node to perform the actual database delete operations
197
198
  const dmlExecutorNode = new DmlExecutorNode(deleteCtx.scope, constraintCheckNode, tableReference, 'delete', undefined, // onConflict not used for DELETE
198
199
  mutationContextValues.size > 0 ? mutationContextValues : undefined, contextAttributes.length > 0 ? contextAttributes : undefined, contextDescriptor, undefined, // upsertClauses — DELETE has none
199
- lensRouted);
200
+ lensRouted, undefined, // upsertUpdateValidation — INSERT only
201
+ new WriteSiteAnalysis({
202
+ check: constraintCheckNode,
203
+ table: tableReference,
204
+ operation: 'delete',
205
+ onConflict: undefined,
206
+ upsertClauses: undefined,
207
+ }));
200
208
  const resultNode = dmlExecutorNode;
201
209
  if (stmt.returning && stmt.returning.length > 0) {
202
210
  // Create returning scope with OLD/NEW attribute access
@@ -1 +1 @@
1
- {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/planner/building/delete.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../../src/planner/building/delete.ts"],"names":[],"mappings":"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"}