orez 0.1.13 → 0.1.15

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/pg-proxy.js CHANGED
@@ -16,6 +16,9 @@ import { fromNodeSocket } from 'pg-gateway/node';
16
16
  import { log } from './log.js';
17
17
  import { Mutex } from './mutex.js';
18
18
  import { handleReplicationQuery, handleStartReplication } from './replication/handler.js';
19
+ // shared encoder/decoder instances
20
+ const textEncoder = new TextEncoder();
21
+ const textDecoder = new TextDecoder();
19
22
  // clean version string: strip emscripten compiler info that breaks pg_restore/pg_dump
20
23
  const PG_VERSION_STRING = "'PostgreSQL 17.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 12.2.0, 64-bit'";
21
24
  // query rewrites: make pglite look like real postgres with logical replication
@@ -65,7 +68,7 @@ const SERVER_PARAMS = [
65
68
  ];
66
69
  // build a ParameterStatus wire protocol message (type 'S', 0x53)
67
70
  function buildParameterStatus(name, value) {
68
- const encoder = new TextEncoder();
71
+ const encoder = textEncoder;
69
72
  const nameBytes = encoder.encode(name);
70
73
  const valueBytes = encoder.encode(value);
71
74
  const len = 4 + nameBytes.length + 1 + valueBytes.length + 1;
@@ -97,7 +100,7 @@ function extractParseQuery(data) {
97
100
  const queryStart = offset;
98
101
  while (offset < data.length && data[offset] !== 0)
99
102
  offset++;
100
- return new TextDecoder().decode(data.subarray(queryStart, offset));
103
+ return textDecoder.decode(data.subarray(queryStart, offset));
101
104
  }
102
105
  /**
103
106
  * rebuild a Parse message with a modified query string.
@@ -113,7 +116,7 @@ function rebuildParseMessage(data, newQuery) {
113
116
  offset++;
114
117
  offset++;
115
118
  const suffix = data.subarray(offset);
116
- const encoder = new TextEncoder();
119
+ const encoder = textEncoder;
117
120
  const queryBytes = encoder.encode(newQuery);
118
121
  const totalLen = 4 + nameBytes.length + queryBytes.length + 1 + suffix.length;
119
122
  const result = new Uint8Array(1 + totalLen);
@@ -133,7 +136,7 @@ function rebuildParseMessage(data, newQuery) {
133
136
  * rebuild a Simple Query message with a modified query string.
134
137
  */
135
138
  function rebuildSimpleQuery(newQuery) {
136
- const encoder = new TextEncoder();
139
+ const encoder = textEncoder;
137
140
  const queryBytes = encoder.encode(newQuery + '\0');
138
141
  const buf = new Uint8Array(5 + queryBytes.length);
139
142
  buf[0] = 0x51;
@@ -141,6 +144,15 @@ function rebuildSimpleQuery(newQuery) {
141
144
  buf.set(queryBytes, 5);
142
145
  return buf;
143
146
  }
147
+ // apply all rewrites in one pass, using replace directly (no separate test)
148
+ function applyRewrites(query) {
149
+ let result = query;
150
+ for (const rw of QUERY_REWRITES) {
151
+ rw.match.lastIndex = 0;
152
+ result = result.replace(rw.match, rw.replace);
153
+ }
154
+ return result;
155
+ }
144
156
  /**
145
157
  * intercept and rewrite query messages to make pglite look like real postgres.
146
158
  */
@@ -149,35 +161,18 @@ function interceptQuery(data) {
149
161
  if (msgType === 0x51) {
150
162
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
151
163
  const len = view.getInt32(1);
152
- let query = new TextDecoder().decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
153
- let modified = false;
154
- for (const rw of QUERY_REWRITES) {
155
- if (rw.match.test(query)) {
156
- query = query.replace(rw.match, rw.replace);
157
- modified = true;
158
- rw.match.lastIndex = 0;
159
- }
160
- rw.match.lastIndex = 0;
161
- }
162
- if (modified) {
163
- return rebuildSimpleQuery(query);
164
+ const original = textDecoder.decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
165
+ const rewritten = applyRewrites(original);
166
+ if (rewritten !== original) {
167
+ return rebuildSimpleQuery(rewritten);
164
168
  }
165
169
  }
166
170
  else if (msgType === 0x50) {
167
- const query = extractParseQuery(data);
168
- if (query) {
169
- let newQuery = query;
170
- let modified = false;
171
- for (const rw of QUERY_REWRITES) {
172
- if (rw.match.test(newQuery)) {
173
- newQuery = newQuery.replace(rw.match, rw.replace);
174
- modified = true;
175
- rw.match.lastIndex = 0;
176
- }
177
- rw.match.lastIndex = 0;
178
- }
179
- if (modified) {
180
- return rebuildParseMessage(data, newQuery);
171
+ const original = extractParseQuery(data);
172
+ if (original) {
173
+ const rewritten = applyRewrites(original);
174
+ if (rewritten !== original) {
175
+ return rebuildParseMessage(data, rewritten);
181
176
  }
182
177
  }
183
178
  }
@@ -191,7 +186,7 @@ function isNoopQuery(data) {
191
186
  if (data[0] === 0x51) {
192
187
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
193
188
  const len = view.getInt32(1);
194
- query = new TextDecoder().decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
189
+ query = textDecoder.decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
195
190
  }
196
191
  else if (data[0] === 0x50) {
197
192
  query = extractParseQuery(data);
@@ -204,7 +199,7 @@ function isNoopQuery(data) {
204
199
  * build a synthetic "SET" command complete response.
205
200
  */
206
201
  function buildSetCompleteResponse() {
207
- const encoder = new TextEncoder();
202
+ const encoder = textEncoder;
208
203
  const tag = encoder.encode('SET\0');
209
204
  const cc = new Uint8Array(1 + 4 + tag.length);
210
205
  cc[0] = 0x43;
@@ -264,7 +259,7 @@ function extractNoticeCode(data, offset, totalLen) {
264
259
  break;
265
260
  if (fieldType === 0x43) {
266
261
  // 'C' = SQLSTATE code
267
- return new TextDecoder().decode(data.subarray(strStart, pos));
262
+ return textDecoder.decode(data.subarray(strStart, pos));
268
263
  }
269
264
  pos++; // skip null terminator
270
265
  }
@@ -428,7 +423,7 @@ export async function startPgProxy(dbInput, config) {
428
423
  if (data[0] === 0x51) {
429
424
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
430
425
  const len = view.getInt32(1);
431
- const query = new TextDecoder()
426
+ const query = textDecoder
432
427
  .decode(data.subarray(5, 1 + len - 1))
433
428
  .replace(/\0$/, '');
434
429
  log.debug.proxy(`repl query: ${query.slice(0, 200)}`);
@@ -489,21 +484,28 @@ async function handleReplicationMessage(data, socket, db, mutex, connection) {
489
484
  return undefined;
490
485
  const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
491
486
  const len = view.getInt32(1);
492
- const query = new TextDecoder().decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
487
+ const query = textDecoder.decode(data.subarray(5, 1 + len - 1)).replace(/\0$/, '');
493
488
  const upper = query.trim().toUpperCase();
494
489
  // check if this is a START_REPLICATION command
495
490
  if (upper.startsWith('START_REPLICATION')) {
496
491
  await connection.detach();
492
+ let aborted = false;
493
+ const abortController = new AbortController();
497
494
  const writer = {
498
495
  write(chunk) {
499
- if (!socket.destroyed) {
496
+ if (!socket.destroyed && !aborted) {
500
497
  socket.write(chunk);
501
498
  }
502
499
  },
500
+ get closed() {
501
+ return socket.destroyed || aborted;
502
+ },
503
503
  };
504
504
  // drain incoming standby status updates
505
505
  socket.on('data', (_chunk) => { });
506
506
  socket.on('close', () => {
507
+ aborted = true;
508
+ abortController.abort();
507
509
  socket.destroy();
508
510
  });
509
511
  handleStartReplication(query, writer, db, mutex).catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"pg-proxy.js","sourceRoot":"","sources":["../src/pg-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pg-proxy.js","sourceRoot":"","sources":["../src/pg-proxy.ts"],"names":[],"mappings":"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"}
@@ -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,CA4DrE;AAqED;;;;;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"}
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,CA4DrE;AAyED;;;;;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"}
@@ -110,7 +110,12 @@ async function installTriggersOnAllTables(db) {
110
110
  `);
111
111
  count++;
112
112
  }
113
- log.debug.pglite(`installed change tracking triggers on ${count} tables`);
113
+ if (count > 0) {
114
+ log.pglite(`installed change tracking triggers on ${count} tables`);
115
+ }
116
+ else {
117
+ log.debug.pglite(`no tables to install change tracking triggers on`);
118
+ }
114
119
  }
115
120
  /**
116
121
  * install change tracking triggers on tables in shard schemas.
@@ -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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"}
@@ -9,6 +9,7 @@ import type { Mutex } from '../mutex.js';
9
9
  import type { PGlite } from '@electric-sql/pglite';
10
10
  export interface ReplicationWriter {
11
11
  write(data: Uint8Array): void;
12
+ readonly closed?: boolean;
12
13
  }
13
14
  declare function buildErrorResponse(message: string): Uint8Array;
14
15
  /**
@@ -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;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,CAkTf;AAuHD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
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;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAC1B;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,CAsWf;AA6HD,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
@@ -6,8 +6,9 @@
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, purgeConsumedChanges, installTriggersOnShardTables, } from './change-tracker.js';
10
- import { encodeBegin, encodeCommit, encodeRelation, encodeInsert, encodeUpdate, encodeDelete, encodeKeepalive, wrapXLogData, wrapCopyData, getTableOid, inferColumns, } from './pgoutput-encoder.js';
9
+ const textEncoder = new TextEncoder();
10
+ import { getChangesSince, purgeConsumedChanges, installTriggersOnShardTables, } from './change-tracker.js';
11
+ import { encodeBegin, encodeCommit, encodeRelation, encodeInsert, encodeUpdate, encodeDelete, encodeKeepalive, encodeWrappedChange, getTableOid, inferColumns, } from './pgoutput-encoder.js';
11
12
  // current lsn counter
12
13
  let currentLsn = 0x1000000n;
13
14
  function nextLsn() {
@@ -25,7 +26,7 @@ function nowMicros() {
25
26
  // build a wire protocol row description + data row response
26
27
  function buildSimpleResponse(columns, values) {
27
28
  const parts = [];
28
- const encoder = new TextEncoder();
29
+ const encoder = textEncoder;
29
30
  // RowDescription (0x54)
30
31
  let rdSize = 6; // int32 len + int16 numFields
31
32
  const colBytes = [];
@@ -103,7 +104,7 @@ function buildSimpleResponse(columns, values) {
103
104
  return result;
104
105
  }
105
106
  function buildCommandComplete(tag) {
106
- const encoder = new TextEncoder();
107
+ const encoder = textEncoder;
107
108
  const tagBytes = encoder.encode(tag + '\0');
108
109
  const cc = new Uint8Array(1 + 4 + tagBytes.length);
109
110
  cc[0] = 0x43;
@@ -119,7 +120,7 @@ function buildCommandComplete(tag) {
119
120
  return result;
120
121
  }
121
122
  function buildErrorResponse(message) {
122
- const encoder = new TextEncoder();
123
+ const encoder = textEncoder;
123
124
  const msgBytes = encoder.encode(message);
124
125
  // S(severity) + M(message) + null terminator
125
126
  const fields = new Uint8Array(2 + 6 + 2 + msgBytes.length + 1 + 1); // S + ERROR\0 + M + msg\0 + terminator
@@ -250,6 +251,9 @@ export async function handleStartReplication(query, writer, db, mutex) {
250
251
  FOR EACH STATEMENT EXECUTE FUNCTION public._zero_notify_change();
251
252
  `);
252
253
  }
254
+ if (tables.length > 0) {
255
+ log.proxy(`installed notify triggers on ${tables.length} public table(s)`);
256
+ }
253
257
  // discover shard schemas (e.g. chat_0) and install NOTIFY triggers
254
258
  const shardSchemas = await db.query(`SELECT nspname FROM pg_namespace
255
259
  WHERE nspname NOT IN ('pg_catalog', 'information_schema', 'pg_toast', 'public')
@@ -356,33 +360,73 @@ export async function handleStartReplication(query, writer, db, mutex) {
356
360
  // track which tables we've sent RELATION messages for
357
361
  const sentRelations = new Set();
358
362
  let txCounter = 1;
359
- // polling + notification loop
360
- // adaptive: poll fast when catching up, slow when idle
361
- const pollIntervalIdle = 500;
362
- const pollIntervalCatchUp = 20;
363
+ // event-driven replication with promise-based wakeup
364
+ // uses pg_notify to wake up immediately, polling only as fallback
365
+ const pollIntervalIdle = 200;
363
366
  const batchSize = 2000;
364
- const purgeEveryN = 10;
367
+ const purgeEveryN = 5;
365
368
  const shardRescanEveryN = 20;
366
369
  let running = true;
367
370
  let pollsSincePurge = 0;
368
371
  let pollsSinceShardRescan = 0;
372
+ // promise-based wakeup mechanism
373
+ let wakeupResolve = null;
374
+ const wakeup = () => {
375
+ if (wakeupResolve) {
376
+ wakeupResolve();
377
+ wakeupResolve = null;
378
+ }
379
+ };
380
+ const waitForWakeup = (timeoutMs) => {
381
+ return new Promise((resolve) => {
382
+ const timer = setTimeout(() => {
383
+ wakeupResolve = null;
384
+ resolve();
385
+ }, timeoutMs);
386
+ wakeupResolve = () => {
387
+ clearTimeout(timer);
388
+ resolve();
389
+ };
390
+ });
391
+ };
392
+ // set up LISTEN to wake up immediately on changes
393
+ let unsubscribe = null;
394
+ try {
395
+ unsubscribe = await db.listen('_zero_changes', wakeup);
396
+ log.debug.proxy('replication: listening for _zero_changes notifications');
397
+ }
398
+ catch {
399
+ log.debug.proxy('replication: LISTEN not available, using polling only');
400
+ }
369
401
  const poll = async () => {
370
402
  while (running) {
403
+ // check if the connection was closed
404
+ if (writer.closed) {
405
+ log.debug.proxy('replication: writer closed, exiting poll loop');
406
+ running = false;
407
+ break;
408
+ }
371
409
  try {
372
410
  // periodically re-scan for new shard schemas (e.g. chat_0 created by zero-cache)
373
411
  pollsSinceShardRescan++;
374
412
  if (pollsSinceShardRescan >= shardRescanEveryN) {
375
- pollsSinceShardRescan = 0;
376
- await mutex.acquire();
377
- try {
378
- await installTriggersOnShardTables(db);
379
- }
380
- finally {
381
- mutex.release();
413
+ if (mutex.tryAcquire()) {
414
+ pollsSinceShardRescan = 0;
415
+ try {
416
+ await installTriggersOnShardTables(db);
417
+ }
418
+ finally {
419
+ mutex.release();
420
+ }
382
421
  }
383
422
  }
384
- // acquire mutex to avoid conflicting with proxy connections
385
- await mutex.acquire();
423
+ // try to acquire mutex without blocking proxy connections.
424
+ // if the mutex is busy (proxy handling zero-cache queries), skip
425
+ // this iteration to avoid starving initial sync.
426
+ if (!mutex.tryAcquire()) {
427
+ await waitForWakeup(pollIntervalIdle);
428
+ continue;
429
+ }
386
430
  let changes;
387
431
  try {
388
432
  changes = await getChangesSince(db, lastWatermark, batchSize);
@@ -414,9 +458,8 @@ export async function handleStartReplication(query, writer, db, mutex) {
414
458
  lastWatermark = batchEnd;
415
459
  // purge consumed changes periodically to free wasm memory
416
460
  pollsSincePurge++;
417
- if (pollsSincePurge >= purgeEveryN) {
461
+ if (pollsSincePurge >= purgeEveryN && mutex.tryAcquire()) {
418
462
  pollsSincePurge = 0;
419
- await mutex.acquire();
420
463
  try {
421
464
  const purged = await purgeConsumedChanges(db, lastWatermark);
422
465
  if (purged > 0) {
@@ -427,13 +470,14 @@ export async function handleStartReplication(query, writer, db, mutex) {
427
470
  mutex.release();
428
471
  }
429
472
  }
473
+ // got changes - continue immediately to check for more
474
+ continue;
430
475
  }
431
476
  // send keepalive
432
477
  const ts = nowMicros();
433
478
  writer.write(encodeKeepalive(currentLsn, ts, false));
434
- // if we got a full batch, there's likely more - poll fast
435
- const delay = changes.length >= batchSize ? pollIntervalCatchUp : pollIntervalIdle;
436
- await new Promise((resolve) => setTimeout(resolve, delay));
479
+ // no changes: wait for notify signal or poll interval
480
+ await waitForWakeup(pollIntervalIdle);
437
481
  }
438
482
  catch (err) {
439
483
  const msg = err instanceof Error ? err.message : String(err);
@@ -447,15 +491,23 @@ export async function handleStartReplication(query, writer, db, mutex) {
447
491
  }
448
492
  };
449
493
  log.debug.proxy('replication: starting poll loop');
450
- await poll();
494
+ try {
495
+ await poll();
496
+ }
497
+ finally {
498
+ if (unsubscribe) {
499
+ await unsubscribe().catch(() => { });
500
+ }
501
+ }
451
502
  log.debug.proxy('replication: poll loop exited');
452
503
  }
504
+ // cache column info per table to avoid per-change allocation
505
+ const cachedColumns = new Map();
453
506
  async function streamChanges(changes, writer, sentRelations, txId, tableKeyColumns, excludedColumns, columnTypeOids) {
454
507
  const ts = nowMicros();
455
508
  const lsn = nextLsn();
456
509
  // BEGIN
457
- const beginMsg = wrapXLogData(lsn, lsn, ts, encodeBegin(lsn, ts, txId));
458
- writer.write(wrapCopyData(beginMsg));
510
+ writer.write(encodeWrappedChange(lsn, lsn, ts, encodeBegin(lsn, ts, txId)));
459
511
  for (const change of changes) {
460
512
  // parse schema-qualified name (schema.table or bare table)
461
513
  const dot = change.table_name.indexOf('.');
@@ -488,17 +540,22 @@ async function streamChanges(changes, writer, sentRelations, txId, tableKeyColum
488
540
  const row = rowData || oldData;
489
541
  if (!row)
490
542
  continue;
491
- const keySet = tableKeyColumns.get(qualifiedKey);
492
- const typeOids = columnTypeOids.get(qualifiedKey);
493
- const columns = inferColumns(row).map((col) => ({
494
- ...col,
495
- typeOid: typeOids?.get(col.name) ?? col.typeOid,
496
- isKey: keySet?.has(col.name) ?? false,
497
- }));
543
+ // use cached columns or build and cache them
544
+ let columns = cachedColumns.get(qualifiedKey);
545
+ if (!columns) {
546
+ const keySet = tableKeyColumns.get(qualifiedKey);
547
+ const typeOids = columnTypeOids.get(qualifiedKey);
548
+ columns = inferColumns(row).map((col) => ({
549
+ ...col,
550
+ typeOid: typeOids?.get(col.name) ?? col.typeOid,
551
+ isKey: keySet?.has(col.name) ?? false,
552
+ }));
553
+ cachedColumns.set(qualifiedKey, columns);
554
+ }
498
555
  // send RELATION if not yet sent
499
556
  if (!sentRelations.has(qualifiedKey)) {
500
557
  const relMsg = encodeRelation(tableOid, schema, tableName, 0x64, columns);
501
- writer.write(wrapCopyData(wrapXLogData(lsn, lsn, ts, relMsg)));
558
+ writer.write(encodeWrappedChange(lsn, lsn, ts, relMsg));
502
559
  sentRelations.add(qualifiedKey);
503
560
  }
504
561
  // send the change
@@ -522,12 +579,11 @@ async function streamChanges(changes, writer, sentRelations, txId, tableKeyColum
522
579
  default:
523
580
  continue;
524
581
  }
525
- writer.write(wrapCopyData(wrapXLogData(lsn, lsn, ts, changeMsg)));
582
+ writer.write(encodeWrappedChange(lsn, lsn, ts, changeMsg));
526
583
  }
527
584
  // COMMIT
528
585
  const endLsn = nextLsn();
529
- const commitMsg = wrapXLogData(endLsn, endLsn, ts, encodeCommit(0, lsn, endLsn, ts));
530
- writer.write(wrapCopyData(commitMsg));
586
+ writer.write(encodeWrappedChange(endLsn, endLsn, ts, encodeCommit(0, lsn, endLsn, ts)));
531
587
  }
532
588
  function normalizeShardClientsRow(row) {
533
589
  if (!row)