@quereus/quereus 4.2.0 → 4.3.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 (77) hide show
  1. package/dist/src/common/errors.d.ts +26 -0
  2. package/dist/src/common/errors.d.ts.map +1 -1
  3. package/dist/src/common/errors.js +40 -0
  4. package/dist/src/common/errors.js.map +1 -1
  5. package/dist/src/common/types.d.ts +15 -0
  6. package/dist/src/common/types.d.ts.map +1 -1
  7. package/dist/src/common/types.js.map +1 -1
  8. package/dist/src/core/database.d.ts +16 -7
  9. package/dist/src/core/database.d.ts.map +1 -1
  10. package/dist/src/core/database.js +34 -15
  11. package/dist/src/core/database.js.map +1 -1
  12. package/dist/src/core/statement.d.ts +29 -5
  13. package/dist/src/core/statement.d.ts.map +1 -1
  14. package/dist/src/core/statement.js +89 -15
  15. package/dist/src/core/statement.js.map +1 -1
  16. package/dist/src/func/registration.d.ts +7 -0
  17. package/dist/src/func/registration.d.ts.map +1 -1
  18. package/dist/src/func/registration.js +7 -0
  19. package/dist/src/func/registration.js.map +1 -1
  20. package/dist/src/index.d.ts +3 -3
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/index.js +5 -2
  23. package/dist/src/index.js.map +1 -1
  24. package/dist/src/planner/analysis/scalar-param-usage.d.ts +20 -0
  25. package/dist/src/planner/analysis/scalar-param-usage.d.ts.map +1 -0
  26. package/dist/src/planner/analysis/scalar-param-usage.js +94 -0
  27. package/dist/src/planner/analysis/scalar-param-usage.js.map +1 -0
  28. package/dist/src/planner/building/constraint-builder.d.ts.map +1 -1
  29. package/dist/src/planner/building/constraint-builder.js +17 -1
  30. package/dist/src/planner/building/constraint-builder.js.map +1 -1
  31. package/dist/src/planner/building/select-aggregates.d.ts.map +1 -1
  32. package/dist/src/planner/building/select-aggregates.js +3 -2
  33. package/dist/src/planner/building/select-aggregates.js.map +1 -1
  34. package/dist/src/planner/building/view-mutation-builder.d.ts.map +1 -1
  35. package/dist/src/planner/building/view-mutation-builder.js +59 -32
  36. package/dist/src/planner/building/view-mutation-builder.js.map +1 -1
  37. package/dist/src/planner/mutation/lens-enforcement.d.ts +9 -6
  38. package/dist/src/planner/mutation/lens-enforcement.d.ts.map +1 -1
  39. package/dist/src/planner/mutation/lens-enforcement.js +181 -44
  40. package/dist/src/planner/mutation/lens-enforcement.js.map +1 -1
  41. package/dist/src/planner/rules/access/rule-select-access-path.js +7 -4
  42. package/dist/src/planner/rules/access/rule-select-access-path.js.map +1 -1
  43. package/dist/src/runtime/emit/dml-executor.d.ts.map +1 -1
  44. package/dist/src/runtime/emit/dml-executor.js +47 -11
  45. package/dist/src/runtime/emit/dml-executor.js.map +1 -1
  46. package/dist/src/runtime/emit/scan.d.ts.map +1 -1
  47. package/dist/src/runtime/emit/scan.js +9 -1
  48. package/dist/src/runtime/emit/scan.js.map +1 -1
  49. package/dist/src/runtime/emit/schema-declarative.d.ts.map +1 -1
  50. package/dist/src/runtime/emit/schema-declarative.js +82 -43
  51. package/dist/src/runtime/emit/schema-declarative.js.map +1 -1
  52. package/dist/src/runtime/emit/table-valued-function.d.ts.map +1 -1
  53. package/dist/src/runtime/emit/table-valued-function.js +27 -5
  54. package/dist/src/runtime/emit/table-valued-function.js.map +1 -1
  55. package/dist/src/runtime/parallel-driver.d.ts +4 -2
  56. package/dist/src/runtime/parallel-driver.d.ts.map +1 -1
  57. package/dist/src/runtime/parallel-driver.js +5 -2
  58. package/dist/src/runtime/parallel-driver.js.map +1 -1
  59. package/dist/src/runtime/types.d.ts +7 -0
  60. package/dist/src/runtime/types.d.ts.map +1 -1
  61. package/dist/src/runtime/types.js.map +1 -1
  62. package/dist/src/schema/catalog.d.ts.map +1 -1
  63. package/dist/src/schema/catalog.js +25 -0
  64. package/dist/src/schema/catalog.js.map +1 -1
  65. package/dist/src/schema/reserved-tags.d.ts +23 -0
  66. package/dist/src/schema/reserved-tags.d.ts.map +1 -1
  67. package/dist/src/schema/reserved-tags.js +43 -1
  68. package/dist/src/schema/reserved-tags.js.map +1 -1
  69. package/dist/src/schema/table.d.ts +56 -8
  70. package/dist/src/schema/table.d.ts.map +1 -1
  71. package/dist/src/schema/table.js +21 -0
  72. package/dist/src/schema/table.js.map +1 -1
  73. package/dist/src/util/comparison.d.ts +7 -0
  74. package/dist/src/util/comparison.d.ts.map +1 -1
  75. package/dist/src/util/comparison.js +9 -0
  76. package/dist/src/util/comparison.js.map +1 -1
  77. package/package.json +3 -3
@@ -57,11 +57,14 @@ export declare const LENS_BOUNDARY_ATTACHED_TAG = "quereus.lens.boundary.attache
57
57
  * and tags it with {@link LENS_BOUNDARY_ATTACHED_TAG}. The result is merged into
58
58
  * the basis INSERT/UPDATE's constraint-check pipeline by the base-table builder.
59
59
  *
60
- * Each constraint also carries {@link rowLocalReferencedBasisColumns} as
61
- * `referencedWriteRowColumns` prover-supplied metadata the per-op decomposition gate
62
- * uses instead of an AST walk, so a subquery-bearing row-local CHECK (which the prover
63
- * still classifies `enforced-row-local`) gates onto the member op that owns its correlated
64
- * write-row column rather than crashing on a member that cannot resolve it.
60
+ * Each constraint also carries its {@link rowLocalReferencedWriteRow} dependency set as
61
+ * `referencedWriteRowColumns` (bare basis names) **and** `referencedWriteRowRelations`
62
+ * (each basis column qualified by its owning member relation) — prover-supplied metadata
63
+ * the per-op decomposition gate uses instead of an AST walk, so a subquery-bearing
64
+ * row-local CHECK (which the prover still classifies `enforced-row-local`) gates onto the
65
+ * member op that owns its correlated write-row column — by relation identity, not bare
66
+ * name — rather than crashing on a member that cannot resolve it (or mis-routing onto a
67
+ * sibling member that merely shares the basis-column name).
65
68
  *
66
69
  * Returns `[]` when the slot is un-proved (`obligations` undefined) or carries no
67
70
  * row-local checks — the common case, so a non-lens / check-free write pays nothing.
@@ -153,7 +156,7 @@ export declare function collectLensParentSideForeignKeyConstraints(parentSlot: L
153
156
  * view / proved-key write pays nothing. DELETE never introduces a duplicate, so the
154
157
  * caller restricts this to insert/update.
155
158
  */
156
- export declare function collectLensSetLevelConstraints(slot: LensSlot): RowConstraintSchema[];
159
+ export declare function collectLensSetLevelConstraints(slot: LensSlot, schemaManager?: SchemaManager): RowConstraintSchema[];
157
160
  /**
158
161
  * Whether the slot carries any `enforced-set-level` `commit-time` obligation — the
159
162
  * detection-only set-level class. The view-mutation builder consults this to reject
@@ -1 +1 @@
1
- {"version":3,"file":"lens-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAA2C,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAW7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAsK3E;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CAqB1G;AA4JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,mBAAmB,EAAE,CA8CpH;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,0CAA0C,CACzD,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAC5C,mBAAmB,EAAE,CAuDvB;AAyED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CA6CpF;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEvE"}
1
+ {"version":3,"file":"lens-enforcement.d.ts","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AACxE,OAAO,KAAK,EAAE,mBAAmB,EAAuE,MAAM,uBAAuB,CAAC;AACtI,OAAO,EAAE,SAAS,EAA+B,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAY7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAM9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAEH,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAuR3E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,GAAG,mBAAmB,EAAE,CA+B1G;AA4JD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAmDpH;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,0CAA0C,CACzD,UAAU,EAAE,QAAQ,EACpB,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAC5C,mBAAmB,EAAE,CAiEvB;AAyED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,mBAAmB,EAAE,CAqDnH;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEvE"}
@@ -1,4 +1,4 @@
1
- import { RowOpFlag } from '../../schema/table.js';
1
+ import { RowOpFlag, writeRowRelationCorrelation } from '../../schema/table.js';
2
2
  import { resolveSlotBasisSource, collectColumnRefNames, authoredForwardMap } from '../../schema/lens-prover.js';
3
3
  import { logicalToBasisColumnMap, resolveLogicalReferencedColumns, mappedFkBasisPairs, matchingBasisFks, findLogicalParentFkRefs, } from '../../schema/lens-fk-discovery.js';
4
4
  import { transformScopedExpr, transformExpr } from './scope-transform.js';
@@ -54,6 +54,66 @@ const log = createLogger('planner:lens-enforcement');
54
54
  */
55
55
  /** Marker tag stamped on a routed basis-term constraint so its lens origin is visible. */
56
56
  export const LENS_BOUNDARY_ATTACHED_TAG = 'quereus.lens.boundary.attached';
57
+ /**
58
+ * Resolves, per logical column of a slot, the **basis relation that owns it** — the
59
+ * member relation under a decomposition advertisement, or the slot's single basis
60
+ * source for a non-decomposition lens. The per-op decomposition gate
61
+ * (`constraintsForOp` in `view-mutation-builder`) needs this to route a
62
+ * lens-synthesized constraint onto the exact member op that owns each referenced
63
+ * write-row column, instead of any sibling member op that merely shares the basis
64
+ * column NAME (the bug this metadata fixes: two members both spelling their value
65
+ * column `val`).
66
+ *
67
+ * Sourced from `slot.advertisement.storage.members` (each member's `relation` +
68
+ * the `logicalColumn`s it backs) when a decomposition backs the table; else from
69
+ * {@link resolveSlotBasisSource} (the single basis relation answers for every
70
+ * column). Returns `undefined` for a column it cannot attribute (an EAV-pivot
71
+ * logical column, an opaque slot) — the caller then omits the relation metadata for
72
+ * that constraint, so the gate falls back to its bare-name path.
73
+ */
74
+ function makeOwningRelationResolver(slot, schemaManager) {
75
+ const members = slot.advertisement?.storage?.members;
76
+ if (members && members.length > 0) {
77
+ const byLogical = new Map();
78
+ for (const m of members) {
79
+ for (const cm of m.columns)
80
+ byLogical.set(cm.logicalColumn.toLowerCase(), m.relation);
81
+ }
82
+ return (logicalColumn) => byLogical.get(logicalColumn.toLowerCase());
83
+ }
84
+ const basis = schemaManager ? resolveSlotBasisSource(slot, schemaManager) : undefined;
85
+ if (basis) {
86
+ const ref = { schema: basis.schemaName, table: basis.name };
87
+ return () => ref;
88
+ }
89
+ return () => undefined;
90
+ }
91
+ /**
92
+ * Builds one relation-qualified write-row entry per `(owning relation, basis column)`
93
+ * pair, given the referenced logical column it derives from. Returns `undefined`
94
+ * (signalling "omit the relation metadata, fall back to the bare-name gate") if any
95
+ * logical column's owning relation cannot be resolved — so an incomplete attribution
96
+ * is never silently treated as a complete one. The returned list is deduped by
97
+ * `(schema, table, column)`.
98
+ */
99
+ function buildWriteRowRelations(owningRelation, entries) {
100
+ const out = [];
101
+ const seen = new Set();
102
+ for (const { logicalColumn, basisColumns } of entries) {
103
+ const rel = owningRelation(logicalColumn);
104
+ if (!rel)
105
+ return undefined;
106
+ for (const basisColumn of basisColumns) {
107
+ const column = basisColumn.toLowerCase();
108
+ const key = `${rel.schema.toLowerCase()}.${rel.table.toLowerCase()}.${column}`;
109
+ if (seen.has(key))
110
+ continue;
111
+ seen.add(key);
112
+ out.push({ schema: rel.schema, table: rel.table, column });
113
+ }
114
+ }
115
+ return out;
116
+ }
57
117
  /**
58
118
  * The {@link ScopeContext} for the logical→basis row-local CHECK rewrite — the
59
119
  * scope-aware dual of the single-source view-column descent ({@link import('./single-source.js').makeViewScope}).
@@ -66,19 +126,24 @@ export const LENS_BOUNDARY_ATTACHED_TAG = 'quereus.lens.boundary.attached';
66
126
  * per column:
67
127
  *
68
128
  * - **Qualified by the logical table name** and mapped ⇒ a qualified write-row ref ⇒
69
- * replace with the basis column qualified `NEW.<basis>` (the write-row correlation name).
129
+ * replace with the basis column qualified `<corr>.<basis>` (the write-row correlation name).
70
130
  * Any other qualifier (`Allowed.name`, a subquery FROM source) ⇒ left untouched — it
71
131
  * resolves against the subquery FROM. This is the negative-case guard against
72
132
  * over-rewriting a foreign ref whose name happens to equal a logical column.
73
133
  * - **Bare**, shadowed by a (this-or-enclosing) subquery FROM ⇒ left untouched
74
- * (subquery-local); else, name maps ⇒ replace with `NEW.<basis>` (a correlated
134
+ * (subquery-local); else, name maps ⇒ replace with `<corr>.<basis>` (a correlated
75
135
  * write-row ref); else ⇒ left untouched.
76
136
  *
77
- * The replacement is qualified `NEW.<basis>` rather than left bare so a ref emitted
78
- * inside a correlated subquery cannot be captured by a same-named column the subquery's
79
- * own FROM introduces (the lens analogue of the single-source descent's
80
- * {@link import('./single-source.js').makeBaseQualifier}); see {@link makeLensRewriteScope}'s
81
- * `resolve`. At the top level it resolves to the write row identically to a bare ref.
137
+ * `<corr>` is `NEW` for a single-source lens and the per-relation
138
+ * {@link import('../../schema/table.js').writeRowRelationCorrelation} on a multi-member
139
+ * decomposition (`relationQualify`): two members that back distinct logical columns with the
140
+ * SAME basis-column name (`id`,`name` → `val` on `w_id`,`w_name`) then rewrite to *distinct*
141
+ * terms instead of collapsing to one `NEW.val`. The qualifier (rather than a bare ref) is
142
+ * load-bearing so a ref emitted inside a correlated subquery cannot be captured by a
143
+ * same-named column the subquery's own FROM introduces (the lens analogue of the single-source
144
+ * descent's {@link import('./single-source.js').makeBaseQualifier}); see
145
+ * {@link makeLensRewriteScope}'s `resolve`. At the top level it resolves to the write row
146
+ * identically to a bare ref.
82
147
  *
83
148
  * The old top-level behavior — strip the qualifier of an *unmapped* qualified column — is
84
149
  * intentionally dropped: the prover errors at deploy on a CHECK over a non-reconstructible
@@ -91,21 +156,43 @@ export const LENS_BOUNDARY_ATTACHED_TAG = 'quereus.lens.boundary.attached';
91
156
  * diagnostic rather than mis-rewrite or fall through to a cryptic build crash. A foreign /
92
157
  * qualified ref in a tainted scope is still left untouched (its name is not a logical column).
93
158
  */
94
- function makeLensRewriteScope(map, forwards, logicalTableName) {
159
+ function makeLensRewriteScope(map, forwards, logicalTableName, owningRelation, relationQualify) {
95
160
  const lcTable = logicalTableName.toLowerCase();
96
- // A rewritten write-row ref is qualified `NEW.<basis>` the write-row correlation
161
+ // The write-row correlation name for a mapped logical column: on a **multi-member
162
+ // decomposition** (`relationQualify`), the per-relation synthetic correlation keyed by
163
+ // the column's owning member (so two members spelling their value column the same NAME
164
+ // stay distinct — `id`'s `val` on `w_id` vs `name`'s `val` on `w_name`), else bare `NEW`.
165
+ // Falls back to `NEW` when the owning relation cannot be attributed (an EAV-pivot / opaque
166
+ // column) — mirroring `buildWriteRowRelations` returning `undefined` (gate falls back to
167
+ // the bare-name path), so the rewrite and the gate metadata agree on those columns.
168
+ const writeRowCorrelation = (name) => {
169
+ if (!relationQualify)
170
+ return 'NEW';
171
+ const rel = owningRelation(name);
172
+ return rel ? writeRowRelationCorrelation(rel.schema, rel.table) : 'NEW';
173
+ };
174
+ // A rewritten write-row ref is qualified `<corr>.<basis>` — the write-row correlation
97
175
  // name the constraint scope registers (`building/constraint-builder.ts` registers
98
- // `new.<col>` for every basis column on an INSERT/UPDATE check; row-local lens
99
- // checks are INSERT|UPDATE only). The qualifier is load-bearing for a ref emitted
100
- // INSIDE a correlated subquery: a *bare* basis column there would re-bind to a
101
- // same-named column the subquery's own FROM introduces (innermost SQL scoping)
102
- // instead of the write row silently changing the CHECK's meaning when a renamed
103
- // logical column's basis spelling collides with a subquery-source column. This is
104
- // the lens analogue of the single-source descent's `makeBaseQualifier` (which
105
- // qualifies with the lowered target's alias for the same reason). At the top level
106
- // `NEW.<basis>` resolves to the write row identically to the prior bare form, so the
107
- // behavior is unchanged except in the collision corner. Mirrors the FK / set-level
108
- // synthesizers, which likewise qualify their write-row side `NEW.*`.
176
+ // `new.<col>` AND `<writeRowRelationCorrelation(opSchema,opTable)>.<col>` for every
177
+ // basis column on an INSERT/UPDATE check; row-local lens checks are INSERT|UPDATE only).
178
+ // On a **single-source** lens `<corr>` is `NEW`; on a **multi-member decomposition** it
179
+ // is the per-relation correlation (above) so two members whose value columns share a
180
+ // NAME do not collapse to the same term (the `id`/`name` `val` collision). The
181
+ // qualifier is load-bearing for a ref emitted INSIDE a correlated subquery: a *bare*
182
+ // basis column there would re-bind to a same-named column the subquery's own FROM
183
+ // introduces (innermost SQL scoping) instead of the write row silently changing the
184
+ // CHECK's meaning when a renamed logical column's basis spelling collides with a
185
+ // subquery-source column. This is the lens analogue of the single-source descent's
186
+ // `makeBaseQualifier` (which qualifies with the lowered target's alias for the same
187
+ // reason); the decomposition correlation is capture-safe for the SAME reason `NEW`
188
+ // is — neither is a reserved keyword, but `__lens_new__…` (like `NEW`) is vanishingly
189
+ // implausible as a user-written subquery-FROM alias, so it is not shadow-captured in
190
+ // practice (using the bare basis table name WOULD reintroduce the capture bug `NEW` was
191
+ // added to fix — a subquery's FROM routinely names the basis table). At the top level
192
+ // `<corr>.<basis>` resolves to
193
+ // the write row identically to the prior bare form, so behavior is unchanged except in
194
+ // the collision corner. Mirrors the FK / set-level synthesizers, which likewise qualify
195
+ // their write-row side `NEW.*`.
109
196
  //
110
197
  // An **authored-inverse** column has no single basis spelling — substitute its
111
198
  // forward `get` expression instead, every base ref `NEW.`-qualified for the same
@@ -117,9 +204,12 @@ function makeLensRewriteScope(map, forwards, logicalTableName) {
117
204
  const resolve = (name) => {
118
205
  const basisColumn = map.get(name);
119
206
  if (basisColumn !== undefined)
120
- return { type: 'column', name: basisColumn, table: 'NEW' };
207
+ return { type: 'column', name: basisColumn, table: writeRowCorrelation(name) };
121
208
  const forward = forwards.get(name);
122
209
  if (forward !== undefined) {
210
+ // Authored-inverse forward: `authoredForwardMap` admits only subquery-free
211
+ // single-source forwards, so it is never decomposition-ambiguous — its base refs
212
+ // stay on `NEW`.
123
213
  return transformExpr(forward, col => ({ type: 'column', name: col.name, table: 'NEW' }));
124
214
  }
125
215
  return undefined;
@@ -165,8 +255,8 @@ function makeLensRewriteScope(map, forwards, logicalTableName) {
165
255
  * now also rewritten (to `NEW.doc_key`) rather than passing through verbatim and crashing at
166
256
  * constraint build.
167
257
  */
168
- function rewriteToBasisTerms(ctx, expr, map, forwards, logicalTableName) {
169
- return transformScopedExpr(ctx, makeLensRewriteScope(map, forwards, logicalTableName), expr);
258
+ function rewriteToBasisTerms(ctx, expr, map, forwards, logicalTableName, owningRelation, relationQualify) {
259
+ return transformScopedExpr(ctx, makeLensRewriteScope(map, forwards, logicalTableName, owningRelation, relationQualify), expr);
170
260
  }
171
261
  /**
172
262
  * The lowercased **basis**-column names a row-local logical CHECK depends on — the
@@ -192,22 +282,33 @@ function rewriteToBasisTerms(ctx, expr, map, forwards, logicalTableName) {
192
282
  *
193
283
  * An authored-inverse column contributes its forward `get` expression's basis
194
284
  * refs (the columns the substituted CHECK actually reads on the write row).
285
+ *
286
+ * Returned per-referenced-logical-column (`{ logicalColumn, basisColumns }`) so the
287
+ * caller can both flatten it to the bare {@link RowConstraintSchema.referencedWriteRowColumns}
288
+ * list AND attribute each basis column to its owning relation for the relation-qualified
289
+ * gate metadata. A logical column referenced more than once contributes a single entry
290
+ * (deduped by lowercased logical name).
195
291
  */
196
- function rowLocalReferencedBasisColumns(expr, map, forwards) {
197
- const cols = new Set();
292
+ function rowLocalReferencedWriteRow(expr, map, forwards) {
293
+ const entries = [];
294
+ const seen = new Set();
198
295
  for (const name of collectColumnRefNames(expr)) {
199
- const basis = map.get(name.toLowerCase());
296
+ const lc = name.toLowerCase();
297
+ if (seen.has(lc))
298
+ continue;
299
+ const basis = map.get(lc);
200
300
  if (basis !== undefined) {
201
- cols.add(basis.toLowerCase());
301
+ seen.add(lc);
302
+ entries.push({ logicalColumn: name, basisColumns: [basis.toLowerCase()] });
202
303
  continue;
203
304
  }
204
- const forward = forwards.get(name.toLowerCase());
305
+ const forward = forwards.get(lc);
205
306
  if (forward !== undefined) {
206
- for (const f of collectColumnRefNames(forward))
207
- cols.add(f.toLowerCase());
307
+ seen.add(lc);
308
+ entries.push({ logicalColumn: name, basisColumns: collectColumnRefNames(forward).map(f => f.toLowerCase()) });
208
309
  }
209
310
  }
210
- return [...cols];
311
+ return entries;
211
312
  }
212
313
  /**
213
314
  * Builds the basis-term row-local CHECK constraints a lens write must enforce.
@@ -215,11 +316,14 @@ function rowLocalReferencedBasisColumns(expr, map, forwards) {
215
316
  * and tags it with {@link LENS_BOUNDARY_ATTACHED_TAG}. The result is merged into
216
317
  * the basis INSERT/UPDATE's constraint-check pipeline by the base-table builder.
217
318
  *
218
- * Each constraint also carries {@link rowLocalReferencedBasisColumns} as
219
- * `referencedWriteRowColumns` prover-supplied metadata the per-op decomposition gate
220
- * uses instead of an AST walk, so a subquery-bearing row-local CHECK (which the prover
221
- * still classifies `enforced-row-local`) gates onto the member op that owns its correlated
222
- * write-row column rather than crashing on a member that cannot resolve it.
319
+ * Each constraint also carries its {@link rowLocalReferencedWriteRow} dependency set as
320
+ * `referencedWriteRowColumns` (bare basis names) **and** `referencedWriteRowRelations`
321
+ * (each basis column qualified by its owning member relation) — prover-supplied metadata
322
+ * the per-op decomposition gate uses instead of an AST walk, so a subquery-bearing
323
+ * row-local CHECK (which the prover still classifies `enforced-row-local`) gates onto the
324
+ * member op that owns its correlated write-row column — by relation identity, not bare
325
+ * name — rather than crashing on a member that cannot resolve it (or mis-routing onto a
326
+ * sibling member that merely shares the basis-column name).
223
327
  *
224
328
  * Returns `[]` when the slot is un-proved (`obligations` undefined) or carries no
225
329
  * row-local checks — the common case, so a non-lens / check-free write pays nothing.
@@ -229,6 +333,13 @@ export function collectLensRowLocalConstraints(ctx, slot) {
229
333
  return [];
230
334
  const map = logicalToBasisColumnMap(slot);
231
335
  const forwards = authoredForwardMap(slot);
336
+ const owningRelation = makeOwningRelationResolver(slot, ctx.schemaManager);
337
+ // Relation-qualify the rewrite ONLY on a multi-member decomposition, where the same
338
+ // basis-column NAME can denote different physical columns on different members. A
339
+ // single-source lens (or a degenerate single-member decomposition) has no such ambiguity,
340
+ // so it keeps the `NEW` write-row correlation — no rewrite/behavior change there.
341
+ const members = slot.advertisement?.storage?.members;
342
+ const relationQualify = !!members && members.length > 1;
232
343
  const logicalTableName = slot.logicalTable.name;
233
344
  const constraints = [];
234
345
  for (const obligation of slot.obligations) {
@@ -237,13 +348,16 @@ export function collectLensRowLocalConstraints(ctx, slot) {
237
348
  if (obligation.constraint.kind !== 'check')
238
349
  continue;
239
350
  const source = obligation.constraint.constraint;
351
+ const writeRow = rowLocalReferencedWriteRow(source.expr, map, forwards);
240
352
  constraints.push({
241
353
  name: source.name ? `lens:${source.name}` : 'lens:check',
242
- expr: rewriteToBasisTerms(ctx, source.expr, map, forwards, logicalTableName),
354
+ expr: rewriteToBasisTerms(ctx, source.expr, map, forwards, logicalTableName, owningRelation, relationQualify),
243
355
  // A logical CHECK guards the row being written: insert and update only.
244
356
  operations: RowOpFlag.INSERT | RowOpFlag.UPDATE,
245
- // Prover-supplied write-row dependency set for the per-op decomposition gate.
246
- referencedWriteRowColumns: rowLocalReferencedBasisColumns(source.expr, map, forwards),
357
+ // Prover-supplied write-row dependency set for the per-op decomposition gate
358
+ // (bare names for introspection; relation-qualified for the gate itself).
359
+ referencedWriteRowColumns: [...new Set(writeRow.flatMap(e => e.basisColumns))],
360
+ referencedWriteRowRelations: buildWriteRowRelations(owningRelation, writeRow),
247
361
  tags: { [LENS_BOUNDARY_ATTACHED_TAG]: true },
248
362
  });
249
363
  }
@@ -410,6 +524,7 @@ export function collectLensForeignKeyConstraints(slot, schemaManager) {
410
524
  if (!slot.obligations || slot.obligations.length === 0)
411
525
  return [];
412
526
  const map = logicalToBasisColumnMap(slot);
527
+ const owningRelation = makeOwningRelationResolver(slot, schemaManager);
413
528
  const logicalSchemaName = slot.logicalTable.schemaName;
414
529
  const constraints = [];
415
530
  for (const obligation of slot.obligations) {
@@ -438,16 +553,20 @@ export function collectLensForeignKeyConstraints(slot, schemaManager) {
438
553
  // Rewrite each FK child column index → logical name → basis column. A column
439
554
  // the prover proved reconstructible maps; otherwise it falls back to the logical
440
555
  // name (the prover would have errored on a non-reconstructible FK child column).
441
- const childColumns = fk.columns.map(childIdx => {
556
+ // The child (NEW) columns are the constraint's write-row refs; attribute each to
557
+ // the member relation that owns it for the per-op decomposition gate.
558
+ const writeRow = fk.columns.map(childIdx => {
442
559
  const logicalName = slot.logicalTable.columns[childIdx]?.name ?? `#${childIdx}`;
443
- return map.get(logicalName.toLowerCase()) ?? logicalName;
560
+ return { logicalColumn: logicalName, basisColumns: [map.get(logicalName.toLowerCase()) ?? logicalName] };
444
561
  });
562
+ const childColumns = writeRow.map(e => e.basisColumns[0]);
445
563
  const expr = synthesizeFKExistsExpr(fk.referencedTable, parentColumns, childColumns, 'NEW', referencedSchema);
446
564
  constraints.push({
447
565
  name: fk.name ? `lens:fk:${fk.name}` : 'lens:fk',
448
566
  expr,
449
567
  // Child-side FK guards the row being written: insert and update only.
450
568
  operations: RowOpFlag.INSERT | RowOpFlag.UPDATE,
569
+ referencedWriteRowRelations: buildWriteRowRelations(owningRelation, writeRow),
451
570
  tags: { [LENS_BOUNDARY_ATTACHED_TAG]: true },
452
571
  });
453
572
  }
@@ -594,6 +713,16 @@ export function collectLensParentSideForeignKeyConstraints(parentSlot, schemaMan
594
713
  name: fk.name ? `lens:fk:parent:${fk.name}` : 'lens:fk:parent',
595
714
  expr,
596
715
  operations: operation,
716
+ // The OLD/NEW referenced columns are this constraint's write-row refs; they ride
717
+ // the parent's basis write row, which is exactly `basisParent` (this collector
718
+ // only runs for a single-source parent — it early-returned otherwise). The child
719
+ // columns inside the NOT EXISTS stay logical (subquery-FROM resolved) and are not
720
+ // write-row refs, so they are not attributed.
721
+ referencedWriteRowRelations: parentBasisColumns.map(column => ({
722
+ schema: basisParent.schemaName,
723
+ table: basisParent.name,
724
+ column: column.toLowerCase(),
725
+ })),
597
726
  tags: { [LENS_BOUNDARY_ATTACHED_TAG]: true },
598
727
  });
599
728
  }
@@ -682,11 +811,12 @@ function synthesizeUniqueCountExpr(logicalSchema, logicalTable, keyColumns) {
682
811
  * view / proved-key write pays nothing. DELETE never introduces a duplicate, so the
683
812
  * caller restricts this to insert/update.
684
813
  */
685
- export function collectLensSetLevelConstraints(slot) {
814
+ export function collectLensSetLevelConstraints(slot, schemaManager) {
686
815
  if (!slot.obligations || slot.obligations.length === 0)
687
816
  return [];
688
817
  const map = logicalToBasisColumnMap(slot);
689
818
  const forwards = authoredForwardMap(slot);
819
+ const owningRelation = makeOwningRelationResolver(slot, schemaManager);
690
820
  const logicalSchemaName = slot.logicalTable.schemaName;
691
821
  const logicalTableName = slot.logicalTable.name;
692
822
  const constraints = [];
@@ -707,18 +837,24 @@ export function collectLensSetLevelConstraints(slot) {
707
837
  // `get` image for a proven-bijective `with inverse` column (so the count compares
708
838
  // logical value to logical value). A non-reconstructible, non-authored key would
709
839
  // have made the table read-only — no write reaches here — but the bare-name
710
- // fallback keeps the synthesis total.
840
+ // fallback keeps the synthesis total. `writeRow` accumulates, per key column, the
841
+ // basis columns its NEW side references — the per-op decomposition gate's write-row
842
+ // dependency set, attributed below to each column's owning member relation.
843
+ const writeRow = [];
711
844
  const keyColumns = logicalColumns.map(li => {
712
845
  const logicalColumn = slot.logicalTable.columns[li]?.name ?? `#${li}`;
713
846
  const lc = logicalColumn.toLowerCase();
714
847
  const basisColumn = map.get(lc);
715
848
  if (basisColumn !== undefined) {
849
+ writeRow.push({ logicalColumn, basisColumns: [basisColumn.toLowerCase()] });
716
850
  return { logicalColumn, newSide: { type: 'column', name: basisColumn, table: 'NEW' } };
717
851
  }
718
852
  const forward = forwards.get(lc);
719
853
  if (forward !== undefined) {
854
+ writeRow.push({ logicalColumn, basisColumns: collectColumnRefNames(forward).map(f => f.toLowerCase()) });
720
855
  return { logicalColumn, newSide: transformExpr(forward, col => ({ type: 'column', name: col.name, table: 'NEW' })) };
721
856
  }
857
+ writeRow.push({ logicalColumn, basisColumns: [logicalColumn.toLowerCase()] });
722
858
  return { logicalColumn, newSide: { type: 'column', name: logicalColumn, table: 'NEW' } };
723
859
  });
724
860
  constraints.push({
@@ -727,6 +863,7 @@ export function collectLensSetLevelConstraints(slot) {
727
863
  // A duplicate is only introduced by an insert or a key-changing update;
728
864
  // a delete cannot create one (and is excluded by the caller anyway).
729
865
  operations: RowOpFlag.INSERT | RowOpFlag.UPDATE,
866
+ referencedWriteRowRelations: buildWriteRowRelations(owningRelation, writeRow),
730
867
  tags: { [LENS_BOUNDARY_ATTACHED_TAG]: true },
731
868
  });
732
869
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lens-enforcement.js","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lens-enforcement.js","sourceRoot":"","sources":["../../../../src/planner/mutation/lens-enforcement.ts"],"names":[],"mappings":"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"}
@@ -798,10 +798,13 @@ function literalFromValue(scope, value) {
798
798
  *
799
799
  * NOTE (array-valued scalar param): binding `in (?)` with an *array* value (params
800
800
  * `[[1,2]]`) is not IN-list expansion — the engine has no such concept. The seek key
801
- * is the parameter expression, so at runtime the array compares unequal to every
802
- * scalar column value and the predicate matches *nothing* (previously it match-alled).
803
- * Rejecting an array-bound scalar param at bind time is tracked separately; see the
804
- * `quereus-reject-array-valued-scalar-param` backlog ticket.
801
+ * is the parameter expression, so at runtime the array would compare unequal to every
802
+ * scalar column value and the predicate would match *nothing*. This is now rejected
803
+ * at bind time: the parameter is recognized as a scalar comparand on the *logical*
804
+ * plan (before this rule folds the comparison into a seek) by
805
+ * `collectScalarRequiredParams` (`planner/analysis/scalar-param-usage.ts`), and
806
+ * `Statement.validateParameterTypes` throws `StatusCode.MISMATCH` when such a
807
+ * parameter is bound to an array/object value.
805
808
  */
806
809
  function equalitySeekKey(scope, c) {
807
810
  if (c.op === 'IN' && Array.isArray(c.valueExpr) && c.valueExpr.length === 1) {