orez 0.4.2 → 0.4.4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cf-patches.d.ts","sourceRoot":"","sources":["../../src/worker/cf-patches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA8BH,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,yBAAyB,GACxC,wBAAwB,CA+D1B"}
1
+ {"version":3,"file":"cf-patches.d.ts","sourceRoot":"","sources":["../../src/worker/cf-patches.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA8BH,MAAM,WAAW,yBAAyB;IACxC,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,yBAAyB,GACxC,wBAAwB,CAgE1B"}
@@ -63,6 +63,7 @@ export function prepareZeroCacheForCF(input) {
63
63
  patchWorkerEntrypoints(zcBase);
64
64
  patchProcesses(zcBase);
65
65
  patchWriteWorkerClient(zcBase);
66
+ patchInitialSyncBatchParams(zcBase);
66
67
  const parserAliases = patchPgsqlParserWasm(nodeModulesPath, outDir);
67
68
  const packageAliases = getPackageAliases(nodeModulesPath);
68
69
  return {
@@ -356,6 +357,50 @@ export { ThreadWriteWorkerClient, applyPragmas, serializeError };
356
357
  `);
357
358
  console.log('[orez] patched zero-cache write-worker-client.js (inline writer)');
358
359
  }
360
+ // zero-cache's initial sync prepares a fixed 50-row multi-row INSERT per
361
+ // copied table (insertSql + `,${valuesSql}`.repeat(49)). better-sqlite3
362
+ // accepts thousands of bound parameters, but Cloudflare DO SQLite caps a
363
+ // statement at 100 — the prepare alone throws "too many SQL variables" for
364
+ // any table wider than 2 columns, killing initial sync before the first row.
365
+ // derive the batch row count from the column count under a 96-param budget:
366
+ // identical inserts, smaller batches.
367
+ function patchInitialSyncBatchParams(zcBase) {
368
+ const initialSyncPath = resolve(zcBase, 'services', 'change-source', 'pg', 'initial-sync.js');
369
+ if (!existsSync(initialSyncPath)) {
370
+ console.warn('[orez] initial-sync.js not found at', initialSyncPath);
371
+ return;
372
+ }
373
+ let code = readFileSync(initialSyncPath, 'utf-8');
374
+ if (code.includes('orezRowsPerBatch'))
375
+ return;
376
+ // each pattern appears once in copyBinary and once in copyText
377
+ const replacements = [
378
+ [
379
+ 'const insertBatchStmt = to.prepare(insertSql + `,${valuesSql}`.repeat(49));',
380
+ 'const orezRowsPerBatch = Math.max(1, Math.floor(96 / Math.max(1, columnNames.length)));\n\tconst insertBatchStmt = to.prepare(insertSql + `,${valuesSql}`.repeat(orezRowsPerBatch - 1));',
381
+ ],
382
+ [
383
+ 'const valuesPerBatch = valuesPerRow * 50;',
384
+ 'const valuesPerBatch = valuesPerRow * orezRowsPerBatch;',
385
+ ],
386
+ [
387
+ 'for (; pendingRows > 50; pendingRows -= 50) insertBatchStmt.run(pendingValues.slice(l, l += valuesPerBatch));',
388
+ 'for (; pendingRows > orezRowsPerBatch; pendingRows -= orezRowsPerBatch) insertBatchStmt.run(pendingValues.slice(l, l += valuesPerBatch));',
389
+ ],
390
+ ];
391
+ for (const [from, to] of replacements) {
392
+ const count = code.split(from).length - 1;
393
+ if (count !== 2) {
394
+ console.warn(`[orez] expected 2 occurrences of initial-sync batch pattern, found ${count} — ` +
395
+ 'zero-cache version may have changed; skipping the DO bound-parameter batch patch. ' +
396
+ 'initial sync of tables with rows WILL fail on Cloudflare DOs until this is fixed.');
397
+ return;
398
+ }
399
+ code = code.replaceAll(from, to);
400
+ }
401
+ writeFileSync(initialSyncPath, code);
402
+ console.log('[orez] patched zero-cache initial-sync.js (DO bound-parameter cap batches)');
403
+ }
359
404
  function patchPgsqlParserWasm(nodeModulesPath, outDir) {
360
405
  const sourcePackagePath = findPackageRoot(nodeModulesPath, 'libpg-query');
361
406
  if (!sourcePackagePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"cf-patches.js","sourceRoot":"","sources":["../../src/worker/cf-patches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cf-patches.js","sourceRoot":"","sources":["../../src/worker/cf-patches.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/postgres-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,iBAAS,eAAe,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,OA+BzD;AAGD,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"postgres-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/postgres-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAgBH,iBAAS,eAAe,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,OAkCzD;AAGD,eAAe,eAAe,CAAA"}
@@ -39,9 +39,12 @@ function browserPostgres(urlOrOptions, options) {
39
39
  // disable auto-subscribe
40
40
  if (opts.no_subscribe === undefined)
41
41
  opts.no_subscribe = true;
42
- // limit pool size — too many concurrent connections overwhelm the MessagePort proxy
43
- // limit pool size for browser too many concurrent connections can overwhelm
44
- if (!opts.max || opts.max > 2)
42
+ // default pool size 2 — many concurrent connections can overwhelm the
43
+ // MessagePort proxy. an EXPLICIT max passes through: zero-cache's initial-sync
44
+ // copy pool sizes itself one-connection-per-table to work around the
45
+ // unresponsive-connection-after-COPY stream bug (same workaround zero ships
46
+ // for win32 node), and silently clamping it re-introduces the hang.
47
+ if (!opts.max)
45
48
  opts.max = 2;
46
49
  console.debug(`[postgres-browser] creating client db=${opts.database} repl=${!!opts.connection?.replication} fetch_types=${opts.fetch_types} max=${opts.max} keys=${Object.keys(opts).sort().join(',')}`);
47
50
  const client = postgres(opts);
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/postgres-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,+CAA+C;AAC/C,OAAO,QAAQ,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,eAAe,GAAG,GAAkC,EAAE;IAC1D,MAAM,EAAE,GAAI,UAAkB,CAAC,oBAAoB,CAAA;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACxD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,SAAS,eAAe,CAAC,YAAkB,EAAE,OAAa;IACxD,MAAM,IAAI,GACR,OAAO,YAAY,KAAK,QAAQ;QAC9B,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;QAC5C,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA;IAEjC,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAA;IAEpD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;YACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAA;YAChE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;YACvB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACf,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;IAChB,IAAI,CAAC,QAAQ,GAAI,UAAkB,CAAC,qBAAqB,IAAI,EAAE,CAAA;IAC/D,IAAI,CAAC,QAAQ,GAAI,UAAkB,CAAC,iBAAiB,IAAI,MAAM,CAAA;IAC/D,yBAAyB;IACzB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC7D,oFAAoF;IACpF,8EAA8E;IAC9E,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC;QAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IAE3C,OAAO,CAAC,KAAK,CACX,yCAAyC,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,gBAAgB,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3L,CAAA;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;AACxC,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"postgres-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/postgres-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,6EAA6E;AAC7E,2BAA2B;AAC3B,+CAA+C;AAC/C,OAAO,QAAQ,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAE1D,MAAM,eAAe,GAAG,GAAkC,EAAE;IAC1D,MAAM,EAAE,GAAI,UAAkB,CAAC,oBAAoB,CAAA;IACnD,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;IACxD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED,SAAS,eAAe,CAAC,YAAkB,EAAE,OAAa;IACxD,MAAM,IAAI,GACR,OAAO,YAAY,KAAK,QAAQ;QAC9B,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE;QAC5C,CAAC,CAAC,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA;IAEjC,IAAI,CAAC,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,CAAC,CAAA;IAEpD,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,CAAA;YACpE,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,UAAU,CAAA;YAChE,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;YACvB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACf,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,GAAG,GAAG,KAAK,CAAA;IAChB,IAAI,CAAC,QAAQ,GAAI,UAAkB,CAAC,qBAAqB,IAAI,EAAE,CAAA;IAC/D,IAAI,CAAC,QAAQ,GAAI,UAAkB,CAAC,iBAAiB,IAAI,MAAM,CAAA;IAC/D,yBAAyB;IACzB,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IAC7D,sEAAsE;IACtE,+EAA+E;IAC/E,qEAAqE;IACrE,4EAA4E;IAC5E,oEAAoE;IACpE,IAAI,CAAC,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IAE3B,OAAO,CAAC,KAAK,CACX,yCAAyC,IAAI,CAAC,QAAQ,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,gBAAgB,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC3L,CAAA;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAC7B,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA;AACxC,eAAe,eAAe,CAAA"}
@@ -39,8 +39,6 @@ declare class MessagePortSocket extends EventEmitter {
39
39
  private _destroyed;
40
40
  private _ended;
41
41
  private _readyState;
42
- private _paused;
43
- private _pauseBuffer;
44
42
  private _timeoutMs;
45
43
  private _timeoutTimer;
46
44
  writable: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-socket.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/postgres-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,2BAEzE;AAED;;;;GAIG;AACH,cAAM,iBAAkB,SAAQ,YAAY;IA4B9B,OAAO,CAAC,SAAS;IA3B7B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAA2C;IAG9D,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAe;IAGnC,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAA6C;IAGlE,QAAQ,UAAO;IACf,QAAQ,UAAO;IACf,SAAS,SAAI;IACb,YAAY,SAAI;IAGhB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;gBAKO,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IA8C1D,IAAI,SAAS,YAEZ;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,YAEb;IAED,IAAI,OAAO,YAEV;IAGD,KAAK,CACH,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,EAClC,QAAQ,CAAC,EAAE,GAAG,EACd,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO;IAuCV,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAqBnD,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK;IAqCnB,KAAK;IAKL,MAAM;IAYN,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ;IAWpC,OAAO,CAAC,aAAa;IAWrB,YAAY;IAGZ,UAAU;IAGV,GAAG;IAGH,KAAK;IAGL,IAAI;IACJ,MAAM;IAGN,OAAO;IAKP,OAAO;;;;;IAGP,IAAI,aAAa,WAEhB;IACD,IAAI,UAAU,WAEb;IACD,IAAI,YAAY,WAEf;IACD,IAAI,YAAY,WAEf;IACD,IAAI,SAAS,WAEZ;CACF"}
1
+ {"version":3,"file":"postgres-socket.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/postgres-socket.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAA;AAErC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,2BAEzE;AAED;;;;GAIG;AACH,cAAM,iBAAkB,SAAQ,YAAY;IAwB9B,OAAO,CAAC,SAAS;IAvB7B,OAAO,CAAC,IAAI,CAA2B;IACvC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,WAAW,CAA2C;IAG9D,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAA6C;IAGlE,QAAQ,UAAO;IACf,QAAQ,UAAO;IACf,SAAS,SAAI;IACb,YAAY,SAAI;IAGhB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;gBAKO,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI;IAyC1D,IAAI,SAAS,YAEZ;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,YAEb;IAED,IAAI,OAAO,YAEV;IAGD,KAAK,CACH,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,EAClC,QAAQ,CAAC,EAAE,GAAG,EACd,QAAQ,CAAC,EAAE,QAAQ,GAClB,OAAO;IAuCV,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,QAAQ;IAqBnD,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK;IA2CnB,KAAK;IAIL,MAAM;IAON,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ;IAWpC,OAAO,CAAC,aAAa;IAWrB,YAAY;IAGZ,UAAU;IAGV,GAAG;IAGH,KAAK;IAGL,IAAI;IACJ,MAAM;IAGN,OAAO;IAKP,OAAO;;;;;IAGP,IAAI,aAAa,WAEhB;IACD,IAAI,UAAU,WAEb;IACD,IAAI,YAAY,WAEf;IACD,IAAI,YAAY,WAEf;IACD,IAAI,SAAS,WAEZ;CACF"}
@@ -41,9 +41,6 @@ class MessagePortSocket extends EventEmitter {
41
41
  _destroyed = false;
42
42
  _ended = false;
43
43
  _readyState = 'opening';
44
- // pause/resume buffering for COPY protocol backpressure
45
- _paused = false;
46
- _pauseBuffer = [];
47
44
  // timeout tracking
48
45
  _timeoutMs = 0;
49
46
  _timeoutTimer = null;
@@ -80,10 +77,6 @@ class MessagePortSocket extends EventEmitter {
80
77
  return;
81
78
  this.bytesRead += buf.length;
82
79
  this._resetTimeout();
83
- if (this._paused) {
84
- this._pauseBuffer.push(buf);
85
- return;
86
- }
87
80
  this.emit('data', buf);
88
81
  };
89
82
  this.port.start();
@@ -181,8 +174,6 @@ class MessagePortSocket extends EventEmitter {
181
174
  clearTimeout(this._timeoutTimer);
182
175
  this._timeoutTimer = null;
183
176
  }
184
- // clear pause buffer
185
- this._pauseBuffer.length = 0;
186
177
  if (this.port) {
187
178
  // delay port.close() to allow pending messages (like Terminate/X)
188
179
  // to be delivered. closing immediately after postMessage loses
@@ -198,20 +189,23 @@ class MessagePortSocket extends EventEmitter {
198
189
  this.emit('close', !!err);
199
190
  return this;
200
191
  }
201
- // flow control — MessagePort doesn't natively support pause/resume,
202
- // so we buffer incoming messages when paused and flush on resume.
203
- // the postgres COPY protocol relies on this (CopyData calls socket.pause()
204
- // when stream.push() returns false).
192
+ // flow control — pause/resume are NO-OPS on this transport, deliberately.
193
+ // postgres pauses the socket on COPY backpressure (CopyData push() === false)
194
+ // and only resumes from the copy readable's read(). when the copy response's
195
+ // trailing protocol messages (CopyDone / CommandComplete / ReadyForQuery)
196
+ // arrive as separate port messages after a pause, the stream EOFs without
197
+ // ever calling read() again — nothing resumes, the tail stays gated, and the
198
+ // connection wedges for its next query (zero-cache initial sync hung on
199
+ // whichever table followed a large copy). on TCP the tail almost always
200
+ // shares a segment with copy data, so postgres parses it even while paused;
201
+ // a MessagePort has no segment coalescing, making the wedge deterministic.
202
+ // gating delivery also buys nothing here: an in-memory pipe has no transport
203
+ // buffer to relieve — the bytes occupy this isolate's heap whether they wait
204
+ // in the port queue or in the stream's buffer. so deliver everything.
205
205
  pause() {
206
- this._paused = true;
207
206
  return this;
208
207
  }
209
208
  resume() {
210
- this._paused = false;
211
- // flush buffered messages — exit if data handler re-pauses
212
- while (this._pauseBuffer.length && !this._paused) {
213
- this.emit('data', this._pauseBuffer.shift());
214
- }
215
209
  return this;
216
210
  }
217
211
  // timeout — emit 'timeout' after ms of inactivity (no reads or writes).
@@ -1 +1 @@
1
- {"version":3,"file":"postgres-socket.js","sourceRoot":"","sources":["../../../src/worker/shims/postgres-socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"postgres-socket.js","sourceRoot":"","sources":["../../../src/worker/shims/postgres-socket.ts"],"names":[],"mappings":"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"}
@@ -75,7 +75,9 @@ export declare class Database {
75
75
  get open(): boolean;
76
76
  get inTransaction(): boolean;
77
77
  _execTransactionAware(sql: string, sqlStorage: SqlStorageLike): SqlStorageCursor;
78
+ _cowTable(table: string): void;
78
79
  _rewriteForSnapshot(sql: string): string;
80
+ _cowForWrite(sql: string): void;
79
81
  /** prepare a statement */
80
82
  prepare<T = Record<string, SqlStorageValue>>(sql: string): Statement<T>;
81
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/sqlite.ts"],"names":[],"mappings":"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"}
@@ -271,6 +271,34 @@ function maybeZeroIntrospectionCursor(sqlStorage, sql, values) {
271
271
  function snapshotTableName(prefix, table) {
272
272
  return `${prefix}_${table.replace(/[^A-Za-z0-9_]/g, '_')}`;
273
273
  }
274
+ // copy one table's current rows into a snapshot table, recreating the original
275
+ // table's columns + indexes so reads against the copy use the same query plan
276
+ // (an index-less `CREATE TABLE AS SELECT` forces full scans on every read).
277
+ function copyTableToSnapshot(sql, source, snapshot) {
278
+ const createRow = execSql(sql, `SELECT sql FROM sqlite_master WHERE type = 'table' AND name = ?`, [source], 'snapshot.schema').toArray()[0];
279
+ const createSql = createRow ? String(createRow.sql ?? '') : '';
280
+ // rewrite the source table name in its own CREATE statement to the snapshot
281
+ // name, preserving column types/constraints, then copy rows + indexes.
282
+ const snapCreate = createSql
283
+ ? replaceIdentifierOutsideLiterals(createSql, source, snapshot)
284
+ : `CREATE TABLE ${quoteIdentifier(snapshot)} AS SELECT * FROM ${quoteIdentifier(source)}`;
285
+ execSql(sql, snapCreate, [], 'snapshot.create');
286
+ if (createSql) {
287
+ execSql(sql, `INSERT INTO ${quoteIdentifier(snapshot)} SELECT * FROM ${quoteIdentifier(source)}`, [], 'snapshot.fill');
288
+ const indexes = execSql(sql, `SELECT sql FROM sqlite_master WHERE type = 'index' AND tbl_name = ? AND sql IS NOT NULL`, [source], 'snapshot.index-list').toArray();
289
+ for (const idx of indexes) {
290
+ const idxSql = String(idx.sql ?? '');
291
+ if (!idxSql)
292
+ continue;
293
+ // index names must be unique; prefix them into the snapshot namespace too.
294
+ const rewritten = replaceIdentifierOutsideLiterals(idxSql, source, snapshot);
295
+ try {
296
+ execSql(sql, rewritten.replace(/CREATE\s+(UNIQUE\s+)?INDEX\s+("?)([A-Za-z_][\w.]*)\2/i, (_m, uniq = '', _q, name) => `CREATE ${uniq || ''}INDEX ${quoteIdentifier(`${snapshot}__${name}`)}`), [], 'snapshot.index');
297
+ }
298
+ catch { }
299
+ }
300
+ }
301
+ }
274
302
  function isSnapshotInternalTable(name) {
275
303
  return name.startsWith('_orez_snapshot_');
276
304
  }
@@ -311,6 +339,47 @@ function shouldSnapshotTable(name) {
311
339
  !name.startsWith('_cf_') &&
312
340
  !isSnapshotInternalTable(name));
313
341
  }
342
+ // -- copy-on-write snapshot registry --
343
+ //
344
+ // zero's view-syncer reader opens `BEGIN CONCURRENT` to hold a stable read view
345
+ // of the replica while the inline replica-writer applies changes concurrently
346
+ // (both run in the same DO isolate, the writer only at await boundaries). DO
347
+ // SQLite has no `BEGIN CONCURRENT` / read-snapshot primitive, so we emulate one.
348
+ //
349
+ // the original emulation eagerly copied EVERY table on snapshot open
350
+ // (`CREATE TABLE _snap AS SELECT * FROM t`) — O(replica) per reader per advance,
351
+ // and the copies had no indexes so every hydration read full-scanned them
352
+ // (measured: ~50x row-read amplification, minutes to hydrate a ~2400-row replica).
353
+ //
354
+ // instead we copy-on-write: a reader's snapshot starts EMPTY and reads live,
355
+ // fully-indexed tables. only when the replica-writer is about to mutate table X
356
+ // do we copy X (with its schema + indexes) into each open reader's snapshot so
357
+ // that reader keeps seeing X's pre-write rows. since writes are rare during a
358
+ // hydration, readers almost always hit the live indexed tables.
359
+ const openReaderSnapshots = new Set();
360
+ // parse the target table of a writer DML/DDL statement so the writer can
361
+ // copy-on-write that table for open readers before mutating it. matches the
362
+ // statement shapes zero's change-processor emits (INSERT OR REPLACE INTO,
363
+ // UPDATE, DELETE FROM, ALTER TABLE, DROP TABLE, CREATE TABLE/INDEX).
364
+ // only writes that mutate an EXISTING table need copy-on-write. CREATE TABLE
365
+ // makes a brand-new table no open reader snapshot ever referenced, so it is
366
+ // intentionally excluded (and copying a not-yet-existing table would throw).
367
+ const WRITE_TABLE_RE = /^\s*(?:INSERT(?:\s+OR\s+\w+)?\s+INTO|UPDATE(?:\s+OR\s+\w+)?|DELETE\s+FROM|ALTER\s+TABLE|DROP\s+TABLE(?:\s+IF\s+EXISTS)?)\s+("?)([A-Za-z_][\w.]*)\1/i;
368
+ function writeTargetTable(sql) {
369
+ const m = WRITE_TABLE_RE.exec(sql);
370
+ if (!m)
371
+ return undefined;
372
+ const name = m[2];
373
+ return shouldSnapshotTable(name) ? name : undefined;
374
+ }
375
+ // before the writer mutates `table`, freeze its current rows for every open
376
+ // reader snapshot that hasn't already copied it.
377
+ function cowOpenReadersBeforeWrite(table) {
378
+ if (openReaderSnapshots.size === 0)
379
+ return;
380
+ for (const reader of openReaderSnapshots)
381
+ reader._cowTable(table);
382
+ }
314
383
  function currentConnectionRole() {
315
384
  return globalThis.__orez_zero_sqlite_role === 'replica-writer'
316
385
  ? 'replica-writer'
@@ -493,6 +562,8 @@ export class Statement {
493
562
  const resolved = this.#resolveParams(params);
494
563
  const sql = this.#db._rewriteForSnapshot(resolved.sql);
495
564
  const values = resolved.values;
565
+ if (!isTxCmd)
566
+ this.#db._cowForWrite(sql);
496
567
  const cursor = isTxCmd && values.length === 0
497
568
  ? this.#db._execTransactionAware(sql, this.#sql)
498
569
  : execSql(this.#sql, sql, values, 'statement.run');
@@ -581,6 +652,7 @@ export class Database {
581
652
  #inTransaction;
582
653
  #snapshotTables;
583
654
  #snapshotPrefix;
655
+ #snapshotPrefixActive;
584
656
  #snapshotCounter;
585
657
  #connectionRole;
586
658
  constructor(sqlOrFilename, _options) {
@@ -603,6 +675,7 @@ export class Database {
603
675
  this.#inTransaction = false;
604
676
  this.#snapshotTables = null;
605
677
  this.#snapshotPrefix = createSnapshotPrefix();
678
+ this.#snapshotPrefixActive = this.#snapshotPrefix;
606
679
  this.#snapshotCounter = 0;
607
680
  this.#connectionRole = currentConnectionRole();
608
681
  activeSnapshotPrefixes.add(this.#snapshotPrefix);
@@ -695,24 +768,31 @@ export class Database {
695
768
  }
696
769
  return execSql(sqlStorage, sql, [], 'transaction.statement');
697
770
  }
771
+ // open a copy-on-write snapshot: start with NO copies (reads hit the live,
772
+ // indexed tables) and register so the replica-writer can freeze a table for
773
+ // this reader right before mutating it. see openReaderSnapshots above.
698
774
  #beginSnapshot() {
699
775
  this.#dropSnapshot();
700
- const prefix = `${this.#snapshotPrefix}_${++this.#snapshotCounter}`;
701
- const tables = new Map();
702
- const rows = execSql(this.#sql, `SELECT name FROM sqlite_master
703
- WHERE type = 'table'
704
- ORDER BY name`, [], 'snapshot.table-list').toArray();
705
- for (const row of rows) {
706
- const name = String(row.name ?? '');
707
- if (!shouldSnapshotTable(name))
708
- continue;
709
- const snapshot = snapshotTableName(prefix, name);
710
- execSql(this.#sql, `CREATE TABLE ${quoteIdentifier(snapshot)} AS SELECT * FROM ${quoteIdentifier(name)}`, [], 'snapshot.create');
711
- tables.set(name, snapshot);
712
- }
713
- this.#snapshotTables = tables;
776
+ this.#snapshotPrefixActive = `${this.#snapshotPrefix}_${++this.#snapshotCounter}`;
777
+ this.#snapshotTables = new Map();
778
+ openReaderSnapshots.add(this);
779
+ }
780
+ // copy `table`'s current rows into this reader's snapshot the first time the
781
+ // writer touches it while the snapshot is open. called by the writer via
782
+ // cowOpenReadersBeforeWrite() BEFORE the mutation is applied.
783
+ _cowTable(table) {
784
+ const tables = this.#snapshotTables;
785
+ if (!tables || tables.has(table) || !shouldSnapshotTable(table))
786
+ return;
787
+ const exists = execSql(this.#sql, `SELECT 1 FROM sqlite_master WHERE type = 'table' AND name = ?`, [table], 'snapshot.exists').toArray();
788
+ if (exists.length === 0)
789
+ return;
790
+ const snapshot = snapshotTableName(this.#snapshotPrefixActive, table);
791
+ copyTableToSnapshot(this.#sql, table, snapshot);
792
+ tables.set(table, snapshot);
714
793
  }
715
794
  #dropSnapshot() {
795
+ openReaderSnapshots.delete(this);
716
796
  const tables = this.#snapshotTables;
717
797
  if (!tables)
718
798
  return;
@@ -729,6 +809,17 @@ export class Database {
729
809
  return sql;
730
810
  return rewriteSQLTables(sql, this.#snapshotTables);
731
811
  }
812
+ // when the replica-writer is about to mutate a table, freeze it for any open
813
+ // reader snapshot first (copy-on-write). reader connections never mutate live
814
+ // tables, so this only fires from the writer's connection.
815
+ _cowForWrite(sql) {
816
+ if (this.#connectionRole !== 'replica-writer' || openReaderSnapshots.size === 0) {
817
+ return;
818
+ }
819
+ const table = writeTargetTable(sql);
820
+ if (table)
821
+ cowOpenReadersBeforeWrite(table);
822
+ }
732
823
  /** prepare a statement */
733
824
  prepare(sql) {
734
825
  if (!this.#open) {
@@ -855,7 +946,9 @@ export class Database {
855
946
  this._execTransactionAware(stmt, this.#sql);
856
947
  }
857
948
  else {
858
- execSql(this.#sql, this._rewriteForSnapshot(stmt), [], 'database.exec');
949
+ const rewritten = this._rewriteForSnapshot(stmt);
950
+ this._cowForWrite(rewritten);
951
+ execSql(this.#sql, rewritten, [], 'database.exec');
859
952
  }
860
953
  }
861
954
  return this;