@powersync/service-module-mssql 0.5.0 → 0.6.0
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 +26 -0
- package/dist/common/CaptureInstance.d.ts +14 -0
- package/dist/common/CaptureInstance.js +2 -0
- package/dist/common/CaptureInstance.js.map +1 -0
- package/dist/common/MSSQLSourceTable.d.ts +16 -14
- package/dist/common/MSSQLSourceTable.js +35 -16
- package/dist/common/MSSQLSourceTable.js.map +1 -1
- package/dist/replication/CDCPoller.d.ts +42 -20
- package/dist/replication/CDCPoller.js +200 -60
- package/dist/replication/CDCPoller.js.map +1 -1
- package/dist/replication/CDCReplicationJob.js +9 -1
- package/dist/replication/CDCReplicationJob.js.map +1 -1
- package/dist/replication/CDCStream.d.ts +35 -4
- package/dist/replication/CDCStream.js +181 -74
- package/dist/replication/CDCStream.js.map +1 -1
- package/dist/replication/MSSQLConnectionManager.js +16 -5
- package/dist/replication/MSSQLConnectionManager.js.map +1 -1
- package/dist/types/types.d.ts +4 -56
- package/dist/types/types.js +5 -24
- package/dist/types/types.js.map +1 -1
- package/dist/utils/deadlock.d.ts +9 -0
- package/dist/utils/deadlock.js +40 -0
- package/dist/utils/deadlock.js.map +1 -0
- package/dist/utils/mssql.d.ts +33 -15
- package/dist/utils/mssql.js +101 -99
- package/dist/utils/mssql.js.map +1 -1
- package/dist/utils/schema.d.ts +9 -0
- package/dist/utils/schema.js +34 -0
- package/dist/utils/schema.js.map +1 -1
- package/package.json +8 -8
- package/src/common/CaptureInstance.ts +15 -0
- package/src/common/MSSQLSourceTable.ts +33 -24
- package/src/replication/CDCPoller.ts +272 -72
- package/src/replication/CDCReplicationJob.ts +8 -1
- package/src/replication/CDCStream.ts +237 -90
- package/src/replication/MSSQLConnectionManager.ts +15 -5
- package/src/types/types.ts +5 -28
- package/src/utils/deadlock.ts +44 -0
- package/src/utils/mssql.ts +159 -124
- package/src/utils/schema.ts +43 -0
- package/test/src/CDCStreamTestContext.ts +9 -2
- package/test/src/env.ts +1 -1
- package/test/src/mssql-to-sqlite.test.ts +18 -10
- package/test/src/schema-changes.test.ts +470 -0
- package/test/src/util.ts +75 -12
- package/tsconfig.tsbuildinfo +1 -1
package/dist/utils/mssql.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import sql from 'mssql';
|
|
2
2
|
import { coerce, gte } from 'semver';
|
|
3
3
|
import { logger } from '@powersync/lib-services-framework';
|
|
4
|
+
import { retryOnDeadlock } from './deadlock.js';
|
|
4
5
|
import { LSN } from '../common/LSN.js';
|
|
5
|
-
import { getReplicationIdentityColumns } from './schema.js';
|
|
6
|
+
import { getPendingSchemaChanges, getReplicationIdentityColumns } from './schema.js';
|
|
6
7
|
export const POWERSYNC_CHECKPOINTS_TABLE = '_powersync_checkpoints';
|
|
7
8
|
export const SUPPORTED_ENGINE_EDITIONS = new Map([
|
|
8
9
|
[2, 'Standard'],
|
|
@@ -55,60 +56,35 @@ export async function checkSourceConfiguration(connectionManager) {
|
|
|
55
56
|
errors.push(`The current user does not have the 'cdc_reader' role. Please assign this role to the user.`);
|
|
56
57
|
}
|
|
57
58
|
// 4) Check if the _powersync_checkpoints table is correctly configured
|
|
58
|
-
const checkpointTableErrors = await
|
|
59
|
+
const checkpointTableErrors = await checkPowerSyncCheckpointsTable(connectionManager);
|
|
59
60
|
errors.push(...checkpointTableErrors);
|
|
60
61
|
return errors;
|
|
61
62
|
}
|
|
62
|
-
export async function
|
|
63
|
+
export async function checkPowerSyncCheckpointsTable(connectionManager) {
|
|
63
64
|
const errors = [];
|
|
64
65
|
try {
|
|
65
|
-
//
|
|
66
|
+
// Check if the table exists
|
|
66
67
|
const { recordset: checkpointsResult } = await connectionManager.query(`
|
|
67
68
|
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @tableName;
|
|
68
69
|
`, [
|
|
69
70
|
{ name: 'schema', type: sql.VarChar(sql.MAX), value: connectionManager.schema },
|
|
70
71
|
{ name: 'tableName', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE }
|
|
71
72
|
]);
|
|
72
|
-
if (checkpointsResult.length
|
|
73
|
-
|
|
74
|
-
const isEnabled = await isTableEnabledForCDC({
|
|
75
|
-
connectionManager,
|
|
76
|
-
table: POWERSYNC_CHECKPOINTS_TABLE,
|
|
77
|
-
schema: connectionManager.schema
|
|
78
|
-
});
|
|
79
|
-
if (!isEnabled) {
|
|
80
|
-
// Enable CDC on the table
|
|
81
|
-
await enableCDCForTable({
|
|
82
|
-
connectionManager,
|
|
83
|
-
table: POWERSYNC_CHECKPOINTS_TABLE
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return errors;
|
|
73
|
+
if (checkpointsResult.length === 0) {
|
|
74
|
+
throw new Error(`The ${POWERSYNC_CHECKPOINTS_TABLE} table does not exist. Please create it.`);
|
|
87
75
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
errors.push(`Failed ensure ${POWERSYNC_CHECKPOINTS_TABLE} table is correctly configured: ${error}`);
|
|
91
|
-
}
|
|
92
|
-
// Try to create the table
|
|
93
|
-
try {
|
|
94
|
-
await connectionManager.query(`
|
|
95
|
-
CREATE TABLE ${toQualifiedTableName(connectionManager.schema, POWERSYNC_CHECKPOINTS_TABLE)} (
|
|
96
|
-
id INT IDENTITY PRIMARY KEY,
|
|
97
|
-
last_updated DATETIME NOT NULL DEFAULT (GETDATE())
|
|
98
|
-
)`);
|
|
99
|
-
}
|
|
100
|
-
catch (error) {
|
|
101
|
-
errors.push(`Failed to create ${POWERSYNC_CHECKPOINTS_TABLE} table: ${error}`);
|
|
102
|
-
}
|
|
103
|
-
try {
|
|
104
|
-
// Enable CDC on the table if not already enabled
|
|
105
|
-
await enableCDCForTable({
|
|
76
|
+
// Check if CDC is enabled
|
|
77
|
+
const isEnabled = await isTableEnabledForCDC({
|
|
106
78
|
connectionManager,
|
|
107
|
-
table: POWERSYNC_CHECKPOINTS_TABLE
|
|
79
|
+
table: POWERSYNC_CHECKPOINTS_TABLE,
|
|
80
|
+
schema: connectionManager.schema
|
|
108
81
|
});
|
|
82
|
+
if (!isEnabled) {
|
|
83
|
+
throw new Error(`The ${POWERSYNC_CHECKPOINTS_TABLE} table exists but is not enabled for CDC. Please enable CDC on this table.`);
|
|
84
|
+
}
|
|
109
85
|
}
|
|
110
86
|
catch (error) {
|
|
111
|
-
errors.push(`Failed
|
|
87
|
+
errors.push(`Failed ensure ${POWERSYNC_CHECKPOINTS_TABLE} table is correctly configured: ${error}`);
|
|
112
88
|
}
|
|
113
89
|
return errors;
|
|
114
90
|
}
|
|
@@ -129,26 +105,8 @@ export async function createCheckpoint(connectionManager) {
|
|
|
129
105
|
*/
|
|
130
106
|
export async function isTableEnabledForCDC(options) {
|
|
131
107
|
const { connectionManager, table, schema } = options;
|
|
132
|
-
const {
|
|
133
|
-
|
|
134
|
-
JOIN sys.tables AS tbl ON tbl.object_id = ct.source_object_id
|
|
135
|
-
JOIN sys.schemas AS sch ON sch.schema_id = tbl.schema_id
|
|
136
|
-
WHERE sch.name = @schema
|
|
137
|
-
AND tbl.name = @tableName
|
|
138
|
-
`, [
|
|
139
|
-
{ name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
|
|
140
|
-
{ name: 'tableName', type: sql.VarChar(sql.MAX), value: table }
|
|
141
|
-
]);
|
|
142
|
-
return checkResult.length > 0;
|
|
143
|
-
}
|
|
144
|
-
export async function enableCDCForTable(options) {
|
|
145
|
-
const { connectionManager, table } = options;
|
|
146
|
-
await connectionManager.execute('sys.sp_cdc_enable_table', [
|
|
147
|
-
{ name: 'source_schema', value: connectionManager.schema },
|
|
148
|
-
{ name: 'source_name', value: table },
|
|
149
|
-
{ name: 'role_name', value: 'NULL' },
|
|
150
|
-
{ name: 'supports_net_changes', value: 1 }
|
|
151
|
-
]);
|
|
108
|
+
const captureInstance = await getCaptureInstance({ connectionManager, table: { schema, name: table } });
|
|
109
|
+
return captureInstance != null;
|
|
152
110
|
}
|
|
153
111
|
/**
|
|
154
112
|
* Check if the supplied version is newer or equal to the target version.
|
|
@@ -161,21 +119,24 @@ export function isVersionAtLeast(version, minimumVersion) {
|
|
|
161
119
|
return gte(coercedVersion, coercedMinimumVersion, { loose: true });
|
|
162
120
|
}
|
|
163
121
|
/**
|
|
164
|
-
* Checks that
|
|
122
|
+
* Checks that the given checkpoint LSN is still within the retention threshold of the source table capture instances.
|
|
165
123
|
* CDC periodically cleans up old data up to the retention threshold. If replication has been stopped for too long it is
|
|
166
124
|
* possible for the checkpoint LSN to be older than the minimum LSN in the CDC tables. In such a case we need to perform a new snapshot.
|
|
167
125
|
* @param options
|
|
168
126
|
*/
|
|
169
|
-
export async function
|
|
127
|
+
export async function checkRetentionThresholds(options) {
|
|
170
128
|
const { checkpointLSN, tables, connectionManager } = options;
|
|
129
|
+
const tablesOutsideRetentionThreshold = [];
|
|
171
130
|
for (const table of tables) {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
131
|
+
if (table.enabledForCDC()) {
|
|
132
|
+
const minLSN = await getMinLSN(connectionManager, table.captureInstance.name);
|
|
133
|
+
if (minLSN > checkpointLSN) {
|
|
134
|
+
logger.warn(`The checkpoint LSN:[${checkpointLSN}] is older than the minimum LSN:[${minLSN}] for table ${table.toQualifiedName()}. This indicates that the checkpoint LSN is outside of the retention window.`);
|
|
135
|
+
tablesOutsideRetentionThreshold.push(table);
|
|
136
|
+
}
|
|
176
137
|
}
|
|
177
138
|
}
|
|
178
|
-
return
|
|
139
|
+
return tablesOutsideRetentionThreshold;
|
|
179
140
|
}
|
|
180
141
|
export async function getMinLSN(connectionManager, captureInstance) {
|
|
181
142
|
const { recordset: result } = await connectionManager.query(`SELECT sys.fn_cdc_get_min_lsn(@captureInstance) AS min_lsn`, [{ name: 'captureInstance', type: sql.VarChar(sql.MAX), value: captureInstance }]);
|
|
@@ -186,31 +147,6 @@ export async function incrementLSN(lsn, connectionManager) {
|
|
|
186
147
|
const { recordset: result } = await connectionManager.query(`SELECT sys.fn_cdc_increment_lsn(@lsn) AS incremented_lsn`, [{ name: 'lsn', type: sql.VarBinary, value: lsn.toBinary() }]);
|
|
187
148
|
return LSN.fromBinary(result[0].incremented_lsn);
|
|
188
149
|
}
|
|
189
|
-
export async function getCaptureInstance(options) {
|
|
190
|
-
const { connectionManager, tableName, schema } = options;
|
|
191
|
-
const { recordset: result } = await connectionManager.query(`
|
|
192
|
-
SELECT
|
|
193
|
-
ct.capture_instance,
|
|
194
|
-
OBJECT_SCHEMA_NAME(ct.[object_id]) AS cdc_schema
|
|
195
|
-
FROM
|
|
196
|
-
sys.tables tbl
|
|
197
|
-
INNER JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
|
|
198
|
-
INNER JOIN cdc.change_tables ct ON ct.source_object_id = tbl.object_id
|
|
199
|
-
WHERE sch.name = @schema
|
|
200
|
-
AND tbl.name = @tableName
|
|
201
|
-
AND ct.end_lsn IS NULL;
|
|
202
|
-
`, [
|
|
203
|
-
{ name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
|
|
204
|
-
{ name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
|
|
205
|
-
]);
|
|
206
|
-
if (result.length === 0) {
|
|
207
|
-
return null;
|
|
208
|
-
}
|
|
209
|
-
return {
|
|
210
|
-
name: result[0].capture_instance,
|
|
211
|
-
schema: result[0].cdc_schema
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
150
|
/**
|
|
215
151
|
* Return the LSN of the latest transaction recorded in the transaction log
|
|
216
152
|
* @param connectionManager
|
|
@@ -309,18 +245,27 @@ export async function getDebugTableInfo(options) {
|
|
|
309
245
|
catch (e) {
|
|
310
246
|
selectError = { level: 'fatal', message: e.message };
|
|
311
247
|
}
|
|
312
|
-
// Check if CDC is enabled for the table
|
|
313
248
|
let cdcError = null;
|
|
249
|
+
let schemaDriftError = null;
|
|
314
250
|
try {
|
|
315
|
-
const
|
|
251
|
+
const captureInstanceDetails = await getCaptureInstance({
|
|
316
252
|
connectionManager: connectionManager,
|
|
317
|
-
table:
|
|
318
|
-
|
|
253
|
+
table: {
|
|
254
|
+
schema: schema,
|
|
255
|
+
name: table.name
|
|
256
|
+
}
|
|
319
257
|
});
|
|
320
|
-
if (
|
|
258
|
+
if (captureInstanceDetails == null) {
|
|
321
259
|
cdcError = {
|
|
322
|
-
level: '
|
|
323
|
-
message: `CDC is not enabled for table ${toQualifiedTableName(schema, table.name)}.
|
|
260
|
+
level: 'warning',
|
|
261
|
+
message: `CDC is not enabled for table ${toQualifiedTableName(schema, table.name)}. Please enable CDC on the table to capture changes.`
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
if (captureInstanceDetails && captureInstanceDetails.instances[0].pendingSchemaChanges.length > 0) {
|
|
265
|
+
schemaDriftError = {
|
|
266
|
+
level: 'warning',
|
|
267
|
+
message: `Source table ${toQualifiedTableName(schema, table.name)} has schema changes not reflected in the CDC capture instance. Please disable and re-enable CDC on the source table to update the capture instance schema.
|
|
268
|
+
Pending schema changes: ${captureInstanceDetails.instances[0].pendingSchemaChanges.join(', \n')}`
|
|
324
269
|
};
|
|
325
270
|
}
|
|
326
271
|
}
|
|
@@ -335,7 +280,64 @@ export async function getDebugTableInfo(options) {
|
|
|
335
280
|
replication_id: idColumns.map((c) => c.name),
|
|
336
281
|
data_queries: syncData,
|
|
337
282
|
parameter_queries: syncParameters,
|
|
338
|
-
errors: [idColumnsError, selectError, cdcError].filter((error) => error != null)
|
|
283
|
+
errors: [idColumnsError, selectError, cdcError, schemaDriftError].filter((error) => error != null)
|
|
339
284
|
};
|
|
340
285
|
}
|
|
286
|
+
export async function getCaptureInstances(options) {
|
|
287
|
+
return retryOnDeadlock(async () => {
|
|
288
|
+
const { connectionManager, table } = options;
|
|
289
|
+
const instances = new Map();
|
|
290
|
+
const { recordset: results } = table
|
|
291
|
+
? await connectionManager.execute('sys.sp_cdc_help_change_data_capture', [
|
|
292
|
+
{ name: 'source_schema', value: table.schema },
|
|
293
|
+
{ name: 'source_name', value: table.name }
|
|
294
|
+
])
|
|
295
|
+
: await connectionManager.execute('sys.sp_cdc_help_change_data_capture', []);
|
|
296
|
+
if (results.length === 0) {
|
|
297
|
+
return new Map();
|
|
298
|
+
}
|
|
299
|
+
for (const row of results) {
|
|
300
|
+
const instance = {
|
|
301
|
+
name: row.capture_instance,
|
|
302
|
+
objectId: row.object_id,
|
|
303
|
+
minLSN: LSN.fromBinary(row.start_lsn),
|
|
304
|
+
createDate: new Date(row.create_date),
|
|
305
|
+
pendingSchemaChanges: []
|
|
306
|
+
};
|
|
307
|
+
instance.pendingSchemaChanges = await getPendingSchemaChanges({
|
|
308
|
+
connectionManager: connectionManager,
|
|
309
|
+
captureInstanceName: instance.name
|
|
310
|
+
});
|
|
311
|
+
const sourceTable = {
|
|
312
|
+
schema: row.source_schema,
|
|
313
|
+
name: row.source_table,
|
|
314
|
+
objectId: row.source_object_id
|
|
315
|
+
};
|
|
316
|
+
// There can only ever be 2 capture instances active at any given time for a source table.
|
|
317
|
+
if (instances.has(row.source_object_id)) {
|
|
318
|
+
if (instance.createDate > instances.get(row.source_object_id).instances[0].createDate) {
|
|
319
|
+
instances.get(row.source_object_id).instances.unshift(instance);
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
instances.get(row.source_object_id).instances.push(instance);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
else {
|
|
326
|
+
instances.set(row.source_object_id, {
|
|
327
|
+
instances: [instance],
|
|
328
|
+
sourceTable
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
return instances;
|
|
333
|
+
}, 'getCaptureInstances');
|
|
334
|
+
}
|
|
335
|
+
export async function getCaptureInstance(options) {
|
|
336
|
+
const { connectionManager, table } = options;
|
|
337
|
+
const instances = await getCaptureInstances({ connectionManager, table });
|
|
338
|
+
if (instances.size === 0) {
|
|
339
|
+
return null;
|
|
340
|
+
}
|
|
341
|
+
return instances.values().next().value;
|
|
342
|
+
}
|
|
341
343
|
//# sourceMappingURL=mssql.js.map
|
package/dist/utils/mssql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql.js","sourceRoot":"","sources":["../../src/utils/mssql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mssql.js","sourceRoot":"","sources":["../../src/utils/mssql.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/schema.d.ts
CHANGED
|
@@ -19,3 +19,12 @@ export interface ReplicationIdentityColumnsResult {
|
|
|
19
19
|
export declare function getReplicationIdentityColumns(options: GetReplicationIdentityColumnsOptions): Promise<ReplicationIdentityColumnsResult>;
|
|
20
20
|
export type ResolvedTable = Omit<SourceEntityDescriptor, 'replicaIdColumns'>;
|
|
21
21
|
export declare function getTablesFromPattern(connectionManager: MSSQLConnectionManager, tablePattern: TablePattern): Promise<ResolvedTable[]>;
|
|
22
|
+
export interface GetPendingSchemaChangesOptions {
|
|
23
|
+
connectionManager: MSSQLConnectionManager;
|
|
24
|
+
captureInstanceName: string;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Returns the DDL commands that have been applied to the source table since the capture instance was created.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getPendingSchemaChanges(options: GetPendingSchemaChangesOptions): Promise<string[]>;
|
|
30
|
+
export declare function tableExists(tableId: number, connectionManager: MSSQLConnectionManager): Promise<boolean>;
|
package/dist/utils/schema.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import sql from 'mssql';
|
|
2
|
+
import { logger } from '@powersync/lib-services-framework';
|
|
2
3
|
async function getColumns(options) {
|
|
3
4
|
const { connectionManager, schema, tableName } = options;
|
|
4
5
|
const { recordset: columnResults } = await connectionManager.query(`
|
|
@@ -144,4 +145,37 @@ export async function getTablesFromPattern(connectionManager, tablePattern) {
|
|
|
144
145
|
});
|
|
145
146
|
}
|
|
146
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Returns the DDL commands that have been applied to the source table since the capture instance was created.
|
|
150
|
+
*/
|
|
151
|
+
export async function getPendingSchemaChanges(options) {
|
|
152
|
+
const { connectionManager, captureInstanceName } = options;
|
|
153
|
+
try {
|
|
154
|
+
const { recordset: results } = await connectionManager.execute('sys.sp_cdc_get_ddl_history', [
|
|
155
|
+
{ name: 'capture_instance', type: sql.VarChar(sql.MAX), value: captureInstanceName }
|
|
156
|
+
]);
|
|
157
|
+
return results.map((row) => row.ddl_command);
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
if (isObjectNotExistError(e)) {
|
|
161
|
+
// Defensive check to cover the case where the capture instance metadata is temporarily unavailable.
|
|
162
|
+
logger.warn(`Unable to retrieve schema changes for capture instance: [${captureInstanceName}].`);
|
|
163
|
+
return [];
|
|
164
|
+
}
|
|
165
|
+
throw e;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function isObjectNotExistError(error) {
|
|
169
|
+
if (error != null && typeof error === 'object' && 'number' in error) {
|
|
170
|
+
// SQL Server Object does not exist or access is denied error number.
|
|
171
|
+
return error.number === 22981;
|
|
172
|
+
}
|
|
173
|
+
return false;
|
|
174
|
+
}
|
|
175
|
+
export async function tableExists(tableId, connectionManager) {
|
|
176
|
+
const { recordset: results } = await connectionManager.query(`SELECT 1 FROM sys.tables WHERE object_id = @tableId`, [
|
|
177
|
+
{ name: 'tableId', type: sql.Int, value: tableId }
|
|
178
|
+
]);
|
|
179
|
+
return results.length > 0;
|
|
180
|
+
}
|
|
147
181
|
//# sourceMappingURL=schema.js.map
|
package/dist/utils/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"AAIA,OAAO,GAAG,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-mssql",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.6.0",
|
|
6
6
|
"license": "FSL-1.1-ALv2",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"type": "module",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
"ts-codec": "^1.3.0",
|
|
28
28
|
"uri-js": "^4.4.1",
|
|
29
29
|
"uuid": "^11.1.0",
|
|
30
|
-
"@powersync/lib-services-framework": "0.9.
|
|
31
|
-
"@powersync/service-core": "1.20.
|
|
32
|
-
"@powersync/service-errors": "0.4.
|
|
33
|
-
"@powersync/service-sync-rules": "0.
|
|
30
|
+
"@powersync/lib-services-framework": "0.9.1",
|
|
31
|
+
"@powersync/service-core": "1.20.2",
|
|
32
|
+
"@powersync/service-errors": "0.4.1",
|
|
33
|
+
"@powersync/service-sync-rules": "0.34.0",
|
|
34
34
|
"@powersync/service-types": "0.15.0",
|
|
35
35
|
"@powersync/service-jsonbig": "0.17.12"
|
|
36
36
|
},
|
|
@@ -38,9 +38,9 @@
|
|
|
38
38
|
"@types/mssql": "^9.1.8",
|
|
39
39
|
"@types/semver": "^7.7.1",
|
|
40
40
|
"@types/uuid": "^10.0.0",
|
|
41
|
-
"@powersync/service-core-tests": "0.15.
|
|
42
|
-
"@powersync/service-module-mongodb-storage": "0.15.
|
|
43
|
-
"@powersync/service-module-postgres-storage": "0.13.
|
|
41
|
+
"@powersync/service-core-tests": "0.15.1",
|
|
42
|
+
"@powersync/service-module-mongodb-storage": "0.15.1",
|
|
43
|
+
"@powersync/service-module-postgres-storage": "0.13.1"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "tsc -b",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LSN } from './LSN.js';
|
|
2
|
+
|
|
3
|
+
export interface CaptureInstance {
|
|
4
|
+
name: string;
|
|
5
|
+
/**
|
|
6
|
+
* Object ID for the capture instance table
|
|
7
|
+
*/
|
|
8
|
+
objectId: number;
|
|
9
|
+
minLSN: LSN;
|
|
10
|
+
createDate: Date;
|
|
11
|
+
/**
|
|
12
|
+
* DDL commands that have been applied to the source table but are not reflected in the capture instance.
|
|
13
|
+
*/
|
|
14
|
+
pendingSchemaChanges: string[];
|
|
15
|
+
}
|
|
@@ -1,48 +1,57 @@
|
|
|
1
1
|
import { SourceTable } from '@powersync/service-core';
|
|
2
|
-
import {
|
|
2
|
+
import { toQualifiedTableName } from '../utils/mssql.js';
|
|
3
|
+
import { ServiceAssertionError } from '@powersync/service-errors';
|
|
4
|
+
import { CaptureInstance } from './CaptureInstance.js';
|
|
3
5
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/**
|
|
7
|
+
* The cdc schema in SQL Server is reserved and created when enabling CDC on a database.
|
|
8
|
+
*/
|
|
9
|
+
export const CDC_SCHEMA = 'cdc';
|
|
8
10
|
|
|
9
|
-
export
|
|
10
|
-
sourceTable: SourceTable;
|
|
11
|
+
export class MSSQLSourceTable {
|
|
11
12
|
/**
|
|
12
13
|
* The unique name of the CDC capture instance for this table
|
|
13
14
|
*/
|
|
14
|
-
captureInstance: CaptureInstance;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export class MSSQLSourceTable {
|
|
18
|
-
constructor(private options: MSSQLSourceTableOptions) {}
|
|
15
|
+
public captureInstance: CaptureInstance | null = null;
|
|
19
16
|
|
|
20
|
-
|
|
21
|
-
return this.options.sourceTable;
|
|
22
|
-
}
|
|
17
|
+
constructor(public sourceTable: SourceTable) {}
|
|
23
18
|
|
|
24
19
|
updateSourceTable(updated: SourceTable): void {
|
|
25
|
-
this.
|
|
20
|
+
this.sourceTable = updated;
|
|
26
21
|
}
|
|
27
22
|
|
|
28
|
-
|
|
29
|
-
return this.
|
|
23
|
+
enabledForCDC(): boolean {
|
|
24
|
+
return this.captureInstance !== null;
|
|
30
25
|
}
|
|
31
26
|
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
setCaptureInstance(captureInstance: CaptureInstance) {
|
|
28
|
+
this.captureInstance = captureInstance;
|
|
34
29
|
}
|
|
35
30
|
|
|
36
|
-
|
|
37
|
-
|
|
31
|
+
clearCaptureInstance() {
|
|
32
|
+
this.captureInstance = null;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
get allChangesFunction() {
|
|
41
|
-
|
|
36
|
+
if (!this.captureInstance) {
|
|
37
|
+
throw new ServiceAssertionError(`No capture instance set for table: ${this.sourceTable.name}`);
|
|
38
|
+
}
|
|
39
|
+
return `${CDC_SCHEMA}.fn_cdc_get_all_changes_${this.captureInstance.name}`;
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
get netChangesFunction() {
|
|
45
|
-
|
|
43
|
+
if (!this.captureInstance) {
|
|
44
|
+
throw new ServiceAssertionError(`No capture instance set for table: ${this.sourceTable.name}`);
|
|
45
|
+
}
|
|
46
|
+
return `${CDC_SCHEMA}.fn_cdc_get_net_changes_${this.captureInstance.name}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Return the object ID of the source table.
|
|
51
|
+
* Object IDs in SQL Server are always numbers.
|
|
52
|
+
*/
|
|
53
|
+
get objectId(): number {
|
|
54
|
+
return this.sourceTable.objectId as number;
|
|
46
55
|
}
|
|
47
56
|
|
|
48
57
|
/**
|