orez 0.2.17 → 0.2.18
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/replication/change-tracker.d.ts.map +1 -1
- package/dist/replication/change-tracker.js +18 -17
- package/dist/replication/change-tracker.js.map +1 -1
- package/dist/replication/handler.d.ts.map +1 -1
- package/dist/replication/handler.js +86 -8
- package/dist/replication/handler.js.map +1 -1
- package/dist/worker/shims/ws-browser.d.ts +1 -1
- package/dist/worker/shims/ws-browser.d.ts.map +1 -1
- package/dist/worker/shims/ws-browser.js +29 -5
- package/dist/worker/shims/ws-browser.js.map +1 -1
- package/package.json +2 -2
- package/src/replication/change-tracker.test.ts +42 -4
- package/src/replication/change-tracker.ts +20 -20
- package/src/replication/handler.ts +121 -9
- package/src/replication/zero-compat.test.ts +92 -10
- package/src/worker/shims/ws-browser.test.ts +21 -0
- package/src/worker/shims/ws-browser.ts +35 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,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;CACzC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CAClE;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D/E;
|
|
1
|
+
{"version":3,"file":"change-tracker.d.ts","sourceRoot":"","sources":["../../src/replication/change-tracker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,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;CACzC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;IAC5D,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAA;KAAE,CAAC,CAAA;CAClE;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D/E;AAqFD,2CAA2C;AAC3C,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,wBAAsB,4BAA4B,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6DtF;AAED,wBAAsB,eAAe,CACnC,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,EACjB,KAAK,SAAQ,GACZ,OAAO,CAAC,YAAY,EAAE,CAAC,CAMzB;AAED,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,gBAAgB,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAO/E"}
|
|
@@ -122,13 +122,14 @@ async function installTriggersOnAllTables(db) {
|
|
|
122
122
|
* tables that track mutation confirmations. these must be replicated
|
|
123
123
|
* for .server promises to resolve.
|
|
124
124
|
*
|
|
125
|
-
* caches already-
|
|
126
|
-
*
|
|
125
|
+
* caches already-tracked shard tables to avoid redundant DDL while still
|
|
126
|
+
* handling zero-cache creating a schema before the internal tables exist.
|
|
127
127
|
*/
|
|
128
|
-
const
|
|
128
|
+
const trackedShardTables = new Set();
|
|
129
|
+
const TRACKED_SHARD_TABLES = new Set(['clients', 'mutations']);
|
|
129
130
|
/** reset shard schema cache (for tests) */
|
|
130
131
|
export function resetShardSchemaCache() {
|
|
131
|
-
|
|
132
|
+
trackedShardTables.clear();
|
|
132
133
|
}
|
|
133
134
|
export async function installTriggersOnShardTables(db) {
|
|
134
135
|
const result = await db.query(`SELECT nspname FROM pg_namespace
|
|
@@ -139,29 +140,29 @@ export async function installTriggersOnShardTables(db) {
|
|
|
139
140
|
AND nspname NOT LIKE '%/%'`);
|
|
140
141
|
if (result.rows.length === 0)
|
|
141
142
|
return;
|
|
142
|
-
//
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
//
|
|
147
|
-
// replication stream (needed for .server promise resolution). other shard
|
|
148
|
-
// tables like `replicas` are zero-cache internal state and streaming them
|
|
149
|
-
// back causes "Unknown table" crashes in zero-cache's change-processor.
|
|
143
|
+
// only track the shard tables zero-cache expects in the replication stream.
|
|
144
|
+
// `clients` advances LMID for successful .server promises; `mutations`
|
|
145
|
+
// carries per-mutation results for application errors. other shard tables
|
|
146
|
+
// like `replicas` are zero-cache internal state and streaming them back
|
|
147
|
+
// causes "Unknown table" crashes in zero-cache's change-processor.
|
|
150
148
|
let count = 0;
|
|
151
|
-
for (const { nspname } of
|
|
152
|
-
// remove stale triggers from non-
|
|
149
|
+
for (const { nspname } of result.rows) {
|
|
150
|
+
// remove stale triggers from non-replicated shard tables.
|
|
153
151
|
const stale = await db.query(`SELECT DISTINCT event_object_table FROM information_schema.triggers
|
|
154
152
|
WHERE trigger_name = '_zero_change_trigger'
|
|
155
153
|
AND event_object_schema = $1
|
|
156
|
-
AND event_object_table !=
|
|
154
|
+
AND event_object_table != ALL($2)`, [nspname, [...TRACKED_SHARD_TABLES]]);
|
|
157
155
|
for (const { event_object_table } of stale.rows) {
|
|
158
156
|
const qs = quoteIdent(nspname);
|
|
159
157
|
const qt = quoteIdent(event_object_table);
|
|
160
158
|
await db.exec(`DROP TRIGGER IF EXISTS _zero_change_trigger ON ${qs}.${qt}`);
|
|
161
159
|
log.debug.pglite(`removed stale shard trigger from ${nspname}.${event_object_table}`);
|
|
162
160
|
}
|
|
163
|
-
const tables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename =
|
|
161
|
+
const tables = await db.query(`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = ANY($2)`, [nspname, [...TRACKED_SHARD_TABLES]]);
|
|
164
162
|
for (const { tablename } of tables.rows) {
|
|
163
|
+
const key = `${nspname}.${tablename}`;
|
|
164
|
+
if (trackedShardTables.has(key))
|
|
165
|
+
continue;
|
|
165
166
|
const quotedSchema = quoteIdent(nspname);
|
|
166
167
|
const quotedTable = quoteIdent(tablename);
|
|
167
168
|
await db.exec(`
|
|
@@ -170,9 +171,9 @@ export async function installTriggersOnShardTables(db) {
|
|
|
170
171
|
AFTER INSERT OR UPDATE OR DELETE ON ${quotedSchema}.${quotedTable}
|
|
171
172
|
FOR EACH ROW EXECUTE FUNCTION public._zero_track_change();
|
|
172
173
|
`);
|
|
174
|
+
trackedShardTables.add(key);
|
|
173
175
|
count++;
|
|
174
176
|
}
|
|
175
|
-
processedShardSchemas.add(nspname);
|
|
176
177
|
}
|
|
177
178
|
if (count > 0) {
|
|
178
179
|
log.debug.pglite(`installed change tracking on ${count} shard tables`);
|
|
@@ -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;AAyBH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAA;AA4BlD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;;gBAI3C,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI;IAI9C,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM7B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,KAAK,IAAI,IAAI;CAGd;AAwBD;2EAC2E;AAC3E,wBAAgB,uBAAuB,SAEtC;AAUD,qCAAqC;AACrC,wBAAgB,qBAAqB,IAAI,IAAI,
|
|
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;AA4BlD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;;gBAI3C,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI;IAI9C,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI;IAM7B,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,KAAK,IAAI,IAAI;CAGd;AAwBD;2EAC2E;AAC3E,wBAAgB,uBAAuB,SAEtC;AAUD,qCAAqC;AACrC,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C;AAcD;;;GAGG;AACH,iBAAS,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI5D;AAED,OAAO,EAAE,aAAa,EAAE,CAAA;AA+GxB,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,CAyE5B;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,CAgiBf;AAkPD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -93,6 +93,7 @@ export function resetReplicationState() {
|
|
|
93
93
|
cachedTableKeyColumns = null;
|
|
94
94
|
cachedExcludedColumns = null;
|
|
95
95
|
cachedColumnTypeOids = null;
|
|
96
|
+
cachedColumns.clear();
|
|
96
97
|
}
|
|
97
98
|
function nextLsn() {
|
|
98
99
|
const floor = lsnFloorFromTime();
|
|
@@ -429,7 +430,7 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
429
430
|
.filter((s) => s !== 'public');
|
|
430
431
|
if (shardClientSchemas.length > 0) {
|
|
431
432
|
const shardTables = await db.query(`SELECT schemaname, tablename FROM pg_tables
|
|
432
|
-
WHERE schemaname = ANY($1) AND tablename = 'clients'
|
|
433
|
+
WHERE schemaname = ANY($1) AND tablename = ANY($2)`, [shardClientSchemas, ['clients', 'mutations']]);
|
|
433
434
|
for (const { schemaname, tablename } of shardTables.rows) {
|
|
434
435
|
const qs = '"' + schemaname.replace(/"/g, '""') + '"';
|
|
435
436
|
const qt = '"' + tablename.replace(/"/g, '""') + '"';
|
|
@@ -455,7 +456,7 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
455
456
|
await mutex.acquire();
|
|
456
457
|
try {
|
|
457
458
|
// combined PK + column introspection in a single query using UNION ALL
|
|
458
|
-
const schemaResult = await db.query(`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type
|
|
459
|
+
const schemaResult = await db.query(`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type, kcu.ordinal_position
|
|
459
460
|
FROM information_schema.table_constraints tc
|
|
460
461
|
JOIN information_schema.key_column_usage kcu
|
|
461
462
|
ON tc.constraint_name = kcu.constraint_name
|
|
@@ -463,9 +464,10 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
463
464
|
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
464
465
|
AND tc.table_schema = ANY($1)
|
|
465
466
|
UNION ALL
|
|
466
|
-
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type
|
|
467
|
+
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type, ordinal_position
|
|
467
468
|
FROM information_schema.columns
|
|
468
|
-
WHERE table_schema = ANY($1)
|
|
469
|
+
WHERE table_schema = ANY($1)
|
|
470
|
+
ORDER BY table_schema, table_name, kind, ordinal_position`, [relevantSchemas]);
|
|
469
471
|
for (const row of schemaResult.rows) {
|
|
470
472
|
const key = `${row.table_schema}.${row.table_name}`;
|
|
471
473
|
if (row.kind === 'pk') {
|
|
@@ -697,9 +699,9 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
697
699
|
const tableSummary = [...new Set(changes.map((c) => c.table_name))].join(',');
|
|
698
700
|
log.debug.repl(`found ${changes.length} changes [${tableSummary}] (wm ${lastWatermark}→${changes[changes.length - 1].watermark}) query=${queryMs.toFixed(1)}ms signal→query=${signalToQueryMs}ms`);
|
|
699
701
|
// filter out shard tables that zero-cache doesn't expect.
|
|
700
|
-
//
|
|
701
|
-
// other shard tables (replicas
|
|
702
|
-
//
|
|
702
|
+
// `clients` advances lmid; `mutations` carries mutation results.
|
|
703
|
+
// other shard tables (e.g. replicas) crash zero-cache with
|
|
704
|
+
// "Unknown table" in the change processor.
|
|
703
705
|
const batchEnd = changes[changes.length - 1].watermark;
|
|
704
706
|
const preFilterCount = changes.length;
|
|
705
707
|
changes = changes.filter((c) => {
|
|
@@ -710,7 +712,7 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
710
712
|
if (schema === 'public')
|
|
711
713
|
return true;
|
|
712
714
|
const table = c.table_name.substring(dot + 1);
|
|
713
|
-
return table === 'clients';
|
|
715
|
+
return table === 'clients' || table === 'mutations';
|
|
714
716
|
});
|
|
715
717
|
log.debug.repl(`filter: ${preFilterCount} → ${changes.length} changes`);
|
|
716
718
|
if (changes.length === 0) {
|
|
@@ -722,6 +724,7 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
722
724
|
queryPending = true;
|
|
723
725
|
continue;
|
|
724
726
|
}
|
|
727
|
+
await ensureMetadataForChangedTables(db, mutex, changes, tableKeyColumns, excludedColumns, columnTypeOids);
|
|
725
728
|
log.debug.repl(`streaming ${changes.length} changes to writer`);
|
|
726
729
|
await streamChanges(changes, writer, sentRelations, txCounter++, tableKeyColumns, excludedColumns, columnTypeOids);
|
|
727
730
|
lastWatermark = batchEnd;
|
|
@@ -781,6 +784,81 @@ export async function handleStartReplication(query, writer, db, mutex) {
|
|
|
781
784
|
}
|
|
782
785
|
log.repl('poll loop exited');
|
|
783
786
|
}
|
|
787
|
+
async function ensureMetadataForChangedTables(db, mutex, changes, tableKeyColumns, excludedColumns, columnTypeOids) {
|
|
788
|
+
const missing = new Map();
|
|
789
|
+
for (const change of changes) {
|
|
790
|
+
if (tableKeyColumns.has(change.table_name) ||
|
|
791
|
+
columnTypeOids.has(change.table_name) ||
|
|
792
|
+
excludedColumns.has(change.table_name)) {
|
|
793
|
+
continue;
|
|
794
|
+
}
|
|
795
|
+
const dot = change.table_name.indexOf('.');
|
|
796
|
+
const schema = dot === -1 ? 'public' : change.table_name.substring(0, dot);
|
|
797
|
+
const table = dot === -1 ? change.table_name : change.table_name.substring(dot + 1);
|
|
798
|
+
missing.set(`${schema}.${table}`, { schema, table });
|
|
799
|
+
}
|
|
800
|
+
if (missing.size === 0)
|
|
801
|
+
return;
|
|
802
|
+
const schemas = [...new Set([...missing.values()].map((entry) => entry.schema))];
|
|
803
|
+
const tables = [...new Set([...missing.values()].map((entry) => entry.table))];
|
|
804
|
+
await mutex.acquire();
|
|
805
|
+
try {
|
|
806
|
+
const schemaResult = await db.query(`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type, kcu.ordinal_position
|
|
807
|
+
FROM information_schema.table_constraints tc
|
|
808
|
+
JOIN information_schema.key_column_usage kcu
|
|
809
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
810
|
+
AND tc.table_schema = kcu.table_schema
|
|
811
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
812
|
+
AND tc.table_schema = ANY($1)
|
|
813
|
+
AND tc.table_name = ANY($2)
|
|
814
|
+
UNION ALL
|
|
815
|
+
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type, ordinal_position
|
|
816
|
+
FROM information_schema.columns
|
|
817
|
+
WHERE table_schema = ANY($1)
|
|
818
|
+
AND table_name = ANY($2)
|
|
819
|
+
ORDER BY table_schema, table_name, kind, ordinal_position`, [schemas, tables]);
|
|
820
|
+
for (const row of schemaResult.rows) {
|
|
821
|
+
const key = `${row.table_schema}.${row.table_name}`;
|
|
822
|
+
if (!missing.has(key))
|
|
823
|
+
continue;
|
|
824
|
+
if (row.kind === 'pk') {
|
|
825
|
+
let keys = tableKeyColumns.get(key);
|
|
826
|
+
if (!keys) {
|
|
827
|
+
keys = new Set();
|
|
828
|
+
tableKeyColumns.set(key, keys);
|
|
829
|
+
}
|
|
830
|
+
keys.add(row.column_name);
|
|
831
|
+
}
|
|
832
|
+
else {
|
|
833
|
+
if (row.data_type && UNSUPPORTED_TYPES.has(row.data_type)) {
|
|
834
|
+
let cols = excludedColumns.get(key);
|
|
835
|
+
if (!cols) {
|
|
836
|
+
cols = new Set();
|
|
837
|
+
excludedColumns.set(key, cols);
|
|
838
|
+
}
|
|
839
|
+
cols.add(row.column_name);
|
|
840
|
+
}
|
|
841
|
+
if (row.data_type) {
|
|
842
|
+
const oid = PG_DATA_TYPE_OIDS[row.data_type];
|
|
843
|
+
if (oid !== undefined) {
|
|
844
|
+
let cols = columnTypeOids.get(key);
|
|
845
|
+
if (!cols) {
|
|
846
|
+
cols = new Map();
|
|
847
|
+
columnTypeOids.set(key, cols);
|
|
848
|
+
}
|
|
849
|
+
cols.set(row.column_name, oid);
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
log.debug.repl(`refreshed metadata for ${missing.size} late table(s): ${[...missing.keys()].join(',')}`);
|
|
855
|
+
for (const key of missing.keys())
|
|
856
|
+
cachedColumns.delete(key);
|
|
857
|
+
}
|
|
858
|
+
finally {
|
|
859
|
+
mutex.release();
|
|
860
|
+
}
|
|
861
|
+
}
|
|
784
862
|
// cache column info per table to avoid per-change allocation
|
|
785
863
|
const cachedColumns = new Map();
|
|
786
864
|
async function streamChanges(changes, writer, sentRelations, txId, tableKeyColumns, excludedColumns, columnTypeOids) {
|
|
@@ -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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"}
|
|
@@ -22,7 +22,7 @@ interface WsCompatible {
|
|
|
22
22
|
CLOSING: number;
|
|
23
23
|
CLOSED: number;
|
|
24
24
|
readyState: number;
|
|
25
|
-
send(data: string | ArrayBuffer | ArrayBufferView): void;
|
|
25
|
+
send(data: string | ArrayBuffer | ArrayBufferView, callback?: (err?: Error) => void): void;
|
|
26
26
|
close(code?: number, reason?: string): void;
|
|
27
27
|
addEventListener(type: string, handler: (event: any) => void): void;
|
|
28
28
|
removeEventListener(type: string, handler: (event: any) => void): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,UAAU,YAAY;IAEpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,
|
|
1
|
+
{"version":3,"file":"ws-browser.d.ts","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,UAAU,YAAY;IAEpB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CACF,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,EAC5C,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,IAAI,GAC/B,IAAI,CAAA;IACP,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3C,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACnE,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACtE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;IACrD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,IAAI,CAAA;CACvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CAiI/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,YAAY,CA8CzD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAGlE"}
|
|
@@ -120,10 +120,23 @@ export function messagePortToWs(port) {
|
|
|
120
120
|
get readyState() {
|
|
121
121
|
return closed ? 3 : 1; // CLOSED or OPEN
|
|
122
122
|
},
|
|
123
|
-
send(data) {
|
|
124
|
-
if (closed)
|
|
123
|
+
send(data, callback) {
|
|
124
|
+
if (closed) {
|
|
125
|
+
callback?.(new Error('WebSocket is closed'));
|
|
125
126
|
return;
|
|
126
|
-
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
port.postMessage(data);
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
133
|
+
if (callback) {
|
|
134
|
+
callback(err);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
throw err;
|
|
138
|
+
}
|
|
139
|
+
callback?.();
|
|
127
140
|
},
|
|
128
141
|
close(code, _reason) {
|
|
129
142
|
if (closed)
|
|
@@ -153,8 +166,19 @@ export function browserWsToWs(ws) {
|
|
|
153
166
|
get readyState() {
|
|
154
167
|
return ws.readyState;
|
|
155
168
|
},
|
|
156
|
-
send(data) {
|
|
157
|
-
|
|
169
|
+
send(data, callback) {
|
|
170
|
+
try {
|
|
171
|
+
ws.send(data);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
175
|
+
if (callback) {
|
|
176
|
+
callback(err);
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
throw err;
|
|
180
|
+
}
|
|
181
|
+
callback?.();
|
|
158
182
|
},
|
|
159
183
|
close(code, reason) {
|
|
160
184
|
ws.close(code, reason);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"ws-browser.js","sourceRoot":"","sources":["../../../src/worker/shims/ws-browser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "orez",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.18",
|
|
4
4
|
"description": "PGlite-powered zero-sync development backend. No Docker required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@electric-sql/pglite": "0.4.1",
|
|
70
70
|
"@electric-sql/pglite-tools": "^0.3.1",
|
|
71
|
-
"bedrock-sqlite": "0.2.
|
|
71
|
+
"bedrock-sqlite": "0.2.18",
|
|
72
72
|
"citty": "^0.2.0",
|
|
73
73
|
"pg-gateway": "0.3.0-beta.4",
|
|
74
74
|
"pgsql-parser": "^17.9.11",
|
|
@@ -219,9 +219,9 @@ describe('shard table tracking', () => {
|
|
|
219
219
|
await db.close()
|
|
220
220
|
})
|
|
221
221
|
|
|
222
|
-
it('only tracks
|
|
222
|
+
it('only tracks mutation-confirmation tables in shard schemas', async () => {
|
|
223
223
|
// zero-cache creates shard schemas like chat_0 with clients, replicas, mutations.
|
|
224
|
-
//
|
|
224
|
+
// clients advance lmid and mutations carry server results; replicas stays internal.
|
|
225
225
|
// with "Unknown table chat_0.replicas" because they aren't in zero's schema.
|
|
226
226
|
await db.exec(`
|
|
227
227
|
CREATE SCHEMA chat_0;
|
|
@@ -259,10 +259,10 @@ describe('shard table tracking', () => {
|
|
|
259
259
|
const changes = await getChangesSince(db, 0)
|
|
260
260
|
const tables = changes.map((c) => c.table_name)
|
|
261
261
|
|
|
262
|
-
// only
|
|
262
|
+
// only mutation-confirmation tables should be tracked
|
|
263
263
|
expect(tables).toContain('chat_0.clients')
|
|
264
|
+
expect(tables).toContain('chat_0.mutations')
|
|
264
265
|
expect(tables).not.toContain('chat_0.replicas')
|
|
265
|
-
expect(tables).not.toContain('chat_0.mutations')
|
|
266
266
|
})
|
|
267
267
|
|
|
268
268
|
it('purges consumed changes to prevent OOM', async () => {
|
|
@@ -316,4 +316,42 @@ describe('shard table tracking', () => {
|
|
|
316
316
|
expect(changes).toHaveLength(1)
|
|
317
317
|
expect(changes[0].table_name).toBe('chat_0.clients')
|
|
318
318
|
})
|
|
319
|
+
|
|
320
|
+
it('tracks shard tables created after the schema was scanned', async () => {
|
|
321
|
+
await db.exec(`CREATE SCHEMA chat_0`)
|
|
322
|
+
|
|
323
|
+
// first scan sees the schema but no internal tables yet.
|
|
324
|
+
await installTriggersOnShardTables(db)
|
|
325
|
+
|
|
326
|
+
await db.exec(`
|
|
327
|
+
CREATE TABLE chat_0.clients (
|
|
328
|
+
"clientGroupID" TEXT NOT NULL,
|
|
329
|
+
"clientID" TEXT NOT NULL,
|
|
330
|
+
"lastMutationID" BIGINT,
|
|
331
|
+
PRIMARY KEY ("clientGroupID", "clientID")
|
|
332
|
+
);
|
|
333
|
+
CREATE TABLE chat_0.mutations (
|
|
334
|
+
"clientGroupID" TEXT NOT NULL,
|
|
335
|
+
"clientID" TEXT NOT NULL,
|
|
336
|
+
"mutationID" BIGINT NOT NULL,
|
|
337
|
+
result JSONB,
|
|
338
|
+
PRIMARY KEY ("clientGroupID", "clientID", "mutationID")
|
|
339
|
+
);
|
|
340
|
+
`)
|
|
341
|
+
|
|
342
|
+
await installTriggersOnShardTables(db)
|
|
343
|
+
|
|
344
|
+
await db.exec(
|
|
345
|
+
`INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 1)`
|
|
346
|
+
)
|
|
347
|
+
await db.exec(
|
|
348
|
+
`INSERT INTO chat_0.mutations ("clientGroupID", "clientID", "mutationID", result) VALUES ('cg1', 'c1', 1, '{}')`
|
|
349
|
+
)
|
|
350
|
+
|
|
351
|
+
const changes = await getChangesSince(db, 0)
|
|
352
|
+
expect(changes.map((change) => change.table_name).sort()).toEqual([
|
|
353
|
+
'chat_0.clients',
|
|
354
|
+
'chat_0.mutations',
|
|
355
|
+
])
|
|
356
|
+
})
|
|
319
357
|
})
|
|
@@ -158,14 +158,15 @@ async function installTriggersOnAllTables(db: ChangeTrackingDb): Promise<void> {
|
|
|
158
158
|
* tables that track mutation confirmations. these must be replicated
|
|
159
159
|
* for .server promises to resolve.
|
|
160
160
|
*
|
|
161
|
-
* caches already-
|
|
162
|
-
*
|
|
161
|
+
* caches already-tracked shard tables to avoid redundant DDL while still
|
|
162
|
+
* handling zero-cache creating a schema before the internal tables exist.
|
|
163
163
|
*/
|
|
164
|
-
const
|
|
164
|
+
const trackedShardTables = new Set<string>()
|
|
165
|
+
const TRACKED_SHARD_TABLES = new Set(['clients', 'mutations'])
|
|
165
166
|
|
|
166
167
|
/** reset shard schema cache (for tests) */
|
|
167
168
|
export function resetShardSchemaCache(): void {
|
|
168
|
-
|
|
169
|
+
trackedShardTables.clear()
|
|
169
170
|
}
|
|
170
171
|
|
|
171
172
|
export async function installTriggersOnShardTables(db: ChangeTrackingDb): Promise<void> {
|
|
@@ -180,23 +181,20 @@ export async function installTriggersOnShardTables(db: ChangeTrackingDb): Promis
|
|
|
180
181
|
|
|
181
182
|
if (result.rows.length === 0) return
|
|
182
183
|
|
|
183
|
-
//
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
//
|
|
188
|
-
// replication stream (needed for .server promise resolution). other shard
|
|
189
|
-
// tables like `replicas` are zero-cache internal state and streaming them
|
|
190
|
-
// back causes "Unknown table" crashes in zero-cache's change-processor.
|
|
184
|
+
// only track the shard tables zero-cache expects in the replication stream.
|
|
185
|
+
// `clients` advances LMID for successful .server promises; `mutations`
|
|
186
|
+
// carries per-mutation results for application errors. other shard tables
|
|
187
|
+
// like `replicas` are zero-cache internal state and streaming them back
|
|
188
|
+
// causes "Unknown table" crashes in zero-cache's change-processor.
|
|
191
189
|
let count = 0
|
|
192
|
-
for (const { nspname } of
|
|
193
|
-
// remove stale triggers from non-
|
|
190
|
+
for (const { nspname } of result.rows) {
|
|
191
|
+
// remove stale triggers from non-replicated shard tables.
|
|
194
192
|
const stale = await db.query<{ event_object_table: string }>(
|
|
195
193
|
`SELECT DISTINCT event_object_table FROM information_schema.triggers
|
|
196
194
|
WHERE trigger_name = '_zero_change_trigger'
|
|
197
195
|
AND event_object_schema = $1
|
|
198
|
-
AND event_object_table !=
|
|
199
|
-
[nspname]
|
|
196
|
+
AND event_object_table != ALL($2)`,
|
|
197
|
+
[nspname, [...TRACKED_SHARD_TABLES]]
|
|
200
198
|
)
|
|
201
199
|
for (const { event_object_table } of stale.rows) {
|
|
202
200
|
const qs = quoteIdent(nspname)
|
|
@@ -208,11 +206,14 @@ export async function installTriggersOnShardTables(db: ChangeTrackingDb): Promis
|
|
|
208
206
|
}
|
|
209
207
|
|
|
210
208
|
const tables = await db.query<{ tablename: string }>(
|
|
211
|
-
`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename =
|
|
212
|
-
[nspname]
|
|
209
|
+
`SELECT tablename FROM pg_tables WHERE schemaname = $1 AND tablename = ANY($2)`,
|
|
210
|
+
[nspname, [...TRACKED_SHARD_TABLES]]
|
|
213
211
|
)
|
|
214
212
|
|
|
215
213
|
for (const { tablename } of tables.rows) {
|
|
214
|
+
const key = `${nspname}.${tablename}`
|
|
215
|
+
if (trackedShardTables.has(key)) continue
|
|
216
|
+
|
|
216
217
|
const quotedSchema = quoteIdent(nspname)
|
|
217
218
|
const quotedTable = quoteIdent(tablename)
|
|
218
219
|
await db.exec(`
|
|
@@ -221,10 +222,9 @@ export async function installTriggersOnShardTables(db: ChangeTrackingDb): Promis
|
|
|
221
222
|
AFTER INSERT OR UPDATE OR DELETE ON ${quotedSchema}.${quotedTable}
|
|
222
223
|
FOR EACH ROW EXECUTE FUNCTION public._zero_track_change();
|
|
223
224
|
`)
|
|
225
|
+
trackedShardTables.add(key)
|
|
224
226
|
count++
|
|
225
227
|
}
|
|
226
|
-
|
|
227
|
-
processedShardSchemas.add(nspname)
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
if (count > 0) {
|
|
@@ -134,6 +134,7 @@ export function resetReplicationState(): void {
|
|
|
134
134
|
cachedTableKeyColumns = null
|
|
135
135
|
cachedExcludedColumns = null
|
|
136
136
|
cachedColumnTypeOids = null
|
|
137
|
+
cachedColumns.clear()
|
|
137
138
|
}
|
|
138
139
|
function nextLsn(): bigint {
|
|
139
140
|
const floor = lsnFloorFromTime()
|
|
@@ -539,8 +540,8 @@ export async function handleStartReplication(
|
|
|
539
540
|
if (shardClientSchemas.length > 0) {
|
|
540
541
|
const shardTables = await db.query<{ schemaname: string; tablename: string }>(
|
|
541
542
|
`SELECT schemaname, tablename FROM pg_tables
|
|
542
|
-
WHERE schemaname = ANY($1) AND tablename =
|
|
543
|
-
[shardClientSchemas]
|
|
543
|
+
WHERE schemaname = ANY($1) AND tablename = ANY($2)`,
|
|
544
|
+
[shardClientSchemas, ['clients', 'mutations']]
|
|
544
545
|
)
|
|
545
546
|
for (const { schemaname, tablename } of shardTables.rows) {
|
|
546
547
|
const qs = '"' + schemaname.replace(/"/g, '""') + '"'
|
|
@@ -578,8 +579,9 @@ export async function handleStartReplication(
|
|
|
578
579
|
table_name: string
|
|
579
580
|
column_name: string
|
|
580
581
|
data_type: string | null
|
|
582
|
+
ordinal_position: number
|
|
581
583
|
}>(
|
|
582
|
-
`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type
|
|
584
|
+
`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type, kcu.ordinal_position
|
|
583
585
|
FROM information_schema.table_constraints tc
|
|
584
586
|
JOIN information_schema.key_column_usage kcu
|
|
585
587
|
ON tc.constraint_name = kcu.constraint_name
|
|
@@ -587,9 +589,10 @@ export async function handleStartReplication(
|
|
|
587
589
|
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
588
590
|
AND tc.table_schema = ANY($1)
|
|
589
591
|
UNION ALL
|
|
590
|
-
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type
|
|
592
|
+
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type, ordinal_position
|
|
591
593
|
FROM information_schema.columns
|
|
592
|
-
WHERE table_schema = ANY($1)
|
|
594
|
+
WHERE table_schema = ANY($1)
|
|
595
|
+
ORDER BY table_schema, table_name, kind, ordinal_position`,
|
|
593
596
|
[relevantSchemas]
|
|
594
597
|
)
|
|
595
598
|
|
|
@@ -834,9 +837,9 @@ export async function handleStartReplication(
|
|
|
834
837
|
`found ${changes.length} changes [${tableSummary}] (wm ${lastWatermark}→${changes[changes.length - 1].watermark}) query=${queryMs.toFixed(1)}ms signal→query=${signalToQueryMs}ms`
|
|
835
838
|
)
|
|
836
839
|
// filter out shard tables that zero-cache doesn't expect.
|
|
837
|
-
//
|
|
838
|
-
// other shard tables (replicas
|
|
839
|
-
//
|
|
840
|
+
// `clients` advances lmid; `mutations` carries mutation results.
|
|
841
|
+
// other shard tables (e.g. replicas) crash zero-cache with
|
|
842
|
+
// "Unknown table" in the change processor.
|
|
840
843
|
const batchEnd = changes[changes.length - 1].watermark
|
|
841
844
|
const preFilterCount = changes.length
|
|
842
845
|
changes = changes.filter((c) => {
|
|
@@ -845,7 +848,7 @@ export async function handleStartReplication(
|
|
|
845
848
|
const schema = c.table_name.substring(0, dot)
|
|
846
849
|
if (schema === 'public') return true
|
|
847
850
|
const table = c.table_name.substring(dot + 1)
|
|
848
|
-
return table === 'clients'
|
|
851
|
+
return table === 'clients' || table === 'mutations'
|
|
849
852
|
})
|
|
850
853
|
log.debug.repl(`filter: ${preFilterCount} → ${changes.length} changes`)
|
|
851
854
|
|
|
@@ -859,6 +862,15 @@ export async function handleStartReplication(
|
|
|
859
862
|
continue
|
|
860
863
|
}
|
|
861
864
|
|
|
865
|
+
await ensureMetadataForChangedTables(
|
|
866
|
+
db,
|
|
867
|
+
mutex,
|
|
868
|
+
changes,
|
|
869
|
+
tableKeyColumns,
|
|
870
|
+
excludedColumns,
|
|
871
|
+
columnTypeOids
|
|
872
|
+
)
|
|
873
|
+
|
|
862
874
|
log.debug.repl(`streaming ${changes.length} changes to writer`)
|
|
863
875
|
await streamChanges(
|
|
864
876
|
changes,
|
|
@@ -930,6 +942,106 @@ export async function handleStartReplication(
|
|
|
930
942
|
log.repl('poll loop exited')
|
|
931
943
|
}
|
|
932
944
|
|
|
945
|
+
async function ensureMetadataForChangedTables(
|
|
946
|
+
db: PGlite,
|
|
947
|
+
mutex: Mutex,
|
|
948
|
+
changes: ChangeRecord[],
|
|
949
|
+
tableKeyColumns: Map<string, Set<string>>,
|
|
950
|
+
excludedColumns: Map<string, Set<string>>,
|
|
951
|
+
columnTypeOids: Map<string, Map<string, number>>
|
|
952
|
+
): Promise<void> {
|
|
953
|
+
const missing = new Map<string, { schema: string; table: string }>()
|
|
954
|
+
|
|
955
|
+
for (const change of changes) {
|
|
956
|
+
if (
|
|
957
|
+
tableKeyColumns.has(change.table_name) ||
|
|
958
|
+
columnTypeOids.has(change.table_name) ||
|
|
959
|
+
excludedColumns.has(change.table_name)
|
|
960
|
+
) {
|
|
961
|
+
continue
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
const dot = change.table_name.indexOf('.')
|
|
965
|
+
const schema = dot === -1 ? 'public' : change.table_name.substring(0, dot)
|
|
966
|
+
const table = dot === -1 ? change.table_name : change.table_name.substring(dot + 1)
|
|
967
|
+
missing.set(`${schema}.${table}`, { schema, table })
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
if (missing.size === 0) return
|
|
971
|
+
|
|
972
|
+
const schemas = [...new Set([...missing.values()].map((entry) => entry.schema))]
|
|
973
|
+
const tables = [...new Set([...missing.values()].map((entry) => entry.table))]
|
|
974
|
+
|
|
975
|
+
await mutex.acquire()
|
|
976
|
+
try {
|
|
977
|
+
const schemaResult = await db.query<{
|
|
978
|
+
kind: string
|
|
979
|
+
table_schema: string
|
|
980
|
+
table_name: string
|
|
981
|
+
column_name: string
|
|
982
|
+
data_type: string | null
|
|
983
|
+
ordinal_position: number
|
|
984
|
+
}>(
|
|
985
|
+
`SELECT 'pk' AS kind, tc.table_schema, tc.table_name, kcu.column_name, NULL AS data_type, kcu.ordinal_position
|
|
986
|
+
FROM information_schema.table_constraints tc
|
|
987
|
+
JOIN information_schema.key_column_usage kcu
|
|
988
|
+
ON tc.constraint_name = kcu.constraint_name
|
|
989
|
+
AND tc.table_schema = kcu.table_schema
|
|
990
|
+
WHERE tc.constraint_type = 'PRIMARY KEY'
|
|
991
|
+
AND tc.table_schema = ANY($1)
|
|
992
|
+
AND tc.table_name = ANY($2)
|
|
993
|
+
UNION ALL
|
|
994
|
+
SELECT 'col' AS kind, table_schema, table_name, column_name, data_type, ordinal_position
|
|
995
|
+
FROM information_schema.columns
|
|
996
|
+
WHERE table_schema = ANY($1)
|
|
997
|
+
AND table_name = ANY($2)
|
|
998
|
+
ORDER BY table_schema, table_name, kind, ordinal_position`,
|
|
999
|
+
[schemas, tables]
|
|
1000
|
+
)
|
|
1001
|
+
|
|
1002
|
+
for (const row of schemaResult.rows) {
|
|
1003
|
+
const key = `${row.table_schema}.${row.table_name}`
|
|
1004
|
+
if (!missing.has(key)) continue
|
|
1005
|
+
|
|
1006
|
+
if (row.kind === 'pk') {
|
|
1007
|
+
let keys = tableKeyColumns.get(key)
|
|
1008
|
+
if (!keys) {
|
|
1009
|
+
keys = new Set()
|
|
1010
|
+
tableKeyColumns.set(key, keys)
|
|
1011
|
+
}
|
|
1012
|
+
keys.add(row.column_name)
|
|
1013
|
+
} else {
|
|
1014
|
+
if (row.data_type && UNSUPPORTED_TYPES.has(row.data_type)) {
|
|
1015
|
+
let cols = excludedColumns.get(key)
|
|
1016
|
+
if (!cols) {
|
|
1017
|
+
cols = new Set()
|
|
1018
|
+
excludedColumns.set(key, cols)
|
|
1019
|
+
}
|
|
1020
|
+
cols.add(row.column_name)
|
|
1021
|
+
}
|
|
1022
|
+
if (row.data_type) {
|
|
1023
|
+
const oid = PG_DATA_TYPE_OIDS[row.data_type]
|
|
1024
|
+
if (oid !== undefined) {
|
|
1025
|
+
let cols = columnTypeOids.get(key)
|
|
1026
|
+
if (!cols) {
|
|
1027
|
+
cols = new Map()
|
|
1028
|
+
columnTypeOids.set(key, cols)
|
|
1029
|
+
}
|
|
1030
|
+
cols.set(row.column_name, oid)
|
|
1031
|
+
}
|
|
1032
|
+
}
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
|
|
1036
|
+
log.debug.repl(
|
|
1037
|
+
`refreshed metadata for ${missing.size} late table(s): ${[...missing.keys()].join(',')}`
|
|
1038
|
+
)
|
|
1039
|
+
for (const key of missing.keys()) cachedColumns.delete(key)
|
|
1040
|
+
} finally {
|
|
1041
|
+
mutex.release()
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
|
|
933
1045
|
// cache column info per table to avoid per-change allocation
|
|
934
1046
|
const cachedColumns = new Map<string, ReturnType<typeof inferColumns>>()
|
|
935
1047
|
|
|
@@ -17,7 +17,11 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest'
|
|
|
17
17
|
|
|
18
18
|
import { getConfig } from '../config'
|
|
19
19
|
import { startPgProxy } from '../pg-proxy'
|
|
20
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
installChangeTracking,
|
|
22
|
+
installTriggersOnShardTables,
|
|
23
|
+
resetShardSchemaCache,
|
|
24
|
+
} from './change-tracker'
|
|
21
25
|
import { signalReplicationChange, resetReplicationState } from './handler'
|
|
22
26
|
|
|
23
27
|
import type { Server, AddressInfo } from 'node:net'
|
|
@@ -959,10 +963,10 @@ describe('zero-cache pgoutput compatibility', { timeout: 30000 }, () => {
|
|
|
959
963
|
s.close()
|
|
960
964
|
})
|
|
961
965
|
|
|
962
|
-
it('shard
|
|
966
|
+
it('streams shard mutation-confirmation tables but filters replicas', async () => {
|
|
963
967
|
// zero-cache creates shard schemas (chat_0) with clients, replicas, mutations.
|
|
964
|
-
//
|
|
965
|
-
//
|
|
968
|
+
// clients advance lmid and mutations carry server results; replicas is
|
|
969
|
+
// internal shard state that zero-cache does not expect in the change stream.
|
|
966
970
|
await db.exec(`
|
|
967
971
|
CREATE SCHEMA chat_0;
|
|
968
972
|
CREATE TABLE chat_0.clients (
|
|
@@ -976,9 +980,11 @@ describe('zero-cache pgoutput compatibility', { timeout: 30000 }, () => {
|
|
|
976
980
|
version TEXT
|
|
977
981
|
);
|
|
978
982
|
CREATE TABLE chat_0.mutations (
|
|
979
|
-
|
|
980
|
-
"clientID" TEXT,
|
|
981
|
-
|
|
983
|
+
"clientGroupID" TEXT NOT NULL,
|
|
984
|
+
"clientID" TEXT NOT NULL,
|
|
985
|
+
"mutationID" BIGINT NOT NULL,
|
|
986
|
+
result JSON,
|
|
987
|
+
PRIMARY KEY ("clientGroupID", "clientID", "mutationID")
|
|
982
988
|
);
|
|
983
989
|
`)
|
|
984
990
|
await installChangeTracking(db)
|
|
@@ -995,7 +1001,7 @@ describe('zero-cache pgoutput compatibility', { timeout: 30000 }, () => {
|
|
|
995
1001
|
)
|
|
996
1002
|
await db.exec(`INSERT INTO chat_0.replicas (id, version) VALUES ('r1', 'v1')`)
|
|
997
1003
|
await db.exec(
|
|
998
|
-
`INSERT INTO chat_0.mutations (
|
|
1004
|
+
`INSERT INTO chat_0.mutations ("clientGroupID", "clientID", "mutationID", result) VALUES ('cg1', 'c1', 1, '{}')`
|
|
999
1005
|
)
|
|
1000
1006
|
await db.exec(`INSERT INTO public.foo (id) VALUES ('normal')`)
|
|
1001
1007
|
|
|
@@ -1008,12 +1014,88 @@ describe('zero-cache pgoutput compatibility', { timeout: 30000 }, () => {
|
|
|
1008
1014
|
if (m.tag === 'insert') inserts.push(m as ZcInsert)
|
|
1009
1015
|
}
|
|
1010
1016
|
|
|
1011
|
-
// should see clients + foo inserts, but NOT replicas
|
|
1017
|
+
// should see clients + mutations + foo inserts, but NOT replicas.
|
|
1012
1018
|
const streamedTables = inserts.map((i) => `${i.relation.schema}.${i.relation.name}`)
|
|
1013
1019
|
expect(streamedTables).toContain('public.foo')
|
|
1014
1020
|
expect(streamedTables).toContain('chat_0.clients')
|
|
1021
|
+
expect(streamedTables).toContain('chat_0.mutations')
|
|
1015
1022
|
expect(streamedTables).not.toContain('chat_0.replicas')
|
|
1016
|
-
|
|
1023
|
+
|
|
1024
|
+
s.close()
|
|
1025
|
+
})
|
|
1026
|
+
|
|
1027
|
+
it('refreshes metadata for shard tables missing from cached setup', async () => {
|
|
1028
|
+
// zero-cache can create shard schemas after the first replication stream
|
|
1029
|
+
// cached metadata. the next stream must not encode bigint/json shard
|
|
1030
|
+
// columns as text, or zero-cache cannot parse mutation confirmations.
|
|
1031
|
+
const warmup = await stream()
|
|
1032
|
+
warmup.close()
|
|
1033
|
+
await new Promise((r) => setTimeout(r, 50))
|
|
1034
|
+
|
|
1035
|
+
await db.exec(`
|
|
1036
|
+
CREATE SCHEMA chat_0;
|
|
1037
|
+
CREATE TABLE chat_0.clients (
|
|
1038
|
+
"clientGroupID" TEXT NOT NULL,
|
|
1039
|
+
"clientID" TEXT NOT NULL,
|
|
1040
|
+
"lastMutationID" BIGINT,
|
|
1041
|
+
PRIMARY KEY ("clientGroupID", "clientID")
|
|
1042
|
+
);
|
|
1043
|
+
CREATE TABLE chat_0.mutations (
|
|
1044
|
+
"clientGroupID" TEXT NOT NULL,
|
|
1045
|
+
"clientID" TEXT NOT NULL,
|
|
1046
|
+
"mutationID" BIGINT NOT NULL,
|
|
1047
|
+
result JSON,
|
|
1048
|
+
PRIMARY KEY ("clientGroupID", "clientID", "mutationID")
|
|
1049
|
+
);
|
|
1050
|
+
`)
|
|
1051
|
+
await installTriggersOnShardTables(db)
|
|
1052
|
+
|
|
1053
|
+
const s = await stream()
|
|
1054
|
+
const q = s.messages
|
|
1055
|
+
|
|
1056
|
+
await db.exec(
|
|
1057
|
+
`INSERT INTO chat_0.clients ("clientGroupID", "clientID", "lastMutationID") VALUES ('cg1', 'c1', 42)`
|
|
1058
|
+
)
|
|
1059
|
+
await db.exec(
|
|
1060
|
+
`INSERT INTO chat_0.mutations ("clientGroupID", "clientID", "mutationID", result) VALUES ('cg1', 'c1', 42, '{"data":"ok"}')`
|
|
1061
|
+
)
|
|
1062
|
+
|
|
1063
|
+
let clientsInsert: ZcInsert | null = null
|
|
1064
|
+
let mutationsInsert: ZcInsert | null = null
|
|
1065
|
+
const deadline = Date.now() + 5000
|
|
1066
|
+
while (Date.now() < deadline) {
|
|
1067
|
+
const m = await q.dequeue(2000).catch(() => null)
|
|
1068
|
+
if (!m) break
|
|
1069
|
+
if (m.tag === 'insert') {
|
|
1070
|
+
const ins = m as ZcInsert
|
|
1071
|
+
if (ins.relation.schema === 'chat_0' && ins.relation.name === 'clients') {
|
|
1072
|
+
clientsInsert = ins
|
|
1073
|
+
}
|
|
1074
|
+
if (ins.relation.schema === 'chat_0' && ins.relation.name === 'mutations') {
|
|
1075
|
+
mutationsInsert = ins
|
|
1076
|
+
}
|
|
1077
|
+
}
|
|
1078
|
+
if (clientsInsert && mutationsInsert) break
|
|
1079
|
+
}
|
|
1080
|
+
|
|
1081
|
+
expect(clientsInsert).not.toBeNull()
|
|
1082
|
+
expect(mutationsInsert).not.toBeNull()
|
|
1083
|
+
expect([...clientsInsert!.relation.keyColumns].sort()).toEqual(
|
|
1084
|
+
['clientGroupID', 'clientID'].sort()
|
|
1085
|
+
)
|
|
1086
|
+
expect(
|
|
1087
|
+
clientsInsert!.relation.columns.find((col) => col.name === 'lastMutationID')
|
|
1088
|
+
?.typeOid
|
|
1089
|
+
).toBe(20)
|
|
1090
|
+
expect([...mutationsInsert!.relation.keyColumns].sort()).toEqual(
|
|
1091
|
+
['clientGroupID', 'clientID', 'mutationID'].sort()
|
|
1092
|
+
)
|
|
1093
|
+
expect(
|
|
1094
|
+
mutationsInsert!.relation.columns.find((col) => col.name === 'mutationID')?.typeOid
|
|
1095
|
+
).toBe(20)
|
|
1096
|
+
expect(
|
|
1097
|
+
mutationsInsert!.relation.columns.find((col) => col.name === 'result')?.typeOid
|
|
1098
|
+
).toBe(114)
|
|
1017
1099
|
|
|
1018
1100
|
s.close()
|
|
1019
1101
|
})
|
|
@@ -66,6 +66,27 @@ describe('messagePortToWs', () => {
|
|
|
66
66
|
expect(spy).toHaveBeenCalledWith('hello')
|
|
67
67
|
})
|
|
68
68
|
|
|
69
|
+
it('send() invokes the ws callback after posting', () => {
|
|
70
|
+
const [port1] = createMockPorts()
|
|
71
|
+
const ws = messagePortToWs(port1 as any)
|
|
72
|
+
const callback = vi.fn()
|
|
73
|
+
|
|
74
|
+
ws.send('hello', callback)
|
|
75
|
+
|
|
76
|
+
expect(callback).toHaveBeenCalledWith()
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('send() reports an error to the callback after close', () => {
|
|
80
|
+
const [port1] = createMockPorts()
|
|
81
|
+
const ws = messagePortToWs(port1 as any)
|
|
82
|
+
const callback = vi.fn()
|
|
83
|
+
|
|
84
|
+
ws.close()
|
|
85
|
+
ws.send('ignored', callback)
|
|
86
|
+
|
|
87
|
+
expect(callback).toHaveBeenCalledWith(expect.any(Error))
|
|
88
|
+
})
|
|
89
|
+
|
|
69
90
|
it('forwards port messages as ws message events', () => {
|
|
70
91
|
const [port1, port2] = createMockPorts()
|
|
71
92
|
const ws1 = messagePortToWs(port1 as any)
|
|
@@ -26,7 +26,10 @@ interface WsCompatible {
|
|
|
26
26
|
CLOSING: number
|
|
27
27
|
CLOSED: number
|
|
28
28
|
readyState: number
|
|
29
|
-
send(
|
|
29
|
+
send(
|
|
30
|
+
data: string | ArrayBuffer | ArrayBufferView,
|
|
31
|
+
callback?: (err?: Error) => void
|
|
32
|
+
): void
|
|
30
33
|
close(code?: number, reason?: string): void
|
|
31
34
|
addEventListener(type: string, handler: (event: any) => void): void
|
|
32
35
|
removeEventListener(type: string, handler: (event: any) => void): void
|
|
@@ -143,9 +146,24 @@ export function messagePortToWs(port: MessagePort): WsCompatible {
|
|
|
143
146
|
return closed ? 3 : 1 // CLOSED or OPEN
|
|
144
147
|
},
|
|
145
148
|
|
|
146
|
-
send(data: string | ArrayBuffer | ArrayBufferView) {
|
|
147
|
-
if (closed)
|
|
148
|
-
|
|
149
|
+
send(data: string | ArrayBuffer | ArrayBufferView, callback?: (err?: Error) => void) {
|
|
150
|
+
if (closed) {
|
|
151
|
+
callback?.(new Error('WebSocket is closed'))
|
|
152
|
+
return
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
try {
|
|
156
|
+
port.postMessage(data)
|
|
157
|
+
} catch (error) {
|
|
158
|
+
const err = error instanceof Error ? error : new Error(String(error))
|
|
159
|
+
if (callback) {
|
|
160
|
+
callback(err)
|
|
161
|
+
return
|
|
162
|
+
}
|
|
163
|
+
throw err
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
callback?.()
|
|
149
167
|
},
|
|
150
168
|
|
|
151
169
|
close(code?: number, _reason?: string) {
|
|
@@ -179,8 +197,19 @@ export function browserWsToWs(ws: WebSocket): WsCompatible {
|
|
|
179
197
|
return ws.readyState
|
|
180
198
|
},
|
|
181
199
|
|
|
182
|
-
send(data: string | ArrayBuffer | ArrayBufferView) {
|
|
183
|
-
|
|
200
|
+
send(data: string | ArrayBuffer | ArrayBufferView, callback?: (err?: Error) => void) {
|
|
201
|
+
try {
|
|
202
|
+
ws.send(data)
|
|
203
|
+
} catch (error) {
|
|
204
|
+
const err = error instanceof Error ? error : new Error(String(error))
|
|
205
|
+
if (callback) {
|
|
206
|
+
callback(err)
|
|
207
|
+
return
|
|
208
|
+
}
|
|
209
|
+
throw err
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
callback?.()
|
|
184
213
|
},
|
|
185
214
|
|
|
186
215
|
close(code?: number, reason?: string) {
|