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 @@
1
+ {"version":3,"file":"cdc.js","sourceRoot":"","sources":["../../src/cf-do/cdc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import { type JournalRecord } from './cdc.js';
2
+ import type { DurableSqlStorage } from './watermark.js';
3
+ export declare const PENDING_CHANGES_TABLE = "_zero_pending_changes";
4
+ type Op = 'INSERT' | 'UPDATE' | 'DELETE';
5
+ export declare function ensurePendingChangesTable(sql: DurableSqlStorage): void;
6
+ export declare function appendPendingChange(sql: DurableSqlStorage, change: {
7
+ transactionID: string;
8
+ physicalTableName?: string;
9
+ tableName: string;
10
+ publish?: boolean;
11
+ op: Op;
12
+ rowData: Record<string, unknown> | null;
13
+ oldData: Record<string, unknown> | null;
14
+ /**
15
+ * Present only for CDC-captured writes. Their absence means the row is
16
+ * published to the changefeed but rolled back by a table snapshot, so undo
17
+ * must skip it.
18
+ */
19
+ rowJournal?: JournalRecord | null;
20
+ oldJournal?: JournalRecord | null;
21
+ newRowid?: string | null;
22
+ oldRowid?: string | null;
23
+ undoable: boolean;
24
+ }): void;
25
+ /**
26
+ * Restore row before-images in reverse statement order. Must run atomically.
27
+ *
28
+ * Every trigger on the touched tables is detached for the duration, business
29
+ * triggers included: a restore replays the inverse DML, and letting the table's
30
+ * own triggers fire on it would write side effects the original transaction
31
+ * never made.
32
+ */
33
+ export declare function rollbackPendingChanges(sql: DurableSqlStorage, transactionID: string): number;
34
+ export declare function deletePendingChanges(sql: DurableSqlStorage, transactionID: string): number;
35
+ export {};
36
+ //# sourceMappingURL=row-undo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-undo.d.ts","sourceRoot":"","sources":["../../src/cf-do/row-undo.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,aAAa,EAEnB,MAAM,UAAU,CAAA;AAEjB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,qBAAqB,0BAA0B,CAAA;AAE5D,KAAK,EAAE,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAMxC,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CA6CtE;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,iBAAiB,EACtB,MAAM,EAAE;IACN,aAAa,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,EAAE,EAAE,EAAE,CAAA;IACN,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,QAAQ,EAAE,OAAO,CAAA;CAClB,GACA,IAAI,CAmBN;AAyED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAmHR;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,iBAAiB,EACtB,aAAa,EAAE,MAAM,GACpB,MAAM,CAQR"}
@@ -0,0 +1,209 @@
1
+ import { journalValueSqlBinding, parseJournalRecord, restoreTriggers, suspendTriggers, tableIdentity, } from './cdc.js';
2
+ export const PENDING_CHANGES_TABLE = '_zero_pending_changes';
3
+ function quoteIdent(name) {
4
+ return `"${name.replace(/"/g, '""')}"`;
5
+ }
6
+ export function ensurePendingChangesTable(sql) {
7
+ sql.exec(`CREATE TABLE IF NOT EXISTS ${PENDING_CHANGES_TABLE} (` +
8
+ 'id INTEGER PRIMARY KEY AUTOINCREMENT, ' +
9
+ 'transaction_id TEXT NOT NULL, ' +
10
+ 'physical_table_name TEXT, ' +
11
+ 'table_name TEXT NOT NULL, ' +
12
+ 'publish INTEGER NOT NULL DEFAULT 1, ' +
13
+ "op TEXT NOT NULL CHECK (op IN ('INSERT', 'UPDATE', 'DELETE')), " +
14
+ 'row_data TEXT, ' +
15
+ 'old_data TEXT, ' +
16
+ 'row_journal TEXT, ' +
17
+ 'old_journal TEXT, ' +
18
+ 'new_rowid TEXT, ' +
19
+ 'old_rowid TEXT, ' +
20
+ 'undoable INTEGER NOT NULL DEFAULT 0, ' +
21
+ 'created_at INTEGER NOT NULL DEFAULT (unixepoch()))');
22
+ const columns = sql
23
+ .exec(`PRAGMA table_info(${PENDING_CHANGES_TABLE})`)
24
+ .toArray()
25
+ .map((column) => String(column.name ?? ''));
26
+ if (!columns.includes('physical_table_name')) {
27
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN physical_table_name TEXT`);
28
+ }
29
+ if (!columns.includes('publish')) {
30
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN publish INTEGER NOT NULL DEFAULT 1`);
31
+ }
32
+ for (const column of ['row_journal', 'old_journal', 'new_rowid', 'old_rowid']) {
33
+ if (columns.includes(column))
34
+ continue;
35
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN ${column} TEXT`);
36
+ }
37
+ if (!columns.includes('undoable')) {
38
+ sql.exec(`ALTER TABLE ${PENDING_CHANGES_TABLE} ADD COLUMN undoable INTEGER NOT NULL DEFAULT 0`);
39
+ // Rows written before the typed journal claimed row-level undo but only
40
+ // carry the lossy Zero wire image, where a blob is indistinguishable from
41
+ // text and an int64 is already rounded. Restoring from that would corrupt
42
+ // the table, so mark them undoable and let rollback fail loudly on them
43
+ // rather than silently revive a wrong value.
44
+ sql.exec(`UPDATE ${PENDING_CHANGES_TABLE} SET undoable = 1`);
45
+ }
46
+ }
47
+ export function appendPendingChange(sql, change) {
48
+ sql.exec(`INSERT INTO ${PENDING_CHANGES_TABLE} ` +
49
+ '(transaction_id, physical_table_name, table_name, publish, op, row_data, old_data, ' +
50
+ 'row_journal, old_journal, new_rowid, old_rowid, undoable) ' +
51
+ 'VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', change.transactionID, change.physicalTableName || null, change.tableName, change.publish === false ? 0 : 1, change.op, change.rowData ? JSON.stringify(change.rowData) : null, change.oldData ? JSON.stringify(change.oldData) : null, change.rowJournal ? JSON.stringify(change.rowJournal) : null, change.oldJournal ? JSON.stringify(change.oldJournal) : null, change.newRowid ?? null, change.oldRowid ?? null, change.undoable ? 1 : 0);
52
+ }
53
+ /**
54
+ * The WHERE clause that selects exactly the row this change touched.
55
+ *
56
+ * The captured rowid is the strongest identity: it survives primary-key updates
57
+ * and tells two otherwise identical rows of a keyless table apart. WITHOUT ROWID
58
+ * tables have no rowid but always declare a primary key, so they match on that.
59
+ */
60
+ function identityWhere(identity, journal, rowid, table) {
61
+ if (identity.rowidAlias && rowid !== null) {
62
+ return {
63
+ sql: `${identity.rowidAlias} = CAST(? AS INTEGER)`,
64
+ params: [rowid],
65
+ };
66
+ }
67
+ if (identity.keyColumns.length === 0) {
68
+ throw new Error(`cdc undo: ${table} has no stable row identity (no rowid, no primary key)`);
69
+ }
70
+ const clauses = [];
71
+ const params = [];
72
+ for (const column of identity.keyColumns) {
73
+ const encoded = journal?.[column];
74
+ if (encoded === undefined) {
75
+ throw new Error(`cdc undo: ${table} before-image is missing key column ${column}`);
76
+ }
77
+ const binding = journalValueSqlBinding(encoded);
78
+ clauses.push(`${quoteIdent(column)} IS ${binding.expr}`);
79
+ params.push(...binding.params);
80
+ }
81
+ return { sql: clauses.join(' AND '), params };
82
+ }
83
+ /**
84
+ * Run one undo statement and assert it moved exactly one row. A rollback that
85
+ * silently touches zero rows (already gone) or several (a keyless duplicate
86
+ * matched by value) has corrupted the table, so fail the storage transaction
87
+ * instead of leaving the damage behind.
88
+ */
89
+ function execExactlyOneRow(sql, statement, params, context) {
90
+ const affected = sql.exec(`${statement} RETURNING 1 AS ok`, ...params).toArray().length;
91
+ if (affected !== 1) {
92
+ throw new Error(`cdc undo: ${context} matched ${affected} rows, expected exactly 1`);
93
+ }
94
+ }
95
+ function requireCompleteImage(journal, identity, table, label) {
96
+ if (!journal)
97
+ throw new Error(`cdc undo: ${table} has no ${label}`);
98
+ const missing = identity.columns.filter((column) => journal[column] === undefined);
99
+ if (missing.length > 0) {
100
+ throw new Error(`cdc undo: ${table} ${label} is missing column(s): ${missing.join(', ')}`);
101
+ }
102
+ }
103
+ /**
104
+ * Restore row before-images in reverse statement order. Must run atomically.
105
+ *
106
+ * Every trigger on the touched tables is detached for the duration, business
107
+ * triggers included: a restore replays the inverse DML, and letting the table's
108
+ * own triggers fire on it would write side effects the original transaction
109
+ * never made.
110
+ */
111
+ export function rollbackPendingChanges(sql, transactionID) {
112
+ ensurePendingChangesTable(sql);
113
+ const rows = sql
114
+ .exec(`SELECT physical_table_name, op, row_journal, old_journal, new_rowid, old_rowid
115
+ FROM ${PENDING_CHANGES_TABLE}
116
+ WHERE transaction_id = ? AND physical_table_name IS NOT NULL AND undoable != 0
117
+ ORDER BY id DESC`, transactionID)
118
+ .toArray();
119
+ const tables = rows.map((row) => String(row.physical_table_name ?? '')).filter(Boolean);
120
+ const suspended = suspendTriggers(sql, tables);
121
+ const identities = new Map();
122
+ try {
123
+ for (const row of rows) {
124
+ const table = String(row.physical_table_name);
125
+ const op = String(row.op);
126
+ const next = parseJournalRecord(row.row_journal);
127
+ const old = parseJournalRecord(row.old_journal);
128
+ const newRowid = row.new_rowid == null ? null : String(row.new_rowid);
129
+ const oldRowid = row.old_rowid == null ? null : String(row.old_rowid);
130
+ if (!identities.has(table))
131
+ identities.set(table, tableIdentity(sql, table));
132
+ const identity = identities.get(table);
133
+ if (!identity) {
134
+ throw new Error(`cdc undo: ${table} has no stable row identity, so its rows cannot be restored`);
135
+ }
136
+ // Every undoable row is written with its before-image in the same SQLite
137
+ // statement as the write itself. A missing one means the row predates the
138
+ // typed journal, and its lossy wire image would restore the wrong value.
139
+ // Fail the whole rollback rather than let a write survive it.
140
+ if ((op === 'INSERT' && !next && newRowid === null) || (op !== 'INSERT' && !old)) {
141
+ throw new Error(`cdc undo: ${op} on ${table} has no usable before-image, so the transaction ` +
142
+ `cannot be rolled back (pending row predates the typed journal)`);
143
+ }
144
+ if (op === 'INSERT' || op === 'UPDATE') {
145
+ requireCompleteImage(next, identity, table, 'new image');
146
+ }
147
+ if (op === 'DELETE' || op === 'UPDATE') {
148
+ requireCompleteImage(old, identity, table, 'old image');
149
+ }
150
+ if (op === 'INSERT') {
151
+ const where = identityWhere(identity, next, newRowid, table);
152
+ execExactlyOneRow(sql, `DELETE FROM ${quoteIdent(table)} WHERE ${where.sql}`, where.params, `INSERT undo on ${table}`);
153
+ continue;
154
+ }
155
+ if (op === 'DELETE') {
156
+ const oldImage = old;
157
+ const columns = [];
158
+ const values = [];
159
+ const params = [];
160
+ for (const column of identity.writableColumns) {
161
+ const encoded = oldImage[column];
162
+ const binding = journalValueSqlBinding(encoded);
163
+ columns.push(quoteIdent(column));
164
+ values.push(binding.expr);
165
+ params.push(...binding.params);
166
+ }
167
+ // Restore the original rowid too, so any earlier change in this
168
+ // transaction that identified a row by rowid still resolves. When the
169
+ // table has an INTEGER PRIMARY KEY that column already is the rowid.
170
+ if (identity.rowidAlias && !identity.rowidColumn && oldRowid !== null) {
171
+ columns.push(identity.rowidAlias);
172
+ values.push('CAST(? AS INTEGER)');
173
+ params.push(oldRowid);
174
+ }
175
+ if (columns.length === 0) {
176
+ throw new Error(`cdc undo: DELETE on ${table} has no writable columns`);
177
+ }
178
+ execExactlyOneRow(sql, `INSERT INTO ${quoteIdent(table)} (${columns.join(', ')}) VALUES (${values.join(', ')})`, params, `DELETE undo on ${table}`);
179
+ continue;
180
+ }
181
+ const assignments = [];
182
+ const params = [];
183
+ const oldImage = old;
184
+ for (const column of identity.writableColumns) {
185
+ const encoded = oldImage[column];
186
+ const binding = journalValueSqlBinding(encoded);
187
+ assignments.push(`${quoteIdent(column)} = ${binding.expr}`);
188
+ params.push(...binding.params);
189
+ }
190
+ if (assignments.length === 0) {
191
+ throw new Error(`cdc undo: UPDATE on ${table} has no writable columns`);
192
+ }
193
+ const where = identityWhere(identity, next, newRowid, table);
194
+ params.push(...where.params);
195
+ execExactlyOneRow(sql, `UPDATE ${quoteIdent(table)} SET ${assignments.join(', ')} WHERE ${where.sql}`, params, `UPDATE undo on ${table}`);
196
+ }
197
+ }
198
+ finally {
199
+ restoreTriggers(sql, suspended);
200
+ }
201
+ return rows.length;
202
+ }
203
+ export function deletePendingChanges(sql, transactionID) {
204
+ ensurePendingChangesTable(sql);
205
+ return sql
206
+ .exec(`DELETE FROM ${PENDING_CHANGES_TABLE} WHERE transaction_id = ? RETURNING 1 AS deleted`, transactionID)
207
+ .toArray().length;
208
+ }
209
+ //# sourceMappingURL=row-undo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-undo.js","sourceRoot":"","sources":["../../src/cf-do/row-undo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,aAAa,GAGd,MAAM,UAAU,CAAA;AAIjB,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAI5D,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,GAAsB;IAC9D,GAAG,CAAC,IAAI,CACN,8BAA8B,qBAAqB,IAAI;QACrD,wCAAwC;QACxC,gCAAgC;QAChC,4BAA4B;QAC5B,4BAA4B;QAC5B,sCAAsC;QACtC,iEAAiE;QACjE,iBAAiB;QACjB,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,kBAAkB;QAClB,kBAAkB;QAClB,uCAAuC;QACvC,oDAAoD,CACvD,CAAA;IACD,MAAM,OAAO,GAAG,GAAG;SAChB,IAAI,CAAC,qBAAqB,qBAAqB,GAAG,CAAC;SACnD,OAAO,EAAE;SACT,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAA;IAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,IAAI,CAAC,eAAe,qBAAqB,sCAAsC,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CACN,eAAe,qBAAqB,gDAAgD,CACrF,CAAA;IACH,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,CAAC,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC;QAC9E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,SAAQ;QACtC,GAAG,CAAC,IAAI,CAAC,eAAe,qBAAqB,eAAe,MAAM,OAAO,CAAC,CAAA;IAC5E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,IAAI,CACN,eAAe,qBAAqB,iDAAiD,CACtF,CAAA;QACD,wEAAwE;QACxE,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,6CAA6C;QAC7C,GAAG,CAAC,IAAI,CAAC,UAAU,qBAAqB,mBAAmB,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAAsB,EACtB,MAkBC;IAED,GAAG,CAAC,IAAI,CACN,eAAe,qBAAqB,GAAG;QACrC,qFAAqF;QACrF,4DAA4D;QAC5D,6CAA6C,EAC/C,MAAM,CAAC,aAAa,EACpB,MAAM,CAAC,iBAAiB,IAAI,IAAI,EAChC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAChC,MAAM,CAAC,EAAE,EACT,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACtD,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACtD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAC5D,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,MAAM,CAAC,QAAQ,IAAI,IAAI,EACvB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxB,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,aAAa,CACpB,QAAuB,EACvB,OAA6B,EAC7B,KAAoB,EACpB,KAAa;IAEb,IAAI,QAAQ,CAAC,UAAU,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO;YACL,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,uBAAuB;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC;SAChB,CAAA;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,wDAAwD,CAC3E,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,MAAM,MAAM,GAAc,EAAE,CAAA;IAC5B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;QACjC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,uCAAuC,MAAM,EAAE,CAAC,CAAA;QACpF,CAAC;QACD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;QAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;AAC/C,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,GAAsB,EACtB,SAAiB,EACjB,MAAiB,EACjB,OAAe;IAEf,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,MAAM,CAAA;IACvF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,aAAa,OAAO,YAAY,QAAQ,2BAA2B,CAAC,CAAA;IACtF,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAA6B,EAC7B,QAAuB,EACvB,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,WAAW,KAAK,EAAE,CAAC,CAAA;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAA;IAClF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,IAAI,KAAK,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAAsB,EACtB,aAAqB;IAErB,yBAAyB,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,IAAI,GAAG,GAAG;SACb,IAAI,CACH;cACQ,qBAAqB;;wBAEX,EAClB,aAAa,CACd;SACA,OAAO,EAAE,CAAA;IACZ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvF,MAAM,SAAS,GAAG,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAC9C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAgC,CAAA;IAC1D,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAC7C,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAO,CAAA;YAC/B,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAChD,MAAM,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC/C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACrE,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAErE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAA;YAC5E,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CACb,aAAa,KAAK,6DAA6D,CAChF,CAAA;YACH,CAAC;YACD,yEAAyE;YACzE,0EAA0E;YAC1E,yEAAyE;YACzE,8DAA8D;YAC9D,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CACb,aAAa,EAAE,OAAO,KAAK,kDAAkD;oBAC3E,gEAAgE,CACnE,CAAA;YACH,CAAC;YACD,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACvC,oBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YAC1D,CAAC;YACD,IAAI,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACvC,oBAAoB,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAA;YACzD,CAAC;YAED,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;gBAC5D,iBAAiB,CACf,GAAG,EACH,eAAe,UAAU,CAAC,KAAK,CAAC,UAAU,KAAK,CAAC,GAAG,EAAE,EACrD,KAAK,CAAC,MAAM,EACZ,kBAAkB,KAAK,EAAE,CAC1B,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,GAAI,CAAA;gBACrB,MAAM,OAAO,GAAa,EAAE,CAAA;gBAC5B,MAAM,MAAM,GAAa,EAAE,CAAA;gBAC3B,MAAM,MAAM,GAAc,EAAE,CAAA;gBAC5B,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;oBAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;oBAChC,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;oBAC/C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;oBAChC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;oBACzB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;gBAChC,CAAC;gBACD,gEAAgE;gBAChE,sEAAsE;gBACtE,qEAAqE;gBACrE,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;oBACtE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;oBACjC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACjC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACvB,CAAC;gBACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,0BAA0B,CAAC,CAAA;gBACzE,CAAC;gBACD,iBAAiB,CACf,GAAG,EACH,eAAe,UAAU,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EACxF,MAAM,EACN,kBAAkB,KAAK,EAAE,CAC1B,CAAA;gBACD,SAAQ;YACV,CAAC;YAED,MAAM,WAAW,GAAa,EAAE,CAAA;YAChC,MAAM,MAAM,GAAc,EAAE,CAAA;YAC5B,MAAM,QAAQ,GAAG,GAAI,CAAA;YACrB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;gBAChC,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAA;gBAC/C,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBAC3D,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;YAChC,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,KAAK,0BAA0B,CAAC,CAAA;YACzE,CAAC;YACD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;YAC5D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;YAC5B,iBAAiB,CACf,GAAG,EACH,UAAU,UAAU,CAAC,KAAK,CAAC,QAAQ,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,GAAG,EAAE,EAC9E,MAAM,EACN,kBAAkB,KAAK,EAAE,CAC1B,CAAA;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;IACjC,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,CAAA;AACpB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,GAAsB,EACtB,aAAqB;IAErB,yBAAyB,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,GAAG;SACP,IAAI,CACH,eAAe,qBAAqB,kDAAkD,EACtF,aAAa,CACd;SACA,OAAO,EAAE,CAAC,MAAM,CAAA;AACrB,CAAC"}
@@ -2,9 +2,10 @@
2
2
  * durable transaction journal for the DO SQL backend.
3
3
  *
4
4
  * the Durable Object refuses raw SQL BEGIN/COMMIT, so DoBackend emulates pg
5
- * transactions by applying writes eagerly and snapshotting each table on its
6
- * first in-tx write (`_orez_tx_<txID>_*` tables). before this journal, the
7
- * snapshot bookkeeping lived only in the client's memory: a DO eviction or
5
+ * transactions by applying writes eagerly. Parsed DML is rolled back from the
6
+ * CDC row before-images captured by the same SQLite statement; unknown writes
7
+ * fall back to a first-write table snapshot (`_orez_tx_<txID>_*`). Before this
8
+ * journal, the rollback bookkeeping lived only in the client's memory: a DO eviction or
8
9
  * deploy upgrade-kill mid-transaction persisted the partial writes forever
9
10
  * (the 2026-06 poisoned cdc changeLog incident — zero's catchup replays
10
11
  * begin→data→begin and the replicator wedges permanently).
@@ -12,13 +13,13 @@
12
13
  * the journal makes the snapshot bookkeeping durable and the commit point
13
14
  * atomic:
14
15
  *
15
- * - every snapshot is recorded in `_orez_tx_manifest` in the same atomic
16
- * /batch that creates the snapshot table.
17
- * - COMMIT = one atomic storage transaction that drops the snapshots and
16
+ * - every row-journal marker or fallback snapshot is recorded in
17
+ * `_orez_tx_manifest` atomically with its rollback state.
18
+ * - COMMIT = one atomic storage transaction that drops rollback state and
18
19
  * deletes the manifest rows (plus promoting pending tracked changes in
19
20
  * ZeroDO). a tx is committed if and only if its manifest rows are gone.
20
- * - ROLLBACK = one atomic storage transaction that restores every table
21
- * from its snapshot (reverse order, triggers detached during restore).
21
+ * - ROLLBACK = one atomic storage transaction that restores row before-images
22
+ * plus any fallback table snapshots (in reverse order).
22
23
  * - RECOVERY (`recoverTxJournal`) rolls back every manifest tx for an
23
24
  * owner whose process generation is known dead (e.g. the zero-cache
24
25
  * embed at boot, before it opens any pg session), so a partial tx is
@@ -40,12 +41,33 @@ export declare const TX_MANIFEST_DDL: string;
40
41
  export declare function commitTxJournal(sql: DurableSqlStorage, txID: string): void;
41
42
  /**
42
43
  * roll back a journaled transaction: restore every snapshotted table to its
43
- * pre-tx contents (reverse snapshot order), drop tables that did not exist at
44
+ * pre-tx contents (parents before children), drop tables that did not exist at
44
45
  * first write (null snapshot), then clean up. triggers on restored tables are
45
46
  * detached during the restore and re-created after, so restore DML doesn't
46
47
  * re-fire change tracking. must run inside an atomic storage transaction.
47
48
  */
48
49
  export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string): void;
50
+ /**
51
+ * Point a transaction's journal entry for `table` at a real table snapshot.
52
+ *
53
+ * DoBackend marks a parsed write row-journaled (an empty snapshot) before the
54
+ * DO has said whether it can capture that table. When CDC declines it, because
55
+ * the table has no stable row identity, that empty marker promises a row-level
56
+ * rollback nothing is able to perform. The owner therefore copies the table and
57
+ * rewrites the marker in the same storage transaction as the write, which puts
58
+ * the transaction back on the snapshot path recovery already knows how to
59
+ * replay. Safe to call repeatedly: only the first write to a table in a
60
+ * transaction takes the copy.
61
+ */
62
+ export declare function upgradeToTableSnapshot(sql: DurableSqlStorage, txID: string, table: string): void;
63
+ /**
64
+ * Snapshot every user table before a statement whose source table has a
65
+ * business trigger or is the parent of a cascading/SET foreign-key action.
66
+ * Those effects can reach unregistered tables, and SQLite's trigger staging
67
+ * order is not causal DML order. This conservative fallback is paid only by
68
+ * side-effecting writes and makes table snapshots authoritative for them.
69
+ */
70
+ export declare function snapshotSideEffectWriteTables(sql: DurableSqlStorage, txID: string, sourceTable: string): boolean;
49
71
  /**
50
72
  * roll back every journaled transaction belonging to `owner` (or every
51
73
  * transaction when owner is undefined), and sweep `_orez_tx_*` snapshot
@@ -58,5 +80,5 @@ export declare function rollbackTxJournal(sql: DurableSqlStorage, txID: string):
58
80
  * returns the recovered transaction ids so callers can clean up associated
59
81
  * state (e.g. pending tracked changes).
60
82
  */
61
- export declare function recoverTxJournal(sql: DurableSqlStorage, owner?: string): string[];
83
+ export declare function recoverTxJournal(sql: DurableSqlStorage, owner?: string, beforeRollback?: (txID: string) => void): string[];
62
84
  //# sourceMappingURL=tx-journal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx-journal.d.ts","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,eAAO,MAAM,eAAe,QAMV,CAAA;AA4ClB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAuB5E;AAmBD;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCjF"}
1
+ {"version":3,"file":"tx-journal.d.ts","sourceRoot":"","sources":["../../src/cf-do/tx-journal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAEvD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,eAAO,MAAM,eAAe,QAMV,CAAA;AAgFlB;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CA0C5E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACZ,IAAI,CAsCN;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAiCT;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,iBAAiB,EACtB,KAAK,CAAC,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACtC,MAAM,EAAE,CA0CV"}