@powersync/service-module-mssql 0.2.0 → 0.3.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @powersync/service-module-mssql
2
2
 
3
+ ## 0.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [a04252d]
8
+ - @powersync/service-sync-rules@0.31.1
9
+ - @powersync/lib-services-framework@0.8.2
10
+ - @powersync/service-core@1.19.2
11
+
12
+ ## 0.3.0
13
+
14
+ ### Minor Changes
15
+
16
+ - e11289d: Support connections to SQL Server 2019
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [0e99ce0]
21
+ - Updated dependencies [479997b]
22
+ - Updated dependencies [d1c2228]
23
+ - Updated dependencies [1a1a4cc]
24
+ - @powersync/service-sync-rules@0.31.0
25
+ - @powersync/service-core@1.19.1
26
+ - @powersync/lib-services-framework@0.8.1
27
+
3
28
  ## 0.2.0
4
29
 
5
30
  ### Minor Changes
@@ -68,7 +68,7 @@ export class MSSQLRouteAPIAdapter {
68
68
  ORDER BY sch.name, tbl.name, col.column_id
69
69
  `, [
70
70
  { name: 'schema', type: sql.VarChar(sql.MAX), value: this.connectionManager.schema },
71
- { name: 'checkpointsTable', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE },
71
+ { name: 'checkpointsTable', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE }
72
72
  ]);
73
73
  /**
74
74
  * Reduces the SQL results into a Record of {@link DatabaseSchema}
@@ -1 +1 @@
1
- {"version":3,"file":"MSSQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MSSQLRouteAPIAdapter.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAE1D,OAAO,KAAK,KAAK,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EACL,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,2BAA2B,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,oBAAoB,EAAiB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAAE,6BAA6B,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,MAAM,OAAO,oBAAoB;IAGT;IAFZ,iBAAiB,CAAyB;IAEpD,YAAsB,MAA2C;QAA3C,WAAM,GAAN,MAAM,CAAqC;QAC/D,IAAI,CAAC,iBAAiB,GAAG,IAAI,sBAAsB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAI,QAAoC;QACjE,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAErD,wIAAwI;QACxI,MAAM,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAa;QAC7C,OAAO,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,CAAC;YAC7D,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,EAAE;aACT;YACD,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,8CAA8C;SACtD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoCjE,EAAE;YACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;YACpF,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE;SAC7F,CAAC,CAAC;QAEH;;;WAGG;QACH,MAAM,OAAO,GAAiD,EAAE,CAAC;QAEjE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,WAAqB,CAAC;YAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,UAAoB,CAAC;YAC3C,MAAM,UAAU,GAAG,GAAG,CAAC,WAAqB,CAAC;YAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAmB,CAAC;YACzC,MAAM,aAAa,GAAI,GAAG,CAAC,cAAyB,IAAI,QAAQ,CAAC;YAEjE,MAAM,MAAM,GACV,OAAO,CAAC,UAAU,CAAC;gBACnB,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG;oBACrB,IAAI,EAAE,UAAU;oBAChB,MAAM,EAAE,EAAE;iBACX,CAAC,CAAC;YAEL,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG;oBACN,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,EAAE;iBACZ,CAAC;gBACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;YAED,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,6BAA6B,CAAC,QAAQ,CAAC,CAAC,SAAS;gBAC9D,aAAa,EAAE,aAAa;gBAC5B,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,GAAG;YACX,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3D,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,GAAG,IAAI;gBACP,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;aAC3E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO;oBACL,GAAG,IAAI;oBACP,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC5D,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,GAAG,IAAI;gBACP,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;aACjD,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,IAAI;YACP,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,aAA6B,EAAE,YAA0B;QAChF,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;YACnC,MAAM,aAAa,GAAkB;gBACnC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,YAAY,CAAC,YAAY;gBAClC,QAAQ,EAAE,YAAY,CAAC,UAAU;aAClC,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE3B,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAChF,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;gBAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC;wBACtC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACzC,YAAY;wBACZ,KAAK;wBACL,SAAS,EAAE,YAAY;qBACxB,CAAC,CAAC;oBACH,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACvB,oEAAoE;oBACpE,MAAM,aAAa,GAAkB;wBACnC,QAAQ,EAAE,CAAC;wBACX,MAAM,EAAE,MAAM;wBACd,IAAI,EAAE,YAAY,CAAC,IAAI;qBACxB,CAAC;oBACF,aAAa,CAAC,KAAK,GAAG,MAAM,iBAAiB,CAAC;wBAC5C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACzC,YAAY;wBACZ,KAAK,EAAE,aAAa;wBACpB,SAAS,EAAE,YAAY;qBACxB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,aAAa,CAAC,KAAK,GAAG,MAAM,iBAAiB,CAAC;wBAC5C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;wBACzC,YAAY;wBACZ,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;wBAChB,SAAS,EAAE,YAAY;qBACxB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wBAAwB;QACtB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM;SAC7C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,OAA8B;QACzD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC;IACrC,CAAC;CACF"}
1
+ {"version":3,"file":"MSSQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MSSQLRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
@@ -43,10 +43,11 @@ export class LSN {
43
43
  * @param stringLSN
44
44
  */
45
45
  static fromString(stringLSN) {
46
- if (!/^[0-9A-F]{8}:[0-9A-F]{8}:[0-9A-F]{4}$/.test(stringLSN)) {
47
- throw new ReplicationAssertionError(`Invalid LSN string. Expected format is uppercase hexadecimal:[00000000:00000000:0000]. Got: ${stringLSN}`);
46
+ if (!/^[0-9a-fA-F]{8}:[0-9a-fA-F]{8}:[0-9a-fA-F]{4}$/.test(stringLSN)) {
47
+ throw new ReplicationAssertionError(`Invalid LSN string. Expected format is hexadecimal:[00000000:00000000:0000]. Got: ${stringLSN}`);
48
48
  }
49
- return new LSN(stringLSN);
49
+ // SQL Server can return lowercase hex digits for LSN strings on some versions.
50
+ return new LSN(stringLSN.toUpperCase());
50
51
  }
51
52
  compare(other) {
52
53
  if (this.value === other.value) {
@@ -1 +1 @@
1
- {"version":3,"file":"LSN.js","sourceRoot":"","sources":["../../src/common/LSN.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,GAAG;IACd;;OAEG;IACH,MAAM,CAAC,IAAI,GAAG,wBAAwB,CAAC;IAE7B,KAAK,CAAS;IAExB,YAAoB,GAAW;QAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,SAAS,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,yBAAyB,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe;QAEjE,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,SAAiB;QACjC,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7D,MAAM,IAAI,yBAAyB,CACjC,+FAA+F,SAAS,EAAE,CAC3G,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC"}
1
+ {"version":3,"file":"LSN.js","sourceRoot":"","sources":["../../src/common/LSN.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEtE;;;;;;;;;;GAUG;AAEH,MAAM,OAAO,GAAG;IACd;;OAEG;IACH,MAAM,CAAC,IAAI,GAAG,wBAAwB,CAAC;IAE7B,KAAK,CAAS;IAExB,YAAoB,GAAW;QAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,SAAS,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAc;QAC9B,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,yBAAyB,CAAC,6BAA6B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,eAAe;QAEjE,OAAO,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,SAAiB;QACjC,IAAI,CAAC,gDAAgD,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,yBAAyB,CACjC,qFAAqF,SAAS,EAAE,CACjG,CAAC;QACJ,CAAC;QAED,+EAA+E;QAC/E,OAAO,IAAI,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,KAAU;QAChB,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC"}
@@ -8,7 +8,7 @@ import { ResolvedTable } from './schema.js';
8
8
  import * as service_types from '@powersync/service-types';
9
9
  export declare const POWERSYNC_CHECKPOINTS_TABLE = "_powersync_checkpoints";
10
10
  export declare const SUPPORTED_ENGINE_EDITIONS: Map<number, string>;
11
- export declare const MINIMUM_SUPPORTED_VERSION = "16.0";
11
+ export declare const MINIMUM_SUPPORTED_VERSION = "15.0";
12
12
  export declare function checkSourceConfiguration(connectionManager: MSSQLConnectionManager): Promise<string[]>;
13
13
  export declare function ensurePowerSyncCheckpointsTable(connectionManager: MSSQLConnectionManager): Promise<string[]>;
14
14
  export declare function createCheckpoint(connectionManager: MSSQLConnectionManager): Promise<void>;
@@ -10,8 +10,8 @@ export const SUPPORTED_ENGINE_EDITIONS = new Map([
10
10
  [5, 'SqlDatabase - Azure SQL Database'],
11
11
  [8, 'SqlManagedInstance - Azure SQL Managed Instance']
12
12
  ]);
13
- // SQL Server 2022 and newer
14
- export const MINIMUM_SUPPORTED_VERSION = '16.0';
13
+ // SQL Server 2019 and newer
14
+ export const MINIMUM_SUPPORTED_VERSION = '15.0';
15
15
  export async function checkSourceConfiguration(connectionManager) {
16
16
  const errors = [];
17
17
  // 1) Check MSSQL version and Editions
@@ -29,7 +29,7 @@ export async function checkSourceConfiguration(connectionManager) {
29
29
  // Only applicable to SQL Server stand-alone editions
30
30
  if (versionResult[0]?.engine == 2 || versionResult[0]?.engine == 3) {
31
31
  if (!isVersionAtLeast(versionResult[0]?.version, MINIMUM_SUPPORTED_VERSION)) {
32
- errors.push(`The SQL Server version '${versionResult[0]?.version}' is not supported. PowerSync requires MSSQL 2022 (v16) or newer.`);
32
+ errors.push(`The SQL Server version '${versionResult[0]?.version}' is not supported. PowerSync requires MSSQL 2019 (v15) or newer.`);
33
33
  }
34
34
  }
35
35
  // 2) Check DB-level CDC
@@ -16,7 +16,7 @@ async function getColumns(options) {
16
16
  ORDER BY col.column_id;
17
17
  `, [
18
18
  { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
19
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
19
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
20
20
  ]);
21
21
  return columnResults.map((row) => {
22
22
  return {
@@ -46,7 +46,7 @@ export async function getReplicationIdentityColumns(options) {
46
46
  ORDER BY idx_col.key_ordinal;
47
47
  `, [
48
48
  { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
49
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
49
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
50
50
  ]);
51
51
  if (primaryKeyColumns.length > 0) {
52
52
  return {
@@ -77,7 +77,7 @@ export async function getReplicationIdentityColumns(options) {
77
77
  ORDER BY idx_col.key_ordinal;
78
78
  `, [
79
79
  { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
80
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
80
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
81
81
  ]);
82
82
  if (uniqueKeyColumns.length > 0) {
83
83
  return {
@@ -109,7 +109,7 @@ export async function getTablesFromPattern(connectionManager, tablePattern) {
109
109
  AND tbl.name LIKE @tablePattern
110
110
  `, [
111
111
  { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
112
- { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
112
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern }
113
113
  ]);
114
114
  return tableResults
115
115
  .map((row) => {
@@ -133,7 +133,7 @@ export async function getTablesFromPattern(connectionManager, tablePattern) {
133
133
  AND tbl.name = @tablePattern
134
134
  `, [
135
135
  { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
136
- { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
136
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern }
137
137
  ]);
138
138
  return tableResults.map((row) => {
139
139
  return {
@@ -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.2.0",
5
+ "version": "0.3.1",
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.8.0",
31
- "@powersync/service-core": "1.19.0",
30
+ "@powersync/lib-services-framework": "0.8.2",
31
+ "@powersync/service-core": "1.19.2",
32
32
  "@powersync/service-errors": "0.3.6",
33
- "@powersync/service-sync-rules": "0.30.0",
33
+ "@powersync/service-sync-rules": "0.31.1",
34
34
  "@powersync/service-types": "0.14.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.13.0",
42
- "@powersync/service-module-mongodb-storage": "0.13.0",
43
- "@powersync/service-module-postgres-storage": "0.11.0"
41
+ "@powersync/service-core-tests": "0.13.2",
42
+ "@powersync/service-module-mongodb-storage": "0.13.2",
43
+ "@powersync/service-module-postgres-storage": "0.11.2"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "tsc -b",
@@ -50,7 +50,8 @@ export class MSSQLRouteAPIAdapter implements api.RouteAPI {
50
50
  }
51
51
 
52
52
  async getConnectionSchema(): Promise<service_types.DatabaseSchema[]> {
53
- const { recordset: results } = await this.connectionManager.query(`
53
+ const { recordset: results } = await this.connectionManager.query(
54
+ `
54
55
  SELECT
55
56
  sch.name AS schema_name,
56
57
  tbl.name AS table_name,
@@ -86,10 +87,12 @@ export class MSSQLRouteAPIAdapter implements api.RouteAPI {
86
87
  AND tbl.type = 'U'
87
88
  AND col.is_computed = 0
88
89
  ORDER BY sch.name, tbl.name, col.column_id
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
- ]);
90
+ `,
91
+ [
92
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: this.connectionManager.schema },
93
+ { name: 'checkpointsTable', type: sql.VarChar(sql.MAX), value: POWERSYNC_CHECKPOINTS_TABLE }
94
+ ]
95
+ );
93
96
 
94
97
  /**
95
98
  * Reduces the SQL results into a Record of {@link DatabaseSchema}
package/src/common/LSN.ts CHANGED
@@ -51,13 +51,14 @@ export class LSN {
51
51
  * @param stringLSN
52
52
  */
53
53
  static fromString(stringLSN: string): LSN {
54
- if (!/^[0-9A-F]{8}:[0-9A-F]{8}:[0-9A-F]{4}$/.test(stringLSN)) {
54
+ if (!/^[0-9a-fA-F]{8}:[0-9a-fA-F]{8}:[0-9a-fA-F]{4}$/.test(stringLSN)) {
55
55
  throw new ReplicationAssertionError(
56
- `Invalid LSN string. Expected format is uppercase hexadecimal:[00000000:00000000:0000]. Got: ${stringLSN}`
56
+ `Invalid LSN string. Expected format is hexadecimal:[00000000:00000000:0000]. Got: ${stringLSN}`
57
57
  );
58
58
  }
59
59
 
60
- return new LSN(stringLSN);
60
+ // SQL Server can return lowercase hex digits for LSN strings on some versions.
61
+ return new LSN(stringLSN.toUpperCase());
61
62
  }
62
63
 
63
64
  compare(other: LSN): -1 | 0 | 1 {
@@ -19,8 +19,8 @@ export const SUPPORTED_ENGINE_EDITIONS = new Map([
19
19
  [8, 'SqlManagedInstance - Azure SQL Managed Instance']
20
20
  ]);
21
21
 
22
- // SQL Server 2022 and newer
23
- export const MINIMUM_SUPPORTED_VERSION = '16.0';
22
+ // SQL Server 2019 and newer
23
+ export const MINIMUM_SUPPORTED_VERSION = '15.0';
24
24
 
25
25
  export async function checkSourceConfiguration(connectionManager: MSSQLConnectionManager): Promise<string[]> {
26
26
  const errors: string[] = [];
@@ -46,7 +46,7 @@ export async function checkSourceConfiguration(connectionManager: MSSQLConnectio
46
46
  if (versionResult[0]?.engine == 2 || versionResult[0]?.engine == 3) {
47
47
  if (!isVersionAtLeast(versionResult[0]?.version, MINIMUM_SUPPORTED_VERSION)) {
48
48
  errors.push(
49
- `The SQL Server version '${versionResult[0]?.version}' is not supported. PowerSync requires MSSQL 2022 (v16) or newer.`
49
+ `The SQL Server version '${versionResult[0]?.version}' is not supported. PowerSync requires MSSQL 2019 (v15) or newer.`
50
50
  );
51
51
  }
52
52
  }
@@ -13,7 +13,8 @@ export interface GetColumnsOptions {
13
13
  async function getColumns(options: GetColumnsOptions): Promise<MSSQLColumnDescriptor[]> {
14
14
  const { connectionManager, schema, tableName } = options;
15
15
 
16
- const { recordset: columnResults } = await connectionManager.query(`
16
+ const { recordset: columnResults } = await connectionManager.query(
17
+ `
17
18
  SELECT
18
19
  col.name AS [name],
19
20
  typ.name AS [type],
@@ -26,10 +27,12 @@ async function getColumns(options: GetColumnsOptions): Promise<MSSQLColumnDescri
26
27
  WHERE sch.name = @schema
27
28
  AND tbl.name = @tableName
28
29
  ORDER BY col.column_id;
29
- `, [
30
- { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
31
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
32
- ]);
30
+ `,
31
+ [
32
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
33
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
34
+ ]
35
+ );
33
36
 
34
37
  return columnResults.map((row) => {
35
38
  return {
@@ -56,7 +59,8 @@ export async function getReplicationIdentityColumns(
56
59
  options: GetReplicationIdentityColumnsOptions
57
60
  ): Promise<ReplicationIdentityColumnsResult> {
58
61
  const { connectionManager, schema, tableName } = options;
59
- const { recordset: primaryKeyColumns } = await connectionManager.query(`
62
+ const { recordset: primaryKeyColumns } = await connectionManager.query(
63
+ `
60
64
  SELECT
61
65
  col.name AS [name],
62
66
  typ.name AS [type],
@@ -71,10 +75,12 @@ export async function getReplicationIdentityColumns(
71
75
  WHERE sch.name = @schema
72
76
  AND tbl.name = @tableName
73
77
  ORDER BY idx_col.key_ordinal;
74
- `, [
75
- { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
76
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
77
- ]);
78
+ `,
79
+ [
80
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
81
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
82
+ ]
83
+ );
78
84
 
79
85
  if (primaryKeyColumns.length > 0) {
80
86
  return {
@@ -89,7 +95,8 @@ export async function getReplicationIdentityColumns(
89
95
  }
90
96
 
91
97
  // No primary key, check if any of the columns have a unique constraint we can use
92
- const { recordset: uniqueKeyColumns } = await connectionManager.query(`
98
+ const { recordset: uniqueKeyColumns } = await connectionManager.query(
99
+ `
93
100
  SELECT
94
101
  col.name AS [name],
95
102
  typ.name AS [type],
@@ -104,10 +111,12 @@ export async function getReplicationIdentityColumns(
104
111
  WHERE sch.name = @schema
105
112
  AND tbl.name = @tableName
106
113
  ORDER BY idx_col.key_ordinal;
107
- `, [
108
- { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
109
- { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName },
110
- ]);
114
+ `,
115
+ [
116
+ { name: 'schema', type: sql.VarChar(sql.MAX), value: schema },
117
+ { name: 'tableName', type: sql.VarChar(sql.MAX), value: tableName }
118
+ ]
119
+ );
111
120
 
112
121
  if (uniqueKeyColumns.length > 0) {
113
122
  return {
@@ -136,7 +145,8 @@ export async function getTablesFromPattern(
136
145
  tablePattern: TablePattern
137
146
  ): Promise<ResolvedTable[]> {
138
147
  if (tablePattern.isWildcard) {
139
- const { recordset: tableResults } = await connectionManager.query(`
148
+ const { recordset: tableResults } = await connectionManager.query(
149
+ `
140
150
  SELECT
141
151
  tbl.name AS [table],
142
152
  sch.name AS [schema],
@@ -145,10 +155,12 @@ export async function getTablesFromPattern(
145
155
  JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
146
156
  WHERE sch.name = @schema
147
157
  AND tbl.name LIKE @tablePattern
148
- `, [
158
+ `,
159
+ [
149
160
  { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
150
- { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
151
- ]);
161
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern }
162
+ ]
163
+ );
152
164
 
153
165
  return tableResults
154
166
  .map((row) => {
@@ -170,10 +182,12 @@ export async function getTablesFromPattern(
170
182
  JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id
171
183
  WHERE sch.name = @schema
172
184
  AND tbl.name = @tablePattern
173
- `, [
185
+ `,
186
+ [
174
187
  { name: 'schema', type: sql.VarChar(sql.MAX), value: tablePattern.schema },
175
- { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern },
176
- ]);
188
+ { name: 'tablePattern', type: sql.VarChar(sql.MAX), value: tablePattern.tablePattern }
189
+ ]
190
+ );
177
191
 
178
192
  return tableResults.map((row) => {
179
193
  return {
@@ -46,9 +46,13 @@ async function testResumingReplication(factory: TestStorageFactory, stopAfter: n
46
46
  await createTestTableWithBasicId(connectionManager, 'test_data1');
47
47
  await createTestTableWithBasicId(connectionManager, 'test_data2');
48
48
 
49
- await connectionManager.query(`INSERT INTO test_data1(description) SELECT 'value' FROM GENERATE_SERIES(1, 1000, 1)`);
49
+ await connectionManager.query(
50
+ `WITH nums AS (SELECT 1 AS n UNION ALL SELECT n + 1 FROM nums WHERE n < 1000) INSERT INTO test_data1(description) SELECT 'value' FROM nums OPTION (MAXRECURSION 1000)`
51
+ );
50
52
  let beforeLSN = await getLatestLSN(connectionManager);
51
- await connectionManager.query(`INSERT INTO test_data2(description) SELECT 'value' FROM GENERATE_SERIES(1, 10000, 1)`);
53
+ await connectionManager.query(
54
+ `WITH nums AS (SELECT 1 AS n UNION ALL SELECT n + 1 FROM nums WHERE n < 10000) INSERT INTO test_data2(description) SELECT 'value' FROM nums OPTION (MAXRECURSION 10000)`
55
+ );
52
56
  await waitForPendingCDCChanges(beforeLSN, connectionManager);
53
57
 
54
58
  const p = context.replicateSnapshot();
@@ -0,0 +1,14 @@
1
+ import { describe, expect, test } from 'vitest';
2
+ import { LSN } from '@module/common/LSN.js';
3
+
4
+ describe('LSN', () => {
5
+ test('normalizes lowercase hex strings to uppercase', () => {
6
+ const lsn = LSN.fromString('0000002f:00000de0:0001');
7
+ expect(lsn.toString()).toEqual('0000002F:00000DE0:0001');
8
+ });
9
+
10
+ test('accepts uppercase hex strings', () => {
11
+ const lsn = LSN.fromString('0000002F:00000DE0:0001');
12
+ expect(lsn.toString()).toEqual('0000002F:00000DE0:0001');
13
+ });
14
+ });
@@ -1,17 +1,13 @@
1
1
  {
2
- "extends": "../../../tsconfig.base.json",
2
+ "extends": "../../../tsconfig.tests.json",
3
3
  "compilerOptions": {
4
- "rootDir": "src",
5
4
  "baseUrl": "./",
6
- "noEmit": true,
7
- "esModuleInterop": true,
8
- "skipLibCheck": true,
9
- "sourceMap": true,
10
5
  "paths": {
11
6
  "@/*": ["../../../packages/service-core/src/*"],
12
7
  "@module/*": ["../src/*"],
13
8
  "@core-tests/*": ["../../../packages/service-core/test/src/*"]
14
- }
9
+ },
10
+ "rootDir": "src"
15
11
  },
16
12
  "include": ["src"],
17
13
  "references": [