@powersync/service-module-mssql 0.3.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 +9 -0
- package/dist/api/MSSQLRouteAPIAdapter.js +1 -1
- package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
- package/dist/utils/schema.js +5 -5
- package/dist/utils/schema.js.map +1 -1
- package/package.json +7 -7
- package/src/api/MSSQLRouteAPIAdapter.ts +8 -5
- package/src/utils/schema.ts +36 -22
- package/test/src/CDCStream_resumable_snapshot.test.ts +6 -2
- package/test/tsconfig.json +3 -7
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
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
|
+
|
|
3
12
|
## 0.3.0
|
|
4
13
|
|
|
5
14
|
### 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,
|
|
1
|
+
{"version":3,"file":"MSSQLRouteAPIAdapter.js","sourceRoot":"","sources":["../../src/api/MSSQLRouteAPIAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/schema.js
CHANGED
|
@@ -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 {
|
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;AAQxB,KAAK,UAAU,UAAU,CAAC,OAA0B;IAClD,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,
|
|
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.3.
|
|
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.
|
|
31
|
-
"@powersync/service-core": "1.19.
|
|
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.31.
|
|
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.
|
|
42
|
-
"@powersync/service-module-mongodb-storage": "0.13.
|
|
43
|
-
"@powersync/service-module-postgres-storage": "0.11.
|
|
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
|
-
|
|
91
|
-
|
|
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/utils/schema.ts
CHANGED
|
@@ -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
|
-
|
|
31
|
-
|
|
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
|
-
|
|
76
|
-
|
|
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
|
-
|
|
109
|
-
|
|
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(
|
|
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(
|
|
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();
|
package/test/tsconfig.json
CHANGED
|
@@ -1,17 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends": "../../../tsconfig.
|
|
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": [
|