@powersync/service-module-mssql 0.0.1 → 0.1.1

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 (58) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/api/MSSQLRouteAPIAdapter.js +16 -51
  3. package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
  4. package/dist/common/LSN.js +2 -2
  5. package/dist/common/LSN.js.map +1 -1
  6. package/dist/common/MSSQLSourceTable.js +4 -4
  7. package/dist/common/MSSQLSourceTable.js.map +1 -1
  8. package/dist/common/mssqls-to-sqlite.js +4 -4
  9. package/dist/common/mssqls-to-sqlite.js.map +1 -1
  10. package/dist/module/MSSQLModule.js +1 -1
  11. package/dist/module/MSSQLModule.js.map +1 -1
  12. package/dist/replication/CDCPoller.d.ts +2 -2
  13. package/dist/replication/CDCPoller.js +12 -8
  14. package/dist/replication/CDCPoller.js.map +1 -1
  15. package/dist/replication/CDCReplicationJob.d.ts +2 -2
  16. package/dist/replication/CDCReplicationJob.js +1 -1
  17. package/dist/replication/CDCReplicationJob.js.map +1 -1
  18. package/dist/replication/CDCReplicator.d.ts +2 -2
  19. package/dist/replication/CDCReplicator.js +1 -1
  20. package/dist/replication/CDCReplicator.js.map +1 -1
  21. package/dist/replication/CDCStream.d.ts +2 -2
  22. package/dist/replication/CDCStream.js +32 -37
  23. package/dist/replication/CDCStream.js.map +1 -1
  24. package/dist/replication/MSSQLConnectionManager.js +1 -1
  25. package/dist/replication/MSSQLConnectionManager.js.map +1 -1
  26. package/dist/replication/MSSQLSnapshotQuery.d.ts +0 -17
  27. package/dist/replication/MSSQLSnapshotQuery.js +0 -47
  28. package/dist/replication/MSSQLSnapshotQuery.js.map +1 -1
  29. package/dist/types/types.d.ts +80 -23
  30. package/dist/types/types.js +24 -24
  31. package/dist/types/types.js.map +1 -1
  32. package/dist/utils/mssql.js +26 -14
  33. package/dist/utils/mssql.js.map +1 -1
  34. package/dist/utils/schema.js +31 -15
  35. package/dist/utils/schema.js.map +1 -1
  36. package/package.json +10 -10
  37. package/src/api/MSSQLRouteAPIAdapter.ts +16 -51
  38. package/src/common/LSN.ts +2 -2
  39. package/src/common/MSSQLSourceTable.ts +4 -4
  40. package/src/common/mssqls-to-sqlite.ts +11 -4
  41. package/src/module/MSSQLModule.ts +1 -1
  42. package/src/replication/CDCPoller.ts +15 -10
  43. package/src/replication/CDCReplicationJob.ts +3 -3
  44. package/src/replication/CDCReplicator.ts +3 -3
  45. package/src/replication/CDCStream.ts +36 -49
  46. package/src/replication/MSSQLConnectionManager.ts +1 -1
  47. package/src/replication/MSSQLSnapshotQuery.ts +0 -54
  48. package/src/types/types.ts +41 -45
  49. package/src/utils/mssql.ts +33 -15
  50. package/src/utils/schema.ts +31 -17
  51. package/test/src/CDCStream.test.ts +9 -17
  52. package/test/src/CDCStreamTestContext.ts +5 -5
  53. package/test/src/CDCStream_resumable_snapshot.test.ts +15 -9
  54. package/test/src/mssql-to-sqlite.test.ts +28 -27
  55. package/test/src/util.ts +27 -14
  56. package/tsconfig.tsbuildinfo +1 -1
  57. package/ci/init-mssql.sql +0 -50
  58. package/test/tsconfig.tsbuildinfo +0 -1
@@ -64,8 +64,11 @@ export async function ensurePowerSyncCheckpointsTable(connectionManager) {
64
64
  try {
65
65
  // check if the dbo_powersync_checkpoints table exists
66
66
  const { recordset: checkpointsResult } = await connectionManager.query(`
67
- SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '${connectionManager.schema}' AND TABLE_NAME = '${POWERSYNC_CHECKPOINTS_TABLE}';
68
- `);
67
+ SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = @schema AND TABLE_NAME = @tableName;
68
+ `, [
69
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: connectionManager.schema },
70
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE }
71
+ ]);
69
72
  if (checkpointsResult.length > 0) {
70
73
  // Table already exists, check if CDC is enabled
71
74
  const isEnabled = await isTableEnabledForCDC({
@@ -89,7 +92,7 @@ export async function ensurePowerSyncCheckpointsTable(connectionManager) {
89
92
  // Try to create the table
90
93
  try {
91
94
  await connectionManager.query(`
92
- CREATE TABLE ${connectionManager.schema}.${POWERSYNC_CHECKPOINTS_TABLE} (
95
+ CREATE TABLE ${toQualifiedTableName(connectionManager.schema, POWERSYNC_CHECKPOINTS_TABLE)} (
93
96
  id INT IDENTITY PRIMARY KEY,
94
97
  last_updated DATETIME NOT NULL DEFAULT (GETDATE())
95
98
  )`);
@@ -111,7 +114,7 @@ export async function ensurePowerSyncCheckpointsTable(connectionManager) {
111
114
  }
112
115
  export async function createCheckpoint(connectionManager) {
113
116
  await connectionManager.query(`
114
- MERGE ${connectionManager.schema}.${POWERSYNC_CHECKPOINTS_TABLE} AS target
117
+ MERGE ${toQualifiedTableName(connectionManager.schema, POWERSYNC_CHECKPOINTS_TABLE)} AS target
115
118
  USING (SELECT 1 AS id) AS source
116
119
  ON target.id = source.id
117
120
  WHEN MATCHED THEN
@@ -130,9 +133,12 @@ export async function isTableEnabledForCDC(options) {
130
133
  SELECT 1 FROM cdc.change_tables ct
131
134
  JOIN sys.tables AS tbl ON tbl.object_id = ct.source_object_id
132
135
  JOIN sys.schemas AS sch ON sch.schema_id = tbl.schema_id
133
- WHERE sch.name = '${schema}'
134
- AND tbl.name = '${table}'
135
- `);
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
+ ]);
136
142
  return checkResult.length > 0;
137
143
  }
138
144
  export async function enableCDCForTable(options) {
@@ -172,7 +178,7 @@ export async function isWithinRetentionThreshold(options) {
172
178
  return true;
173
179
  }
174
180
  export async function getMinLSN(connectionManager, captureInstance) {
175
- const { recordset: result } = await connectionManager.query(`SELECT sys.fn_cdc_get_min_lsn('${captureInstance}') AS min_lsn`);
181
+ 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 }]);
176
182
  const rawMinLSN = result[0].min_lsn;
177
183
  return LSN.fromBinary(rawMinLSN);
178
184
  }
@@ -190,10 +196,13 @@ export async function getCaptureInstance(options) {
190
196
  sys.tables tbl
191
197
  INNER JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
192
198
  INNER JOIN cdc.change_tables ct ON ct.source_object_id = tbl.object_id
193
- WHERE sch.name = '${schema}'
194
- AND tbl.name = '${tableName}'
199
+ WHERE sch.name = @schema
200
+ AND tbl.name = @tableName
195
201
  AND ct.end_lsn IS NULL;
196
- `);
202
+ `, [
203
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
204
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
205
+ ]);
197
206
  if (result.length === 0) {
198
207
  return null;
199
208
  }
@@ -225,7 +234,10 @@ export async function getLatestReplicatedLSN(connectionManager) {
225
234
  * @param identifier
226
235
  */
227
236
  export function escapeIdentifier(identifier) {
228
- return `[${identifier}]`;
237
+ // 1. Replace existing closing brackets ] with ]] to escape them
238
+ // 2. Replace dots . with ].[ to handle qualified names
239
+ // 3. Wrap the whole result in [ ]
240
+ return `[${identifier.replace(/]/g, ']]').replace(/\./g, '].[')}]`;
229
241
  }
230
242
  export function toQualifiedTableName(schema, tableName) {
231
243
  return `${escapeIdentifier(schema)}.${escapeIdentifier(tableName)}`;
@@ -240,7 +252,7 @@ export function isIColumnMetadata(obj) {
240
252
  propertiesMatched =
241
253
  typeof property.index === 'number' &&
242
254
  typeof property.name === 'string' &&
243
- typeof property.length === 'number' &&
255
+ (typeof property.length === 'number' || typeof property.length === 'undefined') &&
244
256
  (typeof property.type === 'function' || typeof property.type === 'object') &&
245
257
  typeof property.nullable === 'boolean' &&
246
258
  typeof property.caseSensitive === 'boolean' &&
@@ -292,7 +304,7 @@ export async function getDebugTableInfo(options) {
292
304
  }
293
305
  let selectError = null;
294
306
  try {
295
- await connectionManager.query(`SELECT TOP 1 * FROM [${toQualifiedTableName(schema, table.name)}]`);
307
+ await connectionManager.query(`SELECT TOP 1 * FROM ${toQualifiedTableName(schema, table.name)}`);
296
308
  }
297
309
  catch (e) {
298
310
  selectError = { level: 'fatal', message: e.message };
@@ -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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"}
@@ -1,3 +1,4 @@
1
+ import sql from 'mssql';
1
2
  async function getColumns(options) {
2
3
  const { connectionManager, schema, tableName } = options;
3
4
  const { recordset: columnResults } = await connectionManager.query(`
@@ -10,10 +11,13 @@ async function getColumns(options) {
10
11
  JOIN sys.tables AS tbl ON tbl.object_id = col.object_id
11
12
  JOIN sys.schemas AS sch ON sch.schema_id = tbl.schema_id
12
13
  JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id
13
- WHERE sch.name = '${schema}'
14
- AND tbl.name = '${tableName}'
14
+ WHERE sch.name = @schema
15
+ AND tbl.name = @tableName
15
16
  ORDER BY col.column_id;
16
- `);
17
+ `, [
18
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
19
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
20
+ ]);
17
21
  return columnResults.map((row) => {
18
22
  return {
19
23
  name: row.name,
@@ -37,10 +41,13 @@ export async function getReplicationIdentityColumns(options) {
37
41
  JOIN sys.index_columns AS idx_col ON idx_col.object_id = idx.object_id AND idx_col.index_id = idx.index_id
38
42
  JOIN sys.columns AS col ON col.object_id = idx_col.object_id AND col.column_id = idx_col.column_id
39
43
  JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id
40
- WHERE sch.name = '${schema}'
41
- AND tbl.name = '${tableName}'
44
+ WHERE sch.name = @schema
45
+ AND tbl.name = @tableName
42
46
  ORDER BY idx_col.key_ordinal;
43
- `);
47
+ `, [
48
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
49
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
50
+ ]);
44
51
  if (primaryKeyColumns.length > 0) {
45
52
  return {
46
53
  columns: primaryKeyColumns.map((row) => ({
@@ -65,10 +72,13 @@ export async function getReplicationIdentityColumns(options) {
65
72
  JOIN sys.index_columns AS idx_col ON idx_col.object_id = idx.object_id AND idx_col.index_id = idx.index_id
66
73
  JOIN sys.columns AS col ON col.object_id = idx_col.object_id AND col.column_id = idx_col.column_id
67
74
  JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id
68
- WHERE sch.name = '${schema}'
69
- AND tbl.name = '${tableName}'
75
+ WHERE sch.name = @schema
76
+ AND tbl.name = @tableName
70
77
  ORDER BY idx_col.key_ordinal;
71
- `);
78
+ `, [
79
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
80
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
81
+ ]);
72
82
  if (uniqueKeyColumns.length > 0) {
73
83
  return {
74
84
  columns: uniqueKeyColumns.map((row) => ({
@@ -95,9 +105,12 @@ export async function getTablesFromPattern(connectionManager, tablePattern) {
95
105
  tbl.object_id AS object_id
96
106
  FROM sys.tables tbl
97
107
  JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
98
- WHERE sch.name = '${tablePattern.schema}'
99
- AND tbl.name LIKE '${tablePattern.tablePattern}'
100
- `);
108
+ WHERE sch.name = @schema
109
+ AND tbl.name LIKE @tablePattern
110
+ `, [
111
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
112
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
113
+ ]);
101
114
  return tableResults
102
115
  .map((row) => {
103
116
  return {
@@ -116,9 +129,12 @@ export async function getTablesFromPattern(connectionManager, tablePattern) {
116
129
  tbl.object_id AS object_id
117
130
  FROM sys.tables tbl
118
131
  JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
119
- WHERE sch.name = '${tablePattern.schema}'
120
- AND tbl.name = '${tablePattern.name}'
121
- `);
132
+ WHERE sch.name = @schema
133
+ AND tbl.name = @tablePattern
134
+ `, [
135
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
136
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
137
+ ]);
122
138
  return tableResults.map((row) => {
123
139
  return {
124
140
  objectId: row.object_id,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"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"}
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.0.1",
5
+ "version": "0.1.1",
6
6
  "license": "FSL-1.1-ALv2",
7
7
  "main": "dist/index.js",
8
8
  "type": "module",
@@ -27,20 +27,20 @@
27
27
  "ts-codec": "^1.3.0",
28
28
  "uri-js": "^4.4.1",
29
29
  "uuid": "^11.1.0",
30
- "@powersync/service-sync-rules": "0.29.7",
31
- "@powersync/service-jsonbig": "0.17.12",
32
- "@powersync/lib-services-framework": "0.7.10",
33
- "@powersync/service-errors": "0.3.5",
34
- "@powersync/service-core": "1.16.3",
35
- "@powersync/service-types": "0.13.1"
30
+ "@powersync/lib-services-framework": "0.7.13",
31
+ "@powersync/service-core": "1.18.1",
32
+ "@powersync/service-errors": "0.3.6",
33
+ "@powersync/service-sync-rules": "0.29.9",
34
+ "@powersync/service-types": "0.13.3",
35
+ "@powersync/service-jsonbig": "0.17.12"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/mssql": "^9.1.8",
39
39
  "@types/semver": "^7.7.1",
40
40
  "@types/uuid": "^10.0.0",
41
- "@powersync/service-module-postgres-storage": "0.10.12",
42
- "@powersync/service-module-mongodb-storage": "0.12.12",
43
- "@powersync/service-core-tests": "0.12.12"
41
+ "@powersync/service-core-tests": "0.12.15",
42
+ "@powersync/service-module-mongodb-storage": "0.12.15",
43
+ "@powersync/service-module-postgres-storage": "0.10.15"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "tsc -b",
@@ -6,7 +6,6 @@ import {
6
6
  ReplicationLagOptions
7
7
  } from '@powersync/service-core';
8
8
  import * as service_types from '@powersync/service-types';
9
- import * as sync_rules from '@powersync/service-sync-rules';
10
9
  import { SqlSyncRules, TablePattern } from '@powersync/service-sync-rules';
11
10
  import * as types from '../types/types.js';
12
11
  import { ExecuteSqlResponse } from '@powersync/service-types/dist/routes.js';
@@ -20,6 +19,7 @@ import {
20
19
  } from '../utils/mssql.js';
21
20
  import { getTablesFromPattern, ResolvedTable } from '../utils/schema.js';
22
21
  import { toExpressionTypeFromMSSQLType } from '../common/mssqls-to-sqlite.js';
22
+ import sql from 'mssql';
23
23
 
24
24
  export class MSSQLRouteAPIAdapter implements api.RouteAPI {
25
25
  protected connectionManager: MSSQLConnectionManager;
@@ -39,52 +39,14 @@ export class MSSQLRouteAPIAdapter implements api.RouteAPI {
39
39
  }
40
40
 
41
41
  async executeQuery(query: string, params: any[]): Promise<ExecuteSqlResponse> {
42
- if (!this.config.debug_api) {
43
- return service_types.internal_routes.ExecuteSqlResponse.encode({
44
- results: {
45
- columns: [],
46
- rows: []
47
- },
48
- success: false,
49
- error: 'SQL querying is not enabled'
50
- });
51
- }
52
- try {
53
- const { recordset: result } = await this.connectionManager.query(query, params);
54
- return service_types.internal_routes.ExecuteSqlResponse.encode({
55
- success: true,
56
- results: {
57
- columns: Object.values(result.columns).map((column) => column.name),
58
- rows: result.map((row) => {
59
- return Object.values(row).map((value: any) => {
60
- const sqlValue = sync_rules.applyValueContext(
61
- sync_rules.toSyncRulesValue(row),
62
- sync_rules.CompatibilityContext.FULL_BACKWARDS_COMPATIBILITY
63
- );
64
-
65
- if (typeof sqlValue == 'bigint') {
66
- return Number(row);
67
- } else if (value instanceof Date) {
68
- return value.toISOString();
69
- } else if (sync_rules.isJsonValue(sqlValue)) {
70
- return sqlValue;
71
- } else {
72
- return null;
73
- }
74
- });
75
- })
76
- }
77
- });
78
- } catch (e) {
79
- return service_types.internal_routes.ExecuteSqlResponse.encode({
80
- results: {
81
- columns: [],
82
- rows: []
83
- },
84
- success: false,
85
- error: e.message
86
- });
87
- }
42
+ return service_types.internal_routes.ExecuteSqlResponse.encode({
43
+ results: {
44
+ columns: [],
45
+ rows: []
46
+ },
47
+ success: false,
48
+ error: 'SQL querying is not supported for SQL Server'
49
+ });
88
50
  }
89
51
 
90
52
  async getConnectionSchema(): Promise<service_types.DatabaseSchema[]> {
@@ -118,13 +80,16 @@ export class MSSQLRouteAPIAdapter implements api.RouteAPI {
118
80
  JOIN sys.schemas AS sch ON sch.schema_id = tbl.schema_id
119
81
  JOIN sys.columns AS col ON col.object_id = tbl.object_id
120
82
  JOIN sys.types AS typ ON typ.user_type_id = col.user_type_id
121
- WHERE sch.name = '${this.connectionManager.schema}'
83
+ WHERE sch.name = @schema
122
84
  AND sch.name NOT IN ('sys', 'INFORMATION_SCHEMA', 'cdc')
123
- AND tbl.name NOT IN ('systranschemas', '${POWERSYNC_CHECKPOINTS_TABLE}')
85
+ AND tbl.name NOT IN ('systranschemas', @checkpointsTable)
124
86
  AND tbl.type = 'U'
125
87
  AND col.is_computed = 0
126
88
  ORDER BY sch.name, tbl.name, col.column_id
127
- `);
89
+ `, [
90
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: this.connectionManager.schema },
91
+ { name: 'checkpointsTable', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE },
92
+ ]);
128
93
 
129
94
  /**
130
95
  * Reduces the SQL results into a Record of {@link DatabaseSchema}
@@ -233,7 +198,7 @@ export class MSSQLRouteAPIAdapter implements api.RouteAPI {
233
198
  }
234
199
  } else {
235
200
  if (tables.length == 0) {
236
- // This should tenchnically never happen, but we'll handle it anyway.
201
+ // This should technically never happen, but we'll handle it anyway.
237
202
  const resolvedTable: ResolvedTable = {
238
203
  objectId: 0,
239
204
  schema: schema,
package/src/common/LSN.ts CHANGED
@@ -51,9 +51,9 @@ export class LSN {
51
51
  * @param stringLSN
52
52
  */
53
53
  static fromString(stringLSN: string): LSN {
54
- if (!/^[0-9A-Fa-f]{8}:[0-9A-Fa-f]{8}:[0-9A-Fa-f]{4}$/.test(stringLSN)) {
54
+ if (!/^[0-9A-F]{8}:[0-9A-F]{8}:[0-9A-F]{4}$/.test(stringLSN)) {
55
55
  throw new ReplicationAssertionError(
56
- `Invalid LSN string. Expected format is [00000000:00000000:0000]. Got: ${stringLSN}`
56
+ `Invalid LSN string. Expected format is uppercase hexadecimal:[00000000:00000000:0000]. Got: ${stringLSN}`
57
57
  );
58
58
  }
59
59
 
@@ -1,5 +1,5 @@
1
1
  import { SourceTable } from '@powersync/service-core';
2
- import { toQualifiedTableName } from '../utils/mssql.js';
2
+ import { escapeIdentifier, toQualifiedTableName } from '../utils/mssql.js';
3
3
 
4
4
  export interface CaptureInstance {
5
5
  name: string;
@@ -34,15 +34,15 @@ export class MSSQLSourceTable {
34
34
  }
35
35
 
36
36
  get CTTable() {
37
- return `${this.cdcSchema}.${this.captureInstance}_CT`;
37
+ return `${escapeIdentifier(this.cdcSchema)}.${this.captureInstance}_CT`;
38
38
  }
39
39
 
40
40
  get allChangesFunction() {
41
- return `${this.cdcSchema}.fn_cdc_get_all_changes_${this.captureInstance}`;
41
+ return `${escapeIdentifier(this.cdcSchema)}.fn_cdc_get_all_changes_${this.captureInstance}`;
42
42
  }
43
43
 
44
44
  get netChangesFunction() {
45
- return `${this.cdcSchema}.fn_cdc_get_net_changes_${this.captureInstance}`;
45
+ return `${escapeIdentifier(this.cdcSchema)}.fn_cdc_get_net_changes_${this.captureInstance}`;
46
46
  }
47
47
 
48
48
  /**
@@ -1,5 +1,12 @@
1
1
  import sql from 'mssql';
2
- import { DatabaseInputRow, ExpressionType, SqliteInputRow, toSyncRulesRow } from '@powersync/service-sync-rules';
2
+ import {
3
+ DatabaseInputRow,
4
+ ExpressionType,
5
+ SQLITE_FALSE,
6
+ SQLITE_TRUE,
7
+ SqliteInputRow,
8
+ toSyncRulesRow
9
+ } from '@powersync/service-sync-rules';
3
10
  import { MSSQLUserDefinedType } from '../types/mssql-data-types.js';
4
11
 
5
12
  export function toSqliteInputRow(row: any, columns: sql.IColumnMetadata): SqliteInputRow {
@@ -18,7 +25,7 @@ export function toSqliteInputRow(row: any, columns: sql.IColumnMetadata): Sqlite
18
25
  break;
19
26
  case sql.TYPES.Bit:
20
27
  // MSSQL returns BIT as boolean
21
- result[key] = row[key] ? 1 : 0;
28
+ result[key] = row[key] ? SQLITE_TRUE : SQLITE_FALSE;
22
29
  break;
23
30
  // Convert Dates to string
24
31
  case sql.TYPES.Date:
@@ -37,7 +44,7 @@ export function toSqliteInputRow(row: any, columns: sql.IColumnMetadata): Sqlite
37
44
  case sql.TYPES.Binary:
38
45
  case sql.TYPES.VarBinary:
39
46
  case sql.TYPES.Image:
40
- result[key] = new Uint8Array(Object.values(row[key]));
47
+ result[key] = new Uint8Array(row[key]);
41
48
  break;
42
49
  // TODO: Spatial types need to be converted to binary WKB, they are returned as a non standard object currently
43
50
  case sql.TYPES.Geometry:
@@ -46,7 +53,7 @@ export function toSqliteInputRow(row: any, columns: sql.IColumnMetadata): Sqlite
46
53
  break;
47
54
  case sql.TYPES.UDT:
48
55
  if (columnMetadata.udt.name === MSSQLUserDefinedType.HIERARCHYID) {
49
- result[key] = new Uint8Array(Object.values(row[key]));
56
+ result[key] = new Uint8Array(row[key]);
50
57
  break;
51
58
  } else {
52
59
  result[key] = row[key];
@@ -41,7 +41,7 @@ export class MSSQLModule extends replication.ReplicationModule<types.MSSQLConnec
41
41
  metricsEngine: context.metricsEngine,
42
42
  connectionFactory: connectionFactory,
43
43
  rateLimiter: new MSSQLErrorRateLimiter(),
44
- pollingOptions: normalisedConfig.cdcPollingOptions
44
+ additionalConfig: normalisedConfig.additionalConfig
45
45
  });
46
46
  }
47
47
 
@@ -5,7 +5,7 @@ import { MSSQLSourceTable } from '../common/MSSQLSourceTable.js';
5
5
  import { LSN } from '../common/LSN.js';
6
6
  import sql from 'mssql';
7
7
  import { getMinLSN, incrementLSN } from '../utils/mssql.js';
8
- import { CDCPollingOptions } from '../types/types.js';
8
+ import { AdditionalConfig } from '../types/types.js';
9
9
 
10
10
  enum Operation {
11
11
  DELETE = 1,
@@ -52,8 +52,8 @@ export interface CDCPollerOptions {
52
52
  eventHandler: CDCEventHandler;
53
53
  sourceTables: MSSQLSourceTable[];
54
54
  startLSN: LSN;
55
- pollingOptions: CDCPollingOptions;
56
55
  logger?: Logger;
56
+ additionalConfig: AdditionalConfig;
57
57
  }
58
58
 
59
59
  /**
@@ -79,11 +79,11 @@ export class CDCPoller {
79
79
  }
80
80
 
81
81
  private get pollingBatchSize(): number {
82
- return this.options.pollingOptions.batchSize;
82
+ return this.options.additionalConfig.pollingBatchSize;
83
83
  }
84
84
 
85
85
  private get pollingIntervalMs(): number {
86
- return this.options.pollingOptions.intervalMs;
86
+ return this.options.additionalConfig.pollingIntervalMs;
87
87
  }
88
88
 
89
89
  private get sourceTables(): MSSQLSourceTable[] {
@@ -99,12 +99,11 @@ export class CDCPoller {
99
99
 
100
100
  public async replicateUntilStopped(): Promise<void> {
101
101
  this.logger.info(`CDC polling started with interval of ${this.pollingIntervalMs}ms...`);
102
- this.logger.info(`Polling a maximum of [${this.pollingBatchSize}] transactions per polling cycle.`);
102
+ this.logger.info(`Polling a maximum of ${this.pollingBatchSize} transactions per polling cycle.`);
103
103
  while (!this.isStopped) {
104
104
  // Don't poll if already polling (concurrency guard)
105
105
  if (this.isPolling) {
106
- await timers.setTimeout(this.pollingIntervalMs);
107
- continue;
106
+ throw new ReplicationAssertionError('A polling cycle is already in progress.');
108
107
  }
109
108
 
110
109
  try {
@@ -205,17 +204,16 @@ export class CDCPoller {
205
204
 
206
205
  let transactionCount = 0;
207
206
  let updateBefore: any = null;
207
+ let lastTransactionLSN: LSN | null = null;
208
208
  for (const row of results) {
209
209
  const transactionLSN = LSN.fromBinary(row.__$start_lsn);
210
210
  switch (row.__$operation) {
211
211
  case Operation.DELETE:
212
212
  await this.eventHandler.onDelete(row, table, results.columns);
213
- transactionCount++;
214
213
  this.logger.info(`Processed DELETE row LSN: ${transactionLSN}`);
215
214
  break;
216
215
  case Operation.INSERT:
217
216
  await this.eventHandler.onInsert(row, table, results.columns);
218
- transactionCount++;
219
217
  this.logger.info(`Processed INSERT row LSN: ${transactionLSN}`);
220
218
  break;
221
219
  case Operation.UPDATE_BEFORE:
@@ -228,12 +226,19 @@ export class CDCPoller {
228
226
  }
229
227
  await this.eventHandler.onUpdate(row, updateBefore, table, results.columns);
230
228
  updateBefore = null;
231
- transactionCount++;
232
229
  this.logger.info(`Processed UPDATE row LSN: ${transactionLSN}`);
233
230
  break;
234
231
  default:
235
232
  this.logger.warn(`Unknown operation type [${row.__$operation}] encountered in CDC changes.`);
236
233
  }
234
+
235
+ // Increment transaction count when we encounter a new transaction LSN (except for UPDATE_BEFORE rows)
236
+ if (transactionLSN != lastTransactionLSN) {
237
+ lastTransactionLSN = transactionLSN;
238
+ if (row.__$operation !== Operation.UPDATE_BEFORE) {
239
+ transactionCount++;
240
+ }
241
+ }
237
242
  }
238
243
 
239
244
  return transactionCount;
@@ -2,11 +2,11 @@ import { replication } from '@powersync/service-core';
2
2
  import { MSSQLConnectionManagerFactory } from './MSSQLConnectionManagerFactory.js';
3
3
  import { container, logger as defaultLogger } from '@powersync/lib-services-framework';
4
4
  import { CDCDataExpiredError, CDCStream } from './CDCStream.js';
5
- import { CDCPollingOptions } from '../types/types.js';
5
+ import { AdditionalConfig } from '../types/types.js';
6
6
 
7
7
  export interface CDCReplicationJobOptions extends replication.AbstractReplicationJobOptions {
8
8
  connectionFactory: MSSQLConnectionManagerFactory;
9
- pollingOptions: CDCPollingOptions;
9
+ additionalConfig: AdditionalConfig;
10
10
  }
11
11
 
12
12
  export class CDCReplicationJob extends replication.AbstractReplicationJob {
@@ -72,7 +72,7 @@ export class CDCReplicationJob extends replication.AbstractReplicationJob {
72
72
  storage: this.options.storage,
73
73
  metrics: this.options.metrics,
74
74
  connections: connectionManager,
75
- pollingOptions: this.cdcReplicationJobOptions.pollingOptions
75
+ additionalConfig: this.cdcReplicationJobOptions.additionalConfig
76
76
  });
77
77
  this.lastStream = stream;
78
78
  await stream.replicate();
@@ -2,11 +2,11 @@ import { replication, storage } from '@powersync/service-core';
2
2
  import { MSSQLConnectionManagerFactory } from './MSSQLConnectionManagerFactory.js';
3
3
  import { CDCReplicationJob } from './CDCReplicationJob.js';
4
4
  import { MSSQLModule } from '../module/MSSQLModule.js';
5
- import { CDCPollingOptions } from '../types/types.js';
5
+ import { AdditionalConfig } from '../types/types.js';
6
6
 
7
7
  export interface CDCReplicatorOptions extends replication.AbstractReplicatorOptions {
8
8
  connectionFactory: MSSQLConnectionManagerFactory;
9
- pollingOptions: CDCPollingOptions;
9
+ additionalConfig: AdditionalConfig;
10
10
  }
11
11
 
12
12
  export class CDCReplicator extends replication.AbstractReplicator<CDCReplicationJob> {
@@ -27,7 +27,7 @@ export class CDCReplicator extends replication.AbstractReplicator<CDCReplication
27
27
  lock: options.lock,
28
28
  connectionFactory: this.connectionFactory,
29
29
  rateLimiter: this.rateLimiter,
30
- pollingOptions: this.cdcReplicatorOptions.pollingOptions
30
+ additionalConfig: this.cdcReplicatorOptions.additionalConfig
31
31
  });
32
32
  }
33
33