litedbmodel 2.0.0 → 2.0.2

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 (163) hide show
  1. package/dist/scp/authoring-sql.d.ts +78 -0
  2. package/dist/scp/authoring-sql.d.ts.map +1 -1
  3. package/dist/scp/authoring-sql.js +110 -2
  4. package/dist/scp/authoring-sql.js.map +1 -1
  5. package/dist/scp/catalog.d.ts +5 -2
  6. package/dist/scp/catalog.d.ts.map +1 -1
  7. package/dist/scp/catalog.js +32 -1
  8. package/dist/scp/catalog.js.map +1 -1
  9. package/dist/scp/codegen.d.ts +143 -85
  10. package/dist/scp/codegen.d.ts.map +1 -1
  11. package/dist/scp/codegen.js +374 -90
  12. package/dist/scp/codegen.js.map +1 -1
  13. package/dist/scp/coltype.d.ts +41 -0
  14. package/dist/scp/coltype.d.ts.map +1 -0
  15. package/dist/scp/coltype.js +188 -0
  16. package/dist/scp/coltype.js.map +1 -0
  17. package/dist/scp/dialect.d.ts +12 -3
  18. package/dist/scp/dialect.d.ts.map +1 -1
  19. package/dist/scp/dialect.js +12 -3
  20. package/dist/scp/dialect.js.map +1 -1
  21. package/dist/scp/find-filter-guard.d.ts +68 -0
  22. package/dist/scp/find-filter-guard.d.ts.map +1 -0
  23. package/dist/scp/find-filter-guard.js +88 -0
  24. package/dist/scp/find-filter-guard.js.map +1 -0
  25. package/dist/scp/fragment/assemble.d.ts +61 -0
  26. package/dist/scp/fragment/assemble.d.ts.map +1 -0
  27. package/dist/scp/fragment/assemble.js +156 -0
  28. package/dist/scp/fragment/assemble.js.map +1 -0
  29. package/dist/scp/fragment/compile-pg.d.ts +107 -0
  30. package/dist/scp/fragment/compile-pg.d.ts.map +1 -0
  31. package/dist/scp/fragment/compile-pg.js +142 -0
  32. package/dist/scp/fragment/compile-pg.js.map +1 -0
  33. package/dist/scp/fragment/index.d.ts +16 -0
  34. package/dist/scp/fragment/index.d.ts.map +1 -0
  35. package/dist/scp/fragment/index.js +34 -0
  36. package/dist/scp/fragment/index.js.map +1 -0
  37. package/dist/scp/fragment/model.d.ts +119 -0
  38. package/dist/scp/fragment/model.d.ts.map +1 -0
  39. package/dist/scp/fragment/model.js +66 -0
  40. package/dist/scp/fragment/model.js.map +1 -0
  41. package/dist/scp/fragment/pg-array-type.d.ts +13 -0
  42. package/dist/scp/fragment/pg-array-type.d.ts.map +1 -0
  43. package/dist/scp/fragment/pg-array-type.js +34 -0
  44. package/dist/scp/fragment/pg-array-type.js.map +1 -0
  45. package/dist/scp/guard.d.ts +2 -6
  46. package/dist/scp/guard.d.ts.map +1 -1
  47. package/dist/scp/guard.js +19 -22
  48. package/dist/scp/guard.js.map +1 -1
  49. package/dist/scp/index.cjs +18695 -3921
  50. package/dist/scp/index.d.ts +41 -24
  51. package/dist/scp/index.d.ts.map +1 -1
  52. package/dist/scp/index.js +134 -49
  53. package/dist/scp/index.js.map +1 -1
  54. package/dist/scp/index.mjs +4830 -1432
  55. package/dist/scp/makesql/authoring-compile.d.ts +90 -0
  56. package/dist/scp/makesql/authoring-compile.d.ts.map +1 -0
  57. package/dist/scp/makesql/authoring-compile.js +494 -0
  58. package/dist/scp/makesql/authoring-compile.js.map +1 -0
  59. package/dist/scp/makesql/compile-crud.d.ts +133 -0
  60. package/dist/scp/makesql/compile-crud.d.ts.map +1 -0
  61. package/dist/scp/makesql/compile-crud.js +288 -0
  62. package/dist/scp/makesql/compile-crud.js.map +1 -0
  63. package/dist/scp/makesql/compile-relation.d.ts +157 -0
  64. package/dist/scp/makesql/compile-relation.d.ts.map +1 -0
  65. package/dist/scp/makesql/compile-relation.js +425 -0
  66. package/dist/scp/makesql/compile-relation.js.map +1 -0
  67. package/dist/scp/makesql/compile-select.d.ts +52 -0
  68. package/dist/scp/makesql/compile-select.d.ts.map +1 -0
  69. package/dist/scp/makesql/compile-select.js +58 -0
  70. package/dist/scp/makesql/compile-select.js.map +1 -0
  71. package/dist/scp/makesql/compile.d.ts +63 -0
  72. package/dist/scp/makesql/compile.d.ts.map +1 -0
  73. package/dist/scp/makesql/compile.js +99 -0
  74. package/dist/scp/makesql/compile.js.map +1 -0
  75. package/dist/scp/makesql/handler.d.ts +58 -0
  76. package/dist/scp/makesql/handler.d.ts.map +1 -0
  77. package/dist/scp/makesql/handler.js +113 -0
  78. package/dist/scp/makesql/handler.js.map +1 -0
  79. package/dist/scp/makesql/index.d.ts +33 -0
  80. package/dist/scp/makesql/index.d.ts.map +1 -0
  81. package/dist/scp/makesql/index.js +114 -0
  82. package/dist/scp/makesql/index.js.map +1 -0
  83. package/dist/scp/makesql/ir.d.ts +42 -0
  84. package/dist/scp/makesql/ir.d.ts.map +1 -0
  85. package/dist/scp/makesql/ir.js +66 -0
  86. package/dist/scp/makesql/ir.js.map +1 -0
  87. package/dist/scp/makesql/json-array.d.ts +84 -0
  88. package/dist/scp/makesql/json-array.d.ts.map +1 -0
  89. package/dist/scp/makesql/json-array.js +118 -0
  90. package/dist/scp/makesql/json-array.js.map +1 -0
  91. package/dist/scp/makesql/json-batch.d.ts +102 -0
  92. package/dist/scp/makesql/json-batch.d.ts.map +1 -0
  93. package/dist/scp/makesql/json-batch.js +269 -0
  94. package/dist/scp/makesql/json-batch.js.map +1 -0
  95. package/dist/scp/makesql/makesql.d.ts +99 -0
  96. package/dist/scp/makesql/makesql.d.ts.map +1 -0
  97. package/dist/scp/makesql/makesql.js +122 -0
  98. package/dist/scp/makesql/makesql.js.map +1 -0
  99. package/dist/scp/makesql/outtype.d.ts +44 -0
  100. package/dist/scp/makesql/outtype.d.ts.map +1 -0
  101. package/dist/scp/makesql/outtype.js +197 -0
  102. package/dist/scp/makesql/outtype.js.map +1 -0
  103. package/dist/scp/makesql/pool-executor.d.ts +47 -0
  104. package/dist/scp/makesql/pool-executor.d.ts.map +1 -0
  105. package/dist/scp/makesql/pool-executor.js +50 -0
  106. package/dist/scp/makesql/pool-executor.js.map +1 -0
  107. package/dist/scp/makesql/static-bundle.d.ts +187 -0
  108. package/dist/scp/makesql/static-bundle.d.ts.map +1 -0
  109. package/dist/scp/makesql/static-bundle.js +1113 -0
  110. package/dist/scp/makesql/static-bundle.js.map +1 -0
  111. package/dist/scp/makesql/tx.d.ts +216 -0
  112. package/dist/scp/makesql/tx.d.ts.map +1 -0
  113. package/dist/scp/makesql/tx.js +788 -0
  114. package/dist/scp/makesql/tx.js.map +1 -0
  115. package/dist/scp/makesql/writeouttype.d.ts +66 -0
  116. package/dist/scp/makesql/writeouttype.d.ts.map +1 -0
  117. package/dist/scp/makesql/writeouttype.js +195 -0
  118. package/dist/scp/makesql/writeouttype.js.map +1 -0
  119. package/dist/scp/relation.d.ts +86 -74
  120. package/dist/scp/relation.d.ts.map +1 -1
  121. package/dist/scp/relation.js +186 -120
  122. package/dist/scp/relation.js.map +1 -1
  123. package/dist/scp/runtime.d.ts +158 -211
  124. package/dist/scp/runtime.d.ts.map +1 -1
  125. package/dist/scp/runtime.js +250 -515
  126. package/dist/scp/runtime.js.map +1 -1
  127. package/dist/scp/typed-object.d.ts +12 -1
  128. package/dist/scp/typed-object.d.ts.map +1 -1
  129. package/dist/scp/typed-object.js +25 -4
  130. package/dist/scp/typed-object.js.map +1 -1
  131. package/docs/proposal/litedbmodel-v2-scp-architecture.md +51 -0
  132. package/docs/proposal/v0-coverage-matrix.md +157 -0
  133. package/docs/proposal/v2-completeness-plan.md +90 -0
  134. package/docs/proposal/v2-sql-parity-checklist.md +162 -0
  135. package/package.json +3 -3
  136. package/dist/scp/bridge.d.ts +0 -64
  137. package/dist/scp/bridge.d.ts.map +0 -1
  138. package/dist/scp/bridge.js +0 -329
  139. package/dist/scp/bridge.js.map +0 -1
  140. package/dist/scp/compile-dialect.d.ts +0 -39
  141. package/dist/scp/compile-dialect.d.ts.map +0 -1
  142. package/dist/scp/compile-dialect.js +0 -62
  143. package/dist/scp/compile-dialect.js.map +0 -1
  144. package/dist/scp/compile-sqlite.d.ts +0 -114
  145. package/dist/scp/compile-sqlite.d.ts.map +0 -1
  146. package/dist/scp/compile-sqlite.js +0 -149
  147. package/dist/scp/compile-sqlite.js.map +0 -1
  148. package/dist/scp/ir.d.ts +0 -92
  149. package/dist/scp/ir.d.ts.map +0 -1
  150. package/dist/scp/ir.js +0 -28
  151. package/dist/scp/ir.js.map +0 -1
  152. package/dist/scp/render.d.ts +0 -40
  153. package/dist/scp/render.d.ts.map +0 -1
  154. package/dist/scp/render.js +0 -170
  155. package/dist/scp/render.js.map +0 -1
  156. package/dist/scp/write-plan.d.ts +0 -161
  157. package/dist/scp/write-plan.d.ts.map +0 -1
  158. package/dist/scp/write-plan.js +0 -528
  159. package/dist/scp/write-plan.js.map +0 -1
  160. package/dist/scp/write-runtime.d.ts +0 -80
  161. package/dist/scp/write-runtime.d.ts.map +0 -1
  162. package/dist/scp/write-runtime.js +0 -167
  163. package/dist/scp/write-runtime.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/scp/runtime.ts"],"names":[],"mappings":"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"}
@@ -43,9 +43,13 @@ export declare class RelationContext {
43
43
  private readonly ops;
44
44
  private readonly db;
45
45
  private readonly hydrate?;
46
+ /** CROSS-DB (V0 R1): name → driver registry; a tagged relation routes to `connections[tag]`. */
47
+ private readonly connections?;
46
48
  /** Per-relation resolved batch (name → grouping), memoized: one batch query per relation. */
47
49
  private readonly resolved;
48
- constructor(siblings: Record<string, unknown>[], ops: Readonly<Record<string, RelationOp>>, db: RelationDriver, hydrate?: HydrateFactory<unknown>);
50
+ constructor(siblings: Record<string, unknown>[], ops: Readonly<Record<string, RelationOp>>, db: RelationDriver, hydrate?: HydrateFactory<unknown>, connections?: Readonly<Record<string, RelationDriver>>);
51
+ /** The driver a relation runs against: its tagged cross-DB connection, else the primary `db`. */
52
+ private driverFor;
49
53
  /**
50
54
  * Resolve `relationName` for `parent` (lazy access). The relation is batch-loaded across
51
55
  * ALL siblings on first access and memoized, so N sibling accesses issue ONE query. Returns
@@ -68,6 +72,13 @@ export interface ReadOptions<R = Record<string, unknown>> {
68
72
  readonly with?: Readonly<Record<string, true>>;
69
73
  /** Host-object factory applied AFTER relation resolution (not applied to `null`). */
70
74
  readonly hydrate?: HydrateFactory<R>;
75
+ /**
76
+ * CROSS-DB relations (V0 R1): connection-name → driver registry. A relation whose compiled op
77
+ * carries a `connection` tag (its target model lives in a DIFFERENT DB — v1
78
+ * `TargetClass.getDriverType()`) is batch-loaded against `connections[tag]` instead of the
79
+ * primary `db`. Untagged (same-DB) relations ignore this. Omit for a single-DB read.
80
+ */
81
+ readonly connections?: Readonly<Record<string, RelationDriver>>;
71
82
  }
72
83
  /**
73
84
  * Build the typed-object result set for a page of raw child rows plus the relation ops
@@ -1 +1 @@
1
- {"version":3,"file":"typed-object.d.ts","sourceRoot":"","sources":["../../src/scp/typed-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAGL,KAAK,UAAU,EAEf,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAA+C,CAAC;AAEtF,2EAA2E;AAC3E,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;IACnD,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAG3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EACzC,EAAE,EAAE,cAAc,EAClB,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC;IAQnC;;;;OAIG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAYxE;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAUD;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EACzC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM,GAC3B,CAAC,EAAE,CA6DL"}
1
+ {"version":3,"file":"typed-object.d.ts","sourceRoot":"","sources":["../../src/scp/typed-object.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAGL,KAAK,UAAU,EAEf,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,OAAO,MAA+C,CAAC;AAEtF,2EAA2E;AAC3E,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAEpE;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAuC;IAC3D,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAA0B;IACnD,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAA2C;IACxE,6FAA6F;IAC7F,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;gBAG3D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EACnC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EACzC,EAAE,EAAE,cAAc,EAClB,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,EACjC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IASxD,iGAAiG;IACjG,OAAO,CAAC,SAAS;IAIjB;;;;OAIG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO;CAYxE;AAeD,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,GAAG,SAAS,CAG3F;AAUD;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACtD;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC;CACjE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxD,OAAO,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAC3C,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EACzC,EAAE,EAAE,cAAc,EAClB,OAAO,GAAE,WAAW,CAAC,CAAC,CAAM,GAC3B,CAAC,EAAE,CA+DL"}
@@ -46,13 +46,20 @@ class RelationContext {
46
46
  ops;
47
47
  db;
48
48
  hydrate;
49
+ /** CROSS-DB (V0 R1): name → driver registry; a tagged relation routes to `connections[tag]`. */
50
+ connections;
49
51
  /** Per-relation resolved batch (name → grouping), memoized: one batch query per relation. */
50
52
  resolved = new Map();
51
- constructor(siblings, ops, db, hydrate) {
53
+ constructor(siblings, ops, db, hydrate, connections) {
52
54
  this.siblings = siblings;
53
55
  this.ops = ops;
54
56
  this.db = db;
55
57
  this.hydrate = hydrate;
58
+ this.connections = connections;
59
+ }
60
+ /** The driver a relation runs against: its tagged cross-DB connection, else the primary `db`. */
61
+ driverFor(op) {
62
+ return op.connection === undefined ? this.db : driverForOp(op, this.connections);
56
63
  }
57
64
  /**
58
65
  * Resolve `relationName` for `parent` (lazy access). The relation is batch-loaded across
@@ -66,13 +73,25 @@ class RelationContext {
66
73
  }
67
74
  let batch = this.resolved.get(relationName);
68
75
  if (batch === undefined) {
69
- batch = (0, relation_1.runRelationOp)(op, this.siblings, this.db).batch;
76
+ batch = (0, relation_1.runRelationOp)(op, this.siblings, this.driverFor(op)).batch;
70
77
  this.resolved.set(relationName, batch);
71
78
  }
72
79
  return applyHydrate((0, relation_1.distributeToParent)(op, parent, batch), this.hydrate);
73
80
  }
74
81
  }
75
82
  exports.RelationContext = RelationContext;
83
+ /**
84
+ * The driver a CROSS-DB relation op (V0 R1) runs against: the registered `connections[tag]`. Loud
85
+ * failure when the tag has no registered driver (a real wiring bug — never a silent same-DB
86
+ * fallback, which would run the target's query on the wrong DB). Only called for a tagged op.
87
+ */
88
+ function driverForOp(op, connections) {
89
+ const d = connections?.[op.connection];
90
+ if (d === undefined) {
91
+ throw new Error(`cross-DB relation '${op.name}': no driver registered for connection '${op.connection}' (pass it in ReadOptions.connections)`);
92
+ }
93
+ return d;
94
+ }
76
95
  /** Read the non-enumerable batch context off a typed-object (undefined if spread/cloned away). */
77
96
  function readRelationContext(o) {
78
97
  const v = o[exports.RELATION_CONTEXT];
@@ -136,7 +155,7 @@ function buildResultSet(rawRows, ops, db, options = {}) {
136
155
  return o;
137
156
  });
138
157
  // The shared lazy batch context (non-enumerable Symbol) — the whole page is the sibling set.
139
- const ctx = new RelationContext(rows, ops, db, hydrate);
158
+ const ctx = new RelationContext(rows, ops, db, hydrate, options.connections);
140
159
  for (const o of rows) {
141
160
  Object.defineProperty(o, exports.RELATION_CONTEXT, {
142
161
  value: ctx,
@@ -151,7 +170,9 @@ function buildResultSet(rawRows, ops, db, options = {}) {
151
170
  const op = ops[name];
152
171
  if (op === undefined)
153
172
  throw new Error(`declarative select: relation '${name}' is not declared on this model`);
154
- const { batch } = (0, relation_1.runRelationOp)(op, rows, db);
173
+ // CROSS-DB (V0 R1): a tagged relation batches against its own connection; else the primary db.
174
+ const relDb = op.connection === undefined ? db : driverForOp(op, options.connections);
175
+ const { batch } = (0, relation_1.runRelationOp)(op, rows, relDb);
155
176
  for (const o of rows) {
156
177
  o[name] = applyHydrate((0, relation_1.distributeToParent)(op, o, batch), hydrate);
157
178
  }
@@ -1 +1 @@
1
- {"version":3,"file":"typed-object.js","sourceRoot":"","sources":["../../src/scp/typed-object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typed-object.js","sourceRoot":"","sources":["../../src/scp/typed-object.ts"],"names":[],"mappings":"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"}
@@ -220,6 +220,57 @@ posts, _ := postQueries.Search(ctx, db, SearchInput{AuthorID: 7, Since: "2026-01
220
220
  - 論理モデル ↔ 物理配置(table/column/PK/index)はモデル定義が吸収(原案 contracts-architecture.md「モデル定義」)。
221
221
  - litedbmodel-gen は `schema.sql` から列定義を生成し、**マーカー内は再生成・手書き(リレーション/writes/SCP ブロック)は保持**。
222
222
 
223
+ ### 4.1 型システム(SQL 型ベース・SSoT)
224
+
225
+ litedbmodel は SQL バックエンド consumer なので、**列型は SQL 型を SoT とする**(TS の `number` は int/real を区別できないため型の権威にしない — v1 の TS-型ベース `@column`(`design:type=Number`)が INTEGER/REAL を潰していたのを是正)。型は `schema.sql`(DDL)から確定し、**typed codegen(bc typed-raw 脱box)の `outType` 注記**に使う。interpret 経路(動的 Value)では列型は不要だったため v2 は本節を欠いていた。typed codegen が SQL レベルの型精度を要求するため、ここで規定する。
226
+
227
+ **列型 → bc outType スカラ(正規対応表)**
228
+
229
+ | SQL 型 | litedbmodel 列型 | bc outType | 備考 |
230
+ |---|---|---|---|
231
+ | INTEGER / INT / BIGINT | `int` | `int` | int は既定 **64bit (i64)**。狭いサイズ制限はデコレータオプション(制約)で表現し、**別型にしない**(int と bigint を分けない) |
232
+ | REAL / FLOAT / DOUBLE | `real` | `float` | int と real は**明確に分離**(普通の処理系どおり) |
233
+ | DECIMAL / NUMERIC | `decimal` | `string` | 精度保持のため文字列表現 |
234
+ | TEXT / VARCHAR / CHAR / UUID | `text` | `string` | |
235
+ | BOOLEAN | `bool` | `bool` | |
236
+ | DATE / TIMESTAMP / DATETIME | `date` | `string` | **一旦 string**(オーナー決定)。bc の `date` scalar 新設(behavior-contracts#84)は将来の最適化として **defer**。litedbmodel 列型は `date` のまま(SQL/意味は保持)だが bc 表現は string。**TS のみ利便で `Date` へ de/serialize 可、他言語(Rust/Go/Py/PHP)は string 扱い**(JSON 列と同じ構図)。DB は行ごとに別 TZ を保存しない |
237
+ | JSON / JSONB | `json` | `string` | 表現は JSON テキスト=**文字列**。TS のみ利便で object に de/serialize。列ごとに typed obj へ構造化しない |
238
+
239
+ **構造型(クエリ由来。列型ではない)**
240
+ - 行 = 列の **`obj{列: 型…}`**。
241
+ - hasMany/list = **`arr<行obj>`**、belongsTo/hasOne = **`opt<行obj>`**、connection = `obj{items: arr<…>, cursor: opt<…>}`。
242
+ - **object と array は明確に別**(一括の「json」型にしない)。JSON 列(上表)とは無関係。
243
+
244
+ **3層(デコレータ型 ↔ SQL 型 ↔ bc outType)**
245
+
246
+ 型は3層で一意対応させる。デコレータが authoring 面で列型を宣言し、SQL 型(DDL)が物理 SoT、bc outType が codegen 面。
247
+
248
+ | litedbmodel 列型 | デコレータ | SQL 型 | bc outType |
249
+ |---|---|---|---|
250
+ | int | `@column.int()` | INTEGER/INT/BIGINT | `int` |
251
+ | real | `@column.real()` | REAL/FLOAT/DOUBLE | `float` |
252
+ | decimal | `@column.decimal()` | DECIMAL/NUMERIC | `string` |
253
+ | text | `@column.text()`(既定)| TEXT/VARCHAR/CHAR/UUID | `string` |
254
+ | bool | `@column.boolean()` | BOOLEAN | `bool` |
255
+ | date | `@column.date()`/`.datetime()` | DATE/TIMESTAMP/DATETIME | `string`(一旦。bc date 型は #84 defer)|
256
+ | json | `@column.json()` | JSON/JSONB | `string`(TS のみ object)|
257
+
258
+ **デコレータ API 変更(v1 → v2 破壊的)**
259
+ - **`@column.int()` / `@column.real()` を新設**。int は既定 **64bit(i64)**、狭いサイズ制限は `@column.int({ bits: 32 })` 等の**オプション制約**で表現(別型にしない)。
260
+ - **`@column.bigint()` は廃止**(int が i64 なので冗長 → int に統合)。
261
+ - **無印 `@column()`(`design:type=Number` 依存で int/real 曖昧)は禁止**。数値列は `.int()`/`.real()` を明示必須(未指定=error、no-assume)。他の型(string/bool/date/json)は design:type から一意なので従来どおり推論可。
262
+ - object と array は別(json 列=string。行/リレーション構造の obj/arr とは無関係)。
263
+
264
+ **規律**
265
+ - 型が曖昧/未指定なら **error(no-assume・no-fallback)**。
266
+ - SoT は `schema.sql` の SQL 型。`@column.*` は列型を宣言(gen は schema.sql → デコレータ型を生成)、converter(`src/scp/coltype.ts`)が上表で bc outType 記法へ**一意**変換する。
267
+
268
+ **脱box は READ と WRITE の両方を覆う(§9 codegen 面)**
269
+ - **READ**: SELECT projection を行 obj 型に型付け(`src/scp/makesql/outtype.ts`)→ bc typed-raw が具体的な行 struct を materialize。
270
+ - **WRITE**: 書き込み出力=`TransactionResult` の typed shape(`src/scp/makesql/writeouttype.ts`):
271
+ `obj{ committed:bool, executed:arr<string>, shortCircuit:opt<obj{statementId:string, reason:string}>, entity:opt<ROW>, returnedRows:opt<arr<arr<ROW>>> }`。
272
+ `entity`/`returnedRows` の行(ROW)は、書き込み対象テーブル(tx plan の `body` statement の SQL から構造的に抽出)とその RETURNING 列を、**READ と同一の列型 resolver(本節の SoT)** で型付けする。脱box できない write shape(未知テーブル/列、`RETURNING *`、batch 群でテーブル/RETURNING が不一致 等)は **error(no-assume・no-fallback)** — 決してボックス化へ退避しない。READ の surrogate IR と同様、write bundle の `makeSqlComponentIR` の単一 node `outType` + component `outputType` に注記して bc typed-raw に渡す。
273
+
223
274
  ## 5. Relation — Read 系
224
275
 
225
276
  - Relation は SQL JOIN を**既定にしない**。graphddb / v1 LazyRelation と同型の **staged batch query-composition + object assembly**(feasibility §5・§9)。
@@ -0,0 +1,157 @@
1
+ # V0 — litedbmodel v2 completeness coverage matrix
2
+
3
+ > Step 1 of `v2-completeness-plan.md` §5. The definitive op × dialect × {byte-match?, live-exec on PG+MySQL?}
4
+ > matrix for the whole read+write makeSQL surface, plus the confirmed/adjusted R1–R8 gap list against reality.
5
+ >
6
+ > Definitions (plan §1/§3):
7
+ > - **byte** = a `makesql-golden.test.ts` assert that the compiled makeSQL reproduces the v1 builder's direct
8
+ > output byte-for-byte, on every dialect where the dialect text differs. `(P/M/S)` = postgres/mysql/sqlite.
9
+ > - **live** = the op is exercised on real dockerized PG **and** MySQL through the `conformance/vectors-livedb`
10
+ > corpus (all 5 language runtimes replay the same bundle). SQLite is the in-proc reference.
11
+ > - **done** = byte (all differing dialects) **AND** live (PG+MySQL). Byte-only / PG-only / SQLite-mock-only ≠ done.
12
+
13
+ ## Reachability model (the load-bearing V0 finding)
14
+
15
+ There are TWO distinct compile entry points, and they do **not** cover the same construct set:
16
+
17
+ 1. **`compileWhere` / `compileSelect` / `compile*` (direct v1-parity functions)** — take a v1-shaped
18
+ `ConditionObject` / `SelectDesc` and reproduce the v1 builder byte-for-byte. `makesql-golden.test.ts` drives
19
+ these directly (hand-building `DBSubquery`/`DBExists`/`dbCast`/`__raw__`/`SelectDesc.join|cte|append`). This
20
+ is where BYTE coverage lives.
21
+
22
+ 2. **The authoring→bundle path (`L.Select(...)` → `compileBundle` → `compileSelectNode`)** — the ONLY path that
23
+ produces a live-executable bundle the language runtimes replay. Its WHERE comes from the bc closed-set
24
+ fragment IR (`whereEq/whereNe/whereLt/whereLe/whereGt/whereGe/whereIsNull/whereIn` — `authoring-sql.ts`), and
25
+ `compileSelectNode` wires only the `SELECT_PORTS` catalog surface: `table, select, where, order, limit,
26
+ offset, group` (`catalog.ts` `SELECT_PORTS`). This is where LIVE coverage lives.
27
+
28
+ **Consequence:** a construct is live-reachable only if it can be expressed through the fixed §2 authoring surface
29
+ (the bc where-primitives + the `SELECT_PORTS`). Constructs that exist ONLY in the v1 `DBConditions`/`DBValues`
30
+ layer or in `SelectDesc` fields with no catalog port are byte-provable but **cannot be placed in a live bundle**
31
+ without adding a new authoring primitive / catalog port — a §2 interface change (invariant #2 → escalate, do not
32
+ hand-roll).
33
+
34
+ ## Matrix — READ surface
35
+
36
+ | Op / construct | byte (v1) | live PG+MySQL | Reachable via §2 authoring? | Status |
37
+ |---|---|---|---|---|
38
+ | Select head `SELECT <cols> FROM <t>` | ✅ P/M/S | ✅ (Feed/Posts/ByIds…) | yes | **done** |
39
+ | WHERE eq / ne / lt / le / gt / ge | ✅ P/M/S | ✅ (Feed whereEq/whereGe; when/ne SKIP) | yes (`whereEq`…) | **done** |
40
+ | WHERE IS NULL / IS NOT NULL | ✅ P/M/S | ⚠️ IS NULL via `whereIsNull` reachable; not in a live vector | partial (isNull yes; NOT NULL = `dbNotNull`, not authorable) | byte done; live gap is cosmetic (eq-null path already live via SKIP) |
41
+ | IN-list (single col, non-empty) | ✅ P/M/S (M/S = JSON deviation) | ✅ (ByIds/ByUuids/ByBig/ByTxt/ByFlag/ByTs/ByAmt) | yes (`whereIn`+`inColumn`) | **done** |
42
+ | IN-list empty → `1 = 0` | ✅ P/M/S | ✅ (ByIds empty) | yes | **done** |
43
+ | COUNT(*) [+ WHERE] | ✅ P/M/S | ✅ (CountAll/CountByAuthor/empty) | yes (`L.Count`) | **done** |
44
+ | GROUP BY | ✅ P/M/S (SELECT-tail golden) | ✅ (GroupByAuthor) | yes (`group` port) | **done** |
45
+ | ORDER BY / LIMIT / OFFSET | ✅ P/M/S | ✅ (Feed order/limit) | yes | **done** |
46
+ | FOR UPDATE | ✅ P/M/S (SELECT-tail + §D authored) | ✅ (ForUpdate, PG+MySQL) | yes (`forUpdate` port added) | **done (R3)** |
47
+ | BETWEEN | ✅ P/M/S (custom-op + §D authored) | ✅ (IdBetween) | yes (`whereBetween` added) | **done (R3)** |
48
+ | LIKE | ✅ P/M/S (custom-op + §D authored) | ✅ (TitleLike) | yes (`whereLike` added) | **done (R3)** |
49
+ | ILIKE | ✅ P/M/S (§D authored) | PG-only construct (see note) | yes (`whereILike` added) | byte done; live = PG-only (v1 `ILIKE` keyword errors on MySQL/SQLite — reproducing it live there = a v1 error, not a gap) |
50
+ | tuple / composite IN (`__tuple__`) | ✅ P/M/S (§D authored) | ✅ (TupleIn) | yes (`whereTupleIn`, literal tuples) | **done (R3)** |
51
+ | dbCast `::type` (dialect-gated) | ✅ P/M/S (§D authored) | ✅ (DocByCast: `::uuid` PG / no-cast MySQL·SQLite) | yes (`whereCast` added) | **done (R3)** |
52
+ | dbDynamic `fn(?)` | ✅ P/M/S (§D authored) | portable-fn only (see note) | yes (`whereDynamic` added) | byte done; live for a PORTABLE fn is addable; the byte exemplar `to_tsvector` is PG-only (a v1 PG construct, not a gap) |
53
+ | dbImmediate (inline SQL, no bind) | ✅ P/M/S (§D authored) | ✅ (ImmediateEq: `author_id = 7`) | yes (`whereImmediate` added) | **done (R3)** |
54
+ | IN(subquery) single key | ✅ P/M/S (§D authored) | ✅ (InSubquery) | yes (`whereInSubquery`, nested Fragment) | **done (R2)** |
55
+ | NOT IN(subquery) | ✅ P/M/S (§D authored) | ✅ (NotInSubquery) | yes (`whereInSubquery(…, true)`) | **done (R2)** |
56
+ | composite (a,b) IN(subquery) | ✅ P (byte, existing) | authorable via nested Fragment `sql` | yes (`whereInSubquery` w/ composite lhs+sql) | byte done; live addable (same nested-Fragment path) |
57
+ | EXISTS / NOT EXISTS (correlated) | ✅ P/M/S (§D authored) | ✅ (ExistsComment / NotExistsComment) | yes (`whereExists`, nested Fragment) | **done (R2)** |
58
+ | `= ANY(?::type[])` scalar-array (PG) | ✅ P (raw) | ✅ (relation batches = ANY($1::int[])) | via relation compile | **done** (as relation batch) |
59
+ | CTE / WITH | ✅ P/M/S (§D authored) | ✅ (CteLive) | yes (`cte`/`cteParams` ports added) | **done (R4)** |
60
+ | JOIN | ✅ P/M/S (§D authored) | ✅ (JoinAuthor) | yes (`join`/`joinParams` ports added) | **done (R5)** |
61
+ | append / HAVING | ✅ P/M/S (§D authored) | ✅ (HavingAuthor) | yes (`append` port added) | **done (R6)** |
62
+ | findByPkeys / findById (`compileFindByPkeys`) | n/a (dead) | n/a | DELETED (redundant) | **done (R7 — dead SCP export removed; v1 `buildFindByPkeys` kept)** |
63
+ | FIND_FILTER (per-model soft filter) | ✅ = authored WHERE (no-op proof) | ✅ via authored WHERE | folded into WHERE upstream | **done (R8 — evidence: merged filter == authored WHERE, byte+live done)** |
64
+
65
+ ## Matrix — RELATIONS
66
+
67
+ | Relation shape | byte (v1 LazyRelation) | live PG+MySQL | Status |
68
+ |---|---|---|---|
69
+ | single-key belongsTo unlimited | ✅ P/M/S | ✅ (Posts author) | **done** |
70
+ | single-key hasMany unlimited (+order+where) | ✅ P/M/S | ✅ (Posts comments) | **done** |
71
+ | single-key hasMany + per-parent LIMIT (LATERAL / ROW_NUMBER) | ✅ P/M/S | ✅ (Posts tags limit=2; Feed) | **done** |
72
+ | composite-key hasMany unlimited | ✅ P/M/S | ✅ (Docs revisions) | **done** |
73
+ | composite-key hasMany + LIMIT (STATIC LATERAL / ROW_NUMBER) | ✅ P/M/S (byte + negative; PG byte-identical to v1 LATERAL, M/S sanctioned static JSON-predicate deviation) | ✅ (Docs latestRev limit=1 — livedb vector + TS ScpDialect PG+MySQL) all 5 runtimes | **done (#47 last gap)** |
74
+ | composite-key belongsTo | ✅ (composite unnest) | ✅ (Docs owner) | **done** |
75
+ | composite STATIC unnest form (PG) | ✅ P (byte + negative) | ✅ | **done** |
76
+ | composite STATIC limited form (`compileCompositeKeyStaticLimited`) | ✅ P (byte-identical to v1) / M/S (window byte-identical, JSON key-set predicate) + negative | ✅ all 5 runtimes | **done** |
77
+ | **cross-DB relations (target driver/connection)** | ✅ (SQL = target's dialect, byte-identical) | ✅ ALL 5 runtimes — TS two-DB (SQLite×2); py/php/go/rust live PG↔MySQL cross-DB vector | **done (R1 — per-statement `connection` tag + per-runtime routing; live cross-DB run across all 5 runtimes)** |
78
+
79
+ ## Matrix — WRITE surface
80
+
81
+ | Op | byte (v1) | live PG+MySQL | Status |
82
+ |---|---|---|---|
83
+ | INSERT single | ✅ P/M/S (M/S JSON deviation) | ✅ (tx Create) | **done** |
84
+ | createMany homogeneous | ✅ P/M/S | ✅ | **done** |
85
+ | createMany heterogeneous (column-set groups) | ✅ P/M/S | ✅ | **done** |
86
+ | createMany DBToken(NOW()) → v1 fallback | ✅ M/S (byte-pinned) | ✅ (dbRaw NOW()) | **done** |
87
+ | upsert ON CONFLICT DO UPDATE / IGNORE | ✅ P/M/S | ✅ (tx idempotency/unique ON CONFLICT/IGNORE) | **done** |
88
+ | updateMany (per-row) | ✅ P/M/S | ✅ | **done** |
89
+ | **deleteMany (single + composite PK)** | ✅ P/M/S **(ADDED in V0)** | ✅ (deleteMany {1,3}) | **done (this increment)** |
90
+ | single UPDATE (+per-col PG cast) | ✅ P/M/S | ✅ (bare UPDATE) | **done** |
91
+ | single DELETE (IN-list) | ✅ P/M/S | ✅ (bare DELETE) | **done** |
92
+ | RETURNING forms (bare / t.col / table.col / MySQL none) | ✅ P/M/S | ✅ (across tx) | **done** |
93
+ | DELETE…RETURNING (MySQL emul → []) | ✅ | ✅ (per-dialect vector) | **done** |
94
+ | INSERT RETURNING uuid-PK / composite-PK (MySQL re-select) | ✅ | ✅ | **done** |
95
+ | tx gate spine (requires/idempotency/unique/derive/emits) | ✅ (mock corpus) | ✅ (commit + ROLLBACK) | **done** |
96
+ | tx edge (m2m link + fk claim) | ✅ | ✅ | **done** |
97
+ | tx composite multi-write DAG | ✅ | ✅ | **done** |
98
+
99
+ ## Confirmed/adjusted gap list (R1–R8)
100
+
101
+ The plan assumed R2/R3 were "byte-only, live-zero" additive-only fills. V0 confirmed the byte side but found the
102
+ LIVE side was **blocked by the fixed §2 authoring surface**. Per plan §2 補足 the surface was then extended
103
+ ADDITIVELY (new where-primitives + new `SELECT_PORTS` ports — no signature change, no new bundle kind, SQL still
104
+ v1-sourced), closing R2/R3-remainder/R4/R5/R6 to byte+live. R1's bundle-shape tag landed additively; its
105
+ per-language LIVE cross-DB run is the one escalation.
106
+
107
+ | Item | Final state | How |
108
+ |---|---|---|
109
+ | **R1** cross-DB relations | **done (byte + live, all 5 runtimes)** | `RelationDecl.connection?`/`RelationOp.connection?` (additive, untagged = byte-unchanged); the relation SQL compiles for the TARGET model's own `dialect` (byte-identical to v1). Each runtime's read path (`read_bundle`/`ReadBundle`/`readBundle`/`read_bundle_pooled`) takes a connection REGISTRY and routes a tagged relation to `registry[tag]` (untagged → primary; loud-fail on a missing tag). Live: a `kind:'crossdb'` corpus vector runs the parent on connection A and the tagged `author` batch on connection B — pg leg parent=PG + author→MySQL, mysql leg parent=MySQL + author→PG (the parent table lives ONLY on A, the target ONLY on B, so a mis-route fails loudly ⇒ a green hydrate is unforgeable). TS reference = two separate SQLite DBs (`cross-db-relation.test.ts`). |
110
+ | **R2** subquery / EXISTS / NOT IN / NOT EXISTS | **done (byte + live PG+MySQL)** | `whereInSubquery`(+NOT) / `whereExists`(+NOT) — subquery as a nested makeSQL Fragment in the param slot. Live: InSubquery/NotInSubquery/ExistsComment/NotExistsComment. |
111
+ | **R3** GROUP BY / FOR UPDATE / BETWEEN / LIKE / tuple-IN / dbCast / dbImmediate | **done (byte + live)** | `group` (already) + new `forUpdate` port + `whereBetween`/`whereLike`/`whereTupleIn`/`whereCast`/`whereImmediate`. Live: GroupByAuthor/ForUpdate/IdBetween/TitleLike/TupleIn/DocByCast/ImmediateEq. ILIKE + dbDynamic(to_tsvector) are byte-done + PG-only-by-nature (see notes in the READ matrix — not live gaps). |
112
+ | **R4** CTE / WITH | **done (byte + live)** | `cte`/`cteParams` ports added; `compileSelect` WITH-wrap is v1-sourced. Live: CteLive. |
113
+ | **R5** JOIN | **done (byte + live)** | `join`/`joinParams` ports added; `compileSelect` JOIN position is v1-sourced. Live: JoinAuthor. |
114
+ | **R6** append / HAVING | **done (byte + live)** | `append` port added (raw trailing clause). Live: HavingAuthor. |
115
+ | **R7** findById/findByPkeys | **done — DELETED** | `compileFindByPkeys` + `FindByPkeysOptions` import + 2 re-exports removed (dead SCP export, redundant with live IN-list/composite-relation reads). v1 `buildFindByPkeys` kept (DBModel.findById). |
116
+ | **R8** FIND_FILTER | **done — no-op with evidence (variant b)** | v1 merges FIND_FILTER into the WHERE `DBConditions` BEFORE compiling (`DBModel.ts:596-604`/`:858-866`); the SCP compile reimplements the WHERE text from explicit `conditions` and never reads FIND_FILTER. `find-filter-noop.test.ts` proves (3 dialects) the merged filter == the authored WHERE byte-for-byte — folded upstream, a genuine no-op for makeSQL. |
117
+
118
+ ### R1 — per-language LIVE cross-DB relation run (LANDED)
119
+
120
+ The escalated 5-runtime change was approved and landed as thin, SQL-independent routing plumbing (no SQL
121
+ touched — the relation SQL is v1-identical, compiled for whichever dialect its target DB speaks):
122
+
123
+ 1. **Corpus mode.** A `kind:'crossdb'` read vector (`conformance/gen-livedb.ts`) whose parent `posts` read runs
124
+ on the leg's PRIMARY DB and whose tagged `author` belongsTo runs on the SECONDARY (OTHER) live DB. Per leg
125
+ the tagged relation op is compiled for the SECONDARY dialect: pg leg parent=PG + author→MySQL-dialect batch
126
+ (routed to `my`); mysql leg parent=MySQL + author→PG-dialect batch (routed to `pg`). The parent table lives
127
+ ONLY on the primary and the target `users` table ONLY on the secondary, so a mis-route hits a MISSING table
128
+ (loud error) — a green hydrate is unforgeable proof the tag routed the batch to connection B. The reference
129
+ is captured on two separate SQLite DBs via the TS `buildResultSet` two-DB path (byte-true, in-generator).
130
+ 2. **Per-runtime routing.** Each runtime's read entry point now takes a connection REGISTRY (name→driver) and
131
+ routes a tagged relation to `registry[op.connection]`, untagged → primary, loud-fail on a missing tag:
132
+ TS `buildResultSet`/`readBundle` (`connections`), Python `read_bundle(…, connections)`, Go
133
+ `ReadBundle(…, connections map[string]SQLDB)`, Rust `read_bundle_pooled(…, connections)`, PHP
134
+ `Relation::readBundle(…, $connections)`. Each `livedb_runner` opens BOTH pools in `main()` already; the
135
+ crossdb leg resets the secondary DB with the vector's `secondarySchema*` and passes `{tag: otherDriver}`.
136
+
137
+ **Result:** `conformance:livedb` green on all 4 non-TS runtimes at 53/53 pg + 53/53 mysql INCLUDING the crossdb
138
+ vector on BOTH legs; TS two-DB reference green (`test/scp/cross-db-relation.test.ts`). Untagged relations are
139
+ byte- and behaviour-unchanged (the field is optional/additive; existing 52 relation+exec+tx vectors still
140
+ green). eager path unchanged.
141
+
142
+ ## Net V0 outcome (final)
143
+
144
+ - **Done byte + live (PG+MySQL, all 5 runtimes):** GROUP BY, FOR UPDATE, BETWEEN, LIKE, tuple-IN, dbCast
145
+ (dialect-gated), dbImmediate, IN/NOT-IN subquery, EXISTS/NOT EXISTS, CTE, JOIN, append/HAVING — via the
146
+ additive where-primitives + `SELECT_PORTS` ports (plan §2 補足), every construct's SQL still v1-sourced.
147
+ Golden 139→176 (+37 authored-path byte-asserts, incl. a golden-from-originals negative). livedb 39→52 vectors
148
+ (all 4 language legs 52/52 pg + 52/52 mysql).
149
+ - **R1:** DONE. Per-statement `connection` tag + per-runtime connection-registry routing across ALL 5 runtimes;
150
+ a `kind:'crossdb'` live vector runs the parent on connection A and the tagged relation on connection B — green
151
+ on live PG↔MySQL in py/php/go/rust (53/53 both legs) + the TS two-DB reference. SQL v1-identical; untagged
152
+ relations byte/behaviour-unchanged; eager path unchanged.
153
+ - **R7:** dead `compileFindByPkeys` deleted (v1 `buildFindByPkeys` retained).
154
+ - **R8:** FIND_FILTER proven a makeSQL no-op (variant b) with a 3-dialect byte test — not a waive.
155
+ - **Byte-only-by-nature (not gaps):** ILIKE (v1 `ILIKE` keyword is PG-only; errors on MySQL/SQLite) and
156
+ dbDynamic with a PG-only function (`to_tsvector`) — the AUTHORING primitives are added and byte-proven; a
157
+ portable-function dbDynamic is live-reachable through the same primitive.
@@ -0,0 +1,90 @@
1
+ # litedbmodel v2 completeness — 実行計画(全サブエージェントの SSoT)
2
+
3
+ > 唯一の正典。全サブエージェントはこのファイルを渡され従う。個別プロンプトで「雰囲気」の指示を出さない。
4
+ > (このファイルは別エージェント監査でIF誤り・欠落 op・live 盲点を是正済み。)
5
+
6
+ ## 0. モデル
7
+
8
+ ```
9
+ DSL contract
10
+ → compile(TS のみ。v1 builder を駆動して最適化 SQL を生成)
11
+ → 可搬 makeSQL bundle(SQL文字 + params + skip。純JSON。方言別)
12
+ → bc(全5言語 published)が bundle を汎用実行(runBehavior/runPlan)
13
+ → 各言語 runtime は bundle を replay するだけ(SQL を生成しない)
14
+ ```
15
+
16
+ - **最適化 SQL は TS で1回だけ作る**(v1 builder から verbatim コピー)。
17
+ - **多言語展開は bc の共通処理**。言語ごとに SQL/ロジックを作り直さない。
18
+ - **言語別 runtime = SQL 非依存の薄い plumbing だけ**。必要に応じてのみ。
19
+
20
+ ## 1. タスクは足し算。掛け算のチェックは自動試験だけ。
21
+
22
+ - **作業は足し算**: 「op を1つ追加」= TS で SQL を1回作る(v1 コピー)+ bundle/catalog に載せる = 1タスク。方言・言語の掛け算タスクは存在しない。
23
+ - **掛け算(op × 方言 × 言語)は自動試験が回す**:
24
+ - `test/scp/makesql-golden.test.ts` — compile 出力 SQL を **v1 builder の直接出力に byte 一致** assert(`DBConditions.compile`/`LazyRelationContext`/`*SqlBuilder`/実 `DBModel._insert` capture を直接呼ぶ)。SQL 正しさの正典ゲート。
25
+ - `conformance/vectors/*.json` + drift gate。
26
+ - `conformance/vectors-livedb/livedb.json` — 実 PG+MySQL+SQLite 実行で結果一致(`::text[]` 級を捕まえる)。
27
+ - cross-lang agreement — 全5言語が同一 bundle を同一 replay。
28
+ - **各 op は「byte-match 試験(全方言)」と「live 実行(PG+MySQL)」の両方**を満たして初めて done。byte だけ/PG だけ/SQLite mock だけ は不可(不変条件#3)。
29
+
30
+ ## 2. モジュール IF(固定。逸脱禁止。拡張は「ケース追加」であって署名変更ではない)
31
+
32
+ - `src/scp/makesql/compile-crud.ts`: `builderFor` / `compileInsert` / `compileInsertMany` / `compileUpdateSingle` / `compileUpdateMany` / `compileDelete` / `compileDeleteMany` / `compileFindByPkeys`(+ `*BuildOptions`)。`(dialect, options) → MakeSQL|MakeSQL[]`、SQL は v1 builder 由来。
33
+ - `src/scp/makesql/compile-relation.ts`: `compileSingleKeyUnlimited` / `compileSingleKeyLimited` / `compileCompositeKeyStaticUnlimited` / `compileCompositeKeyUnlimited` / `compileCompositeKeyLimited` / `inferPgArrayType` / `resolvePgArrayCast` / `PG_ARRAY_CAST_TOKEN` / `RelationCompileBase`。
34
+ - `src/scp/relation.ts`: `RelationOp` / `RelationDecl` / `compileRelationOp`(compile 入口)/ `runRelationOp` / `distributeToParent`(single+composite 対応済)。
35
+ - `src/scp/makesql/compile-select.ts`: `compileSelect` / `SelectDesc`(head/GROUP BY/ORDER BY/LIMIT/OFFSET/FOR UPDATE/join/cte/append/HAVING を担う)。
36
+ - `src/scp/makesql/tx.ts`: `TxOp`/`TxStatement`/`TransactionPlan`/`GateRule`/`StatementRole`/`compileWriteNode`/`deriveTransactionPlan`/`deriveBatchPlan`/`executeTransaction`/`renderTxStatement`/`mysqlPkHint`/`stripMysqlPkHint`/`literalize`。
37
+ - `src/scp/catalog.ts`: `CatalogName = Select | Count | Insert | Update | Delete | Fragment | Tx`、`LITEDBMODEL_CATALOG`。(**relations は catalog entry でなく `compileRelationOp`。makeSQL は bundle 成果物で catalog 名ではない。**)
38
+ - `src/scp/makesql/static-bundle.ts`: `compileStaticBundle` / `compileReadGraph` / `compileSelectNode` / `executeReadGraph` / `executeReadGraphAsync` / `executeStaticBundle` / `executeStaticWrite` / `renderReadPrimary`。
39
+ - **bundle JSON shape**: `{ readGraph, statementsById, relations, transaction, optionalHeads }`(方言別)。新「kind」を勝手に増やさない(増やすならエスカレーション)。
40
+ - **runtime handler seam**(全言語): bundle replay のみ。SQL 生成禁止。言語差は param bind のみ。
41
+
42
+ ### §2 補足(監査 + V0 で判明・確定)
43
+ compile 入口は2つ: **byte 経路**(`compileWhere/compileSelect`、多構文が v1 一致検証可)と **live 経路**(`L.Select→compileBundle→compileSelectNode`、replay 可能 bundle を生む唯一路。WHERE=bc closed-set、SELECT=`SELECT_PORTS`)。**構文を live 到達可能にするには authoring 面を拡張する** — これは「足し算」として**承認済み**(署名を壊さず口/primitive を追加する。逸脱ではない):
44
+ - **where-primitive 追加**(`authoring-sql.ts`): `whereExists`/`whereInSubquery`(+NOT)/`whereBetween`/`whereLike`(ILIKE)/`whereTupleIn`/raw-cast 等。subquery は「param slot の入れ子 makeSQL/Fragment」として符号化(`src/scp/index.ts` header の想定通り)。
45
+ - **`SELECT_PORTS` 口追加**(`catalog.ts` + `compileSelectNode` 配線): `forUpdate`/`cte`/`join`/`joinParams`/`append`(`SelectDesc` に既にフィールドあり、SQL は v1 `_buildSelectSQL` 由来)。
46
+ - **bundle shape 追加**(R1): relation statement に per-statement の dialect/connection タグ。
47
+
48
+ ## 3. 不変条件(非交渉)
49
+
50
+ 1. SQL は v1 原本 verbatim コピー(golden-from-originals)。手書き・再発明禁止。
51
+ 2. bc プリミティブで表現。できない構造は hand-roll せず**エスカレーション**。
52
+ 3. **live-DB ゲート必須(実 PG+MySQL+SQLite)。byte 一致だけ・PG だけ・SQLite mock だけ は不可。**
53
+ 4. 検証は bundle レベル(§1 試験群)。言語ごとに SQL 再実装・再検証しない。
54
+ 5. 中途半端禁止(byte 全方言 + live 実行で初めて done)。
55
+ 6. eager 経路無改変。
56
+ 7. ゴミなし。
57
+
58
+ ## 4. 作業項目(足し算リスト)と状態
59
+
60
+ ### DONE(commit 済・現行スイート全 green: golden 135/135・conformance 5×36/36・livedb 76/76・ScpDialect 35/35)
61
+ - Write: createMany/updateMany(golden byte-assert 済); deleteMany(**live-assert のみ**=ScpDialect+livedb corpus。golden byte-assert は V0 で追加); tx variants(idempotency/unique/edge/composite-DAG); MySQL RETURNING 実 PK 基準。
62
+ - Read: `count()`(golden §B COUNT); composite-key relation(golden §C); PG 配列全型 live; hand-roll 除去(golden §B); relations belongsTo/hasOne/hasMany/hasMany-limit(golden §C, live)。
63
+
64
+ ### REMAINING(足し算。各 = TS で v1 SQL 1回 + byte-assert 追加 + live vector 追加)
65
+ - **V0. coverage matrix(最初)**: 全 op × 全方言について `{byte-match?, live-exec on PG+MySQL?}` の網羅マトリクスを作り、欠けを列挙。これが以降の確定スコープ。byte だけ/PG だけ/SQLite だけ を全て gap 認定。
66
+ - **R1. cross-DB relations**: v1 は relation を target の driver/接続で実行(`LazyRelation.ts:236`)。**bundle-shape を先に確定**: 「per-statement に dialect/connection タグを付す」方式を採る(bundle 分割でなく relation statement に接続タグ)。SQL は TS で1回 v1 由来、言語側は接続ルーティング(SQL 非依存 plumbing)。
67
+ - **R2. subquery / EXISTS / NOT EXISTS / NOT IN(subquery) / composite IN(subquery)**: 現状 PG byte のみ・live ゼロ。MySQL+SQLite の byte-assert 追加 + PG+MySQL live 実行。
68
+ - **R3. GROUP BY / FOR UPDATE / BETWEEN / ILIKE / tuple-IN / dbCast / dbDynamic / dbImmediate**: render byte はあるが live 未実行。PG+MySQL live 実行を追加。
69
+ - **R4. CTE / query-based model reads**(`withQuery`/`cte` port, `_buildSelectSQL` WITH ラップ): byte+live 追加。
70
+ - **R5. JOIN(`join`/`joinParams`)**: byte+live 追加。
71
+ - **R6. append / HAVING**: byte+live 追加。
72
+ - **R7.(決定済)** `compileFindByPkeys` は dead SCP export → **削除**(+ 2 re-export)。single-key は `whereIn`+`inColumn` IN-list、composite は composite relation batch で live 済=機能重複。v1 `buildFindByPkeys` は `DBModel.findById` が使うので残す。
73
+ - **R8. FIND_FILTER(モデル毎グローバル soft filter, `DBModel.ts:597/859`)**: **silent waive 禁止**(filtered モデルで soft-delete/tenant scope が漏れる correctness 影響)。v1 の適用点を特定し、(a) SCP compile 経路で auto-適用して v1 再現、または (b) SCP contract の上流で既に WHERE に畳まれている(=makeSQL では no-op)ことを**証拠付きで**確定。どちらかを実証してから done。
74
+ - **V1. comprehensive 監査**(別エージェント): 全 op が byte(全方言)+ live(PG+MySQL)green、golden-from-originals negative test、hand-roll 残存ゼロ、cross-lang 一致、ゴミなし。
75
+ - **D1. bc 依存 → 最新 0.2.3**(0.2.2 でない): TS `^0.2.0`→`^0.2.3`、go/rust/python `0.2.0`→`0.2.3`、PHP は vendored 再取り込み。conformance green 維持。最終ベンチ前必須。
76
+ - **REL. release**: `fix43-sql-parity` → main PR/merge、**2.0.0 → 2.0.1**、npm/PyPI/crates/go publish(承認済・都度確認不要)。
77
+ - **BENCH(#44)**: cross-lang 実行サーフェス(sql/codegen/ir/dynamic/prepared)+ v1 比較(TS 1.2.10・可能なら旧 .rs)。graphddb#307 同型。完走。
78
+
79
+ ## 5. 実行順序
80
+
81
+ 1. **V0**: coverage matrix 作成(byte × live × 全方言 × 全 op)。確定スコープを出す。
82
+ 2. **R1–R8**: matrix の欠けを足し算で埋める(各 TS 1回 + byte-assert + live vector)。
83
+ 3. **V1**: comprehensive 監査(FAIL→修正→再監査)。
84
+ 4. **D1**: bc 0.2.3。
85
+ 5. **REL**: 2.0.1。
86
+ 6. **BENCH**: #44 完走。
87
+
88
+ ## 6. サブエージェント運用
89
+
90
+ 各エージェントに本ファイルを渡す。担当は「§4 の項目 X を足す」だけ指定。**§2 の IF に適合・§1 の試験に byte-assert と live vector を足す・bundle レベル検証・hand-roll せずエスカレーション・green 増分 commit・ゴミなし。**