@powersync/service-module-mssql 0.0.0-dev-20260602073133 → 0.0.0-dev-20260909133214

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +209 -4
  2. package/dist/api/MSSQLRouteAPIAdapter.d.ts +4 -5
  3. package/dist/api/MSSQLRouteAPIAdapter.js +33 -39
  4. package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
  5. package/dist/common/MSSQLSourceTable.d.ts +12 -2
  6. package/dist/common/MSSQLSourceTable.js +30 -4
  7. package/dist/common/MSSQLSourceTable.js.map +1 -1
  8. package/dist/module/MSSQLModule.js +2 -1
  9. package/dist/module/MSSQLModule.js.map +1 -1
  10. package/dist/replication/CDCPoller.d.ts +13 -36
  11. package/dist/replication/CDCPoller.js +173 -129
  12. package/dist/replication/CDCPoller.js.map +1 -1
  13. package/dist/replication/CDCReplicationJob.js +1 -1
  14. package/dist/replication/CDCReplicationJob.js.map +1 -1
  15. package/dist/replication/CDCReplicator.js +1 -1
  16. package/dist/replication/CDCReplicator.js.map +1 -1
  17. package/dist/replication/CDCStream.d.ts +11 -14
  18. package/dist/replication/CDCStream.js +124 -115
  19. package/dist/replication/CDCStream.js.map +1 -1
  20. package/dist/replication/CaptureReconciler.d.ts +47 -0
  21. package/dist/replication/CaptureReconciler.js +155 -0
  22. package/dist/replication/CaptureReconciler.js.map +1 -0
  23. package/dist/replication/MSSQLConnectionManager.d.ts +1 -0
  24. package/dist/replication/MSSQLConnectionManager.js +19 -14
  25. package/dist/replication/MSSQLConnectionManager.js.map +1 -1
  26. package/dist/replication/MSSQLTableReconciliationContext.d.ts +21 -0
  27. package/dist/replication/MSSQLTableReconciliationContext.js +7 -0
  28. package/dist/replication/MSSQLTableReconciliationContext.js.map +1 -0
  29. package/dist/replication/SchemaChange.d.ts +67 -0
  30. package/dist/replication/SchemaChange.js +31 -0
  31. package/dist/replication/SchemaChange.js.map +1 -0
  32. package/dist/types/types.d.ts +13 -0
  33. package/dist/types/types.js +28 -2
  34. package/dist/types/types.js.map +1 -1
  35. package/dist/utils/mssql.js +1 -1
  36. package/dist/utils/schema.d.ts +14 -1
  37. package/dist/utils/schema.js +43 -45
  38. package/dist/utils/schema.js.map +1 -1
  39. package/package.json +11 -21
  40. package/src/api/MSSQLRouteAPIAdapter.ts +38 -49
  41. package/src/common/MSSQLSourceTable.ts +32 -4
  42. package/src/module/MSSQLModule.ts +2 -1
  43. package/src/replication/CDCPoller.ts +206 -162
  44. package/src/replication/CDCReplicationJob.ts +1 -1
  45. package/src/replication/CDCReplicator.ts +1 -1
  46. package/src/replication/CDCStream.ts +157 -163
  47. package/src/replication/CaptureReconciler.ts +186 -0
  48. package/src/replication/MSSQLConnectionManager.ts +23 -14
  49. package/src/replication/MSSQLTableReconciliationContext.ts +29 -0
  50. package/src/replication/SchemaChange.ts +79 -0
  51. package/src/types/types.ts +47 -2
  52. package/src/utils/mssql.ts +1 -1
  53. package/src/utils/schema.ts +60 -54
  54. package/test/src/CDCPoller.test.ts +382 -0
  55. package/test/src/CDCStream.test.ts +6 -2
  56. package/test/src/CDCStreamTestContext.ts +30 -23
  57. package/test/src/CaptureReconciler.test.ts +171 -0
  58. package/test/src/MSSQLSourceTable.test.ts +30 -0
  59. package/test/src/config.test.ts +71 -0
  60. package/test/src/schema-changes.test.ts +513 -249
  61. package/test/src/schema.test.ts +17 -0
  62. package/test/src/util.ts +73 -9
  63. package/tsconfig.json +0 -3
  64. package/tsconfig.tsbuildinfo +1 -1
@@ -3,27 +3,24 @@ import sql from 'mssql';
3
3
  import timers from 'timers/promises';
4
4
  import { LSN } from '../common/LSN.js';
5
5
  import { isDeadlockError } from '../utils/deadlock.js';
6
- import { getCaptureInstances, incrementLSN, toQualifiedTableName } from '../utils/mssql.js';
6
+ import { getCaptureInstances, incrementLSN } from '../utils/mssql.js';
7
7
  import { tableExists } from '../utils/schema.js';
8
- var Operation;
9
- (function (Operation) {
10
- Operation[Operation["DELETE"] = 1] = "DELETE";
11
- Operation[Operation["INSERT"] = 2] = "INSERT";
12
- Operation[Operation["UPDATE_BEFORE"] = 3] = "UPDATE_BEFORE";
13
- Operation[Operation["UPDATE_AFTER"] = 4] = "UPDATE_AFTER";
14
- })(Operation || (Operation = {}));
15
- export var SchemaChangeType;
16
- (function (SchemaChangeType) {
17
- SchemaChangeType["TABLE_RENAME"] = "table_rename";
18
- SchemaChangeType["TABLE_DROP"] = "table_drop";
19
- SchemaChangeType["TABLE_CREATE"] = "table_create";
20
- SchemaChangeType["TABLE_COLUMN_CHANGES"] = "table_column_changes";
21
- SchemaChangeType["NEW_CAPTURE_INSTANCE"] = "new_capture_instance";
22
- SchemaChangeType["MISSING_CAPTURE_INSTANCE"] = "missing_capture_instance";
23
- })(SchemaChangeType || (SchemaChangeType = {}));
8
+ import { CaptureInstanceMissingError } from './CaptureReconciler.js';
9
+ import { SchemaChangeType } from './SchemaChange.js';
10
+ var LogicalChangeType;
11
+ (function (LogicalChangeType) {
12
+ LogicalChangeType["INSERT"] = "INSERT";
13
+ LogicalChangeType["DELETE"] = "DELETE";
14
+ LogicalChangeType["UPDATE"] = "UPDATE";
15
+ LogicalChangeType["DEFERRED_UPDATE"] = "DEFERRED UPDATE";
16
+ })(LogicalChangeType || (LogicalChangeType = {}));
24
17
  export const DEFAULT_SCHEMA_CHECK_INTERVAL_MS = 60_000;
25
18
  /**
19
+ * Polls SQL Server CDC change tables for changes at a configurable interval.
26
20
  *
21
+ * Processes changes in commit order, groups CDC rows into logical insert,
22
+ * update, and delete operations. It only commits once all the operations recorded in a polling cycle have been processed.
23
+ * Periodically runs checks to detect schema and capture-instance changes.
27
24
  */
28
25
  export class CDCPoller {
29
26
  options;
@@ -31,8 +28,8 @@ export class CDCPoller {
31
28
  eventHandler;
32
29
  currentLSN;
33
30
  logger;
34
- listenerError;
35
31
  captureInstances;
32
+ pollingError = null;
36
33
  isStopped = false;
37
34
  isStopping = false;
38
35
  isPolling = false;
@@ -43,7 +40,6 @@ export class CDCPoller {
43
40
  this.connectionManager = options.connectionManager;
44
41
  this.eventHandler = options.eventHandler;
45
42
  this.currentLSN = options.startLSN;
46
- this.listenerError = null;
47
43
  this.captureInstances = new Map();
48
44
  }
49
45
  get pollingBatchSize() {
@@ -105,16 +101,16 @@ export class CDCPoller {
105
101
  continue;
106
102
  }
107
103
  // Non-recoverable errors
108
- this.listenerError = error;
104
+ this.pollingError = error;
109
105
  this.logger.error('Error during CDC polling:', error);
110
106
  this.stop();
111
107
  }
112
108
  break;
113
109
  }
114
110
  }
115
- if (this.listenerError) {
116
- this.logger.error('CDC polling was stopped due to an error:', this.listenerError);
117
- throw this.listenerError;
111
+ if (this.pollingError) {
112
+ this.logger.error('CDC polling was stopped due to an error:', this.pollingError);
113
+ throw this.pollingError;
118
114
  }
119
115
  this.logger.info(`CDC polling stopped...`);
120
116
  }
@@ -137,18 +133,19 @@ export class CDCPoller {
137
133
  // The new endLSN is the largest LSN in the result
138
134
  const endLSN = LSN.fromBinary(results[results.length - 1].start_lsn);
139
135
  this.logger.info(`Polling bounds are ${startLSN} -> ${endLSN} spanning ${results.length} transaction(s).`);
140
- let transactionCount = 0;
136
+ // We poll for batch size transactions, but these include transactions not applicable to our Source Tables.
137
+ // A single transaction can also span several Source Tables, so collect the distinct transaction LSNs
138
+ // that produced changes rather than counting per table, which would either double count the
139
+ // transactions spanning tables or miss the transactions applicable to only one of them.
140
+ let transactionLSNs = new Set();
141
141
  this.logger.debug(`Currently replicating tables: ${this.replicatedTables.map((table) => table.toQualifiedName()).join(', ')}`);
142
142
  for (const table of this.replicatedTables) {
143
143
  if (table.enabledForCDC()) {
144
- const tableTransactionCount = await this.pollTable(table, { startLSN, endLSN });
145
- // We poll for batch size transactions, but these include transactions not applicable to our Source Tables.
146
- // Each Source Table may or may not have transactions that are applicable to it, so just keep track of the highest number of transactions processed for any Source Table.
147
- if (tableTransactionCount > transactionCount) {
148
- transactionCount = tableTransactionCount;
149
- }
144
+ const transactions = await this.pollTable(table, { startLSN, endLSN });
145
+ transactions.forEach((t) => transactionLSNs.add(t));
150
146
  }
151
147
  }
148
+ const transactionCount = transactionLSNs.size;
152
149
  this.logger.info(`Processed ${results.length} transaction(s), including ${transactionCount} Source Table transaction(s). Commited LSN: ${endLSN.toString()}`);
153
150
  // Call eventHandler.onCommit() with toLSN after processing all tables
154
151
  await this.eventHandler.onCommit(endLSN.toString(), transactionCount);
@@ -160,63 +157,69 @@ export class CDCPoller {
160
157
  this.isPolling = false;
161
158
  }
162
159
  }
160
+ /**
161
+ * Processes the changes this table has within the given bounds, and returns the LSNs of the
162
+ * transactions those changes belong to. The LSNs are returned in their string form so that the
163
+ * caller can deduplicate them across tables by value.
164
+ */
163
165
  async pollTable(table, bounds) {
164
- // Ensure that the startLSN is not before the minimum LSN for the table
165
- const minLSN = this.captureInstances.get(table.objectId).instances[0].minLSN;
166
+ const transactionLSNs = new Set();
167
+ // CDC cleanup can advance minLSN while the capture-table identity remains unchanged, so use
168
+ // the latest metadata loaded by the schema check rather than the instance bound at startup.
169
+ const availableInstances = this.captureInstances.get(table.objectId)?.instances ?? [];
170
+ table.setCaptureInstance(availableInstances);
171
+ const boundInstance = table.captureInstance;
172
+ if (boundInstance == null) {
173
+ // The pinned instance can be dropped between schema checks.
174
+ throw new CaptureInstanceMissingError(`The CDC capture instance for table ${table.toQualifiedName()} (pinned to object id ` +
175
+ `${table.pinnedCaptureObjectId}) is no longer available. Deploy a new sync config to replicate ` +
176
+ `this table against an available capture instance.`);
177
+ }
178
+ const minLSN = boundInstance.minLSN;
166
179
  if (minLSN > bounds.endLSN) {
167
- return 0;
180
+ return transactionLSNs;
168
181
  }
169
182
  else if (minLSN >= bounds.startLSN) {
170
183
  bounds.startLSN = minLSN;
171
184
  }
172
185
  try {
173
- const { recordset: results } = await this.connectionManager.query(`
174
- SELECT * FROM ${table.allChangesFunction}(@from_lsn, @to_lsn, 'all update old') ORDER BY __$start_lsn, __$seqval
175
- `, [
176
- { name: 'from_lsn', type: sql.VarBinary, value: bounds.startLSN.toBinary() },
177
- { name: 'to_lsn', type: sql.VarBinary, value: bounds.endLSN.toBinary() }
178
- ]);
179
- let transactionCount = 0;
180
- let updateBefore = null;
181
- let lastTransactionLSN = null;
182
- for (const row of results) {
183
- const transactionLSN = LSN.fromBinary(row.__$start_lsn);
184
- switch (row.__$operation) {
185
- case Operation.DELETE:
186
- await this.eventHandler.onDelete(row, table, results.columns);
187
- this.logger.info(`Processed DELETE row LSN: ${transactionLSN}`);
188
- break;
189
- case Operation.INSERT:
190
- await this.eventHandler.onInsert(row, table, results.columns);
191
- this.logger.info(`Processed INSERT row LSN: ${transactionLSN}`);
186
+ const request = await this.connectionManager.createRequest();
187
+ request.input('from_lsn', sql.VarBinary, bounds.startLSN.toBinary());
188
+ request.input('to_lsn', sql.VarBinary, bounds.endLSN.toBinary());
189
+ let columns = null;
190
+ request.on('recordset', (recordsetColumns) => {
191
+ columns = recordsetColumns;
192
+ });
193
+ const stream = request.toReadableStream();
194
+ request.query(`
195
+ SELECT * FROM ${table.allChangesFunction}(@from_lsn, @to_lsn, 'all update old') ORDER BY __$start_lsn, __$seqval, __$operation
196
+ `);
197
+ for await (const { transactionLSN, type, rows } of groupLogicalChanges(stream, table)) {
198
+ if (columns == null) {
199
+ throw new ReplicationAssertionError(`Missing CDC column metadata while polling for updates for table ${table.toQualifiedName()}.`);
200
+ }
201
+ switch (type) {
202
+ case LogicalChangeType.DELETE:
203
+ await this.eventHandler.onDelete(rows[0], table, columns);
192
204
  break;
193
- case Operation.UPDATE_BEFORE:
194
- updateBefore = row;
195
- this.logger.debug(`Processed UPDATE, before row LSN: ${transactionLSN}`);
205
+ case LogicalChangeType.INSERT:
206
+ await this.eventHandler.onInsert(rows[0], table, columns);
196
207
  break;
197
- case Operation.UPDATE_AFTER:
198
- if (updateBefore === null) {
199
- throw new ReplicationAssertionError('Missing before image for update event.');
200
- }
201
- await this.eventHandler.onUpdate(row, updateBefore, table, results.columns);
202
- updateBefore = null;
203
- this.logger.info(`Processed UPDATE row LSN: ${transactionLSN}`);
208
+ case LogicalChangeType.UPDATE:
209
+ case LogicalChangeType.DEFERRED_UPDATE:
210
+ const [rowBefore, rowAfter] = rows;
211
+ await this.eventHandler.onUpdate(rowAfter, rowBefore, table, columns);
204
212
  break;
205
- default:
206
- this.logger.warn(`Unknown operation type [${row.__$operation}] encountered in CDC changes.`);
207
- }
208
- // Increment transaction count when we encounter a new transaction LSN (except for UPDATE_BEFORE rows)
209
- if (transactionLSN != lastTransactionLSN) {
210
- lastTransactionLSN = transactionLSN;
211
- if (row.__$operation !== Operation.UPDATE_BEFORE) {
212
- transactionCount++;
213
- }
214
213
  }
214
+ this.logger.info(`Processed ${type}. Transaction LSN: ${transactionLSN}`);
215
+ transactionLSNs.add(transactionLSN.toString());
215
216
  }
216
- return transactionCount;
217
+ return transactionLSNs;
217
218
  }
218
219
  catch (error) {
219
- // This Covers both deleted tables and capture instances
220
+ // This Covers both deleted tables and capture instances. Unlike the check above, this cannot
221
+ // tell the two apart, so it stays recoverable: the forced schema check classifies it as a
222
+ // dropped table or a missing capture instance and fails with the matching error.
220
223
  if (error.message.includes(`Invalid object name`)) {
221
224
  throw new DatabaseQueryError(ErrorCode.PSYNC_S1601, `Capture instance for table ${table.toQualifiedName()} is no longer available.`, error);
222
225
  }
@@ -226,29 +229,13 @@ export class CDCPoller {
226
229
  shouldCheckSchema() {
227
230
  return Date.now() - this.lastSchemaCheckTime >= this.schemaCheckIntervalMs;
228
231
  }
229
- /**
230
- * Checks the given table for pending schema changes that can lead to inconsistencies in the replicated data if not handled.
231
- * Returns the SchemaChange if any are found, null otherwise.
232
- */
233
232
  async checkForSchemaChanges() {
234
233
  const schemaChanges = [];
235
- const newTables = this.checkForNewTables();
236
- for (const table of newTables) {
237
- this.logger.info(`New table ${toQualifiedTableName(table.sourceTable.schema, table.sourceTable.name)} matching the sync config has been created. Handling schema change...`);
238
- schemaChanges.push({
239
- type: SchemaChangeType.TABLE_CREATE,
240
- newTable: {
241
- name: table.sourceTable.name,
242
- schema: table.sourceTable.schema,
243
- objectId: table.sourceTable.objectId
244
- },
245
- newCaptureInstance: table.instances[0]
246
- });
247
- }
234
+ // Exact table names keep the replicated set fixed until the next deploy.
248
235
  for (const table of this.replicatedTables) {
249
236
  const exists = await tableExists(table.objectId, this.connectionManager);
250
237
  if (!exists) {
251
- this.logger.info(`Table ${table.toQualifiedName()} has been dropped. Handling schema change...`);
238
+ this.logger.info(`Table ${table.toQualifiedName()} has been dropped.`);
252
239
  schemaChanges.push({
253
240
  type: SchemaChangeType.TABLE_DROP,
254
241
  table
@@ -257,71 +244,128 @@ export class CDCPoller {
257
244
  }
258
245
  const captureInstanceDetails = this.captureInstances.get(table.objectId);
259
246
  if (!captureInstanceDetails) {
260
- if (table.enabledForCDC()) {
261
- // Table had a capture instance but no longer does.
262
- schemaChanges.push({
263
- type: SchemaChangeType.MISSING_CAPTURE_INSTANCE,
264
- table
265
- });
266
- }
247
+ // The table had a capture instance when the stream started, but no longer does.
248
+ schemaChanges.push({
249
+ type: SchemaChangeType.MISSING_CAPTURE_INSTANCE,
250
+ table
251
+ });
267
252
  continue;
268
253
  }
269
254
  const latestCaptureInstance = captureInstanceDetails.instances[0];
270
- // If the table is not enabled for CDC or the capture instance is different, we need to re-snapshot the source table
271
- if (!table.enabledForCDC() || table.captureInstance.objectId !== latestCaptureInstance.objectId) {
255
+ table.setCaptureInstance(captureInstanceDetails.instances);
256
+ const boundInstance = table.captureInstance;
257
+ if (boundInstance == null) {
258
+ // Include the replacement so the error can suggest the right recovery step.
259
+ schemaChanges.push({
260
+ type: SchemaChangeType.MISSING_CAPTURE_INSTANCE,
261
+ table,
262
+ replacementInstance: latestCaptureInstance
263
+ });
264
+ continue;
265
+ }
266
+ if (latestCaptureInstance.objectId !== boundInstance.objectId) {
267
+ // Keep checking for rename and column changes against the pinned instance.
272
268
  schemaChanges.push({
273
269
  type: SchemaChangeType.NEW_CAPTURE_INSTANCE,
274
270
  table,
275
271
  newCaptureInstance: latestCaptureInstance
276
272
  });
277
- continue;
278
273
  }
279
- // One of the replicated tables has been renamed
274
+ // The new name is only used in the error message.
280
275
  if (table.ref.name !== captureInstanceDetails.sourceTable.name) {
281
- const newTable = this.tableMatchesSyncRules(captureInstanceDetails.sourceTable.schema, captureInstanceDetails.sourceTable.name)
282
- ? {
276
+ schemaChanges.push({
277
+ type: SchemaChangeType.TABLE_RENAME,
278
+ table,
279
+ newTable: {
283
280
  name: captureInstanceDetails.sourceTable.name,
284
281
  schema: captureInstanceDetails.sourceTable.schema,
285
282
  objectId: captureInstanceDetails.sourceTable.objectId
286
283
  }
287
- : undefined;
288
- schemaChanges.push({
289
- type: SchemaChangeType.TABLE_RENAME,
290
- table,
291
- newTable,
292
- newCaptureInstance: latestCaptureInstance
293
284
  });
294
285
  continue;
295
286
  }
296
- if (latestCaptureInstance.pendingSchemaChanges.length > 0) {
287
+ // Report drift against the capture instance this stream uses.
288
+ if (boundInstance.pendingSchemaChanges.length > 0) {
297
289
  schemaChanges.push({
298
290
  type: SchemaChangeType.TABLE_COLUMN_CHANGES,
299
291
  table,
300
- newCaptureInstance: latestCaptureInstance
292
+ captureInstance: boundInstance
301
293
  });
302
294
  }
303
295
  }
304
296
  return schemaChanges;
305
297
  }
306
- checkForNewTables() {
307
- const newTables = [];
308
- for (const [objectId, captureInstanceDetails] of this.captureInstances.entries()) {
309
- // If a source table is not in the replicated tables array, but a capture instance exists for it, it is potentially a new table to replicate.
310
- if (!this.replicatedTables.some((table) => table.objectId === objectId)) {
311
- // Check if the new table matches any of the sync config source tables.
312
- if (this.tableMatchesSyncRules(captureInstanceDetails.sourceTable.schema, captureInstanceDetails.sourceTable.name)) {
313
- newTables.push(captureInstanceDetails);
314
- }
315
- }
298
+ }
299
+ /**
300
+ * Groups CDC change rows into the logical row changes they describe.
301
+ *
302
+ * SQL Server records a logical change as either one row (a plain insert or delete) or two rows that share
303
+ * a `__$seqval`. `__$seqval` represents the ordering of the changes to a row within a transaction.
304
+ * CDC operations that can share a `__$seqval` are:
305
+ * - The before and after operations of an in-place update
306
+ * - The delete and insert operations of a deferred update.
307
+ *
308
+ * This method groups and emits rows in the same transaction based on their `__$seqval`
309
+ */
310
+ async function* groupLogicalChanges(rows, table) {
311
+ let current = null;
312
+ for await (const row of rows) {
313
+ const transactionLSN = row.__$start_lsn;
314
+ const sequence = row.__$seqval;
315
+ if (current && !(transactionLSN.equals(current.transactionLSN) && sequence.equals(current.sequence))) {
316
+ yield toLogicalChange(current.rows, current.transactionLSN, table);
317
+ current = null;
318
+ }
319
+ current ??= {
320
+ transactionLSN,
321
+ sequence,
322
+ rows: []
323
+ };
324
+ current.rows.push(row);
325
+ }
326
+ if (current) {
327
+ yield toLogicalChange(current.rows, current.transactionLSN, table);
328
+ }
329
+ }
330
+ function toLogicalChange(rows, startLSN, table) {
331
+ const transactionLSN = LSN.fromBinary(startLSN);
332
+ return {
333
+ transactionLSN,
334
+ type: resolveLogicalChangeType(rows, transactionLSN, table),
335
+ rows: rows
336
+ };
337
+ }
338
+ function resolveLogicalChangeType(orderedRows, transactionLSN, table) {
339
+ // This matches the actual CDC operation codes:https://learn.microsoft.com/en-us/sql/relational-databases/system-functions/cdc-fn-cdc-get-all-changes-capture-instance-transact-sql?view=sql-server-ver17#table-returned
340
+ let Operation;
341
+ (function (Operation) {
342
+ Operation[Operation["DELETE"] = 1] = "DELETE";
343
+ Operation[Operation["INSERT"] = 2] = "INSERT";
344
+ Operation[Operation["UPDATE_BEFORE"] = 3] = "UPDATE_BEFORE";
345
+ Operation[Operation["UPDATE_AFTER"] = 4] = "UPDATE_AFTER";
346
+ })(Operation || (Operation = {}));
347
+ if (orderedRows.length === 1) {
348
+ const operation = orderedRows[0].__$operation;
349
+ if (operation === Operation.INSERT) {
350
+ return LogicalChangeType.INSERT;
351
+ }
352
+ else if (operation === Operation.DELETE) {
353
+ return LogicalChangeType.DELETE;
354
+ }
355
+ else {
356
+ throw new ReplicationAssertionError(`Unrecognized operation: ${operation} for table ${table.toQualifiedName()} in transaction LSN ${transactionLSN}.`);
316
357
  }
317
- return newTables;
318
358
  }
319
- tableMatchesSyncRules(schema, tableName) {
320
- return this.options.sourceTables.some((tablePattern) => tablePattern.matches({
321
- connectionTag: this.connectionManager.connectionTag,
322
- schema: schema,
323
- name: tableName
324
- }));
359
+ else if (orderedRows.length === 2) {
360
+ const [first, second] = orderedRows;
361
+ if (first.__$operation === Operation.UPDATE_BEFORE && second.__$operation === Operation.UPDATE_AFTER) {
362
+ return LogicalChangeType.UPDATE;
363
+ }
364
+ else if (first.__$operation === Operation.DELETE && second.__$operation === Operation.INSERT) {
365
+ return LogicalChangeType.DEFERRED_UPDATE;
366
+ }
367
+ throw new ReplicationAssertionError(`Unexpected CDC operations [${first.__$operation}, ${second.__$operation}] for a single logical change on table ${table.toQualifiedName()} in transaction LSN ${transactionLSN}.`);
325
368
  }
369
+ throw new ReplicationAssertionError(`Unexpected number of CDC operations [${orderedRows.length}] for a single logical change on table ${table.toQualifiedName()} in transaction LSN ${transactionLSN}.`);
326
370
  }
327
371
  //# sourceMappingURL=CDCPoller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CDCPoller.js","sourceRoot":"","sources":["../../src/replication/CDCPoller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,MAAM,IAAI,aAAa,EACvB,SAAS,EAET,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAE3C,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,MAAM,MAAM,iBAAiB,CAAC;AAErC,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAA0B,mBAAmB,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACpH,OAAO,EAAwB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGvE,IAAK,SAKJ;AALD,WAAK,SAAS;IACZ,6CAAU,CAAA;IACV,6CAAU,CAAA;IACV,2DAAiB,CAAA;IACjB,yDAAgB,CAAA;AAClB,CAAC,EALI,SAAS,KAAT,SAAS,QAKb;AAED,MAAM,CAAN,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,6CAAyB,CAAA;IACzB,iDAA6B,CAAA;IAC7B,iEAA6C,CAAA;IAC7C,iEAA6C,CAAA;IAC7C,yEAAqD,CAAA;AACvD,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,QAO3B;AAwBD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAsBvD;;GAEG;AACH,MAAM,OAAO,SAAS;IAaD;IAZX,iBAAiB,CAAyB;IAC1C,YAAY,CAAkB;IAC9B,UAAU,CAAM;IAChB,MAAM,CAAS;IACf,aAAa,CAAe;IAC5B,gBAAgB,CAAsC;IAEtD,SAAS,GAAY,KAAK,CAAC;IAC3B,UAAU,GAAY,KAAK,CAAC;IAC5B,SAAS,GAAY,KAAK,CAAC;IAC3B,mBAAmB,GAAW,CAAC,CAAC;IAExC,YAAmB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,aAAa,CAAC;QAC9C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,EAAkC,CAAC;IACpE,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;IACxD,CAAC;IAED,IAAY,iBAAiB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;IACzD,CAAC;IAED,IAAY,qBAAqB;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,IAAI,gCAAgC,CAAC;IAChF,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC5C,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,qBAAqB;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,IAAI,CAAC,iBAAiB,OAAO,CAAC,CAAC;QACxF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,IAAI,CAAC,gBAAgB,kCAAkC,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACvB,oDAAoD;YACpD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,IAAI,yBAAyB,CAAC,yCAAyC,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,iBAAiB,EAAE,EAAE,CAAC;oBAC7B,IAAI,CAAC,gBAAgB,GAAG,MAAM,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;oBACjG,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBACzD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;wBACzC,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;oBACvD,CAAC;oBACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAEtC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uDAAuD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrG,CAAC;gBACJ,CAAC;gBAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,8CAA8C;oBAC9C,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClD,CAAC;gBAED,0DAA0D;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBACzC,qBAAqB;oBACrB,IAAI,KAAK,YAAY,kBAAkB,EAAE,CAAC;wBACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAChC,kEAAkE;wBAClE,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;wBAC7B,SAAS;oBACX,CAAC;oBACD,kFAAkF;oBAClF,sFAAsF;oBACtF,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,mGAAoG,KAAe,CAAC,OAAO,EAAE,CAC9H,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,yBAAyB;oBACzB,IAAI,CAAC,aAAa,GAAG,KAAc,CAAC;oBACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;oBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YAClF,MAAM,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,wDAAwD;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC;YACH,0CAA0C;YAC1C,mFAAmF;YACnF,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAE7E,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAC/D,eAAe,IAAI,CAAC,gBAAgB;;;;SAInC,EACD,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CACxE,CAAC;YAEF,2CAA2C;YAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,kDAAkD;YAClD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAErE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,QAAQ,OAAO,MAAM,aAAa,OAAO,CAAC,MAAM,kBAAkB,CAAC,CAAC;YAE3G,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,iCAAiC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5G,CAAC;YACF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1C,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC1B,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;oBAChF,2GAA2G;oBAC3G,yKAAyK;oBACzK,IAAI,qBAAqB,GAAG,gBAAgB,EAAE,CAAC;wBAC7C,gBAAgB,GAAG,qBAAqB,CAAC;oBAC3C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,OAAO,CAAC,MAAM,8BAA8B,gBAAgB,+CAA+C,MAAM,CAAC,QAAQ,EAAE,EAAE,CAC5I,CAAC;YACF,sEAAsE;YACtE,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;YAEtE,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;YAEzB,OAAO,IAAI,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,2CAA2C;YAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAuB,EAAE,MAAsC;QACrF,uEAAuE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9E,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAC/D;wBACgB,KAAK,CAAC,kBAAkB;KAC3C,EACG;gBACE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE;gBAC5E,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE;aACzE,CACF,CAAC;YAEF,IAAI,gBAAgB,GAAG,CAAC,CAAC;YACzB,IAAI,YAAY,GAAQ,IAAI,CAAC;YAC7B,IAAI,kBAAkB,GAAe,IAAI,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,cAAc,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACxD,QAAQ,GAAG,CAAC,YAAY,EAAE,CAAC;oBACzB,KAAK,SAAS,CAAC,MAAM;wBACnB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC;wBAChE,MAAM;oBACR,KAAK,SAAS,CAAC,MAAM;wBACnB,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC9D,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC;wBAChE,MAAM;oBACR,KAAK,SAAS,CAAC,aAAa;wBAC1B,YAAY,GAAG,GAAG,CAAC;wBACnB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,cAAc,EAAE,CAAC,CAAC;wBACzE,MAAM;oBACR,KAAK,SAAS,CAAC,YAAY;wBACzB,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;4BAC1B,MAAM,IAAI,yBAAyB,CAAC,wCAAwC,CAAC,CAAC;wBAChF,CAAC;wBACD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;wBAC5E,YAAY,GAAG,IAAI,CAAC;wBACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,cAAc,EAAE,CAAC,CAAC;wBAChE,MAAM;oBACR;wBACE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,YAAY,+BAA+B,CAAC,CAAC;gBACjG,CAAC;gBAED,sGAAsG;gBACtG,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;oBACzC,kBAAkB,GAAG,cAAc,CAAC;oBACpC,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,aAAa,EAAE,CAAC;wBACjD,gBAAgB,EAAE,CAAC;oBACrB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,OAAO,gBAAgB,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wDAAwD;YACxD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,kBAAkB,CAC1B,SAAS,CAAC,WAAW,EACrB,8BAA8B,KAAK,CAAC,eAAe,EAAE,0BAA0B,EAC/E,KAAK,CACN,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAEO,iBAAiB;QACvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,qBAAqB,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,qBAAqB;QACjC,MAAM,aAAa,GAAmB,EAAE,CAAC;QAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,aAAa,oBAAoB,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,uEAAuE,CAC3J,CAAC;YACF,aAAa,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,gBAAgB,CAAC,YAAY;gBACnC,QAAQ,EAAE;oBACR,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;oBAC5B,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,MAAM;oBAChC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,QAAQ;iBACrC;gBACD,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;aACvC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACzE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,eAAe,EAAE,8CAA8C,CAAC,CAAC;gBACjG,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,gBAAgB,CAAC,UAAU;oBACjC,KAAK;iBACN,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzE,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;oBAC1B,mDAAmD;oBACnD,aAAa,CAAC,IAAI,CAAC;wBACjB,IAAI,EAAE,gBAAgB,CAAC,wBAAwB;wBAC/C,KAAK;qBACN,CAAC,CAAC;gBACL,CAAC;gBACD,SAAS;YACX,CAAC;YAED,MAAM,qBAAqB,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAClE,oHAAoH;YACpH,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,KAAK,CAAC,eAAgB,CAAC,QAAQ,KAAK,qBAAqB,CAAC,QAAQ,EAAE,CAAC;gBACjG,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,gBAAgB,CAAC,oBAAoB;oBAC3C,KAAK;oBACL,kBAAkB,EAAE,qBAAqB;iBAC1C,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,gDAAgD;YAChD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,sBAAsB,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;gBAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CACzC,sBAAsB,CAAC,WAAW,CAAC,MAAM,EACzC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CACxC;oBACC,CAAC,CAAC;wBACE,IAAI,EAAE,sBAAsB,CAAC,WAAW,CAAC,IAAI;wBAC7C,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,MAAM;wBACjD,QAAQ,EAAE,sBAAsB,CAAC,WAAW,CAAC,QAAQ;qBACtD;oBACH,CAAC,CAAC,SAAS,CAAC;gBAEd,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,gBAAgB,CAAC,YAAY;oBACnC,KAAK;oBACL,QAAQ;oBACR,kBAAkB,EAAE,qBAAqB;iBAC1C,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,IAAI,qBAAqB,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1D,aAAa,CAAC,IAAI,CAAC;oBACjB,IAAI,EAAE,gBAAgB,CAAC,oBAAoB;oBAC3C,KAAK;oBACL,kBAAkB,EAAE,qBAAqB;iBAC1C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,iBAAiB;QACvB,MAAM,SAAS,GAA6B,EAAE,CAAC;QAC/C,KAAK,MAAM,CAAC,QAAQ,EAAE,sBAAsB,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,CAAC;YACjF,6IAA6I;YAC7I,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,EAAE,CAAC;gBACxE,uEAAuE;gBACvE,IACE,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,EAC9G,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,qBAAqB,CAAC,MAAc,EAAE,SAAiB;QAC7D,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CACrD,YAAY,CAAC,OAAO,CAAC;YACnB,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;YACnD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,SAAS;SAChB,CAAC,CACH,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"CDCPoller.js","sourceRoot":"","sources":["../../src/replication/CDCPoller.ts"],"names":[],"mappings":"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"}
@@ -42,7 +42,7 @@ export class CDCReplicationJob extends replication.AbstractReplicationJob {
42
42
  }
43
43
  if (e instanceof CDCDataExpiredError) {
44
44
  // This stops replication and restarts with a new instance
45
- await this.options.storage.factory.restartReplication(this.storage.group_id);
45
+ await this.options.storage.factory.restartReplication(this.storage.replicationStreamId);
46
46
  }
47
47
  }
48
48
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"CDCReplicationJob.js","sourceRoot":"","sources":["../../src/replication/CDCReplicationJob.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CDCReplicationJob.js","sourceRoot":"","sources":["../../src/replication/CDCReplicationJob.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ export class CDCReplicator extends replication.AbstractReplicator {
11
11
  }
12
12
  createJob(options) {
13
13
  return new CDCReplicationJob({
14
- id: this.createJobId(options.storage.group_id),
14
+ id: this.createJobId(options.storage.replicationStreamId),
15
15
  storage: options.storage,
16
16
  metrics: this.metrics,
17
17
  lock: options.lock,
@@ -1 +1 @@
1
- {"version":3,"file":"CDCReplicator.js","sourceRoot":"","sources":["../../src/replication/CDCReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,MAAM,OAAO,aAAc,SAAQ,WAAW,CAAC,kBAAqC;IACjE,iBAAiB,CAAgC;IACjD,oBAAoB,CAAuB;IAE5D,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACtC,CAAC;IAED,SAAS,CAAC,OAAqC;QAC7C,OAAO,IAAI,iBAAiB,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC9C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,gBAAgD,IAAkB,CAAC;IAEjF,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnF,CAAC;CACF"}
1
+ {"version":3,"file":"CDCReplicator.js","sourceRoot":"","sources":["../../src/replication/CDCReplicator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAW,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAQ3D,MAAM,OAAO,aAAc,SAAQ,WAAW,CAAC,kBAAqC;IACjE,iBAAiB,CAAgC;IACjD,oBAAoB,CAAuB;IAE5D,YAAY,OAA6B;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;IACtC,CAAC;IAED,SAAS,CAAC,OAAqC;QAC7C,OAAO,IAAI,iBAAiB,CAAC;YAC3B,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;YACzD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAC,gBAAgB;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,gBAAgD,IAAkB,CAAC;IAEjF,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACnF,CAAC;CACF"}
@@ -1,13 +1,14 @@
1
1
  import { DatabaseConnectionError, Logger } from '@powersync/lib-services-framework';
2
- import { MetricsEngine, SourceEntityDescriptor, storage } from '@powersync/service-core';
2
+ import { MetricsEngine, storage } from '@powersync/service-core';
3
3
  import { TablePattern } from '@powersync/service-sync-rules';
4
4
  import sql from 'mssql';
5
- import { CaptureInstance } from '../common/CaptureInstance.js';
6
5
  import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
7
6
  import { MSSQLSourceTableCache } from '../common/MSSQLSourceTableCache.js';
8
7
  import { AdditionalConfig } from '../types/types.js';
9
- import { SchemaChange } from './CDCPoller.js';
8
+ import { CaptureInstanceDetails } from '../utils/mssql.js';
10
9
  import { MSSQLConnectionManager } from './MSSQLConnectionManager.js';
10
+ import type { MSSQLReadyTableReconciliationContext } from './MSSQLTableReconciliationContext.js';
11
+ import { SchemaChange } from './SchemaChange.js';
11
12
  export interface CDCStreamOptions {
12
13
  connections: MSSQLConnectionManager;
13
14
  storage: storage.SyncRulesBucketStorage;
@@ -65,6 +66,8 @@ export declare class CDCStream {
65
66
  private readonly logger;
66
67
  tableCache: MSSQLSourceTableCache;
67
68
  private replicationLag;
69
+ private warnedNewerCaptureObjectId;
70
+ private warnedSchemaChangeCount;
68
71
  constructor(options: CDCStreamOptions);
69
72
  private get metrics();
70
73
  get stopped(): boolean;
@@ -76,8 +79,9 @@ export declare class CDCStream {
76
79
  get snapshotBatchSize(): number;
77
80
  replicate(): Promise<void>;
78
81
  populateTableCache(): Promise<void>;
79
- getQualifiedTableNames(batch: storage.BucketStorageBatch, tablePattern: TablePattern): Promise<MSSQLSourceTable[]>;
80
- processTable(batch: storage.BucketStorageBatch, table: SourceEntityDescriptor, captureInstance: CaptureInstance | null, snapshot: boolean): Promise<MSSQLSourceTable>;
82
+ getQualifiedTableNames(batch: storage.BucketStorageBatch, tablePattern: TablePattern, captureInstances: Map<number, CaptureInstanceDetails>): Promise<MSSQLSourceTable[]>;
83
+ processTable(batch: storage.BucketStorageBatch, context: MSSQLReadyTableReconciliationContext): Promise<MSSQLSourceTable>;
84
+ private reportUnavailableTable;
81
85
  private snapshotTableInTx;
82
86
  private snapshotTable;
83
87
  /**
@@ -103,17 +107,10 @@ export declare class CDCStream {
103
107
  streamChanges(): Promise<void>;
104
108
  private createEventHandler;
105
109
  handleSchemaChange(batch: storage.BucketStorageBatch, change: SchemaChange): Promise<void>;
106
- private handleCreateOrUpdateTable;
107
110
  /**
108
- * There is very little that can be automatically done to handle the column changes other than to warn the user about the schema drift.
109
- *
110
- * Due to the way CDC works, users are prevented from making column schema changes that affect the replication identities of a table.
111
- * If changes like that are required, CDC has to be disabled and re-enabled for the table. This would then be handled by the detection of the new
112
- * capture instance.
113
- * @param table
114
- * @param captureInstance
111
+ * Warn about column drift while continuing with the pinned capture schema.
115
112
  */
116
- private handleColumnChanges;
113
+ private warnColumnChanges;
117
114
  /**
118
115
  * Convert CDC row data to SqliteRow format.
119
116
  * CDC rows include table columns plus CDC metadata columns (__$operation, __$start_lsn, etc.).