@powersync/service-module-mssql 0.10.3 → 0.10.4
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 +44 -0
- package/dist/api/MSSQLRouteAPIAdapter.js +2 -1
- package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
- package/dist/module/MSSQLModule.js +1 -0
- package/dist/module/MSSQLModule.js.map +1 -1
- package/dist/replication/CDCStream.d.ts +2 -4
- package/dist/replication/CDCStream.js +54 -57
- package/dist/replication/CDCStream.js.map +1 -1
- package/dist/replication/MSSQLSnapshotQuery.d.ts +25 -15
- package/dist/replication/MSSQLSnapshotQuery.js +74 -47
- package/dist/replication/MSSQLSnapshotQuery.js.map +1 -1
- package/dist/utils/mssql.d.ts +0 -1
- package/dist/utils/mssql.js +0 -19
- package/dist/utils/mssql.js.map +1 -1
- package/package.json +9 -9
- package/src/api/MSSQLRouteAPIAdapter.ts +2 -1
- package/src/module/MSSQLModule.ts +1 -0
- package/src/replication/CDCStream.ts +56 -59
- package/src/replication/MSSQLSnapshotQuery.ts +107 -62
- package/src/utils/mssql.ts +0 -22
- package/test/src/CDCStream.test.ts +106 -16
- package/test/src/CDCStreamTestContext.ts +5 -2
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# @powersync/service-module-mssql
|
|
2
2
|
|
|
3
|
+
## 0.10.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 44ce423: Add `config.source_table_options` to edition 3 sync configs, including MongoDB pre-filtering expressions. Generate editor schemas with examples and report validation errors at their YAML source locations.
|
|
8
|
+
|
|
9
|
+
MongoDB replication pre-filtering is not supported in the Open Edition; unsupported configurations report `PSYNC_S1348`. For example:
|
|
10
|
+
|
|
11
|
+
```yaml
|
|
12
|
+
config:
|
|
13
|
+
edition: 3
|
|
14
|
+
source_table_options:
|
|
15
|
+
orders:
|
|
16
|
+
mongodb_filter_expression:
|
|
17
|
+
$and:
|
|
18
|
+
- $eq: ['$$doc.active', true]
|
|
19
|
+
- $in: ['$$doc.status', ['pending', 'shipped']]
|
|
20
|
+
streams:
|
|
21
|
+
orders:
|
|
22
|
+
query: SELECT * FROM orders
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Validation and deployment reject filters when the feature is unavailable. Parsing accepts an optional map of connection tags to connection types, rejecting MongoDB pre-filtering expressions on known non-MongoDB sources. Unknown connections or missing connection metadata produce advisory warnings. The service supplies connection metadata during validation, deployment, and filesystem loading. Filesystem-loaded sync configs also run source-capability checks. With `exit_on_error` disabled, configs remain available to diagnostics. Changing source-table options requires replacement processing when deploying a new sync config.
|
|
26
|
+
|
|
27
|
+
Source capability validation returns structured `ValidationDiagnostic` entries, allowing multiple fatal issues and
|
|
28
|
+
advisory warnings. Deployment and reprocessing reject fatal diagnostics while validation continues collecting
|
|
29
|
+
independent findings. Existing `ReplicationError` consumers retain the same diagnostic shape.
|
|
30
|
+
|
|
31
|
+
- 1decb46: Fix the initial snapshot never completing for SQL Server tables with a composite primary key, or another key type not supported for chunked snapshots, when the table has 10,000 or more rows. The snapshot of these tables now reports progress and can be interrupted between batches.
|
|
32
|
+
- Updated dependencies [44ce423]
|
|
33
|
+
- Updated dependencies [51a1a89]
|
|
34
|
+
- Updated dependencies [e703ca5]
|
|
35
|
+
- Updated dependencies [fff5024]
|
|
36
|
+
- Updated dependencies [324093e]
|
|
37
|
+
- Updated dependencies [286b0f8]
|
|
38
|
+
- Updated dependencies [51a1a89]
|
|
39
|
+
- Updated dependencies [57ef2f4]
|
|
40
|
+
- Updated dependencies [6700c71]
|
|
41
|
+
- @powersync/service-sync-rules@0.44.0
|
|
42
|
+
- @powersync/service-core@1.27.1
|
|
43
|
+
- @powersync/service-types@0.20.0
|
|
44
|
+
- @powersync/service-errors@0.6.0
|
|
45
|
+
- @powersync/lib-services-framework@0.10.4
|
|
46
|
+
|
|
3
47
|
## 0.10.3
|
|
4
48
|
|
|
5
49
|
### Patch Changes
|
|
@@ -188,7 +188,8 @@ export class MSSQLRouteAPIAdapter {
|
|
|
188
188
|
}
|
|
189
189
|
getParseSyncRulesOptions() {
|
|
190
190
|
return {
|
|
191
|
-
defaultSchema: this.connectionManager.schema
|
|
191
|
+
defaultSchema: this.connectionManager.schema,
|
|
192
|
+
connections: { [this.connectionManager.connectionTag]: { type: this.config.type } }
|
|
192
193
|
};
|
|
193
194
|
}
|
|
194
195
|
async getReplicationLagBytes(options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSSQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MSSQLRouteAPIAdapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MSSQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MSSQLRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,7 @@ export class MSSQLModule extends replication.ReplicationModule {
|
|
|
25
25
|
id: this.getDefaultId(normalisedConfig.database),
|
|
26
26
|
syncRuleProvider: syncRuleProvider,
|
|
27
27
|
storageEngine: context.storageEngine,
|
|
28
|
+
configuration: context.configuration,
|
|
28
29
|
metricsEngine: context.metricsEngine,
|
|
29
30
|
connectionFactory: connectionFactory,
|
|
30
31
|
rateLimiter: new MSSQLErrorRateLimiter(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MSSQLModule.js","sourceRoot":"","sources":["../../src/module/MSSQLModule.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MSSQLModule.js","sourceRoot":"","sources":["../../src/module/MSSQLModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,kCAAkC,EAElC,WAAW,EAGZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iDAAiD,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,OAAO,WAAY,SAAQ,WAAW,CAAC,iBAA8C;IACzF;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,KAAK,CAAC,qBAAqB;YACjC,YAAY,EAAE,KAAK,CAAC,qBAAqB;SAC1C,CAAC,CAAC;IACL,CAAC;IAES,qBAAqB;QAC7B,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC,CAAC;IAC3E,CAAC;IAES,gBAAgB,CAAC,OAA8B;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,IAAI,kCAAkC,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAClG,MAAM,iBAAiB,GAAG,IAAI,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;QAE9E,OAAO,IAAI,aAAa,CAAC;YACvB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,CAAC;YAChD,gBAAgB,EAAE,gBAAgB;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,iBAAiB,EAAE,iBAAiB;YACpC,WAAW,EAAE,IAAI,qBAAqB,EAAE;YACxC,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB;YACnD,wBAAwB,EAAE,gBAAgB,CAAC,0BAA0B;SACtE,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAmC;QACvD,OAAO;YACL,GAAG,MAAM;YACT,GAAG,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,0CAA0C;IAC5C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,MAAmC;QACtD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;QACjE,OAAO,MAAM,WAAW,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAqD;QAC/E,MAAM,iBAAiB,GAAG,IAAI,sBAAsB,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,iBAAiB,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,iBAAiB,CAAC,GAAG,EAAE,CAAC;QAChC,CAAC;QACD,OAAO;YACL,qBAAqB,EAAE,gBAAgB,CAAC,QAAQ;SACjD,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { DatabaseConnectionError, Logger } from '@powersync/lib-services-framework';
|
|
2
2
|
import { MetricsEngine, storage } from '@powersync/service-core';
|
|
3
3
|
import { TablePattern } from '@powersync/service-sync-rules';
|
|
4
|
-
import sql from 'mssql';
|
|
5
4
|
import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
|
|
6
5
|
import { MSSQLSourceTableCache } from '../common/MSSQLSourceTableCache.js';
|
|
7
6
|
import { AdditionalConfig } from '../types/types.js';
|
|
@@ -10,8 +9,8 @@ import { MSSQLConnectionManager } from './MSSQLConnectionManager.js';
|
|
|
10
9
|
import type { MSSQLReadyTableReconciliationContext } from './MSSQLTableReconciliationContext.js';
|
|
11
10
|
import { SchemaChange } from './SchemaChange.js';
|
|
12
11
|
export interface CDCStreamOptions {
|
|
13
|
-
connections: MSSQLConnectionManager;
|
|
14
12
|
storage: storage.SyncRulesBucketStorage;
|
|
13
|
+
connections: MSSQLConnectionManager;
|
|
15
14
|
metrics: MetricsEngine;
|
|
16
15
|
abortSignal: AbortSignal;
|
|
17
16
|
logger?: Logger;
|
|
@@ -88,9 +87,8 @@ export declare class CDCStream {
|
|
|
88
87
|
* Estimate the number of rows in a table. This query uses partition stats view to get a fast estimate of the row count.
|
|
89
88
|
* This requires that the MSSQL DB user has the VIEW DATABASE PERFORMANCE STATE permission.
|
|
90
89
|
* @param table
|
|
91
|
-
* @param transaction
|
|
92
90
|
*/
|
|
93
|
-
estimatedCountNumber(table: MSSQLSourceTable
|
|
91
|
+
estimatedCountNumber(table: MSSQLSourceTable): Promise<number>;
|
|
94
92
|
/**
|
|
95
93
|
* Start initial replication.
|
|
96
94
|
*
|
|
@@ -6,7 +6,7 @@ import { LSN } from '../common/LSN.js';
|
|
|
6
6
|
import { CDCToSqliteRow, toSqliteInputRow } from '../common/mssqls-to-sqlite.js';
|
|
7
7
|
import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
|
|
8
8
|
import { MSSQLSourceTableCache } from '../common/MSSQLSourceTableCache.js';
|
|
9
|
-
import { checkRetentionThresholds, checkSourceConfiguration, createCheckpoint, getCaptureInstances, getLatestLSN, getLatestReplicatedLSN
|
|
9
|
+
import { checkRetentionThresholds, checkSourceConfiguration, createCheckpoint, getCaptureInstances, getLatestLSN, getLatestReplicatedLSN } from '../utils/mssql.js';
|
|
10
10
|
import { getReplicationIdentityColumns, getTablesFromPattern } from '../utils/schema.js';
|
|
11
11
|
import { CaptureInstanceMissingError, createCaptureReconciler, SourceTableUnavailableError } from './CaptureReconciler.js';
|
|
12
12
|
import { CDCPoller } from './CDCPoller.js';
|
|
@@ -256,28 +256,21 @@ export class CDCStream {
|
|
|
256
256
|
else {
|
|
257
257
|
// Fallback case - query the entire table
|
|
258
258
|
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()} - not resumable`);
|
|
259
|
-
query = new SimpleSnapshotQuery(transaction, physicalTable.toQualifiedName());
|
|
259
|
+
query = new SimpleSnapshotQuery(transaction, physicalTable.toQualifiedName(), this.snapshotBatchSize);
|
|
260
260
|
replicatedCount = 0;
|
|
261
261
|
}
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
columns = result;
|
|
275
|
-
continue;
|
|
276
|
-
}
|
|
277
|
-
else {
|
|
278
|
-
if (!columns) {
|
|
279
|
-
throw new ReplicationAssertionError(`Missing column metadata`);
|
|
280
|
-
}
|
|
262
|
+
try {
|
|
263
|
+
// Fetched once for the whole snapshot. Column changes require deploying a new sync config anyway,
|
|
264
|
+
// since replication continues against the captured schema until then.
|
|
265
|
+
const columns = await query.getColumnMetadata();
|
|
266
|
+
let hasRemainingData = true;
|
|
267
|
+
while (hasRemainingData) {
|
|
268
|
+
// Fetch this.snapshotBatchSize rows at a time
|
|
269
|
+
// The balance here is between latency overhead per FETCH call,
|
|
270
|
+
// and not spending too much time on each FETCH call.
|
|
271
|
+
// We aim for a couple of seconds on each FETCH call.
|
|
272
|
+
let batchReplicatedCount = 0;
|
|
273
|
+
for await (const result of query.nextBatch()) {
|
|
281
274
|
const inputRow = toSqliteInputRow(result, columns);
|
|
282
275
|
const row = this.syncRules.applyRowContext(inputRow);
|
|
283
276
|
// This auto-flushes when the batch reaches its size limit
|
|
@@ -292,51 +285,55 @@ export class CDCStream {
|
|
|
292
285
|
replicatedCount++;
|
|
293
286
|
batchReplicatedCount++;
|
|
294
287
|
this.metrics.getCounter(ReplicationMetric.ROWS_REPLICATED).add(1);
|
|
288
|
+
this.touch();
|
|
289
|
+
}
|
|
290
|
+
// Important: flush before marking progress
|
|
291
|
+
await batch.flush();
|
|
292
|
+
let lastKey;
|
|
293
|
+
if (query instanceof BatchedSnapshotQuery) {
|
|
294
|
+
lastKey = query.getLastKeySerialized();
|
|
295
|
+
}
|
|
296
|
+
if (lastCountTime < performance.now() - 10 * 60 * 1000) {
|
|
297
|
+
// Even though we're doing the snapshot inside a transaction, the transaction uses
|
|
298
|
+
// the default "Read Committed" isolation level. This means we can get new data
|
|
299
|
+
// within the transaction, so we re-estimate the count every 10 minutes when replicating
|
|
300
|
+
// large tables.
|
|
301
|
+
// This uses a separate connection: the snapshot query may still be in progress on the transaction.
|
|
302
|
+
totalEstimatedCount = await this.estimatedCountNumber(physicalTable);
|
|
303
|
+
lastCountTime = performance.now();
|
|
304
|
+
}
|
|
305
|
+
const updatedSourceTable = await batch.updateTableProgress(sourceTable, {
|
|
306
|
+
lastKey: lastKey,
|
|
307
|
+
replicatedCount: replicatedCount,
|
|
308
|
+
totalEstimatedCount: totalEstimatedCount
|
|
309
|
+
});
|
|
310
|
+
this.tableCache.updateSourceTable(updatedSourceTable);
|
|
311
|
+
sourceTable = updatedSourceTable;
|
|
312
|
+
if (this.abortSignal.aborted) {
|
|
313
|
+
// We only abort after flushing
|
|
314
|
+
throw new ReplicationAbortedError(`Initial replication interrupted`);
|
|
315
|
+
}
|
|
316
|
+
// When the batch of rows is smaller than the requested batch size we know it is the final batch
|
|
317
|
+
if (batchReplicatedCount < this.snapshotBatchSize) {
|
|
318
|
+
hasRemainingData = false;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()}`);
|
|
295
322
|
}
|
|
296
|
-
this.touch();
|
|
297
|
-
}
|
|
298
|
-
// Important: flush before marking progress
|
|
299
|
-
await batch.flush();
|
|
300
|
-
let lastKey;
|
|
301
|
-
if (query instanceof BatchedSnapshotQuery) {
|
|
302
|
-
lastKey = query.getLastKeySerialized();
|
|
303
|
-
}
|
|
304
|
-
if (lastCountTime < performance.now() - 10 * 60 * 1000) {
|
|
305
|
-
// Even though we're doing the snapshot inside a transaction, the transaction uses
|
|
306
|
-
// the default "Read Committed" isolation level. This means we can get new data
|
|
307
|
-
// within the transaction, so we re-estimate the count every 10 minutes when replicating
|
|
308
|
-
// large tables.
|
|
309
|
-
totalEstimatedCount = await this.estimatedCountNumber(physicalTable, transaction);
|
|
310
|
-
lastCountTime = performance.now();
|
|
311
|
-
}
|
|
312
|
-
const updatedSourceTable = await batch.updateTableProgress(sourceTable, {
|
|
313
|
-
lastKey: lastKey,
|
|
314
|
-
replicatedCount: replicatedCount,
|
|
315
|
-
totalEstimatedCount: totalEstimatedCount
|
|
316
|
-
});
|
|
317
|
-
this.tableCache.updateSourceTable(updatedSourceTable);
|
|
318
|
-
sourceTable = updatedSourceTable;
|
|
319
|
-
if (this.abortSignal.aborted) {
|
|
320
|
-
// We only abort after flushing
|
|
321
|
-
throw new ReplicationAbortedError(`Initial replication interrupted`);
|
|
322
|
-
}
|
|
323
|
-
// When the batch of rows is smaller than the requested batch size we know it is the final batch
|
|
324
|
-
if (batchReplicatedCount < this.snapshotBatchSize) {
|
|
325
|
-
hasRemainingData = false;
|
|
326
|
-
}
|
|
327
|
-
else {
|
|
328
|
-
this.logger.info(`Snapshotting ${physicalTable.toQualifiedName()} ${sourceTable.formatSnapshotProgress()}`);
|
|
329
323
|
}
|
|
330
324
|
}
|
|
325
|
+
finally {
|
|
326
|
+
// Cancel the snapshot query if it is still in progress, so that the transaction can be rolled back.
|
|
327
|
+
await query.close();
|
|
328
|
+
}
|
|
331
329
|
}
|
|
332
330
|
/**
|
|
333
331
|
* Estimate the number of rows in a table. This query uses partition stats view to get a fast estimate of the row count.
|
|
334
332
|
* This requires that the MSSQL DB user has the VIEW DATABASE PERFORMANCE STATE permission.
|
|
335
333
|
* @param table
|
|
336
|
-
* @param transaction
|
|
337
334
|
*/
|
|
338
|
-
async estimatedCountNumber(table
|
|
339
|
-
const request =
|
|
335
|
+
async estimatedCountNumber(table) {
|
|
336
|
+
const request = await this.connections.createRequest();
|
|
340
337
|
const { recordset: result } = await request.input('tableName', table.toQualifiedName()).query(`SELECT SUM(row_count) AS total_rows
|
|
341
338
|
FROM sys.dm_db_partition_stats
|
|
342
339
|
WHERE object_id = OBJECT_ID(@tableName)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CDCStream.js","sourceRoot":"","sources":["../../src/replication/CDCStream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CDCStream.js","sourceRoot":"","sources":["../../src/replication/CDCStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,33 +2,41 @@ import { SourceTable } from '@powersync/service-core';
|
|
|
2
2
|
import sql from 'mssql';
|
|
3
3
|
import { MSSQLBaseType } from '../types/mssql-data-types.js';
|
|
4
4
|
export interface MSSQLSnapshotQuery {
|
|
5
|
-
initialize(): Promise<void>;
|
|
6
5
|
/**
|
|
7
|
-
* Returns
|
|
6
|
+
* Returns the column metadata for the rows that would be returned for this query.
|
|
8
7
|
*/
|
|
9
|
-
|
|
8
|
+
getColumnMetadata(): Promise<sql.IColumnMetadata>;
|
|
9
|
+
/**
|
|
10
|
+
* Returns an async iterator for the next batch of rows, yielding at most the batch size.
|
|
11
|
+
* A batch smaller than the batch size indicates that there are no rows left.
|
|
12
|
+
*/
|
|
13
|
+
nextBatch(): AsyncIterableIterator<Record<string, any>>;
|
|
14
|
+
/**
|
|
15
|
+
* Cancels the query if it is still in progress.
|
|
16
|
+
*/
|
|
17
|
+
close(): Promise<void>;
|
|
10
18
|
}
|
|
11
19
|
/**
|
|
12
|
-
* Snapshot query using a plain SELECT * FROM table
|
|
13
|
-
*
|
|
14
|
-
* This supports all tables but does not efficiently resume the snapshot
|
|
15
|
-
* if the process is restarted.
|
|
20
|
+
* Snapshot query using a plain SELECT * FROM table.
|
|
21
|
+
* This supports all tables but cannot resume the snapshot if the process is restarted.
|
|
16
22
|
*/
|
|
17
23
|
export declare class SimpleSnapshotQuery implements MSSQLSnapshotQuery {
|
|
18
24
|
private readonly transaction;
|
|
19
25
|
private readonly qualifiedTableName;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
26
|
+
private readonly batchSize;
|
|
27
|
+
private query;
|
|
28
|
+
constructor(transaction: sql.Transaction, qualifiedTableName: string, batchSize?: number);
|
|
29
|
+
getColumnMetadata(): Promise<sql.IColumnMetadata>;
|
|
30
|
+
nextBatch(): AsyncIterableIterator<Record<string, any>>;
|
|
31
|
+
close(): Promise<void>;
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
34
|
* Performs a table snapshot query, batching by ranges of primary key data.
|
|
26
35
|
*
|
|
27
36
|
* This may miss some rows if they are modified during the snapshot query.
|
|
28
|
-
* In that case, replication will pick up those rows afterward
|
|
29
|
-
* possibly resulting in an IdSnapshotQuery.
|
|
37
|
+
* In that case, replication will pick up those rows afterward.
|
|
30
38
|
*
|
|
31
|
-
* Currently, this only supports
|
|
39
|
+
* Currently, this only supports tables with a single primary key column,
|
|
32
40
|
* of a select few types.
|
|
33
41
|
*/
|
|
34
42
|
export declare class BatchedSnapshotQuery implements MSSQLSnapshotQuery {
|
|
@@ -44,10 +52,12 @@ export declare class BatchedSnapshotQuery implements MSSQLSnapshotQuery {
|
|
|
44
52
|
static SUPPORTED_TYPES: MSSQLBaseType[];
|
|
45
53
|
static supports(sourceTable: SourceTable): boolean;
|
|
46
54
|
private readonly key;
|
|
55
|
+
private query;
|
|
47
56
|
lastKey: string | bigint | null;
|
|
48
57
|
constructor(transaction: sql.Transaction, qualifiedTableName: string, sourceTable: SourceTable, batchSize: number | undefined, lastKeySerialized: Uint8Array | null);
|
|
49
|
-
|
|
58
|
+
getColumnMetadata(): Promise<sql.IColumnMetadata>;
|
|
50
59
|
getLastKeySerialized(): Uint8Array;
|
|
51
|
-
|
|
60
|
+
nextBatch(): AsyncIterableIterator<Record<string, any>>;
|
|
61
|
+
close(): Promise<void>;
|
|
52
62
|
private deserializeKey;
|
|
53
63
|
}
|
|
@@ -3,46 +3,75 @@ import { bson } from '@powersync/service-core';
|
|
|
3
3
|
import { MSSQLBaseType } from '../types/mssql-data-types.js';
|
|
4
4
|
import { escapeIdentifier } from '../utils/mssql.js';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
* Helper class that encapsulates the streaming logic of the queries used for snapshots.
|
|
7
|
+
*/
|
|
8
|
+
class StreamingQuery {
|
|
9
|
+
request;
|
|
10
|
+
rows;
|
|
11
|
+
completed;
|
|
12
|
+
finished = false;
|
|
13
|
+
constructor(request, query) {
|
|
14
|
+
this.request = request;
|
|
15
|
+
const stream = request.toReadableStream();
|
|
16
|
+
// Errors are surfaced by iterating the rows. This listener prevents an unhandled 'error' event
|
|
17
|
+
// when the query fails after iteration has stopped, such as the cancellation error from cancel().
|
|
18
|
+
stream.on('error', () => { });
|
|
19
|
+
// In stream mode, errors are emitted on the stream instead of rejecting this promise.
|
|
20
|
+
this.completed = request.query(query).then(() => {
|
|
21
|
+
this.finished = true;
|
|
22
|
+
}, () => {
|
|
23
|
+
this.finished = true;
|
|
24
|
+
});
|
|
25
|
+
this.rows = stream[Symbol.asyncIterator]();
|
|
26
|
+
}
|
|
27
|
+
async cancel() {
|
|
28
|
+
if (!this.finished) {
|
|
29
|
+
this.request.cancel();
|
|
30
|
+
}
|
|
31
|
+
// Resolves once the driver has released the transaction's connection.
|
|
32
|
+
await this.completed;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Snapshot query using a plain SELECT * FROM table.
|
|
37
|
+
* This supports all tables but cannot resume the snapshot if the process is restarted.
|
|
10
38
|
*/
|
|
11
39
|
export class SimpleSnapshotQuery {
|
|
12
40
|
transaction;
|
|
13
41
|
qualifiedTableName;
|
|
14
|
-
|
|
42
|
+
batchSize;
|
|
43
|
+
query = null;
|
|
44
|
+
constructor(transaction, qualifiedTableName, batchSize = 10_000) {
|
|
15
45
|
this.transaction = transaction;
|
|
16
46
|
this.qualifiedTableName = qualifiedTableName;
|
|
47
|
+
this.batchSize = batchSize;
|
|
17
48
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
request.query(`SELECT * FROM ${this.qualifiedTableName}`);
|
|
32
|
-
// MSSQL only streams one row at a time
|
|
33
|
-
for await (const row of stream) {
|
|
34
|
-
yield row;
|
|
49
|
+
getColumnMetadata() {
|
|
50
|
+
return queryColumnMetadata(this.transaction, this.qualifiedTableName);
|
|
51
|
+
}
|
|
52
|
+
async *nextBatch() {
|
|
53
|
+
// Opened on the first call, and iterated straight away so that the row iterator receives any query error.
|
|
54
|
+
this.query ??= new StreamingQuery(this.transaction.request(), `SELECT * FROM ${this.qualifiedTableName}`);
|
|
55
|
+
for (let i = 0; i < this.batchSize; i++) {
|
|
56
|
+
// MSSQL only streams one row at a time
|
|
57
|
+
const result = await this.query.rows.next();
|
|
58
|
+
if (result.done) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
yield result.value;
|
|
35
62
|
}
|
|
36
63
|
}
|
|
64
|
+
async close() {
|
|
65
|
+
await this.query?.cancel();
|
|
66
|
+
}
|
|
37
67
|
}
|
|
38
68
|
/**
|
|
39
69
|
* Performs a table snapshot query, batching by ranges of primary key data.
|
|
40
70
|
*
|
|
41
71
|
* This may miss some rows if they are modified during the snapshot query.
|
|
42
|
-
* In that case, replication will pick up those rows afterward
|
|
43
|
-
* possibly resulting in an IdSnapshotQuery.
|
|
72
|
+
* In that case, replication will pick up those rows afterward.
|
|
44
73
|
*
|
|
45
|
-
* Currently, this only supports
|
|
74
|
+
* Currently, this only supports tables with a single primary key column,
|
|
46
75
|
* of a select few types.
|
|
47
76
|
*/
|
|
48
77
|
export class BatchedSnapshotQuery {
|
|
@@ -76,6 +105,7 @@ export class BatchedSnapshotQuery {
|
|
|
76
105
|
return primaryKey.typeId != null && BatchedSnapshotQuery.SUPPORTED_TYPES.includes(Number(primaryKey.typeId));
|
|
77
106
|
}
|
|
78
107
|
key;
|
|
108
|
+
query = null;
|
|
79
109
|
lastKey = null;
|
|
80
110
|
constructor(transaction, qualifiedTableName, sourceTable, batchSize = 10_000, lastKeySerialized) {
|
|
81
111
|
this.transaction = transaction;
|
|
@@ -86,46 +116,39 @@ export class BatchedSnapshotQuery {
|
|
|
86
116
|
this.lastKey = this.deserializeKey(lastKeySerialized);
|
|
87
117
|
}
|
|
88
118
|
}
|
|
89
|
-
async
|
|
90
|
-
|
|
119
|
+
async getColumnMetadata() {
|
|
120
|
+
const columnMetadata = await queryColumnMetadata(this.transaction, this.qualifiedTableName);
|
|
121
|
+
const foundPrimaryKey = columnMetadata[this.key.name];
|
|
122
|
+
if (!foundPrimaryKey) {
|
|
123
|
+
throw new Error(`Cannot find primary key column ${this.key.name} in results. Keys: ${Object.keys(columnMetadata).join(', ')}`);
|
|
124
|
+
}
|
|
125
|
+
return columnMetadata;
|
|
91
126
|
}
|
|
92
127
|
getLastKeySerialized() {
|
|
93
128
|
return bson.serialize({ [this.key.name]: this.lastKey });
|
|
94
129
|
}
|
|
95
|
-
async *
|
|
130
|
+
async *nextBatch() {
|
|
96
131
|
const escapedKeyName = escapeIdentifier(this.key.name);
|
|
97
|
-
const metadataRequest = this.transaction.request();
|
|
98
|
-
metadataRequest.stream = true;
|
|
99
|
-
const metadataPromise = new Promise((resolve, reject) => {
|
|
100
|
-
metadataRequest.on('recordset', resolve);
|
|
101
|
-
metadataRequest.on('error', reject);
|
|
102
|
-
});
|
|
103
|
-
metadataRequest.query(`SELECT TOP(0) * FROM ${this.qualifiedTableName}`);
|
|
104
|
-
const columnMetadata = await metadataPromise;
|
|
105
|
-
const foundPrimaryKey = columnMetadata[this.key.name];
|
|
106
|
-
if (!foundPrimaryKey) {
|
|
107
|
-
throw new Error(`Cannot find primary key column ${this.key.name} in results. Keys: ${Object.keys(columnMetadata.columns).join(', ')}`);
|
|
108
|
-
}
|
|
109
|
-
yield columnMetadata;
|
|
110
132
|
const request = this.transaction.request();
|
|
111
|
-
const stream = request.toReadableStream();
|
|
112
133
|
if (this.lastKey == null) {
|
|
113
|
-
|
|
134
|
+
this.query = new StreamingQuery(request, `SELECT TOP(${this.batchSize}) * FROM ${this.qualifiedTableName} ORDER BY ${escapedKeyName}`);
|
|
114
135
|
}
|
|
115
136
|
else {
|
|
116
137
|
if (this.key.typeId == null) {
|
|
117
138
|
throw new Error(`typeId required for primary key ${this.key.name}`);
|
|
118
139
|
}
|
|
119
|
-
request
|
|
120
|
-
|
|
121
|
-
.query(`SELECT TOP(${this.batchSize}) * FROM ${this.qualifiedTableName} WHERE ${escapedKeyName} > @lastKey ORDER BY ${escapedKeyName}`);
|
|
140
|
+
request.input('lastKey', this.lastKey);
|
|
141
|
+
this.query = new StreamingQuery(request, `SELECT TOP(${this.batchSize}) * FROM ${this.qualifiedTableName} WHERE ${escapedKeyName} > @lastKey ORDER BY ${escapedKeyName}`);
|
|
122
142
|
}
|
|
123
143
|
// MSSQL only streams one row at a time
|
|
124
|
-
for await (const row of
|
|
144
|
+
for await (const row of this.query.rows) {
|
|
125
145
|
this.lastKey = row[this.key.name];
|
|
126
146
|
yield row;
|
|
127
147
|
}
|
|
128
148
|
}
|
|
149
|
+
async close() {
|
|
150
|
+
await this.query?.cancel();
|
|
151
|
+
}
|
|
129
152
|
deserializeKey(key) {
|
|
130
153
|
const decoded = bson.deserialize(key, { useBigInt64: true });
|
|
131
154
|
const keys = Object.keys(decoded);
|
|
@@ -138,4 +161,8 @@ export class BatchedSnapshotQuery {
|
|
|
138
161
|
return decoded[this.key.name];
|
|
139
162
|
}
|
|
140
163
|
}
|
|
164
|
+
async function queryColumnMetadata(transaction, qualifiedTableName) {
|
|
165
|
+
const { recordset } = await transaction.request().query(`SELECT TOP(0) * FROM ${qualifiedTableName}`);
|
|
166
|
+
return recordset.columns;
|
|
167
|
+
}
|
|
141
168
|
//# sourceMappingURL=MSSQLSnapshotQuery.js.map
|