orez 0.0.49 → 0.0.50

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.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAqOA,wBAAsB,YAAY,CAChC,EAAE,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,EAC/C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkOhD"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA4OA,wBAAsB,YAAY,CAChC,EAAE,EAAE;IAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAAE,EAC/C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA+OhD"}
package/dist/cli.js CHANGED
@@ -142,6 +142,13 @@ function shouldSkipStatement(stmt) {
142
142
  if (extName && UNSUPPORTED_EXTENSIONS.has(extName))
143
143
  return true;
144
144
  }
145
+ // skip CREATE/ALTER/DROP PUBLICATION — pglite doesn't support wal_level=logical
146
+ // internally, so CREATE PUBLICATION errors and can roll back the transaction.
147
+ // orez handles replication via its own change tracker, not publications.
148
+ if (nodeType === 'CreatePublicationStmt' || nodeType === 'AlterPublicationStmt')
149
+ return true;
150
+ if (nodeType === 'DropStmt' && node.removeType === 'OBJECT_PUBLICATION')
151
+ return true;
145
152
  }
146
153
  return false;
147
154
  }
@@ -249,9 +256,24 @@ export async function execDumpFile(db, filePath) {
249
256
  return;
250
257
  const colList = copyTarget.columns.length > 0 ? ` (${copyTarget.columns.join(', ')})` : '';
251
258
  const insert = `INSERT INTO ${copyTarget.table}${colList} VALUES ${copyRows.join(', ')}`;
252
- await db.exec(insert);
253
- executed += copyRows.length;
254
- batchCount += copyRows.length;
259
+ try {
260
+ await db.exec(insert);
261
+ executed += copyRows.length;
262
+ batchCount += copyRows.length;
263
+ }
264
+ catch (err) {
265
+ log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`);
266
+ skipped += copyRows.length;
267
+ // transaction is aborted, rollback and start fresh
268
+ if (inBatch) {
269
+ try {
270
+ await db.exec('ROLLBACK');
271
+ }
272
+ catch { }
273
+ inBatch = false;
274
+ batchCount = 0;
275
+ }
276
+ }
255
277
  copyRows = [];
256
278
  copyRowsBytes = 0;
257
279
  }
@@ -431,6 +453,36 @@ export async function execDumpFile(db, filePath) {
431
453
  }
432
454
  return { executed, skipped };
433
455
  }
456
+ // after restore, drop triggers whose backing functions no longer exist.
457
+ // this happens when a filtered dump includes triggers on public-schema tables
458
+ // that reference functions from excluded schemas.
459
+ async function cleanupBrokenTriggers(db) {
460
+ try {
461
+ const result = (await db.exec(`
462
+ SELECT tgname, relname, nspname, proname, pronamespace
463
+ FROM pg_trigger t
464
+ JOIN pg_class c ON c.oid = t.tgrelid
465
+ JOIN pg_namespace n ON n.oid = c.relnamespace
466
+ LEFT JOIN pg_proc p ON p.oid = t.tgfoid
467
+ WHERE NOT t.tgisinternal
468
+ AND n.nspname = 'public'
469
+ AND (p.oid IS NULL OR p.pronamespace != n.oid)
470
+ `));
471
+ const rows = result?.rows || result?.[0]?.rows || [];
472
+ for (const row of rows) {
473
+ const trigger = row.tgname;
474
+ const table = row.relname;
475
+ try {
476
+ await db.exec(`DROP TRIGGER IF EXISTS "${trigger}" ON "public"."${table}"`);
477
+ log.orez(`dropped broken trigger "${trigger}" on "${table}"`);
478
+ }
479
+ catch { }
480
+ }
481
+ }
482
+ catch {
483
+ // best-effort cleanup
484
+ }
485
+ }
434
486
  // try restoring via wire protocol (postgres running on given port)
435
487
  // returns true if connected and restored, false if connection unavailable
436
488
  async function tryWireRestore(opts) {
@@ -461,6 +513,8 @@ async function tryWireRestore(opts) {
461
513
  }
462
514
  const db = { exec: (query) => sql.unsafe(query) };
463
515
  const { executed, skipped } = await execDumpFile(db, opts.sqlFile);
516
+ await cleanupBrokenTriggers(db);
517
+ await db.exec('SET search_path TO public');
464
518
  log.orez(`restored ${opts.sqlFile} via wire protocol (${executed} statements, ${skipped} skipped)`);
465
519
  return true;
466
520
  }
@@ -488,6 +542,8 @@ async function directRestore(opts) {
488
542
  await db.exec('CREATE SCHEMA public');
489
543
  }
490
544
  const { executed, skipped } = await execDumpFile(db, opts.sqlFile);
545
+ await cleanupBrokenTriggers(db);
546
+ await db.exec('SET search_path TO public');
491
547
  log.orez(`restored ${opts.sqlFile} into ${dataPath} (${executed} statements, ${skipped} skipped)`);
492
548
  }
493
549
  catch (err) {
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEjE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,MAAM,SAAS,GAAG,aAAa,CAAC;IAC9B,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,oCAAoC;KAClD;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,MAAM;SAChB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iCAAiC;YAC9C,OAAO,EAAE,OAAO;SACjB;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAChC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;SAC1B,CAAC,CAAA;QAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACxB,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,MAAM,CAAC,KAAK,EAAE,CAAA;YACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,aAAa,GAAG,aAAa,CAAC;IAClC,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iDAAiD;KAC/D;IACD,IAAI,EAAE;QACJ,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,OAAO;SACjB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,oCAAoC;YACjD,KAAK,EAAE,GAAG;SACX;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;QACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;QAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAA;QACxE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,oCAAoC,CAAC,CAAA;QAErE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC,CAAA;QAC7D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,IAAI,EAA2C,CAAA;QAC/C,IAAI,CAAC;YACH,EAAE,GAAG,IAAI,MAAM,CAAC;gBACd,OAAO,EAAE,QAAQ;gBACjB,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;aAChC,CAAC,CAAA;YACF,MAAM,EAAE,CAAC,SAAS,CAAA;YAElB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YACrC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YAE7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;gBAC/B,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,KAAK,CACX,oEAAoE,CACrE,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;YAChD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAA;QACnB,CAAC;IACH,CAAC;CACF,CAAC,CAAA;AAEF,8DAA8D;AAC9D,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,oBAAoB;IACpB,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,SAAS;CACV,CAAC,CAAA;AAEF,wDAAwD;AACxD,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;IAChC,2DAA2D;IAC3D,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAEzC,IAAI,MAAM,CAAA;IACV,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA,CAAC,4CAA4C;IAC3D,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAEjC,iDAAiD;QACjD,IAAI,QAAQ,KAAK,iBAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB;YAAE,OAAO,IAAI,CAAA;QAEtF,mDAAmD;QACnD,IAAI,QAAQ,KAAK,qBAAqB,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;YAChF,OAAO,IAAI,CAAA;QAEb,iDAAiD;QACjD,IAAI,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,kBAAkB,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAA;YAC/C,IAAI,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;QACjE,CAAC;QAED,uDAAuD;QACvD,IAAI,QAAQ,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAA;YACzC,IAAI,OAAO,IAAI,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAA;QACjE,CAAC;QAED,gFAAgF;QAChF,8EAA8E;QAC9E,yEAAyE;QACzE,IAAI,QAAQ,KAAK,uBAAuB,IAAI,QAAQ,KAAK,sBAAsB;YAC7E,OAAO,IAAI,CAAA;QACb,IAAI,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,oBAAoB;YAAE,OAAO,IAAI,CAAA;IACtF,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,GAAG,GAAG,CAAA;AACtB,sEAAsE;AACtE,MAAM,mBAAmB,GAAG,CAAC,CAAA;AAE7B,wEAAwE;AACxE,iEAAiE;AACjE,yEAAyE;AACzE,SAAS,eAAe,CAAC,IAAY;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAA;QAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QACrD,OAAO,CACL,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,YAAY,CACpF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,kEAAkE;AAClE,SAAS,kBAAkB,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAA;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAA;QACvC,MAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,IAAI,MAAM,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG;YAC1C,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAA;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;QACtF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,oDAAoD;AACpD,0EAA0E;AAC1E,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,MAAM,CAAA;IAChC,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YACvB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAClB,MAAM,IAAI,IAAI,CAAA;gBACd,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,IAAI,CAAA;gBACd,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,IAAI,CAAA;gBACd,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,IAAI,CAAA;gBACd,CAAC,EAAE,CAAA;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAA;AAC/C,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,EAA+C,EAC/C,QAAgB;IAEhB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;IACpD,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;IAEzD,MAAM,EAAE,GAAG,eAAe,CAAC;QACzB,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC1C,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,IAAI,UAAU,GAAG,CAAC,CAAA;IAClB,IAAI,sBAAsB,GAAG,CAAC,CAAA;IAC9B,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,IAAI,SAAS,GAAkB,IAAI,CAAA,CAAC,uBAAuB;IAE3D,+EAA+E;IAC/E,IAAI,UAAU,GAAgD,IAAI,CAAA;IAClE,2EAA2E;IAC3E,MAAM,oBAAoB,GAAG,EAAE,CAAA;IAC/B,+EAA+E;IAC/E,MAAM,oBAAoB,GAAG,SAAS,CAAA;IACtC,0EAA0E;IAC1E,MAAM,aAAa,GAAG,UAAU,CAAA;IAChC,IAAI,QAAQ,GAAa,EAAE,CAAA;IAC3B,IAAI,aAAa,GAAG,CAAC,CAAA;IAErB,KAAK,UAAU,aAAa;QAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU;YAAE,OAAM;QAChD,MAAM,OAAO,GACX,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QAC5E,MAAM,MAAM,GAAG,eAAe,UAAU,CAAC,KAAK,GAAG,OAAO,WAAW,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;QACxF,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YACrB,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAA;YAC3B,UAAU,IAAI,QAAQ,CAAC,MAAM,CAAA;QAC/B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;YAC3D,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAA;YAC1B,mDAAmD;YACnD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,OAAO,GAAG,KAAK,CAAA;gBACf,UAAU,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;QACD,QAAQ,GAAG,EAAE,CAAA;QACb,aAAa,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,KAAK,UAAU,UAAU;QACvB,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,GAAG,KAAK,CAAA;YACf,sBAAsB,EAAE,CAAA;YACxB,IAAI,sBAAsB,IAAI,mBAAmB,EAAE,CAAC;gBAClD,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;gBAC3B,sBAAsB,GAAG,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC;QACD,UAAU,GAAG,CAAC,CAAA;IAChB,CAAC;IAED,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;QAC5B,sDAAsD;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC,OAAO,EAAE,CAAC;wBACb,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;wBACtB,OAAO,GAAG,IAAI,CAAA;oBAChB,CAAC;oBACD,MAAM,aAAa,EAAE,CAAA;gBACvB,CAAC;gBACD,UAAU,GAAG,IAAI,CAAA;gBACjB,SAAQ;YACV,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;YACvD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;YAEpC,kEAAkE;YAClE,IAAI,GAAG,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;gBAC/B,GAAG,CAAC,IAAI,CACN,2BAA2B,CAAC,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,UAAU,CAAC,KAAK,EAAE,CAC3F,CAAA;gBACD,OAAO,EAAE,CAAA;gBACT,SAAQ;YACV,CAAC;YAED,uEAAuE;YACvE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,GAAG,GAAG,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;gBAC7E,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACtB,OAAO,GAAG,IAAI,CAAA;gBAChB,CAAC;gBACD,MAAM,aAAa,EAAE,CAAA;gBACrB,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,UAAU,EAAE,CAAA;gBACpB,CAAC;YACH,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,aAAa,IAAI,GAAG,CAAC,MAAM,CAAA;YAC3B,IACE,QAAQ,CAAC,MAAM,IAAI,oBAAoB;gBACvC,aAAa,IAAI,oBAAoB,EACrC,CAAC;gBACD,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;oBACtB,OAAO,GAAG,IAAI,CAAA;gBAChB,CAAC;gBACD,MAAM,aAAa,EAAE,CAAA;gBACrB,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,UAAU,EAAE,CAAA;gBACpB,CAAC;YACH,CAAC;YACD,SAAQ;QACV,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,SAAQ;QAElE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;QAE/B,oCAAoC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;QACxD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC9B,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;gBACvB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAClB,CAAC;iBAAM,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9B,SAAS,GAAG,IAAI,CAAA;YAClB,CAAC;QACH,CAAC;QAED,2DAA2D;QAC3D,IAAI,SAAS;YAAE,SAAQ;QAEvB,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QAE3C,MAAM,IAAI,GAAG,GAAG,CAAA;QAChB,GAAG,GAAG,EAAE,CAAA;QAER,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAA;YACT,SAAQ;QACV,CAAC;QAED,qDAAqD;QACrD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACzC,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,GAAG,QAAQ,CAAA;YACrB,SAAQ;QACV,CAAC;QAED,kFAAkF;QAClF,IAAI,SAAS,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC3C,IAAI,QAAQ,GAAG,KAAK,CAAA;gBAEpB,8CAA8C;gBAC9C,IAAI,QAAQ,KAAK,kBAAkB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;oBACzB,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;gBACD,gDAAgD;gBAChD,IAAI,QAAQ,KAAK,oBAAoB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;oBACnB,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;gBACD,uCAAuC;gBACvC,IAAI,QAAQ,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;oBACnB,QAAQ,GAAG,IAAI,CAAA;gBACjB,CAAC;gBAED,IAAI,QAAQ;oBAAE,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;QAED,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/B,0CAA0C;YAC1C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACtB,OAAO,GAAG,IAAI,CAAA;YAChB,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACxB,QAAQ,EAAE,CAAA;gBACV,UAAU,EAAE,CAAA;gBACZ,IAAI,UAAU,IAAI,UAAU,EAAE,CAAC;oBAC7B,MAAM,UAAU,EAAE,CAAA;gBACpB,CAAC;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,oEAAoE;gBACpE,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC3D,OAAO,EAAE,CAAA;gBACT,mDAAmD;gBACnD,IAAI,CAAC;oBACH,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;gBAC3B,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBACV,OAAO,GAAG,KAAK,CAAA;gBACf,UAAU,GAAG,CAAC,CAAA;YAChB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,UAAU,EAAE,CAAA;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACxB,QAAQ,EAAE,CAAA;YACZ,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,kEAAkE;gBAClE,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC3D,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,MAAM,UAAU,EAAE,CAAA;IAClB,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QACf,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClB,QAAQ,EAAE,CAAA;QACZ,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;AAC9B,CAAC;AAED,wEAAwE;AACxE,8EAA8E;AAC9E,kDAAkD;AAClD,KAAK,UAAU,qBAAqB,CAAC,EAA6C;IAChF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;;;;;;;;;KAS7B,CAAC,CAAQ,CAAA;QAEV,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAA;YAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAA;YACzB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,IAAI,CAAC,2BAA2B,OAAO,kBAAkB,KAAK,GAAG,CAAC,CAAA;gBAC3E,GAAG,CAAC,IAAI,CAAC,2BAA2B,OAAO,SAAS,KAAK,GAAG,CAAC,CAAA;YAC/D,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;IACxB,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,0EAA0E;AAC1E,KAAK,UAAU,cAAc,CAAC,IAM7B;IACC,MAAM,QAAQ,GAAG,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAA;IACnD,MAAM,GAAG,GAAG,QAAQ,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,QAAQ,EAAE,UAAU;QACpB,eAAe,EAAE,CAAC;QAClB,GAAG,EAAE,CAAC,EAAE,mDAAmD;KAC5D,CAAC,CAAA;IAEF,IAAI,CAAC;QACH,MAAM,GAAG,CAAA,UAAU,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC7C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,6DAA6D;IAC7D,GAAG,CAAC,IAAI,CAAC,uCAAuC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAC5D,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;YACjD,MAAM,GAAG,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAA;YAC9C,MAAM,GAAG,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAA;QAC1C,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,KAAa,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAqB,EAAE,CAAA;QAC7E,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,qBAAqB,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAC1C,GAAG,CAAC,IAAI,CACN,YAAY,IAAI,CAAC,OAAO,uBAAuB,QAAQ,gBAAgB,OAAO,WAAW,CAC1F,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;YAAS,CAAC;QACT,MAAM,GAAG,CAAC,GAAG,EAAE,CAAA;IACjB,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,KAAK,UAAU,aAAa,CAAC,IAI5B;IACC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAA;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAA;IAC9D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,sCAAsC,CAAC,CAAA;IAExE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAA;IAEzD,IAAI,EAA2C,CAAA;IAC/C,IAAI,CAAC;QACH,EAAE,GAAG,IAAI,MAAM,CAAC;YACd,OAAO,EAAE,QAAQ;YACjB,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YAC/B,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QACF,MAAM,EAAE,CAAC,SAAS,CAAA;QAElB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;YACjD,MAAM,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;YAC3C,MAAM,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAClE,MAAM,qBAAqB,CAAC,EAAE,CAAC,CAAA;QAC/B,MAAM,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAC1C,GAAG,CAAC,IAAI,CACN,YAAY,IAAI,CAAC,OAAO,SAAS,QAAQ,KAAK,QAAQ,gBAAgB,OAAO,WAAW,CACzF,CAAA;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACX,uEAAuE,CACxE,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,EAAE,KAAK,EAAE,CAAA;IACnB,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,aAAa,CAAC;IACrC,IAAI,EAAE;QACJ,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sDAAsD;KACpE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE;YACJ,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,qBAAqB;YAClC,QAAQ,EAAE,IAAI;SACf;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,OAAO;SACjB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kDAAkD;YAC/D,OAAO,EAAE,KAAK;SACf;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,MAAM;SAChB;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,MAAM;SAChB;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,UAAU;SACpB;QACD,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,+DAA+D;YAC5E,OAAO,EAAE,KAAK;SACf;KACF;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,UAAU,EAAE,CAAA,CAAC,+BAA+B;QAElD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAA;QACzB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAA;YAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC;oBACpC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC7B,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACrB,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC;oBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO;iBACR,CAAC,CAAA;gBACF,IAAI,QAAQ;oBAAE,OAAM;gBACpB,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAA;YACtE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,+DAA+D;gBAC/D,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,CAAC,CAAA;gBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;QAED,MAAM,aAAa,CAAC;YAClB,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO;SACR,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA;AAEF,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,8CAA8C;KAC5D;IACD,IAAI,EAAE;QACJ,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,MAAM;SAChB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,MAAM;SAChB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,OAAO;SACjB;QACD,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,EAAE;SACZ;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,EAAE;SACZ;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,iBAAiB;YAC9B,OAAO,EAAE,MAAM;SAChB;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qBAAqB;YAClC,OAAO,EAAE,UAAU;SACpB;QACD,iBAAiB,EAAE;YACjB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,0CAA0C;YACvD,OAAO,EAAE,KAAK;SACf;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,qDAAqD;SACnE;QACD,EAAE,EAAE;YACF,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,yCAAyC;YACtD,OAAO,EAAE,KAAK;SACf;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,MAAM;SAChB;QACD,qBAAqB,EAAE;YACrB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,kEAAkE;YAC/E,OAAO,EAAE,IAAI;SACd;QACD,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,mEAAmE;YAChF,OAAO,EAAE,EAAE;SACZ;QACD,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,8CAA8C;YAC3D,OAAO,EAAE,EAAE;SACZ;KACF;IACD,WAAW,EAAE;QACX,EAAE,EAAE,SAAS;QACb,OAAO,EAAE,aAAa;QACtB,UAAU,EAAE,gBAAgB;KAC7B;IACD,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,aAAa,CAAC;YAC3C,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;YACzB,aAAa,EAAE,IAAI,CAAC,UAAU;YAC9B,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC;YACvB,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC;YAC/B,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;YACtC,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC;YAC9C,QAAQ,EAAG,IAAI,CAAC,WAAW,CAAyC,IAAI,SAAS;YACjF,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;SAC/B,CAAC,CAAA;QAEF,IAAI,QAAQ,GAAsC,IAAI,CAAA;QACtD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;YACtD,QAAQ,GAAG,MAAM,YAAY,CAAC;gBAC5B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC7B,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC;aAC1B,CAAC,CAAA;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACjB,GAAG,CAAC,IAAI,CACN,oBAAoB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,UAAU,cAAc,MAAM,CAAC,MAAM,WAAW,CAC7F,CAAA;QACD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;QACjD,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,uBAAuB,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAA;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;gBACtC,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;oBACnC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;iBACxC;aACF,CAAC,CAAA;YACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAChC,GAAG,CAAC,IAAI,CAAC,uCAAuC,IAAI,EAAE,CAAC,CAAA;gBACzD,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,QAAQ,EAAE,KAAK,EAAE,CAAA;YACjB,MAAM,IAAI,EAAE,CAAA;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,QAAQ,EAAE,KAAK,EAAE,CAAA;YACjB,MAAM,IAAI,EAAE,CAAA;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC;CACF,CAAC,CAAA;AAEF,OAAO,CAAC,IAAI,CAAC,CAAA"}
@@ -17,5 +17,6 @@ export declare function installChangeTracking(db: PGlite): Promise<void>;
17
17
  */
18
18
  export declare function installTriggersOnShardTables(db: PGlite): Promise<void>;
19
19
  export declare function getChangesSince(db: PGlite, watermark: number, limit?: number): Promise<ChangeRecord[]>;
20
+ export declare function purgeConsumedChanges(db: PGlite, watermark: number): Promise<number>;
20
21
  export declare function getCurrentWatermark(db: PGlite): Promise<number>;
21
22
  //# sourceMappingURL=change-tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDrE;AAuED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC5E;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,SAAO,GACX,OAAO,CAAC,YAAY,EAAE,CAAC,CAMzB;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOrE"}
1
+ {"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,EAAE,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyDrE;AAuED;;;;;GAKG;AACH,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD5E;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,EACjB,KAAK,SAAO,GACX,OAAO,CAAC,YAAY,EAAE,CAAC,CAMzB;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,MAAM,EACV,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOrE"}
@@ -123,9 +123,24 @@ export async function installTriggersOnShardTables(db) {
123
123
  AND nspname NOT LIKE '%/%'`);
124
124
  if (result.rows.length === 0)
125
125
  return;
126
+ // only track `clients` — that's the table zero-cache expects in the
127
+ // replication stream (needed for .server promise resolution). other shard
128
+ // tables like `replicas` are zero-cache internal state and streaming them
129
+ // back causes "Unknown table" crashes in zero-cache's change-processor.
126
130
  let count = 0;
127
131
  for (const { nspname } of result.rows) {
128
- const tables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1`, [nspname]);
132
+ // remove stale triggers from non-clients tables (from previous versions)
133
+ const stale = await db.query(`SELECT DISTINCT event_object_table FROM information_schema.triggers
134
+ WHERE trigger_name = '_zero_change_trigger'
135
+ AND event_object_schema = $1
136
+ AND event_object_table != 'clients'`, [nspname]);
137
+ for (const { event_object_table } of stale.rows) {
138
+ const qs = quoteIdent(nspname);
139
+ const qt = quoteIdent(event_object_table);
140
+ await db.exec(`DROP TRIGGER IF EXISTS _zero_change_trigger ON ${qs}.${qt}`);
141
+ log.debug.pglite(`removed stale shard trigger from ${nspname}.${event_object_table}`);
142
+ }
143
+ const tables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = 'clients'`, [nspname]);
129
144
  for (const { tablename } of tables.rows) {
130
145
  const quotedSchema = quoteIdent(nspname);
131
146
  const quotedTable = quoteIdent(tablename);
@@ -146,6 +161,10 @@ export async function getChangesSince(db, watermark, limit = 1000) {
146
161
  const result = await db.query('SELECT * FROM public._zero_changes WHERE watermark > $1 ORDER BY watermark LIMIT $2', [watermark, limit]);
147
162
  return result.rows;
148
163
  }
164
+ export async function purgeConsumedChanges(db, watermark) {
165
+ const result = await db.query('WITH deleted AS (DELETE FROM public._zero_changes WHERE watermark <= $1 RETURNING 1) SELECT count(*)::text AS count FROM deleted', [watermark]);
166
+ return Number(result.rows[0]?.count || 0);
167
+ }
149
168
  export async function getCurrentWatermark(db) {
150
169
  const result = await db.query('SELECT last_value, is_called FROM public._zero_watermark');
151
170
  const { last_value, is_called } = result.rows[0];
@@ -1 +1 @@
1
- {"version":3,"file":"change-tracker.js","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"change-tracker.js","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/replication/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;CAC9B;AA4HD,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAqBvD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA8D5B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,iBAAiB,EACzB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,IAAI,CAAC,CAqPf;AA2FD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../src/replication/handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAElD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;CAC9B;AA4HD,iBAAS,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAqBvD;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA8D5B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,iBAAiB,EACzB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,KAAK,GACX,OAAO,CAAC,IAAI,CAAC,CA4Sf;AA2FD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -6,7 +6,7 @@
6
6
  * it's talking to a real postgres with logical replication.
7
7
  */
8
8
  import { log } from '../log.js';
9
- import { getChangesSince, getCurrentWatermark, installTriggersOnShardTables, } from './change-tracker.js';
9
+ import { getChangesSince, getCurrentWatermark, purgeConsumedChanges, installTriggersOnShardTables, } from './change-tracker.js';
10
10
  import { encodeBegin, encodeCommit, encodeRelation, encodeInsert, encodeUpdate, encodeDelete, encodeKeepalive, wrapXLogData, wrapCopyData, getTableOid, inferColumns, } from './pgoutput-encoder.js';
11
11
  // current lsn counter
12
12
  let currentLsn = 0x1000000n;
@@ -257,7 +257,7 @@ export async function handleStartReplication(query, writer, db, mutex) {
257
257
  for (const schema of relevantSchemas) {
258
258
  if (schema === 'public')
259
259
  continue;
260
- const shardTables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1`, [schema]);
260
+ const shardTables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = 'clients'`, [schema]);
261
261
  for (const { tablename } of shardTables.rows) {
262
262
  const quotedSchema = '"' + schema.replace(/"/g, '""') + '"';
263
263
  const quotedTable = '"' + tablename.replace(/"/g, '""') + '"';
@@ -353,28 +353,83 @@ export async function handleStartReplication(query, writer, db, mutex) {
353
353
  const sentRelations = new Set();
354
354
  let txCounter = 1;
355
355
  // polling + notification loop
356
- const pollInterval = 500;
356
+ // adaptive: poll fast when catching up, slow when idle
357
+ const pollIntervalIdle = 500;
358
+ const pollIntervalCatchUp = 20;
359
+ const batchSize = 2000;
360
+ const purgeEveryN = 10;
361
+ const shardRescanEveryN = 20;
357
362
  let running = true;
363
+ let pollsSincePurge = 0;
364
+ let pollsSinceShardRescan = 0;
358
365
  const poll = async () => {
359
366
  while (running) {
360
367
  try {
368
+ // periodically re-scan for new shard schemas (e.g. chat_0 created by zero-cache)
369
+ pollsSinceShardRescan++;
370
+ if (pollsSinceShardRescan >= shardRescanEveryN) {
371
+ pollsSinceShardRescan = 0;
372
+ await mutex.acquire();
373
+ try {
374
+ await installTriggersOnShardTables(db);
375
+ }
376
+ finally {
377
+ mutex.release();
378
+ }
379
+ }
361
380
  // acquire mutex to avoid conflicting with proxy connections
362
381
  await mutex.acquire();
363
382
  let changes;
364
383
  try {
365
- changes = await getChangesSince(db, lastWatermark, 100);
384
+ changes = await getChangesSince(db, lastWatermark, batchSize);
366
385
  }
367
386
  finally {
368
387
  mutex.release();
369
388
  }
370
389
  if (changes.length > 0) {
390
+ // filter out shard tables that zero-cache doesn't expect.
391
+ // only `clients` is needed (for .server promise resolution).
392
+ // other shard tables (replicas, mutations) crash zero-cache
393
+ // with "Unknown table" in change-processor.
394
+ const batchEnd = changes[changes.length - 1].watermark;
395
+ changes = changes.filter((c) => {
396
+ const dot = c.table_name.indexOf('.');
397
+ if (dot === -1)
398
+ return true;
399
+ const schema = c.table_name.substring(0, dot);
400
+ if (schema === 'public')
401
+ return true;
402
+ const table = c.table_name.substring(dot + 1);
403
+ return table === 'clients';
404
+ });
405
+ if (changes.length === 0) {
406
+ lastWatermark = batchEnd;
407
+ continue;
408
+ }
371
409
  await streamChanges(changes, writer, sentRelations, txCounter++, tableKeyColumns, excludedColumns, columnTypeOids);
372
- lastWatermark = changes[changes.length - 1].watermark;
410
+ lastWatermark = batchEnd;
411
+ // purge consumed changes periodically to free wasm memory
412
+ pollsSincePurge++;
413
+ if (pollsSincePurge >= purgeEveryN) {
414
+ pollsSincePurge = 0;
415
+ await mutex.acquire();
416
+ try {
417
+ const purged = await purgeConsumedChanges(db, lastWatermark);
418
+ if (purged > 0) {
419
+ log.debug.proxy(`purged ${purged} consumed changes`);
420
+ }
421
+ }
422
+ finally {
423
+ mutex.release();
424
+ }
425
+ }
373
426
  }
374
427
  // send keepalive
375
428
  const ts = nowMicros();
376
429
  writer.write(encodeKeepalive(currentLsn, ts, false));
377
- await new Promise((resolve) => setTimeout(resolve, pollInterval));
430
+ // if we got a full batch, there's likely more - poll fast
431
+ const delay = changes.length >= batchSize ? pollIntervalCatchUp : pollIntervalIdle;
432
+ await new Promise((resolve) => setTimeout(resolve, delay));
378
433
  }
379
434
  catch (err) {
380
435
  const msg = err instanceof Error ? err.message : String(err);
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/replication/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../src/replication/handler.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orez",
3
- "version": "0.0.49",
3
+ "version": "0.0.50",
4
4
  "description": "PGlite-powered zero-sync development backend. No Docker required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -48,7 +48,7 @@
48
48
  "@electric-sql/pglite": "^0.2.17",
49
49
  "@electric-sql/pglite-tools": "0.2.4",
50
50
  "@rocicorp/zero": ">=0.1.0",
51
- "bedrock-sqlite": "0.0.42",
51
+ "bedrock-sqlite": "0.0.43",
52
52
  "citty": "^0.2.0",
53
53
  "pg-gateway": "0.3.0-beta.4",
54
54
  "pgsql-parser": "^17.9.11",
package/src/cli.ts CHANGED
@@ -152,6 +152,13 @@ function shouldSkipStatement(stmt: string): boolean {
152
152
  const extName = node.object?.String?.sval
153
153
  if (extName && UNSUPPORTED_EXTENSIONS.has(extName)) return true
154
154
  }
155
+
156
+ // skip CREATE/ALTER/DROP PUBLICATION — pglite doesn't support wal_level=logical
157
+ // internally, so CREATE PUBLICATION errors and can roll back the transaction.
158
+ // orez handles replication via its own change tracker, not publications.
159
+ if (nodeType === 'CreatePublicationStmt' || nodeType === 'AlterPublicationStmt')
160
+ return true
161
+ if (nodeType === 'DropStmt' && node.removeType === 'OBJECT_PUBLICATION') return true
155
162
  }
156
163
 
157
164
  return false
@@ -263,9 +270,22 @@ export async function execDumpFile(
263
270
  const colList =
264
271
  copyTarget.columns.length > 0 ? ` (${copyTarget.columns.join(', ')})` : ''
265
272
  const insert = `INSERT INTO ${copyTarget.table}${colList} VALUES ${copyRows.join(', ')}`
266
- await db.exec(insert)
267
- executed += copyRows.length
268
- batchCount += copyRows.length
273
+ try {
274
+ await db.exec(insert)
275
+ executed += copyRows.length
276
+ batchCount += copyRows.length
277
+ } catch (err: any) {
278
+ log.orez(`warning: ${err?.message?.split('\n')[0] ?? err}`)
279
+ skipped += copyRows.length
280
+ // transaction is aborted, rollback and start fresh
281
+ if (inBatch) {
282
+ try {
283
+ await db.exec('ROLLBACK')
284
+ } catch {}
285
+ inBatch = false
286
+ batchCount = 0
287
+ }
288
+ }
269
289
  copyRows = []
270
290
  copyRowsBytes = 0
271
291
  }
@@ -458,6 +478,36 @@ export async function execDumpFile(
458
478
  return { executed, skipped }
459
479
  }
460
480
 
481
+ // after restore, drop triggers whose backing functions no longer exist.
482
+ // this happens when a filtered dump includes triggers on public-schema tables
483
+ // that reference functions from excluded schemas.
484
+ async function cleanupBrokenTriggers(db: { exec: (q: string) => Promise<unknown> }) {
485
+ try {
486
+ const result = (await db.exec(`
487
+ SELECT tgname, relname, nspname, proname, pronamespace
488
+ FROM pg_trigger t
489
+ JOIN pg_class c ON c.oid = t.tgrelid
490
+ JOIN pg_namespace n ON n.oid = c.relnamespace
491
+ LEFT JOIN pg_proc p ON p.oid = t.tgfoid
492
+ WHERE NOT t.tgisinternal
493
+ AND n.nspname = 'public'
494
+ AND (p.oid IS NULL OR p.pronamespace != n.oid)
495
+ `)) as any
496
+
497
+ const rows = result?.rows || result?.[0]?.rows || []
498
+ for (const row of rows) {
499
+ const trigger = row.tgname
500
+ const table = row.relname
501
+ try {
502
+ await db.exec(`DROP TRIGGER IF EXISTS "${trigger}" ON "public"."${table}"`)
503
+ log.orez(`dropped broken trigger "${trigger}" on "${table}"`)
504
+ } catch {}
505
+ }
506
+ } catch {
507
+ // best-effort cleanup
508
+ }
509
+ }
510
+
461
511
  // try restoring via wire protocol (postgres running on given port)
462
512
  // returns true if connected and restored, false if connection unavailable
463
513
  async function tryWireRestore(opts: {
@@ -496,6 +546,8 @@ async function tryWireRestore(opts: {
496
546
 
497
547
  const db = { exec: (query: string) => sql.unsafe(query) as Promise<unknown> }
498
548
  const { executed, skipped } = await execDumpFile(db, opts.sqlFile)
549
+ await cleanupBrokenTriggers(db)
550
+ await db.exec('SET search_path TO public')
499
551
  log.orez(
500
552
  `restored ${opts.sqlFile} via wire protocol (${executed} statements, ${skipped} skipped)`
501
553
  )
@@ -533,6 +585,8 @@ async function directRestore(opts: {
533
585
  }
534
586
 
535
587
  const { executed, skipped } = await execDumpFile(db, opts.sqlFile)
588
+ await cleanupBrokenTriggers(db)
589
+ await db.exec('SET search_path TO public')
536
590
  log.orez(
537
591
  `restored ${opts.sqlFile} into ${dataPath} (${executed} statements, ${skipped} skipped)`
538
592
  )
@@ -3,6 +3,8 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest'
3
3
 
4
4
  import {
5
5
  installChangeTracking,
6
+ installTriggersOnShardTables,
7
+ purgeConsumedChanges,
6
8
  getChangesSince,
7
9
  getCurrentWatermark,
8
10
  } from './change-tracker'
@@ -184,3 +186,115 @@ describe('change-tracker', () => {
184
186
  expect(special[0].row_data).toMatchObject({ val: 'works' })
185
187
  })
186
188
  })
189
+
190
+ describe('shard table tracking', () => {
191
+ let db: PGlite
192
+
193
+ beforeEach(async () => {
194
+ db = new PGlite()
195
+ await db.waitReady
196
+ await installChangeTracking(db)
197
+ })
198
+
199
+ afterEach(async () => {
200
+ await db.close()
201
+ })
202
+
203
+ it('only tracks clients table in shard schemas, not replicas/mutations', async () => {
204
+ // zero-cache creates shard schemas like chat_0 with clients, replicas, mutations.
205
+ // only clients needs tracking — replicas/mutations changes crash zero-cache
206
+ // with "Unknown table chat_0.replicas" because they aren't in zero's schema.
207
+ await db.exec(`
208
+ CREATE SCHEMA chat_0;
209
+ CREATE TABLE chat_0.clients (
210
+ "clientGroupID" TEXT NOT NULL,
211
+ "clientID" TEXT NOT NULL,
212
+ "lastMutationID" BIGINT,
213
+ "userID" TEXT,
214
+ PRIMARY KEY ("clientGroupID", "clientID")
215
+ );
216
+ CREATE TABLE chat_0.replicas (
217
+ id TEXT PRIMARY KEY,
218
+ version TEXT,
219
+ cookie TEXT
220
+ );
221
+ CREATE TABLE chat_0.mutations (
222
+ id TEXT PRIMARY KEY,
223
+ "clientID" TEXT,
224
+ name TEXT,
225
+ args JSONB
226
+ );
227
+ `)
228
+
229
+ await installTriggersOnShardTables(db)
230
+
231
+ // insert into all three tables
232
+ await db.exec(
233
+ `INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 1)`
234
+ )
235
+ await db.exec(`INSERT INTO chat_0.replicas (id, version) VALUES ('r1', 'v1')`)
236
+ await db.exec(
237
+ `INSERT INTO chat_0.mutations (id, "clientID", name) VALUES ('m1', 'c1', 'sendMessage')`
238
+ )
239
+
240
+ const changes = await getChangesSince(db, 0)
241
+ const tables = changes.map((c) => c.table_name)
242
+
243
+ // only clients should be tracked
244
+ expect(tables).toContain('chat_0.clients')
245
+ expect(tables).not.toContain('chat_0.replicas')
246
+ expect(tables).not.toContain('chat_0.mutations')
247
+ })
248
+
249
+ it('purges consumed changes to prevent OOM', async () => {
250
+ // _zero_changes accumulates forever in 0.0.37. with wasm pglite,
251
+ // this eventually causes OOM. we need a purge mechanism.
252
+ await db.exec(`
253
+ CREATE TABLE public.items (id SERIAL PRIMARY KEY, val TEXT)
254
+ `)
255
+ await installChangeTracking(db)
256
+
257
+ // insert some data
258
+ for (let i = 0; i < 10; i++) {
259
+ await db.exec(`INSERT INTO public.items (val) VALUES ('item${i}')`)
260
+ }
261
+
262
+ const changes = await getChangesSince(db, 0)
263
+ expect(changes).toHaveLength(10)
264
+ const lastWatermark = changes[changes.length - 1].watermark
265
+
266
+ // purge consumed changes up to the watermark we've processed
267
+ await purgeConsumedChanges(db, lastWatermark)
268
+
269
+ // after purge, no changes before that watermark should remain
270
+ const remaining = await getChangesSince(db, 0)
271
+ expect(remaining).toHaveLength(0)
272
+ })
273
+
274
+ it('tracks tables created after initial installChangeTracking', async () => {
275
+ // simulate zero-cache creating shard schema AFTER replication starts.
276
+ // in production, zero-cache creates chat_0 schema + clients table
277
+ // after the replication connection is already established.
278
+ // the change tracker must pick up these new tables.
279
+ await db.exec(`
280
+ CREATE SCHEMA chat_0;
281
+ CREATE TABLE chat_0.clients (
282
+ "clientGroupID" TEXT NOT NULL,
283
+ "clientID" TEXT NOT NULL,
284
+ "lastMutationID" BIGINT,
285
+ PRIMARY KEY ("clientGroupID", "clientID")
286
+ );
287
+ `)
288
+
289
+ // re-running installTriggersOnShardTables should pick up new tables
290
+ await installTriggersOnShardTables(db)
291
+
292
+ await db.exec(
293
+ `INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 1)`
294
+ )
295
+
296
+ const changes = await getChangesSince(db, 0)
297
+ expect(changes).toHaveLength(1)
298
+ expect(changes[0].table_name).toBe('chat_0.clients')
299
+ })
300
+ })
@@ -158,10 +158,31 @@ export async function installTriggersOnShardTables(db: PGlite): Promise<void> {
158
158
 
159
159
  if (result.rows.length === 0) return
160
160
 
161
+ // only track `clients` — that's the table zero-cache expects in the
162
+ // replication stream (needed for .server promise resolution). other shard
163
+ // tables like `replicas` are zero-cache internal state and streaming them
164
+ // back causes "Unknown table" crashes in zero-cache's change-processor.
161
165
  let count = 0
162
166
  for (const { nspname } of result.rows) {
167
+ // remove stale triggers from non-clients tables (from previous versions)
168
+ const stale = await db.query<{ event_object_table: string }>(
169
+ `SELECT DISTINCT event_object_table FROM information_schema.triggers
170
+ WHERE trigger_name = '_zero_change_trigger'
171
+ AND event_object_schema = $1
172
+ AND event_object_table != 'clients'`,
173
+ [nspname]
174
+ )
175
+ for (const { event_object_table } of stale.rows) {
176
+ const qs = quoteIdent(nspname)
177
+ const qt = quoteIdent(event_object_table)
178
+ await db.exec(`DROP TRIGGER IF EXISTS _zero_change_trigger ON ${qs}.${qt}`)
179
+ log.debug.pglite(
180
+ `removed stale shard trigger from ${nspname}.${event_object_table}`
181
+ )
182
+ }
183
+
163
184
  const tables = await db.query<{ tablename: string }>(
164
- `SELECT tablename FROM pg_tables WHERE schemaname = $1`,
185
+ `SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = 'clients'`,
165
186
  [nspname]
166
187
  )
167
188
 
@@ -195,6 +216,17 @@ export async function getChangesSince(
195
216
  return result.rows
196
217
  }
197
218
 
219
+ export async function purgeConsumedChanges(
220
+ db: PGlite,
221
+ watermark: number
222
+ ): Promise<number> {
223
+ const result = await db.query<{ count: string }>(
224
+ 'WITH deleted AS (DELETE FROM public._zero_changes WHERE watermark <= $1 RETURNING 1) SELECT count(*)::text AS count FROM deleted',
225
+ [watermark]
226
+ )
227
+ return Number(result.rows[0]?.count || 0)
228
+ }
229
+
198
230
  export async function getCurrentWatermark(db: PGlite): Promise<number> {
199
231
  const result = await db.query<{ last_value: string; is_called: boolean }>(
200
232
  'SELECT last_value, is_called FROM public._zero_watermark'
@@ -10,6 +10,7 @@ import { log } from '../log.js'
10
10
  import {
11
11
  getChangesSince,
12
12
  getCurrentWatermark,
13
+ purgeConsumedChanges,
13
14
  installTriggersOnShardTables,
14
15
  type ChangeRecord,
15
16
  } from './change-tracker.js'
@@ -342,7 +343,7 @@ export async function handleStartReplication(
342
343
  for (const schema of relevantSchemas) {
343
344
  if (schema === 'public') continue
344
345
  const shardTables = await db.query<{ tablename: string }>(
345
- `SELECT tablename FROM pg_tables WHERE schemaname = $1`,
346
+ `SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = 'clients'`,
346
347
  [schema]
347
348
  )
348
349
  for (const { tablename } of shardTables.rows) {
@@ -457,22 +458,60 @@ export async function handleStartReplication(
457
458
  let txCounter = 1
458
459
 
459
460
  // polling + notification loop
460
- const pollInterval = 500
461
+ // adaptive: poll fast when catching up, slow when idle
462
+ const pollIntervalIdle = 500
463
+ const pollIntervalCatchUp = 20
464
+ const batchSize = 2000
465
+ const purgeEveryN = 10
466
+ const shardRescanEveryN = 20
461
467
  let running = true
468
+ let pollsSincePurge = 0
469
+ let pollsSinceShardRescan = 0
462
470
 
463
471
  const poll = async () => {
464
472
  while (running) {
465
473
  try {
474
+ // periodically re-scan for new shard schemas (e.g. chat_0 created by zero-cache)
475
+ pollsSinceShardRescan++
476
+ if (pollsSinceShardRescan >= shardRescanEveryN) {
477
+ pollsSinceShardRescan = 0
478
+ await mutex.acquire()
479
+ try {
480
+ await installTriggersOnShardTables(db)
481
+ } finally {
482
+ mutex.release()
483
+ }
484
+ }
485
+
466
486
  // acquire mutex to avoid conflicting with proxy connections
467
487
  await mutex.acquire()
468
488
  let changes: Awaited<ReturnType<typeof getChangesSince>>
469
489
  try {
470
- changes = await getChangesSince(db, lastWatermark, 100)
490
+ changes = await getChangesSince(db, lastWatermark, batchSize)
471
491
  } finally {
472
492
  mutex.release()
473
493
  }
474
494
 
475
495
  if (changes.length > 0) {
496
+ // filter out shard tables that zero-cache doesn't expect.
497
+ // only `clients` is needed (for .server promise resolution).
498
+ // other shard tables (replicas, mutations) crash zero-cache
499
+ // with "Unknown table" in change-processor.
500
+ const batchEnd = changes[changes.length - 1].watermark
501
+ changes = changes.filter((c) => {
502
+ const dot = c.table_name.indexOf('.')
503
+ if (dot === -1) return true
504
+ const schema = c.table_name.substring(0, dot)
505
+ if (schema === 'public') return true
506
+ const table = c.table_name.substring(dot + 1)
507
+ return table === 'clients'
508
+ })
509
+
510
+ if (changes.length === 0) {
511
+ lastWatermark = batchEnd
512
+ continue
513
+ }
514
+
476
515
  await streamChanges(
477
516
  changes,
478
517
  writer,
@@ -482,14 +521,31 @@ export async function handleStartReplication(
482
521
  excludedColumns,
483
522
  columnTypeOids
484
523
  )
485
- lastWatermark = changes[changes.length - 1].watermark
524
+ lastWatermark = batchEnd
525
+
526
+ // purge consumed changes periodically to free wasm memory
527
+ pollsSincePurge++
528
+ if (pollsSincePurge >= purgeEveryN) {
529
+ pollsSincePurge = 0
530
+ await mutex.acquire()
531
+ try {
532
+ const purged = await purgeConsumedChanges(db, lastWatermark)
533
+ if (purged > 0) {
534
+ log.debug.proxy(`purged ${purged} consumed changes`)
535
+ }
536
+ } finally {
537
+ mutex.release()
538
+ }
539
+ }
486
540
  }
487
541
 
488
542
  // send keepalive
489
543
  const ts = nowMicros()
490
544
  writer.write(encodeKeepalive(currentLsn, ts, false))
491
545
 
492
- await new Promise((resolve) => setTimeout(resolve, pollInterval))
546
+ // if we got a full batch, there's likely more - poll fast
547
+ const delay = changes.length >= batchSize ? pollIntervalCatchUp : pollIntervalIdle
548
+ await new Promise((resolve) => setTimeout(resolve, delay))
493
549
  } catch (err: unknown) {
494
550
  const msg = err instanceof Error ? err.message : String(err)
495
551
  log.debug.proxy(`replication poll error: ${msg}`)
@@ -364,6 +364,232 @@ describe('pgoutput-encoder', () => {
364
364
  })
365
365
  })
366
366
 
367
+ // roundtrip tests: encode with orez → parse with zero-cache's parser
368
+ // this validates the fundamental contract between orez and zero-cache
369
+ describe('roundtrip: orez encoder → zero-cache parser', () => {
370
+ // absolute path bypasses package.json exports restriction
371
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
372
+ const {
373
+ PgoutputParser,
374
+ } = require('/Users/n8/orez/node_modules/@rocicorp/zero/out/zero-cache/src/services/change-source/pg/logical-replication/pgoutput-parser.js')
375
+
376
+ // mock type parsers: unknown OIDs default to String (identity for text)
377
+ const typeParsers = { getTypeParser: () => String }
378
+
379
+ function makeParser() {
380
+ return new PgoutputParser(typeParsers)
381
+ }
382
+
383
+ it('BEGIN roundtrip', () => {
384
+ const lsn = 0x1000200n
385
+ const ts = BigInt(Date.now()) * 1000n
386
+ const parser = makeParser()
387
+ const parsed = parser.parse(encodeBegin(lsn, ts, 42))
388
+
389
+ expect(parsed.tag).toBe('begin')
390
+ expect(parsed.commitLsn).toBe('00000000/01000200')
391
+ expect(parsed.xid).toBe(42)
392
+ expect(parsed.commitTime).toBe(ts)
393
+ })
394
+
395
+ it('COMMIT roundtrip', () => {
396
+ const lsn = 0x1000200n
397
+ const endLsn = 0x1000300n
398
+ const ts = BigInt(Date.now()) * 1000n
399
+ const parser = makeParser()
400
+ const parsed = parser.parse(encodeCommit(0, lsn, endLsn, ts))
401
+
402
+ expect(parsed.tag).toBe('commit')
403
+ expect(parsed.commitLsn).toBe('00000000/01000200')
404
+ expect(parsed.commitEndLsn).toBe('00000000/01000300')
405
+ expect(parsed.commitTime).toBe(ts)
406
+ })
407
+
408
+ it('RELATION roundtrip', () => {
409
+ const oid = getTableOid('rt.rel_test')
410
+ const cols: ColumnInfo[] = [
411
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
412
+ { name: 'name', typeOid: 25, typeMod: -1 },
413
+ ]
414
+ const parser = makeParser()
415
+ const parsed = parser.parse(encodeRelation(oid, 'public', 'rel_test', 0x64, cols))
416
+
417
+ expect(parsed.tag).toBe('relation')
418
+ expect(parsed.schema).toBe('public')
419
+ expect(parsed.name).toBe('rel_test')
420
+ expect(parsed.columns).toHaveLength(2)
421
+ expect(parsed.keyColumns).toEqual(['id'])
422
+ })
423
+
424
+ it('INSERT roundtrip', () => {
425
+ const oid = getTableOid('rt.ins_test')
426
+ const cols: ColumnInfo[] = [
427
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
428
+ { name: 'val', typeOid: 25, typeMod: -1 },
429
+ ]
430
+ const parser = makeParser()
431
+ parser.parse(encodeRelation(oid, 'public', 'ins_test', 0x64, cols))
432
+
433
+ const parsed = parser.parse(encodeInsert(oid, { id: 'abc', val: 'hello' }, cols))
434
+ expect(parsed.tag).toBe('insert')
435
+ expect(parsed.new.id).toBe('abc')
436
+ expect(parsed.new.val).toBe('hello')
437
+ })
438
+
439
+ it('INSERT with null', () => {
440
+ const oid = getTableOid('rt.null_test')
441
+ const cols: ColumnInfo[] = [
442
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
443
+ { name: 'opt', typeOid: 25, typeMod: -1 },
444
+ ]
445
+ const parser = makeParser()
446
+ parser.parse(encodeRelation(oid, 'public', 'null_test', 0x64, cols))
447
+
448
+ const parsed = parser.parse(encodeInsert(oid, { id: 'x', opt: null }, cols))
449
+ expect(parsed.new.opt).toBeNull()
450
+ })
451
+
452
+ it('UPDATE with old row roundtrip', () => {
453
+ const oid = getTableOid('rt.upd_test')
454
+ const cols: ColumnInfo[] = [
455
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
456
+ { name: 'val', typeOid: 25, typeMod: -1 },
457
+ ]
458
+ const parser = makeParser()
459
+ parser.parse(encodeRelation(oid, 'public', 'upd_test', 0x64, cols))
460
+
461
+ const parsed = parser.parse(
462
+ encodeUpdate(oid, { id: '1', val: 'new' }, { id: '1', val: 'old' }, cols)
463
+ )
464
+ expect(parsed.tag).toBe('update')
465
+ expect(parsed.new.val).toBe('new')
466
+ expect(parsed.old.val).toBe('old')
467
+ })
468
+
469
+ it('UPDATE without old row', () => {
470
+ const oid = getTableOid('rt.upd_no_old')
471
+ const cols: ColumnInfo[] = [
472
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
473
+ { name: 'val', typeOid: 25, typeMod: -1 },
474
+ ]
475
+ const parser = makeParser()
476
+ parser.parse(encodeRelation(oid, 'public', 'upd_no_old', 0x64, cols))
477
+
478
+ const parsed = parser.parse(encodeUpdate(oid, { id: '1', val: 'v' }, null, cols))
479
+ expect(parsed.tag).toBe('update')
480
+ expect(parsed.new.val).toBe('v')
481
+ expect(parsed.old).toBeNull()
482
+ expect(parsed.key).toBeNull()
483
+ })
484
+
485
+ it('DELETE roundtrip', () => {
486
+ const oid = getTableOid('rt.del_test')
487
+ const cols: ColumnInfo[] = [
488
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
489
+ { name: 'val', typeOid: 25, typeMod: -1 },
490
+ ]
491
+ const parser = makeParser()
492
+ parser.parse(encodeRelation(oid, 'public', 'del_test', 0x64, cols))
493
+
494
+ const parsed = parser.parse(encodeDelete(oid, { id: 'gone', val: 'x' }, cols))
495
+ expect(parsed.tag).toBe('delete')
496
+ expect(parsed.key.id).toBe('gone')
497
+ })
498
+
499
+ it('full transaction: BEGIN → RELATION → INSERT → COMMIT', () => {
500
+ const parser = makeParser()
501
+ const lsn = 0x2000000n
502
+ const endLsn = 0x2000100n
503
+ const ts = BigInt(Date.now()) * 1000n
504
+
505
+ const begin = parser.parse(encodeBegin(lsn, ts, 1))
506
+ expect(begin.commitLsn).toBe('00000000/02000000')
507
+
508
+ const oid = getTableOid('rt.full_tx')
509
+ const cols: ColumnInfo[] = [
510
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
511
+ { name: 'data', typeOid: 25, typeMod: -1 },
512
+ ]
513
+ parser.parse(encodeRelation(oid, 'public', 'full_tx', 0x64, cols))
514
+
515
+ const ins = parser.parse(encodeInsert(oid, { id: '1', data: 'test' }, cols))
516
+ expect(ins.new.id).toBe('1')
517
+
518
+ const commit = parser.parse(encodeCommit(0, lsn, endLsn, ts))
519
+ expect(commit.commitLsn).toBe(begin.commitLsn)
520
+ })
521
+
522
+ it('XLogData + CopyData wrapper roundtrip with parser', () => {
523
+ const lsn = 0x3000000n
524
+ const ts = BigInt(Date.now()) * 1000n
525
+ const pgoutput = encodeBegin(lsn, ts, 1)
526
+ const xlog = wrapXLogData(lsn, lsn, ts, pgoutput)
527
+ const frame = wrapCopyData(xlog)
528
+
529
+ // unwrap CopyData
530
+ const copyLen = r32(frame, 1)
531
+ const inner = frame.subarray(5, 1 + copyLen)
532
+
533
+ // parse like stream.js
534
+ expect(inner[0]).toBe(0x77)
535
+ const streamLsn = new DataView(inner.buffer, inner.byteOffset).getBigUint64(1)
536
+ expect(streamLsn).toBe(lsn)
537
+
538
+ // parse pgoutput
539
+ const parser = makeParser()
540
+ const parsed = parser.parse(inner.subarray(25))
541
+ expect(parsed.tag).toBe('begin')
542
+ expect(parsed.commitLsn).toBe('00000000/03000000')
543
+ })
544
+
545
+ it('shard schema encoding', () => {
546
+ const oid = getTableOid('rt.chat_0.clients')
547
+ const cols: ColumnInfo[] = [
548
+ { name: 'id', typeOid: 25, typeMod: -1, isKey: true },
549
+ { name: 'lastMutationID', typeOid: 20, typeMod: -1 },
550
+ ]
551
+ const parser = makeParser()
552
+ const rel = parser.parse(encodeRelation(oid, 'chat_0', 'clients', 0x64, cols))
553
+ expect(rel.schema).toBe('chat_0')
554
+ expect(rel.name).toBe('clients')
555
+ })
556
+
557
+ it('LSN ordering: slot < streaming changes', () => {
558
+ // validates that streaming changes will be seen as "new" by zero-cache
559
+ let testLsn = 0x1000000n
560
+ const next = () => {
561
+ testLsn += 0x100n
562
+ return testLsn
563
+ }
564
+
565
+ const slotLsn = next() // CREATE_REPLICATION_SLOT
566
+ const beginLsn = next() // first streaming BEGIN
567
+ const commitLsn = next() // first streaming COMMIT
568
+
569
+ expect(beginLsn).toBeGreaterThan(slotLsn)
570
+ expect(commitLsn).toBeGreaterThan(beginLsn)
571
+
572
+ // verify lexi version ordering is preserved
573
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
574
+ const {
575
+ versionToLexi,
576
+ } = require('/Users/n8/orez/node_modules/@rocicorp/zero/out/zero-cache/src/types/lexi-version.js')
577
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
578
+ const {
579
+ toBigInt: lsnToBigInt,
580
+ } = require('/Users/n8/orez/node_modules/@rocicorp/zero/out/zero-cache/src/services/change-source/pg/lsn.js')
581
+
582
+ const slotHex = `00000000/${slotLsn.toString(16).padStart(8, '0')}`.toUpperCase()
583
+ const beginHex = `00000000/${beginLsn.toString(16).padStart(8, '0')}`.toUpperCase()
584
+
585
+ const slotVersion = versionToLexi(lsnToBigInt(slotHex))
586
+ const beginVersion = versionToLexi(lsnToBigInt(beginHex))
587
+
588
+ // lexi versions must maintain ordering
589
+ expect(beginVersion > slotVersion).toBe(true)
590
+ })
591
+ })
592
+
367
593
  describe('double-wrap: CopyData(XLogData(message))', () => {
368
594
  // this is the exact framing zero-cache expects for every replication message
369
595
  it('produces parseable nested structure', () => {
@@ -940,4 +940,108 @@ describe('zero-cache pgoutput compatibility', { timeout: 30000 }, () => {
940
940
 
941
941
  s.close()
942
942
  })
943
+
944
+ it('shard replicas/mutations changes NOT streamed (only clients)', async () => {
945
+ // zero-cache creates shard schemas (chat_0) with clients, replicas, mutations.
946
+ // if we stream replicas/mutations changes, zero-cache crashes with
947
+ // "Unknown table chat_0.replicas". only clients changes should be streamed.
948
+ await db.exec(`
949
+ CREATE SCHEMA chat_0;
950
+ CREATE TABLE chat_0.clients (
951
+ "clientGroupID" TEXT NOT NULL,
952
+ "clientID" TEXT NOT NULL,
953
+ "lastMutationID" BIGINT,
954
+ PRIMARY KEY ("clientGroupID", "clientID")
955
+ );
956
+ CREATE TABLE chat_0.replicas (
957
+ id TEXT PRIMARY KEY,
958
+ version TEXT
959
+ );
960
+ CREATE TABLE chat_0.mutations (
961
+ id TEXT PRIMARY KEY,
962
+ "clientID" TEXT,
963
+ name TEXT
964
+ );
965
+ `)
966
+ await installChangeTracking(db)
967
+
968
+ const s = await stream()
969
+ const q = s.messages
970
+
971
+ // insert into all three shard tables + a public table
972
+ await db.exec(
973
+ `INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 1)`
974
+ )
975
+ await db.exec(`INSERT INTO chat_0.replicas (id, version) VALUES ('r1', 'v1')`)
976
+ await db.exec(
977
+ `INSERT INTO chat_0.mutations (id, "clientID", name) VALUES ('m1', 'c1', 'send')`
978
+ )
979
+ await db.exec(`INSERT INTO public.foo (id) VALUES ('normal')`)
980
+
981
+ // collect all inserts for a few seconds
982
+ const inserts: ZcInsert[] = []
983
+ const deadline = Date.now() + 4000
984
+ while (Date.now() < deadline) {
985
+ const m = await q.dequeue(1500).catch(() => null)
986
+ if (!m) break
987
+ if (m.tag === 'insert') inserts.push(m as ZcInsert)
988
+ }
989
+
990
+ // should see clients + foo inserts, but NOT replicas or mutations
991
+ const streamedTables = inserts.map((i) => `${i.relation.schema}.${i.relation.name}`)
992
+ expect(streamedTables).toContain('public.foo')
993
+ expect(streamedTables).toContain('chat_0.clients')
994
+ expect(streamedTables).not.toContain('chat_0.replicas')
995
+ expect(streamedTables).not.toContain('chat_0.mutations')
996
+
997
+ s.close()
998
+ })
999
+
1000
+ it('shard clients table created AFTER replication starts still gets tracked', async () => {
1001
+ // zero-cache creates shard schemas after the replication connection is live.
1002
+ // the poll loop must detect new shard tables and install triggers dynamically.
1003
+ const s = await stream()
1004
+ const q = s.messages
1005
+
1006
+ // give replication time to start polling
1007
+ await new Promise((r) => setTimeout(r, 300))
1008
+
1009
+ // now create shard schema (simulating zero-cache's DDL during initial sync)
1010
+ await db.exec(`
1011
+ CREATE SCHEMA chat_0;
1012
+ CREATE TABLE chat_0.clients (
1013
+ "clientGroupID" TEXT NOT NULL,
1014
+ "clientID" TEXT NOT NULL,
1015
+ "lastMutationID" BIGINT,
1016
+ PRIMARY KEY ("clientGroupID", "clientID")
1017
+ );
1018
+ `)
1019
+
1020
+ // wait for poll loop to detect new table (rescan every ~10s)
1021
+ await new Promise((r) => setTimeout(r, 12000))
1022
+
1023
+ // insert data that should be captured
1024
+ await db.exec(
1025
+ `INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 42)`
1026
+ )
1027
+
1028
+ // the insert should appear in the replication stream
1029
+ let found = false
1030
+ const deadline = Date.now() + 5000
1031
+ while (Date.now() < deadline) {
1032
+ const m = await q.dequeue(2000).catch(() => null)
1033
+ if (!m) break
1034
+ if (m.tag === 'insert') {
1035
+ const ins = m as ZcInsert
1036
+ if (ins.relation.schema === 'chat_0' && ins.relation.name === 'clients') {
1037
+ found = true
1038
+ break
1039
+ }
1040
+ }
1041
+ }
1042
+
1043
+ expect(found).toBe(true)
1044
+
1045
+ s.close()
1046
+ })
943
1047
  })