@powersync/service-module-mssql 0.0.0-dev-20260511080634 → 0.0.0-dev-20260601140105
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/CHANGELOG.md +39 -7
- package/dist/common/MSSQLSourceTable.d.ts +13 -3
- package/dist/common/MSSQLSourceTable.js +25 -8
- package/dist/common/MSSQLSourceTable.js.map +1 -1
- package/dist/common/MSSQLSourceTableCache.js +1 -1
- package/dist/common/MSSQLSourceTableCache.js.map +1 -1
- package/dist/replication/CDCPoller.d.ts +2 -2
- package/dist/replication/CDCPoller.js +1 -1
- package/dist/replication/CDCPoller.js.map +1 -1
- package/dist/replication/CDCStream.js +94 -72
- package/dist/replication/CDCStream.js.map +1 -1
- package/dist/replication/MSSQLSnapshotQuery.d.ts +5 -6
- package/dist/replication/MSSQLSnapshotQuery.js +13 -15
- package/dist/replication/MSSQLSnapshotQuery.js.map +1 -1
- package/dist/utils/mssql.js.map +1 -1
- package/dist/utils/schema.d.ts +6 -2
- package/dist/utils/schema.js.map +1 -1
- package/package.json +10 -10
- package/src/common/MSSQLSourceTable.ts +30 -7
- package/src/common/MSSQLSourceTableCache.ts +1 -1
- package/src/replication/CDCPoller.ts +3 -4
- package/src/replication/CDCStream.ts +116 -79
- package/src/replication/MSSQLSnapshotQuery.ts +10 -11
- package/src/utils/mssql.ts +1 -1
- package/src/utils/schema.ts +7 -2
- package/test/src/schema-changes.test.ts +0 -2
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
# @powersync/service-module-mssql
|
|
2
2
|
|
|
3
|
-
## 0.0.0-dev-
|
|
3
|
+
## 0.0.0-dev-20260601140105
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- e2bf1ad: [Internal] rework resolveTables to handle multiple SourceTables.
|
|
8
|
+
- 15e2466: [MongoDB] Support snapshotting concurrently with streaming in storage v3+.
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- 6e2a57e: Refactor HydratedSyncConfig to support multiple SyncConfigs.
|
|
13
|
+
- Updated dependencies [6e2a57e]
|
|
14
|
+
- Updated dependencies [ec6df9f]
|
|
15
|
+
- Updated dependencies [99d33d5]
|
|
16
|
+
- Updated dependencies [cae92ce]
|
|
17
|
+
- Updated dependencies [5ac5345]
|
|
18
|
+
- Updated dependencies [15cb880]
|
|
19
|
+
- Updated dependencies [f2f5086]
|
|
20
|
+
- Updated dependencies [5b1b215]
|
|
21
|
+
- Updated dependencies [e2bf1ad]
|
|
22
|
+
- Updated dependencies [92cc83b]
|
|
23
|
+
- Updated dependencies [0aab0f9]
|
|
24
|
+
- Updated dependencies [15e2466]
|
|
25
|
+
- Updated dependencies [b116857]
|
|
26
|
+
- Updated dependencies [a94b6c3]
|
|
27
|
+
- @powersync/service-sync-rules@0.0.0-dev-20260601140105
|
|
28
|
+
- @powersync/service-core@0.0.0-dev-20260601140105
|
|
29
|
+
- @powersync/lib-services-framework@0.0.0-dev-20260601140105
|
|
30
|
+
|
|
31
|
+
## 0.6.4
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
6
34
|
|
|
@@ -9,21 +37,25 @@
|
|
|
9
37
|
- Updated dependencies [f20f318]
|
|
10
38
|
- Updated dependencies [9add445]
|
|
11
39
|
- Updated dependencies [17503d1]
|
|
40
|
+
- Updated dependencies [ad9ea06]
|
|
12
41
|
- Updated dependencies [01c29c3]
|
|
42
|
+
- Updated dependencies [8afe719]
|
|
43
|
+
- Updated dependencies [b8f0195]
|
|
13
44
|
- Updated dependencies [cdb8993]
|
|
14
45
|
- Updated dependencies [7c7b525]
|
|
15
46
|
- Updated dependencies [824e229]
|
|
47
|
+
- Updated dependencies [6304a21]
|
|
16
48
|
- Updated dependencies [040fffd]
|
|
17
49
|
- Updated dependencies [9e474d3]
|
|
18
50
|
- Updated dependencies [75174c4]
|
|
19
51
|
- Updated dependencies [423822c]
|
|
20
52
|
- Updated dependencies [2b19fc3]
|
|
21
|
-
- @powersync/service-core@
|
|
22
|
-
- @powersync/service-sync-rules@0.
|
|
23
|
-
- @powersync/lib-services-framework@0.
|
|
24
|
-
- @powersync/service-
|
|
25
|
-
- @powersync/service-
|
|
26
|
-
- @powersync/service-
|
|
53
|
+
- @powersync/service-core@1.21.0
|
|
54
|
+
- @powersync/service-sync-rules@0.36.0
|
|
55
|
+
- @powersync/lib-services-framework@0.9.4
|
|
56
|
+
- @powersync/service-types@0.15.2
|
|
57
|
+
- @powersync/service-errors@0.4.3
|
|
58
|
+
- @powersync/service-jsonbig@0.17.13
|
|
27
59
|
|
|
28
60
|
## 0.6.3
|
|
29
61
|
|
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
import { SourceTable } from '@powersync/service-core';
|
|
1
|
+
import { SourceEntityDescriptor, SourceTable } from '@powersync/service-core';
|
|
2
2
|
import { CaptureInstance } from './CaptureInstance.js';
|
|
3
3
|
/**
|
|
4
4
|
* The cdc schema in SQL Server is reserved and created when enabling CDC on a database.
|
|
5
5
|
*/
|
|
6
6
|
export declare const CDC_SCHEMA = "cdc";
|
|
7
|
+
/**
|
|
8
|
+
* Represents one underlying CDC capture instance.
|
|
9
|
+
*
|
|
10
|
+
* There could be multiple SourceTables associated with the same underlying capture instance.
|
|
11
|
+
*/
|
|
7
12
|
export declare class MSSQLSourceTable {
|
|
8
|
-
sourceTable: SourceTable;
|
|
9
13
|
/**
|
|
10
14
|
* The unique name of the CDC capture instance for this table
|
|
11
15
|
*/
|
|
12
16
|
captureInstance: CaptureInstance | null;
|
|
13
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Can be 0, 1 or multiple SourceTables.
|
|
19
|
+
*/
|
|
20
|
+
readonly sourceTables: SourceTable[];
|
|
21
|
+
readonly ref: SourceEntityDescriptor;
|
|
22
|
+
constructor(ref: SourceEntityDescriptor, sourceTables: SourceTable[]);
|
|
14
23
|
updateSourceTable(updated: SourceTable): void;
|
|
24
|
+
getReplicatedSourceTables(): SourceTable[];
|
|
15
25
|
enabledForCDC(): boolean;
|
|
16
26
|
setCaptureInstance(captureInstance: CaptureInstance): void;
|
|
17
27
|
clearCaptureInstance(): void;
|
|
@@ -4,17 +4,34 @@ import { toQualifiedTableName } from '../utils/mssql.js';
|
|
|
4
4
|
* The cdc schema in SQL Server is reserved and created when enabling CDC on a database.
|
|
5
5
|
*/
|
|
6
6
|
export const CDC_SCHEMA = 'cdc';
|
|
7
|
+
/**
|
|
8
|
+
* Represents one underlying CDC capture instance.
|
|
9
|
+
*
|
|
10
|
+
* There could be multiple SourceTables associated with the same underlying capture instance.
|
|
11
|
+
*/
|
|
7
12
|
export class MSSQLSourceTable {
|
|
8
|
-
sourceTable;
|
|
9
13
|
/**
|
|
10
14
|
* The unique name of the CDC capture instance for this table
|
|
11
15
|
*/
|
|
12
16
|
captureInstance = null;
|
|
13
|
-
|
|
14
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Can be 0, 1 or multiple SourceTables.
|
|
19
|
+
*/
|
|
20
|
+
sourceTables;
|
|
21
|
+
ref;
|
|
22
|
+
constructor(ref, sourceTables) {
|
|
23
|
+
this.sourceTables = sourceTables;
|
|
24
|
+
this.ref = ref;
|
|
15
25
|
}
|
|
16
26
|
updateSourceTable(updated) {
|
|
17
|
-
this.
|
|
27
|
+
const index = this.sourceTables.findIndex((table) => table.id == updated.id);
|
|
28
|
+
if (index == -1) {
|
|
29
|
+
throw new ServiceAssertionError(`No SourceTable found for table: ${updated.id}`);
|
|
30
|
+
}
|
|
31
|
+
this.sourceTables[index] = updated;
|
|
32
|
+
}
|
|
33
|
+
getReplicatedSourceTables() {
|
|
34
|
+
return this.sourceTables.filter((sourceTable) => sourceTable.syncAny);
|
|
18
35
|
}
|
|
19
36
|
enabledForCDC() {
|
|
20
37
|
return this.captureInstance !== null;
|
|
@@ -27,13 +44,13 @@ export class MSSQLSourceTable {
|
|
|
27
44
|
}
|
|
28
45
|
get allChangesFunction() {
|
|
29
46
|
if (!this.captureInstance) {
|
|
30
|
-
throw new ServiceAssertionError(`No capture instance set for table: ${this.
|
|
47
|
+
throw new ServiceAssertionError(`No capture instance set for table: ${this.ref.name}`);
|
|
31
48
|
}
|
|
32
49
|
return `${CDC_SCHEMA}.fn_cdc_get_all_changes_${this.captureInstance.name}`;
|
|
33
50
|
}
|
|
34
51
|
get netChangesFunction() {
|
|
35
52
|
if (!this.captureInstance) {
|
|
36
|
-
throw new ServiceAssertionError(`No capture instance set for table: ${this.
|
|
53
|
+
throw new ServiceAssertionError(`No capture instance set for table: ${this.ref.name}`);
|
|
37
54
|
}
|
|
38
55
|
return `${CDC_SCHEMA}.fn_cdc_get_net_changes_${this.captureInstance.name}`;
|
|
39
56
|
}
|
|
@@ -42,13 +59,13 @@ export class MSSQLSourceTable {
|
|
|
42
59
|
* Object IDs in SQL Server are always numbers.
|
|
43
60
|
*/
|
|
44
61
|
get objectId() {
|
|
45
|
-
return this.
|
|
62
|
+
return this.ref.objectId;
|
|
46
63
|
}
|
|
47
64
|
/**
|
|
48
65
|
* Escapes this source table's name and schema for use in MSSQL queries.
|
|
49
66
|
*/
|
|
50
67
|
toQualifiedName() {
|
|
51
|
-
return toQualifiedTableName(this.
|
|
68
|
+
return toQualifiedTableName(this.ref.schema, this.ref.name);
|
|
52
69
|
}
|
|
53
70
|
}
|
|
54
71
|
//# sourceMappingURL=MSSQLSourceTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSSQLSourceTable.js","sourceRoot":"","sources":["../../src/common/MSSQLSourceTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"MSSQLSourceTable.js","sourceRoot":"","sources":["../../src/common/MSSQLSourceTable.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,CAAC;AAEhC;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;IACI,eAAe,GAA2B,IAAI,CAAC;IAEtD;;OAEG;IACa,YAAY,CAAgB;IAE5B,GAAG,CAAyB;IAE5C,YAAY,GAA2B,EAAE,YAA2B;QAClE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED,iBAAiB,CAAC,OAAoB;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;IACrC,CAAC;IAED,yBAAyB;QACvB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxE,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC;IACvC,CAAC;IAED,kBAAkB,CAAC,eAAgC;QACjD,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IACzC,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,UAAU,2BAA2B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED,IAAI,kBAAkB;QACpB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,MAAM,IAAI,qBAAqB,CAAC,sCAAsC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,GAAG,UAAU,2BAA2B,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,QAAkB,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -2,7 +2,7 @@ import { ServiceAssertionError } from '@powersync/service-errors';
|
|
|
2
2
|
export class MSSQLSourceTableCache {
|
|
3
3
|
cache = new Map();
|
|
4
4
|
set(table) {
|
|
5
|
-
this.cache.set(table.
|
|
5
|
+
this.cache.set(table.ref.objectId, table);
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Updates the underlying source table of the cached MSSQLSourceTable.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSSQLSourceTableCache.js","sourceRoot":"","sources":["../../src/common/MSSQLSourceTableCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,MAAM,OAAO,qBAAqB;IACxB,KAAK,GAAG,IAAI,GAAG,EAAqC,CAAC;IAE7D,GAAG,CAAC,KAAuB;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"MSSQLSourceTableCache.js","sourceRoot":"","sources":["../../src/common/MSSQLSourceTableCache.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGlE,MAAM,OAAO,qBAAqB;IACxB,KAAK,GAAG,IAAI,GAAG,EAAqC,CAAC;IAE7D,GAAG,CAAC,KAAuB;QACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAS,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,YAAyB;QACzC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,QAAS,CAAC,CAAC;QAE7D,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,qBAAqB,CAAC,8DAA8D,CAAC,CAAC;QAClG,CAAC;QACD,aAAa,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,OAAe;QACjB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,CAAC,OAAe;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;CACF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Logger } from '@powersync/lib-services-framework';
|
|
2
|
-
import { SourceEntityDescriptor } from '@powersync/service-core';
|
|
3
2
|
import { TablePattern } from '@powersync/service-sync-rules';
|
|
4
3
|
import sql from 'mssql';
|
|
5
4
|
import { CaptureInstance } from '../common/CaptureInstance.js';
|
|
6
5
|
import { LSN } from '../common/LSN.js';
|
|
7
6
|
import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
|
|
8
7
|
import { AdditionalConfig } from '../types/types.js';
|
|
8
|
+
import { SourceTableChangeRef } from '../utils/schema.js';
|
|
9
9
|
import { MSSQLConnectionManager } from './MSSQLConnectionManager.js';
|
|
10
10
|
export declare enum SchemaChangeType {
|
|
11
11
|
TABLE_RENAME = "table_rename",
|
|
@@ -24,7 +24,7 @@ export interface SchemaChange {
|
|
|
24
24
|
/**
|
|
25
25
|
* Populated for new tables or renames, but only if the new table matches a sync config source table.
|
|
26
26
|
*/
|
|
27
|
-
newTable?:
|
|
27
|
+
newTable?: SourceTableChangeRef;
|
|
28
28
|
newCaptureInstance?: CaptureInstance;
|
|
29
29
|
}
|
|
30
30
|
export interface CDCEventHandler {
|
|
@@ -277,7 +277,7 @@ export class CDCPoller {
|
|
|
277
277
|
continue;
|
|
278
278
|
}
|
|
279
279
|
// One of the replicated tables has been renamed
|
|
280
|
-
if (table.
|
|
280
|
+
if (table.ref.name !== captureInstanceDetails.sourceTable.name) {
|
|
281
281
|
const newTable = this.tableMatchesSyncRules(captureInstanceDetails.sourceTable.schema, captureInstanceDetails.sourceTable.name)
|
|
282
282
|
? {
|
|
283
283
|
name: captureInstanceDetails.sourceTable.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDCPoller.js","sourceRoot":"","sources":["../../src/replication/CDCPoller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CDCPoller.js","sourceRoot":"","sources":["../../src/replication/CDCPoller.ts"],"names":[],"mappings":"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"}
|
|
@@ -119,6 +119,13 @@ export class CDCStream {
|
|
|
119
119
|
const tables = [];
|
|
120
120
|
for (const matchedTable of matchedTables) {
|
|
121
121
|
const captureInstanceDetails = captureInstances.get(matchedTable.objectId);
|
|
122
|
+
if (!captureInstanceDetails) {
|
|
123
|
+
// Match Postgres publication handling: If the source table cannot stream changes yet,
|
|
124
|
+
// don't resolve it into storage. Once CDC is enabled, the schema poller detects the
|
|
125
|
+
// new capture instance and resolves/snapshots it then.
|
|
126
|
+
this.logger.info(`Skipping ${tablePattern.schema}.${matchedTable.name} - not enabled for CDC. This table will not be replicated until CDC is enabled for it.`);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
122
129
|
// TODO: Check RLS settings for table
|
|
123
130
|
const replicaIdColumns = await getReplicationIdentityColumns({
|
|
124
131
|
connectionManager: this.connections,
|
|
@@ -126,11 +133,12 @@ export class CDCStream {
|
|
|
126
133
|
schema: matchedTable.schema
|
|
127
134
|
});
|
|
128
135
|
const table = await this.processTable(batch, {
|
|
136
|
+
connectionTag: this.connectionTag,
|
|
129
137
|
name: matchedTable.name,
|
|
130
138
|
schema: matchedTable.schema,
|
|
131
139
|
objectId: matchedTable.objectId,
|
|
132
140
|
replicaIdColumns: replicaIdColumns.columns
|
|
133
|
-
}, captureInstanceDetails
|
|
141
|
+
}, captureInstanceDetails.instances[0], false);
|
|
134
142
|
tables.push(table);
|
|
135
143
|
}
|
|
136
144
|
return tables;
|
|
@@ -139,14 +147,11 @@ export class CDCStream {
|
|
|
139
147
|
if (!table.objectId && typeof table.objectId != 'number') {
|
|
140
148
|
throw new ReplicationAssertionError(`objectId expected, got ${typeof table.objectId}`);
|
|
141
149
|
}
|
|
142
|
-
const resolved = await
|
|
143
|
-
group_id: this.groupId,
|
|
150
|
+
const resolved = await batch.resolveTables({
|
|
144
151
|
connection_id: this.connectionId,
|
|
145
|
-
|
|
146
|
-
entity_descriptor: table,
|
|
147
|
-
sync_rules: this.syncRules
|
|
152
|
+
source: table
|
|
148
153
|
});
|
|
149
|
-
const resolvedTable = new MSSQLSourceTable(resolved.
|
|
154
|
+
const resolvedTable = new MSSQLSourceTable(table, resolved.tables);
|
|
150
155
|
if (!captureInstance) {
|
|
151
156
|
this.logger.warn(`Missing capture instance for table ${resolvedTable.toQualifiedName()}. This table will not be replicated until CDC is enabled for it.`);
|
|
152
157
|
}
|
|
@@ -159,23 +164,26 @@ export class CDCStream {
|
|
|
159
164
|
// Snapshot if:
|
|
160
165
|
// 1. The table is in the sync config and snapshot is requested, or not already done.
|
|
161
166
|
// 2. AND the table is enabled for CDC with a valid capture instance.
|
|
162
|
-
const
|
|
167
|
+
const snapshotCandidates = resolved.tables.filter((candidate) => snapshot && !candidate.snapshotComplete && candidate.syncAny);
|
|
168
|
+
const shouldSnapshot = snapshotCandidates.length > 0 && resolvedTable.enabledForCDC();
|
|
163
169
|
if (shouldSnapshot) {
|
|
164
|
-
// Truncate
|
|
165
|
-
await batch.truncate(
|
|
166
|
-
// Start the snapshot inside a transaction.
|
|
167
|
-
|
|
170
|
+
// Truncate tables in case a previous snapshot was interrupted.
|
|
171
|
+
await batch.truncate(snapshotCandidates);
|
|
172
|
+
// Start the snapshot(s) inside a transaction.
|
|
173
|
+
for (const candidate of snapshotCandidates) {
|
|
174
|
+
await this.snapshotTableInTx(batch, resolvedTable, candidate);
|
|
175
|
+
}
|
|
168
176
|
}
|
|
169
177
|
return resolvedTable;
|
|
170
178
|
}
|
|
171
|
-
async snapshotTableInTx(batch,
|
|
179
|
+
async snapshotTableInTx(batch, physicalTable, sourceTable) {
|
|
172
180
|
// Note: We use the "Read Committed" isolation level here, not snapshot isolation.
|
|
173
181
|
// The data may change during the transaction, but that is compensated for in the streaming
|
|
174
182
|
// replication afterward.
|
|
175
183
|
const transaction = await this.connections.createTransaction();
|
|
176
184
|
await transaction.begin(sql.ISOLATION_LEVEL.READ_COMMITTED);
|
|
177
185
|
try {
|
|
178
|
-
await this.snapshotTable(batch, transaction,
|
|
186
|
+
await this.snapshotTable(batch, transaction, physicalTable, sourceTable);
|
|
179
187
|
// Get the current LSN.
|
|
180
188
|
// The data will only be consistent once incremental replication has passed that point.
|
|
181
189
|
// We have to get this LSN _after_ we have finished the table snapshot.
|
|
@@ -191,8 +199,8 @@ export class CDCStream {
|
|
|
191
199
|
const postSnapshotLSN = await getLatestLSN(this.connections);
|
|
192
200
|
// Side note: A ROLLBACK would probably also be fine here, since we only read in this transaction.
|
|
193
201
|
await transaction.commit();
|
|
194
|
-
const [updatedSourceTable] = await batch.markTableSnapshotDone([
|
|
195
|
-
this.logger.info(`Snapshot of ${
|
|
202
|
+
const [updatedSourceTable] = await batch.markTableSnapshotDone([sourceTable], postSnapshotLSN.toString());
|
|
203
|
+
this.logger.info(`Snapshot of ${physicalTable.toQualifiedName()} completed. Post-snapshot LSN: ${postSnapshotLSN.toString()}`);
|
|
196
204
|
this.tableCache.updateSourceTable(updatedSourceTable);
|
|
197
205
|
}
|
|
198
206
|
catch (e) {
|
|
@@ -200,29 +208,29 @@ export class CDCStream {
|
|
|
200
208
|
throw e;
|
|
201
209
|
}
|
|
202
210
|
}
|
|
203
|
-
async snapshotTable(batch, transaction,
|
|
204
|
-
let totalEstimatedCount =
|
|
205
|
-
let replicatedCount =
|
|
211
|
+
async snapshotTable(batch, transaction, physicalTable, sourceTable) {
|
|
212
|
+
let totalEstimatedCount = sourceTable.snapshotStatus?.totalEstimatedCount;
|
|
213
|
+
let replicatedCount = sourceTable.snapshotStatus?.replicatedCount ?? 0;
|
|
206
214
|
let lastCountTime = 0;
|
|
207
215
|
let query;
|
|
208
216
|
// We do streaming on two levels:
|
|
209
217
|
// 1. Coarse select from the entire table, stream rows 1 by one
|
|
210
218
|
// 2. Fine level: Stream batches of rows with each fetch call
|
|
211
|
-
if (BatchedSnapshotQuery.supports(
|
|
219
|
+
if (BatchedSnapshotQuery.supports(sourceTable)) {
|
|
212
220
|
// Single primary key - we can use the primary key for chunking
|
|
213
|
-
const orderByKey =
|
|
214
|
-
query = new BatchedSnapshotQuery(transaction,
|
|
215
|
-
if (
|
|
216
|
-
this.logger.info(`Snapshotting ${
|
|
221
|
+
const orderByKey = sourceTable.replicaIdColumns[0];
|
|
222
|
+
query = new BatchedSnapshotQuery(transaction, physicalTable.toQualifiedName(), sourceTable, this.snapshotBatchSize, sourceTable.snapshotStatus?.lastKey ?? null);
|
|
223
|
+
if (sourceTable.snapshotStatus?.lastKey != null) {
|
|
224
|
+
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()} - resuming from ${orderByKey.name} > ${query.lastKey}`);
|
|
217
225
|
}
|
|
218
226
|
else {
|
|
219
|
-
this.logger.info(`Snapshotting ${
|
|
227
|
+
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()} - resumable`);
|
|
220
228
|
}
|
|
221
229
|
}
|
|
222
230
|
else {
|
|
223
231
|
// Fallback case - query the entire table
|
|
224
|
-
this.logger.info(`Snapshotting ${
|
|
225
|
-
query = new SimpleSnapshotQuery(transaction,
|
|
232
|
+
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()} - not resumable`);
|
|
233
|
+
query = new SimpleSnapshotQuery(transaction, physicalTable.toQualifiedName());
|
|
226
234
|
replicatedCount = 0;
|
|
227
235
|
}
|
|
228
236
|
await query.initialize();
|
|
@@ -249,11 +257,11 @@ export class CDCStream {
|
|
|
249
257
|
// This auto-flushes when the batch reaches its size limit
|
|
250
258
|
await batch.save({
|
|
251
259
|
tag: storage.SaveOperationTag.INSERT,
|
|
252
|
-
sourceTable
|
|
260
|
+
sourceTable,
|
|
253
261
|
before: undefined,
|
|
254
262
|
beforeReplicaId: undefined,
|
|
255
263
|
after: row,
|
|
256
|
-
afterReplicaId: getUuidReplicaIdentityBson(row,
|
|
264
|
+
afterReplicaId: getUuidReplicaIdentityBson(row, sourceTable.replicaIdColumns)
|
|
257
265
|
});
|
|
258
266
|
replicatedCount++;
|
|
259
267
|
batchReplicatedCount++;
|
|
@@ -272,15 +280,16 @@ export class CDCStream {
|
|
|
272
280
|
// the default "Read Committed" isolation level. This means we can get new data
|
|
273
281
|
// within the transaction, so we re-estimate the count every 10 minutes when replicating
|
|
274
282
|
// large tables.
|
|
275
|
-
totalEstimatedCount = await this.estimatedCountNumber(
|
|
283
|
+
totalEstimatedCount = await this.estimatedCountNumber(physicalTable, transaction);
|
|
276
284
|
lastCountTime = performance.now();
|
|
277
285
|
}
|
|
278
|
-
const updatedSourceTable = await batch.updateTableProgress(
|
|
286
|
+
const updatedSourceTable = await batch.updateTableProgress(sourceTable, {
|
|
279
287
|
lastKey: lastKey,
|
|
280
288
|
replicatedCount: replicatedCount,
|
|
281
289
|
totalEstimatedCount: totalEstimatedCount
|
|
282
290
|
});
|
|
283
291
|
this.tableCache.updateSourceTable(updatedSourceTable);
|
|
292
|
+
sourceTable = updatedSourceTable;
|
|
284
293
|
if (this.abortSignal.aborted) {
|
|
285
294
|
// We only abort after flushing
|
|
286
295
|
throw new ReplicationAbortedError(`Initial replication interrupted`);
|
|
@@ -290,7 +299,7 @@ export class CDCStream {
|
|
|
290
299
|
hasRemainingData = false;
|
|
291
300
|
}
|
|
292
301
|
else {
|
|
293
|
-
this.logger.info(`Snapshotting ${
|
|
302
|
+
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()}`);
|
|
294
303
|
}
|
|
295
304
|
}
|
|
296
305
|
}
|
|
@@ -336,9 +345,9 @@ export class CDCStream {
|
|
|
336
345
|
break;
|
|
337
346
|
case SnapshotStatus.LIMITED_RESNAPSHOT:
|
|
338
347
|
for (const table of specificTablesToResnapshot) {
|
|
339
|
-
await batch.drop(
|
|
348
|
+
await batch.drop(table.getReplicatedSourceTables());
|
|
340
349
|
// Update table in the table cache
|
|
341
|
-
await this.processTable(batch, table.
|
|
350
|
+
await this.processTable(batch, table.ref, table.captureInstance, false);
|
|
342
351
|
}
|
|
343
352
|
break;
|
|
344
353
|
default:
|
|
@@ -346,7 +355,8 @@ export class CDCStream {
|
|
|
346
355
|
}
|
|
347
356
|
const tablesToSnapshot = [];
|
|
348
357
|
for (const table of this.tableCache.getAll()) {
|
|
349
|
-
|
|
358
|
+
const sourceTablesToSnapshot = table.sourceTables.filter((sourceTable) => !sourceTable.snapshotComplete);
|
|
359
|
+
if (sourceTablesToSnapshot.length == 0) {
|
|
350
360
|
this.logger.info(`Skipping table [${table.toQualifiedName()}] - snapshot already done.`);
|
|
351
361
|
continue;
|
|
352
362
|
}
|
|
@@ -355,20 +365,22 @@ export class CDCStream {
|
|
|
355
365
|
continue;
|
|
356
366
|
}
|
|
357
367
|
const count = await this.estimatedCountNumber(table);
|
|
358
|
-
const
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
368
|
+
for (const sourceTable of sourceTablesToSnapshot) {
|
|
369
|
+
const updatedSourceTable = await batch.updateTableProgress(sourceTable, {
|
|
370
|
+
totalEstimatedCount: count
|
|
371
|
+
});
|
|
372
|
+
this.tableCache.updateSourceTable(updatedSourceTable);
|
|
373
|
+
tablesToSnapshot.push({ physicalTable: table, sourceTable: updatedSourceTable });
|
|
374
|
+
}
|
|
363
375
|
}
|
|
364
|
-
for (const
|
|
365
|
-
await this.snapshotTableInTx(batch,
|
|
376
|
+
for (const { physicalTable, sourceTable } of tablesToSnapshot) {
|
|
377
|
+
await this.snapshotTableInTx(batch, physicalTable, sourceTable);
|
|
366
378
|
this.touch();
|
|
367
379
|
}
|
|
368
380
|
// This will not create a consistent checkpoint yet, but will persist the op.
|
|
369
381
|
// Actual checkpoint will be created when streaming replication caught up.
|
|
370
382
|
const postSnapshotLSN = await getLatestLSN(this.connections);
|
|
371
|
-
await batch.
|
|
383
|
+
await batch.markSnapshotDone(postSnapshotLSN.toString());
|
|
372
384
|
await batch.commit(snapshotLSN);
|
|
373
385
|
if (tablesToSnapshot.length > 0) {
|
|
374
386
|
this.logger.info(`All snapshots done. Need to replicate from ${snapshotLSN} to ${postSnapshotLSN} to be consistent.`);
|
|
@@ -400,7 +412,9 @@ export class CDCStream {
|
|
|
400
412
|
const status = await this.storage.getStatus();
|
|
401
413
|
if (status.snapshot_done && status.checkpoint_lsn) {
|
|
402
414
|
const additionalTablesToSnapshot = new Set();
|
|
403
|
-
const newTables = this.tableCache
|
|
415
|
+
const newTables = this.tableCache
|
|
416
|
+
.getAll()
|
|
417
|
+
.filter((table) => table.sourceTables.some((sourceTable) => !sourceTable.snapshotComplete));
|
|
404
418
|
if (newTables.length > 0) {
|
|
405
419
|
this.logger.info(`Detected new table(s) [${newTables.map((table) => table.toQualifiedName()).join(', ')}] that have not been snapshotted yet.`);
|
|
406
420
|
newTables.forEach((table) => additionalTablesToSnapshot.add(table));
|
|
@@ -474,39 +488,45 @@ export class CDCStream {
|
|
|
474
488
|
return {
|
|
475
489
|
onInsert: async (row, table, columns) => {
|
|
476
490
|
const afterRow = this.toSqliteRow(row, columns);
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
491
|
+
for (const sourceTable of table.getReplicatedSourceTables()) {
|
|
492
|
+
await batch.save({
|
|
493
|
+
tag: storage.SaveOperationTag.INSERT,
|
|
494
|
+
sourceTable,
|
|
495
|
+
before: undefined,
|
|
496
|
+
beforeReplicaId: undefined,
|
|
497
|
+
after: afterRow,
|
|
498
|
+
afterReplicaId: getUuidReplicaIdentityBson(afterRow, sourceTable.replicaIdColumns)
|
|
499
|
+
});
|
|
500
|
+
}
|
|
485
501
|
this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(1);
|
|
486
502
|
},
|
|
487
503
|
onUpdate: async (rowAfter, rowBefore, table, columns) => {
|
|
488
504
|
const beforeRow = this.toSqliteRow(rowBefore, columns);
|
|
489
505
|
const afterRow = this.toSqliteRow(rowAfter, columns);
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
506
|
+
for (const sourceTable of table.getReplicatedSourceTables()) {
|
|
507
|
+
await batch.save({
|
|
508
|
+
tag: storage.SaveOperationTag.UPDATE,
|
|
509
|
+
sourceTable,
|
|
510
|
+
before: beforeRow,
|
|
511
|
+
beforeReplicaId: getUuidReplicaIdentityBson(beforeRow, sourceTable.replicaIdColumns),
|
|
512
|
+
after: afterRow,
|
|
513
|
+
afterReplicaId: getUuidReplicaIdentityBson(afterRow, sourceTable.replicaIdColumns)
|
|
514
|
+
});
|
|
515
|
+
}
|
|
498
516
|
this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(1);
|
|
499
517
|
},
|
|
500
518
|
onDelete: async (row, table, columns) => {
|
|
501
519
|
const beforeRow = this.toSqliteRow(row, columns);
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
520
|
+
for (const sourceTable of table.getReplicatedSourceTables()) {
|
|
521
|
+
await batch.save({
|
|
522
|
+
tag: storage.SaveOperationTag.DELETE,
|
|
523
|
+
sourceTable,
|
|
524
|
+
before: beforeRow,
|
|
525
|
+
beforeReplicaId: getUuidReplicaIdentityBson(beforeRow, sourceTable.replicaIdColumns),
|
|
526
|
+
after: undefined,
|
|
527
|
+
afterReplicaId: undefined
|
|
528
|
+
});
|
|
529
|
+
}
|
|
510
530
|
this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(1);
|
|
511
531
|
},
|
|
512
532
|
onCommit: async (lsn, transactionCount) => {
|
|
@@ -530,7 +550,8 @@ export class CDCStream {
|
|
|
530
550
|
const fromTable = change.table;
|
|
531
551
|
this.logger.info(`Table ${fromTable.toQualifiedName()} has been renamed ${change.newTable ? `to [${change.newTable.name}].` : '.'}`);
|
|
532
552
|
// Old table needs to be cleaned up
|
|
533
|
-
|
|
553
|
+
const fromTables = fromTable.getReplicatedSourceTables();
|
|
554
|
+
await batch.drop(fromTables);
|
|
534
555
|
this.tableCache.delete(fromTable.objectId);
|
|
535
556
|
if (change.newTable) {
|
|
536
557
|
await this.handleCreateOrUpdateTable(batch, change.newTable, change.newCaptureInstance);
|
|
@@ -545,12 +566,12 @@ export class CDCStream {
|
|
|
545
566
|
break;
|
|
546
567
|
case SchemaChangeType.NEW_CAPTURE_INSTANCE:
|
|
547
568
|
this.logger.info(`New CDC capture instance detected for table ${change.table.toQualifiedName()}. Re-snapshotting table...`);
|
|
548
|
-
await batch.drop(
|
|
569
|
+
await batch.drop(change.table.getReplicatedSourceTables());
|
|
549
570
|
this.tableCache.delete(change.table.objectId);
|
|
550
|
-
await this.handleCreateOrUpdateTable(batch, change.table.
|
|
571
|
+
await this.handleCreateOrUpdateTable(batch, change.table.ref, change.newCaptureInstance);
|
|
551
572
|
break;
|
|
552
573
|
case SchemaChangeType.TABLE_DROP:
|
|
553
|
-
await batch.drop(
|
|
574
|
+
await batch.drop(change.table.getReplicatedSourceTables());
|
|
554
575
|
this.tableCache.delete(change.table.objectId);
|
|
555
576
|
break;
|
|
556
577
|
case SchemaChangeType.MISSING_CAPTURE_INSTANCE:
|
|
@@ -574,6 +595,7 @@ export class CDCStream {
|
|
|
574
595
|
schema: table.schema
|
|
575
596
|
});
|
|
576
597
|
await this.processTable(batch, {
|
|
598
|
+
connectionTag: this.connectionTag,
|
|
577
599
|
name: table.name,
|
|
578
600
|
schema: table.schema,
|
|
579
601
|
objectId: table.objectId,
|