orez 0.4.73 → 0.5.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 (73) hide show
  1. package/README.md +42 -1
  2. package/dist/cf-do/cdc.d.ts +148 -0
  3. package/dist/cf-do/cdc.d.ts.map +1 -0
  4. package/dist/cf-do/cdc.js +719 -0
  5. package/dist/cf-do/cdc.js.map +1 -0
  6. package/dist/cf-do/row-undo.d.ts +36 -0
  7. package/dist/cf-do/row-undo.d.ts.map +1 -0
  8. package/dist/cf-do/row-undo.js +209 -0
  9. package/dist/cf-do/row-undo.js.map +1 -0
  10. package/dist/cf-do/tx-journal.d.ts +32 -10
  11. package/dist/cf-do/tx-journal.d.ts.map +1 -1
  12. package/dist/cf-do/tx-journal.js +148 -31
  13. package/dist/cf-do/tx-journal.js.map +1 -1
  14. package/dist/cf-do/watermark.d.ts +7 -0
  15. package/dist/cf-do/watermark.d.ts.map +1 -1
  16. package/dist/cf-do/watermark.js +9 -0
  17. package/dist/cf-do/watermark.js.map +1 -1
  18. package/dist/cf-do/worker.d.ts +19 -1
  19. package/dist/cf-do/worker.d.ts.map +1 -1
  20. package/dist/cf-do/worker.js +218 -46
  21. package/dist/cf-do/worker.js.map +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +1 -0
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts +35 -1
  26. package/dist/config.d.ts.map +1 -1
  27. package/dist/config.js +1 -0
  28. package/dist/config.js.map +1 -1
  29. package/dist/do-sql-tracking.d.ts +2 -0
  30. package/dist/do-sql-tracking.d.ts.map +1 -1
  31. package/dist/do-sql-tracking.js +11 -1
  32. package/dist/do-sql-tracking.js.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +146 -40
  36. package/dist/index.js.map +1 -1
  37. package/dist/pg-proxy-do-backend.d.ts +8 -0
  38. package/dist/pg-proxy-do-backend.d.ts.map +1 -1
  39. package/dist/pg-proxy-do-backend.js +301 -47
  40. package/dist/pg-proxy-do-backend.js.map +1 -1
  41. package/dist/pg-proxy.d.ts +22 -1
  42. package/dist/pg-proxy.d.ts.map +1 -1
  43. package/dist/pg-proxy.js +63 -1
  44. package/dist/pg-proxy.js.map +1 -1
  45. package/dist/pg-sqlite-compiler/index.d.ts.map +1 -1
  46. package/dist/pg-sqlite-compiler/index.js +9 -1
  47. package/dist/pg-sqlite-compiler/index.js.map +1 -1
  48. package/dist/pg-sqlite-compiler/passes/datetime.d.ts +2 -0
  49. package/dist/pg-sqlite-compiler/passes/datetime.d.ts.map +1 -1
  50. package/dist/pg-sqlite-compiler/passes/datetime.js +20 -18
  51. package/dist/pg-sqlite-compiler/passes/datetime.js.map +1 -1
  52. package/dist/pg-sqlite-compiler/passes/index.d.ts.map +1 -1
  53. package/dist/pg-sqlite-compiler/passes/index.js +6 -1
  54. package/dist/pg-sqlite-compiler/passes/index.js.map +1 -1
  55. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts +3 -0
  56. package/dist/pg-sqlite-compiler/passes/json-functions.d.ts.map +1 -0
  57. package/dist/pg-sqlite-compiler/passes/json-functions.js +57 -0
  58. package/dist/pg-sqlite-compiler/passes/json-functions.js.map +1 -0
  59. package/dist/pg-sqlite-compiler/passes/row-json.d.ts +3 -0
  60. package/dist/pg-sqlite-compiler/passes/row-json.d.ts.map +1 -0
  61. package/dist/pg-sqlite-compiler/passes/row-json.js +230 -0
  62. package/dist/pg-sqlite-compiler/passes/row-json.js.map +1 -0
  63. package/dist/pg-sqlite-compiler/passes/schema.d.ts.map +1 -1
  64. package/dist/pg-sqlite-compiler/passes/schema.js +16 -1
  65. package/dist/pg-sqlite-compiler/passes/schema.js.map +1 -1
  66. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts +11 -0
  67. package/dist/pg-sqlite-compiler/passes/string-functions.d.ts.map +1 -0
  68. package/dist/pg-sqlite-compiler/passes/string-functions.js +37 -0
  69. package/dist/pg-sqlite-compiler/passes/string-functions.js.map +1 -0
  70. package/dist/worker/local-sql-backend.d.ts.map +1 -1
  71. package/dist/worker/local-sql-backend.js +114 -13
  72. package/dist/worker/local-sql-backend.js.map +1 -1
  73. package/package.json +2 -2
@@ -0,0 +1,230 @@
1
+ import { walkAst } from './ast-utils.js';
2
+ function stringValue(node) {
3
+ return node?.String?.sval ?? node?.String?.str ?? null;
4
+ }
5
+ function functionName(func) {
6
+ const parts = func?.funcname;
7
+ if (!Array.isArray(parts) || parts.length === 0)
8
+ return null;
9
+ return stringValue(parts[parts.length - 1])?.toLowerCase() ?? null;
10
+ }
11
+ /** last name of a ColumnRef (e.g. `s.id` → `id`), or null for `*` / non-columns. */
12
+ function columnName(value) {
13
+ const fields = value?.ColumnRef?.fields;
14
+ if (!Array.isArray(fields) || fields.length === 0)
15
+ return null;
16
+ return stringValue(fields[fields.length - 1]);
17
+ }
18
+ /** true when the ColumnRef ends in `*` (bare `*` or qualified `t.*`). */
19
+ function isStarColumnRef(value) {
20
+ const fields = value?.ColumnRef?.fields;
21
+ if (!Array.isArray(fields) || fields.length === 0)
22
+ return false;
23
+ return fields[fields.length - 1]?.A_Star !== undefined;
24
+ }
25
+ /** qualifier of a `t.*` star (the `t`), or null for a bare `*`. */
26
+ function starQualifier(value) {
27
+ const fields = value?.ColumnRef?.fields;
28
+ if (!Array.isArray(fields) || fields.length < 2)
29
+ return null;
30
+ return stringValue(fields[0]);
31
+ }
32
+ /** gather every RangeVar reachable through a FROM clause, descending JoinExprs. */
33
+ function collectRangeVars(node, out) {
34
+ if (!node || typeof node !== 'object')
35
+ return;
36
+ if (Array.isArray(node)) {
37
+ for (const child of node)
38
+ collectRangeVars(child, out);
39
+ return;
40
+ }
41
+ if (node.RangeVar) {
42
+ out.push(node.RangeVar);
43
+ return;
44
+ }
45
+ if (node.JoinExpr) {
46
+ collectRangeVars(node.JoinExpr.larg, out);
47
+ collectRangeVars(node.JoinExpr.rarg, out);
48
+ }
49
+ // RangeSubselect etc. expose no schema-resolvable columns, so the caller
50
+ // declines when a star can't be expanded from a real table.
51
+ }
52
+ function stringNode(value) {
53
+ return { A_Const: { sval: { sval: value }, location: -1 } };
54
+ }
55
+ function columnNode(alias, column) {
56
+ return {
57
+ ColumnRef: {
58
+ fields: [{ String: { sval: alias } }, { String: { sval: column } }],
59
+ location: -1,
60
+ },
61
+ };
62
+ }
63
+ function decline(ctx, message) {
64
+ ctx.warnings.push({ kind: 'row-json-unsupported', message, near: 'row_to_json' });
65
+ return null;
66
+ }
67
+ /**
68
+ * Expand a `*` / `t.*` star into the real column names of its source table,
69
+ * using the authoritative schema. Returns null (already warned) when the shape
70
+ * can't be proven, and never invents column names.
71
+ */
72
+ function expandStar(fromClause, qualifier, ctx) {
73
+ let rv;
74
+ if (qualifier == null) {
75
+ // a bare `*` covers EVERY source in the FROM clause, so it is only
76
+ // resolvable when that clause is exactly one base table. A second table, a
77
+ // sub-select, a function, or a join contributes columns a single table's
78
+ // shape can't account for, and silently expanding just the one table would
79
+ // drop the rest. Decline instead of guessing.
80
+ rv =
81
+ Array.isArray(fromClause) && fromClause.length === 1
82
+ ? fromClause[0]?.RangeVar
83
+ : undefined;
84
+ if (!rv) {
85
+ return decline(ctx, 'row_to_json over SELECT * needs the from clause to be a single known table');
86
+ }
87
+ }
88
+ else {
89
+ // a qualified `t.*` names exactly one table, so it stays resolvable even
90
+ // amid other FROM sources — find that table wherever it sits.
91
+ const rangeVars = [];
92
+ collectRangeVars(fromClause, rangeVars);
93
+ rv = rangeVars.find((v) => (v.alias?.aliasname ?? v.relname) === qualifier);
94
+ if (!rv) {
95
+ return decline(ctx, `row_to_json star qualifier ${qualifier} matches no table`);
96
+ }
97
+ }
98
+ const columns = ctx.schema.getTableColumns(rv.schemaname ?? 'public', rv.relname);
99
+ if (!columns || columns.length === 0) {
100
+ return decline(ctx, `row_to_json over ${rv.relname}.* needs schema info that is unavailable`);
101
+ }
102
+ return [...columns];
103
+ }
104
+ /**
105
+ * Resolve the output column names a subquery produces, so row_to_json can be
106
+ * rewritten to json_object() referencing real columns. Returns null (already
107
+ * warned) when the shape can't be proven. Any synthetic aliases it needs are
108
+ * applied to the subquery targets only on success, so a declined rewrite leaves
109
+ * the AST untouched.
110
+ */
111
+ function resolveShape(subselect, ctx) {
112
+ const sub = subselect?.subquery?.SelectStmt;
113
+ const targets = sub?.targetList;
114
+ if (!Array.isArray(targets) || targets.length === 0) {
115
+ return decline(ctx, 'row_to_json subquery has no resolvable target list');
116
+ }
117
+ const resolvedTargets = [];
118
+ for (let i = 0; i < targets.length; i++) {
119
+ const target = targets[i]?.ResTarget;
120
+ if (!target)
121
+ return decline(ctx, 'row_to_json subquery has an unrecognized target');
122
+ // an explicit alias is already the real output column name
123
+ if (target.name) {
124
+ resolvedTargets.push({ target, columns: [target.name], needsAlias: false });
125
+ continue;
126
+ }
127
+ const val = target.val;
128
+ // `*` / `t.*`: expand from the authoritative table shape or decline
129
+ if (isStarColumnRef(val)) {
130
+ const expanded = expandStar(sub.fromClause, starQualifier(val), ctx);
131
+ if (!expanded)
132
+ return null;
133
+ resolvedTargets.push({ target, columns: expanded, needsAlias: false });
134
+ continue;
135
+ }
136
+ // a plain column reference already names its output column (`s.id` → `id`)
137
+ const named = columnName(val);
138
+ if (named) {
139
+ resolvedTargets.push({ target, columns: [named], needsAlias: false });
140
+ continue;
141
+ }
142
+ resolvedTargets.push({ target, columns: [], needsAlias: true });
143
+ }
144
+ // The rewrite addresses each subquery column as `alias.<name>`, so the real
145
+ // (non-generated) output names must be unique or that reference is ambiguous:
146
+ // duplicate columns (a.id, b.id), duplicate explicit aliases, and a star that
147
+ // re-expands an explicitly-listed column all make two outputs share a name,
148
+ // and SQLite silently resolves the reference to just one, losing the other.
149
+ // SQLite matches column names case-insensitively, so compare case-folded.
150
+ // Decline before mutating any target so a declined rewrite leaves the AST
151
+ // untouched.
152
+ const usedNames = new Set();
153
+ for (const resolved of resolvedTargets) {
154
+ if (resolved.needsAlias)
155
+ continue;
156
+ for (const column of resolved.columns) {
157
+ const key = column.toLowerCase();
158
+ if (usedNames.has(key)) {
159
+ return decline(ctx, `row_to_json subquery has duplicate output column ${column}; cannot address it unambiguously`);
160
+ }
161
+ usedNames.add(key);
162
+ }
163
+ }
164
+ for (let i = 0; i < resolvedTargets.length; i++) {
165
+ const resolved = resolvedTargets[i];
166
+ if (!resolved.needsAlias)
167
+ continue;
168
+ // an unnamed expression has no stable output name in SQLite. Give it a
169
+ // real alias that cannot collide with another target or expanded star.
170
+ let suffix = i + 1;
171
+ let generated = `_orez_col_${suffix}`;
172
+ while (usedNames.has(generated.toLowerCase()))
173
+ generated = `_orez_col_${++suffix}`;
174
+ resolved.target.name = generated;
175
+ resolved.columns = [generated];
176
+ usedNames.add(generated.toLowerCase());
177
+ }
178
+ return resolvedTargets.flatMap((target) => target.columns);
179
+ }
180
+ export const rowJsonPass = {
181
+ name: 'row-json',
182
+ run(rawStmt, ctx) {
183
+ walkAst(rawStmt, {
184
+ SelectStmt: (select) => {
185
+ const subselects = new Map();
186
+ for (const fromNode of select?.fromClause ?? []) {
187
+ const subselect = fromNode?.RangeSubselect;
188
+ const alias = subselect?.alias?.aliasname;
189
+ if (alias && subselect?.subquery?.SelectStmt) {
190
+ subselects.set(alias, subselect);
191
+ }
192
+ }
193
+ if (subselects.size === 0)
194
+ return;
195
+ // resolve each referenced subquery shape at most once (and warn once)
196
+ const resolved = new Map();
197
+ const shapeFor = (alias) => {
198
+ if (!resolved.has(alias)) {
199
+ resolved.set(alias, resolveShape(subselects.get(alias), ctx));
200
+ }
201
+ return resolved.get(alias) ?? null;
202
+ };
203
+ walkAst(select.targetList ?? [], {
204
+ FuncCall: (func, parent, key) => {
205
+ if (functionName(func) !== 'row_to_json')
206
+ return;
207
+ const alias = columnName(func.args?.[0]);
208
+ if (!alias || !subselects.has(alias))
209
+ return;
210
+ const columns = shapeFor(alias);
211
+ if (!columns || columns.length === 0)
212
+ return;
213
+ parent[key] = {
214
+ FuncCall: {
215
+ funcname: [{ String: { sval: 'json_object' } }],
216
+ args: columns.flatMap((column) => [
217
+ stringNode(column),
218
+ columnNode(alias, column),
219
+ ]),
220
+ funcformat: 'COERCE_EXPLICIT_CALL',
221
+ location: -1,
222
+ },
223
+ };
224
+ },
225
+ });
226
+ },
227
+ });
228
+ },
229
+ };
230
+ //# sourceMappingURL=row-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-json.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/row-json.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAkFvC,eAAO,MAAM,UAAU,EAAE,IAwBxB,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAkFvC,eAAO,MAAM,UAAU,EAAE,IAsCxB,CAAA"}
@@ -87,8 +87,23 @@ function flattenWriteTargetQualifiers(stmt) {
87
87
  }
88
88
  export const schemaPass = {
89
89
  name: 'schema',
90
- run(rawStmt) {
90
+ run(rawStmt, ctx) {
91
91
  walkAst(rawStmt, {
92
+ AlterTableCmd: (node) => {
93
+ if (node.subtype !== 'AT_DropColumn' || !node.behavior)
94
+ return;
95
+ if (node.behavior === 'DROP_CASCADE') {
96
+ ctx.warnings.push({
97
+ kind: 'unsupported-alter-table-cascade',
98
+ message: 'SQLite DROP COLUMN does not support CASCADE',
99
+ });
100
+ return;
101
+ }
102
+ // PostgreSQL deparses its default DROP_RESTRICT behavior as an
103
+ // explicit RESTRICT clause. SQLite has the same restrictive default
104
+ // but rejects the keyword, so omit it from the emitted statement.
105
+ delete node.behavior;
106
+ },
92
107
  SelectStmt: (node) => {
93
108
  flattenSelectRangeVarQualifiers(node);
94
109
  },
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { Pass } from '../types.js';
2
+ /** Rewrite one libpg_query FuncCall to SQLite's ordinary trim functions. */
3
+ export declare function rewriteStringFunctionCall(node: any): boolean;
4
+ /**
5
+ * PostgreSQL parses the SQL-standard TRIM forms as pg_catalog btrim/ltrim/rtrim
6
+ * calls with a special deparse format. That format emits `TRIM(BOTH FROM x)`,
7
+ * which SQLite rejects even though its trim functions have equivalent
8
+ * argument ordering. Emit ordinary SQLite function calls instead.
9
+ */
10
+ export declare const stringFunctionsPass: Pass;
11
+ //# sourceMappingURL=string-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-functions.d.ts","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/string-functions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAavC,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,IASjC,CAAA"}
@@ -0,0 +1,37 @@
1
+ import { walkAst } from './ast-utils.js';
2
+ function functionName(funcname) {
3
+ if (!funcname || funcname.length === 0)
4
+ return undefined;
5
+ const last = funcname[funcname.length - 1];
6
+ const value = last?.String?.sval ?? last?.String?.str;
7
+ return typeof value === 'string' ? value.toLowerCase() : undefined;
8
+ }
9
+ function stringNode(value) {
10
+ return { String: { sval: value } };
11
+ }
12
+ /** Rewrite one libpg_query FuncCall to SQLite's ordinary trim functions. */
13
+ export function rewriteStringFunctionCall(node) {
14
+ const name = functionName(node?.funcname);
15
+ if (name !== 'btrim' && name !== 'ltrim' && name !== 'rtrim')
16
+ return false;
17
+ node.funcname = [stringNode(name === 'btrim' ? 'trim' : name)];
18
+ node.funcformat = 'COERCE_EXPLICIT_CALL';
19
+ return true;
20
+ }
21
+ /**
22
+ * PostgreSQL parses the SQL-standard TRIM forms as pg_catalog btrim/ltrim/rtrim
23
+ * calls with a special deparse format. That format emits `TRIM(BOTH FROM x)`,
24
+ * which SQLite rejects even though its trim functions have equivalent
25
+ * argument ordering. Emit ordinary SQLite function calls instead.
26
+ */
27
+ export const stringFunctionsPass = {
28
+ name: 'string-functions',
29
+ run(rawStmt, _ctx) {
30
+ walkAst(rawStmt, {
31
+ FuncCall: (node) => {
32
+ rewriteStringFunctionCall(node);
33
+ },
34
+ });
35
+ },
36
+ };
37
+ //# sourceMappingURL=string-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-functions.js","sourceRoot":"","sources":["../../../src/pg-sqlite-compiler/passes/string-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAIxC,SAAS,YAAY,CAAC,QAA2B;IAC/C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,IAAI,EAAE,MAAM,EAAE,GAAG,CAAA;IACrD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;AACpE,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAA;AACpC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CAAC,IAAS;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAA;IAE1E,IAAI,CAAC,QAAQ,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,IAAI,CAAC,UAAU,GAAG,sBAAsB,CAAA;IACxC,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAS;IACvC,IAAI,EAAE,kBAAkB;IACxB,GAAG,CAAC,OAAO,EAAE,IAAI;QACf,OAAO,CAAC,OAAO,EAAE;YACf,QAAQ,EAAE,CAAC,IAAS,EAAE,EAAE;gBACtB,yBAAyB,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"local-sql-backend.d.ts","sourceRoot":"","sources":["../../src/worker/local-sql-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,MAAM,WAAW,aAAa;IAC5B,IAAI,CACF,GAAG,EAAE,MAAM,EACX,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB;QACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KACvB,CAAA;IACD,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtE;;;;OAIG;IACH,2BAA2B,IAAI,MAAM,EAAE,CAAA;CACxC;AAQD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CAoGvE"}
1
+ {"version":3,"file":"local-sql-backend.d.ts","sourceRoot":"","sources":["../../src/worker/local-sql-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmBH,MAAM,WAAW,aAAa;IAC5B,IAAI,CACF,GAAG,EAAE,MAAM,EACX,GAAG,MAAM,EAAE,OAAO,EAAE,GACnB;QACD,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;QACzC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;KACvB,CAAA;IACD,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,8CAA8C;IAC9C,KAAK,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtE;;;;OAIG;IACH,2BAA2B,IAAI,MAAM,EAAE,CAAA;CACxC;AAiBD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,eAAe,CA4MvE"}
@@ -14,7 +14,9 @@
14
14
  * the upstream `postgres` db must NOT use this backend: it is shared with the
15
15
  * app worker and lives in ZeroSqlDO.
16
16
  */
17
- import { commitTxJournal, recoverTxJournal, rollbackTxJournal, } from '../cf-do/tx-journal.js';
17
+ import { TransactionalCdc } from '../cf-do/cdc.js';
18
+ import { appendPendingChange, deletePendingChanges, ensurePendingChangesTable, rollbackPendingChanges, } from '../cf-do/row-undo.js';
19
+ import { commitTxJournal, recoverTxJournal, rollbackTxJournal, snapshotSideEffectWriteTables, upgradeToTableSnapshot, } from '../cf-do/tx-journal.js';
18
20
  export function createLocalSqlBackend(storage) {
19
21
  const sqlite = storage;
20
22
  if (!sqlite || typeof sqlite.exec !== 'function') {
@@ -34,36 +36,125 @@ export function createLocalSqlBackend(storage) {
34
36
  };
35
37
  },
36
38
  };
39
+ const cdc = new TransactionalCdc(journalSql);
40
+ let pendingChangesReady = false;
41
+ function ensurePendingChanges() {
42
+ if (pendingChangesReady)
43
+ return;
44
+ ensurePendingChangesTable(journalSql);
45
+ pendingChangesReady = true;
46
+ }
47
+ /**
48
+ * Run work in a storage transaction, re-deriving the in-memory schema caches
49
+ * from SQLite if it aborts. transactionSync() rolls the SQLite side back on
50
+ * throw, but the caches are plain fields that would keep asserting state
51
+ * SQLite no longer has: a CDC table stays "registered and verified" with no
52
+ * trigger left on disk, and every later write to it goes silently uncaptured.
53
+ */
54
+ function atomically(work) {
55
+ try {
56
+ return sql.transactionSync(work);
57
+ }
58
+ catch (error) {
59
+ pendingChangesReady = false;
60
+ // Reload is intentionally last: corrupt CDC metadata must throw rather
61
+ // than suppressing cache invalidation and silently disabling capture.
62
+ cdc.reload();
63
+ throw error;
64
+ }
65
+ }
37
66
  function executeStatement(statement) {
38
- if (statement.track) {
39
- // change tracking belongs to the shared upstream db (ZeroSqlDO); the
40
- // local cvr/cdb stores are never replicated.
41
- throw new Error('local sql backend: change tracking is not supported');
67
+ const track = statement.track;
68
+ const transactionID = statement.transactionID || track?.transactionID;
69
+ if (track && !track.physicalTableName) {
70
+ throw new Error('local sql backend: change tracking requires a physical table name');
71
+ }
72
+ let snapshotsOwnStatement = false;
73
+ let captures = false;
74
+ if (track) {
75
+ if (!transactionID) {
76
+ throw new Error('local sql backend: rollback tracking requires a transaction id');
77
+ }
78
+ captures = cdc.ensureTable({
79
+ physicalTableName: track.physicalTableName,
80
+ tableName: track.tableName,
81
+ publish: false,
82
+ ...(track.rowColumns?.length ? { columns: track.rowColumns } : null),
83
+ });
84
+ // DoBackend already marked this table row-journaled, betting the DO could
85
+ // capture before/after images for it. When it cannot, that marker promises
86
+ // a rollback nothing can perform, so take the table snapshot the journal
87
+ // would otherwise have taken, before the DML changes the table.
88
+ if (!captures) {
89
+ upgradeToTableSnapshot(journalSql, transactionID, track.physicalTableName);
90
+ }
91
+ snapshotsOwnStatement = snapshotSideEffectWriteTables(journalSql, transactionID, track.physicalTableName);
92
+ }
93
+ const suspended = cdc.beginSchemaChange(statement.sql);
94
+ let cursor;
95
+ try {
96
+ cursor = sql.exec(statement.sql, ...(statement.params ?? []));
97
+ }
98
+ finally {
99
+ cdc.finishSchemaChange(suspended);
42
100
  }
43
- const cursor = sql.exec(statement.sql, ...(statement.params ?? []));
44
101
  const rows = cursor.toArray().map((row) => ({ ...row }));
45
102
  const columns = Array.isArray(cursor.columnNames)
46
103
  ? cursor.columnNames
47
104
  : rows.length > 0
48
105
  ? Object.keys(rows[0])
49
106
  : [];
50
- return { rows, columns };
107
+ // Rollback-only triggers remain installed after a transaction ends. Drain
108
+ // them on every statement so an untracked autocommit write cannot sit in
109
+ // the buffer and get attached to (then undone by) the next transaction.
110
+ const captured = cdc.active ? cdc.drain() : [];
111
+ if (track && captured.length > 0) {
112
+ ensurePendingChanges();
113
+ for (const change of captured) {
114
+ appendPendingChange(journalSql, {
115
+ transactionID: transactionID,
116
+ physicalTableName: change.physicalTableName,
117
+ tableName: change.tableName,
118
+ publish: false,
119
+ op: change.op,
120
+ rowData: change.rowData,
121
+ oldData: change.oldData,
122
+ rowJournal: change.rowJournal,
123
+ oldJournal: change.oldJournal,
124
+ newRowid: change.newRowid,
125
+ oldRowid: change.oldRowid,
126
+ undoable: !snapshotsOwnStatement,
127
+ });
128
+ }
129
+ }
130
+ return track
131
+ ? {
132
+ rows: track.returnRows ? rows : [],
133
+ columns: track.returnRows ? columns : [],
134
+ affectedRows: rows.length,
135
+ capturedChanges: 0,
136
+ }
137
+ : { rows, columns };
51
138
  }
52
139
  async function handle(request) {
53
140
  const url = new URL(request.url);
54
141
  const body = (await request.json().catch(() => ({})));
55
142
  switch (url.pathname) {
56
143
  case '/exec': {
57
- const result = executeStatement({
144
+ const statement = {
58
145
  sql: String(body.sql ?? ''),
59
146
  params: Array.isArray(body.params) ? body.params : [],
60
147
  track: body.track,
61
- });
148
+ transactionID: String(body.transactionID || '') || undefined,
149
+ };
150
+ const result = body.track
151
+ ? atomically(() => executeStatement(statement))
152
+ : executeStatement(statement);
62
153
  return Response.json(result);
63
154
  }
64
155
  case '/batch': {
65
156
  const statements = Array.isArray(body.statements) ? body.statements : [];
66
- const results = sql.transactionSync(() => statements
157
+ const results = atomically(() => statements
67
158
  .map((statement) => typeof statement === 'string' ? { sql: statement } : statement)
68
159
  .filter((statement) => statement?.sql?.trim())
69
160
  .map((statement) => executeStatement(statement)));
@@ -73,14 +164,21 @@ export function createLocalSqlBackend(storage) {
73
164
  const transactionID = String(body.transactionID || '');
74
165
  if (!transactionID)
75
166
  throw new Error('missing transactionID');
76
- sql.transactionSync(() => commitTxJournal(journalSql, transactionID));
167
+ atomically(() => {
168
+ deletePendingChanges(journalSql, transactionID);
169
+ commitTxJournal(journalSql, transactionID);
170
+ });
77
171
  return Response.json({ ok: true });
78
172
  }
79
173
  case '/rollback-tx': {
80
174
  const transactionID = String(body.transactionID || '');
81
175
  if (!transactionID)
82
176
  throw new Error('missing transactionID');
83
- sql.transactionSync(() => rollbackTxJournal(journalSql, transactionID));
177
+ atomically(() => {
178
+ rollbackPendingChanges(journalSql, transactionID);
179
+ rollbackTxJournal(journalSql, transactionID);
180
+ deletePendingChanges(journalSql, transactionID);
181
+ });
84
182
  return Response.json({ ok: true });
85
183
  }
86
184
  default:
@@ -99,7 +197,10 @@ export function createLocalSqlBackend(storage) {
99
197
  }
100
198
  },
101
199
  recoverOrphanedTransactions() {
102
- return sql.transactionSync(() => recoverTxJournal(journalSql));
200
+ return atomically(() => recoverTxJournal(journalSql, undefined, (transactionID) => {
201
+ rollbackPendingChanges(journalSql, transactionID);
202
+ deletePendingChanges(journalSql, transactionID);
203
+ }));
103
204
  },
104
205
  };
105
206
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-sql-backend.js","sourceRoot":"","sources":["../../src/worker/local-sql-backend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-sql-backend.js","sourceRoot":"","sources":["../../src/worker/local-sql-backend.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orez",
3
- "version": "0.4.73",
3
+ "version": "0.5.2",
4
4
  "description": "PGlite-powered zero-sync development backend. No Docker required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -91,7 +91,7 @@
91
91
  "@electric-sql/pglite": "0.4.1",
92
92
  "@electric-sql/pglite-tools": "^0.3.1",
93
93
  "@pgsql/traverse": "17.2.6",
94
- "bedrock-sqlite": "0.4.73",
94
+ "bedrock-sqlite": "0.5.2",
95
95
  "citty": "^0.2.0",
96
96
  "pg-gateway": "0.3.0-beta.4",
97
97
  "pgsql-parser": "^17.9.11",