@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.
- package/CHANGELOG.md +28 -0
- package/dist/api/MSSQLRouteAPIAdapter.js +16 -51
- package/dist/api/MSSQLRouteAPIAdapter.js.map +1 -1
- package/dist/common/LSN.js +2 -2
- package/dist/common/LSN.js.map +1 -1
- package/dist/common/MSSQLSourceTable.js +4 -4
- package/dist/common/MSSQLSourceTable.js.map +1 -1
- package/dist/common/mssqls-to-sqlite.js +4 -4
- package/dist/common/mssqls-to-sqlite.js.map +1 -1
- package/dist/module/MSSQLModule.js +1 -1
- package/dist/module/MSSQLModule.js.map +1 -1
- package/dist/replication/CDCPoller.d.ts +2 -2
- package/dist/replication/CDCPoller.js +12 -8
- package/dist/replication/CDCPoller.js.map +1 -1
- package/dist/replication/CDCReplicationJob.d.ts +2 -2
- package/dist/replication/CDCReplicationJob.js +1 -1
- package/dist/replication/CDCReplicationJob.js.map +1 -1
- package/dist/replication/CDCReplicator.d.ts +2 -2
- package/dist/replication/CDCReplicator.js +1 -1
- package/dist/replication/CDCReplicator.js.map +1 -1
- package/dist/replication/CDCStream.d.ts +2 -2
- package/dist/replication/CDCStream.js +32 -37
- package/dist/replication/CDCStream.js.map +1 -1
- package/dist/replication/MSSQLConnectionManager.js +1 -1
- package/dist/replication/MSSQLConnectionManager.js.map +1 -1
- package/dist/replication/MSSQLSnapshotQuery.d.ts +0 -17
- package/dist/replication/MSSQLSnapshotQuery.js +0 -47
- package/dist/replication/MSSQLSnapshotQuery.js.map +1 -1
- package/dist/types/types.d.ts +80 -23
- package/dist/types/types.js +24 -24
- package/dist/types/types.js.map +1 -1
- package/dist/utils/mssql.js +26 -14
- package/dist/utils/mssql.js.map +1 -1
- package/dist/utils/schema.js +31 -15
- package/dist/utils/schema.js.map +1 -1
- package/package.json +10 -10
- package/src/api/MSSQLRouteAPIAdapter.ts +16 -51
- package/src/common/LSN.ts +2 -2
- package/src/common/MSSQLSourceTable.ts +4 -4
- package/src/common/mssqls-to-sqlite.ts +11 -4
- package/src/module/MSSQLModule.ts +1 -1
- package/src/replication/CDCPoller.ts +15 -10
- package/src/replication/CDCReplicationJob.ts +3 -3
- package/src/replication/CDCReplicator.ts +3 -3
- package/src/replication/CDCStream.ts +36 -49
- package/src/replication/MSSQLConnectionManager.ts +1 -1
- package/src/replication/MSSQLSnapshotQuery.ts +0 -54
- package/src/types/types.ts +41 -45
- package/src/utils/mssql.ts +33 -15
- package/src/utils/schema.ts +31 -17
- package/test/src/CDCStream.test.ts +9 -17
- package/test/src/CDCStreamTestContext.ts +5 -5
- package/test/src/CDCStream_resumable_snapshot.test.ts +15 -9
- package/test/src/mssql-to-sqlite.test.ts +28 -27
- package/test/src/util.ts +27 -14
- package/tsconfig.tsbuildinfo +1 -1
- package/ci/init-mssql.sql +0 -50
- package/test/tsconfig.tsbuildinfo +0 -1
package/dist/utils/mssql.js
CHANGED
|
@@ -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 =
|
|
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
|
|
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
|
|
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 =
|
|
134
|
-
AND tbl.name =
|
|
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(
|
|
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 =
|
|
194
|
-
AND tbl.name =
|
|
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
|
-
|
|
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
|
|
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 };
|
package/dist/utils/mssql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mssql.js","sourceRoot":"","sources":["../../src/utils/mssql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mssql.js","sourceRoot":"","sources":["../../src/utils/mssql.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAE3D,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AAIvC,OAAO,EAAE,6BAA6B,EAAmD,MAAM,aAAa,CAAC;AAI7G,MAAM,CAAC,MAAM,2BAA2B,GAAG,wBAAwB,CAAC;AAEpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IAC/C,CAAC,CAAC,EAAE,UAAU,CAAC;IACf,CAAC,CAAC,EAAE,gDAAgD,CAAC;IACrD,CAAC,CAAC,EAAE,kCAAkC,CAAC;IACvC,CAAC,CAAC,EAAE,iDAAiD,CAAC;CACvD,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,iBAAyC;IACtF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,sCAAsC;IACtC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;;;;KAKhE,CAAC,CAAC;IAEL,oDAAoD;IACpD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CACT,2BAA2B,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,6EAA6E,KAAK,CAAC,IAAI,CACzI,yBAAyB,CAAC,MAAM,EAAE,CACnC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAChB,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,qDAAqD;IACrD,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,EAAE,CAAC;YAC5E,MAAM,CAAC,IAAI,CACT,2BAA2B,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,mEAAmE,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;KAEnE,CAAC,CAAC;IACL,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC;IAEvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC;IAED,gCAAgC;IAChC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;;;;;;;;KAShE,CAAC,CAAC;IAEL,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,4FAA4F,CAAC,CAAC;IAC5G,CAAC;IAED,uEAAuE;IACvE,MAAM,qBAAqB,GAAG,MAAM,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;IACvF,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAEtC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,iBAAyC;IAC7F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CACpE;;GAEH,EACG;YACE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE;YAC/E,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE;SACtF,CACF,CAAC;QACF,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC;gBAC3C,iBAAiB;gBACjB,KAAK,EAAE,2BAA2B;gBAClC,MAAM,EAAE,iBAAiB,CAAC,MAAM;aACjC,CAAC,CAAC;YACH,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,0BAA0B;gBAC1B,MAAM,iBAAiB,CAAC;oBACtB,iBAAiB;oBACjB,KAAK,EAAE,2BAA2B;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,iBAAiB,2BAA2B,mCAAmC,KAAK,EAAE,CAAC,CAAC;IACtG,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,KAAK,CAAC;iBACjB,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,CAAC;;;IAGxF,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,oBAAoB,2BAA2B,WAAW,KAAK,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,iBAAiB,CAAC;YACtB,iBAAiB;YACjB,KAAK,EAAE,2BAA2B;SACnC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,2BAA2B,2BAA2B,WAAW,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,iBAAyC;IAC9E,MAAM,iBAAiB,CAAC,KAAK,CAAC;YACpB,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,CAAC;;;;;;;GAOpF,CAAC,CAAC;AACL,CAAC;AAOD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAoC;IAC7E,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAC9D;;;;;;OAMG,EACH;QACE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE;KAChE,CACF,CAAC;IACF,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACvE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAE7C,MAAM,iBAAiB,CAAC,OAAO,CAAC,yBAAyB,EAAE;QACzD,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,EAAE;QAC1D,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE;QACrC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;QACpC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,CAAC,EAAE;KAC3C,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,cAAsB;IACtE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,qBAAqB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;IAErD,OAAO,GAAG,CAAC,cAAe,EAAE,qBAAsB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,CAAC;AAQD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,OAA0C;IACzF,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC;IAC7D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QACzE,IAAI,MAAM,GAAG,aAAa,EAAE,CAAC;YAC3B,MAAM,CAAC,IAAI,CACT,uBAAuB,aAAa,oCAAoC,MAAM,eAAe,KAAK,CAAC,WAAW,CAAC,aAAa,8EAA8E,CAC3M,CAAC;YACF,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,iBAAyC,EAAE,eAAuB;IAChG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CACzD,4DAA4D,EAC5D,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAClF,CAAC;IACF,MAAM,SAAS,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5C,OAAO,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAQ,EAAE,iBAAyC;IACpF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CACzD,0DAA0D,EAC1D,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC9D,CAAC;IACF,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;AACnD,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAkC;IACzE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CACzD;;;;;;;;;;;OAWG,EACH;QACE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;KACpE,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB;QAChC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU;KAC7B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,iBAAyC;IAC1E,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CACzD,qEAAqE,CACtE,CAAC;IACF,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,iBAAyC;IACpF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC3G,2CAA2C;IAC3C,MAAM,MAAM,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACzC,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,gEAAgE;IAChE,uDAAuD;IACvD,kCAAkC;IAClC,OAAO,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,SAAiB;IACpE,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAQ;IACxC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,KAAY,CAAC;QAC9B,iBAAiB;YACf,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;gBAClC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACjC,CAAC,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC;gBAC/E,CAAC,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;gBAC1E,OAAO,QAAQ,CAAC,QAAQ,KAAK,SAAS;gBACtC,OAAO,QAAQ,CAAC,aAAa,KAAK,SAAS;gBAC3C,OAAO,QAAQ,CAAC,QAAQ,KAAK,SAAS;gBACtC,OAAO,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC;IAC3C,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAoB,EAAE,UAA4B;IAC9E,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAiC;IACvE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACtE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC;IAEhC,IAAI,eAAe,GAA4C,IAAI,CAAC;IACpE,IAAI,cAAc,GAA0C,IAAI,CAAC;IACjE,IAAI,CAAC;QACH,eAAe,GAAG,MAAM,6BAA6B,CAAC;YACpD,iBAAiB,EAAE,iBAAiB;YACpC,MAAM;YACN,SAAS,EAAE,KAAK,CAAC,IAAI;SACtB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,cAAc,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,EAAE,OAAO,IAAI,EAAE,CAAC;IACjD,MAAM,WAAW,GAAoC;QACnD,aAAa,EAAE,iBAAiB,CAAC,aAAa;QAC9C,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC;IACF,MAAM,QAAQ,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,SAAS,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAEnE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;QACrD,IAAI,OAAO,GAAG,+BAA+B,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,eAAe,EAAE,QAAQ,GAAG,CAAC;QACzI,IAAI,eAAe,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC5C,OAAO,IAAI,wCAAwC,CAAC;QACtD,CAAC;QACD,cAAc,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,WAAW,GAA0C,IAAI,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,KAAK,CAAC,uBAAuB,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,WAAW,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;IACvD,CAAC;IAED,wCAAwC;IACxC,IAAI,QAAQ,GAA0C,IAAI,CAAC;IAC3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAAC;YAC3C,iBAAiB,EAAE,iBAAiB;YACpC,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,QAAQ,GAAG;gBACT,KAAK,EAAE,OAAO;gBACd,OAAO,EAAE,gCAAgC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,gEAAgE,MAAM,sBAAsB,KAAK,CAAC,IAAI,iDAAiD;aACzO,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,QAAQ,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,+BAA+B,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;IACvF,CAAC;IAED,oCAAoC;IAEpC,OAAO;QACL,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACxE,cAAc,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5C,YAAY,EAAE,QAAQ;QACtB,iBAAiB,EAAE,cAAc;QACjC,MAAM,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAqC;KACrH,CAAC;AACJ,CAAC"}
|
package/dist/utils/schema.js
CHANGED
|
@@ -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 =
|
|
14
|
-
AND tbl.name =
|
|
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 =
|
|
41
|
-
AND tbl.name =
|
|
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 =
|
|
69
|
-
AND tbl.name =
|
|
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 =
|
|
99
|
-
AND tbl.name LIKE
|
|
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
|
-
|
|
120
|
-
AND tbl.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,
|
package/dist/utils/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/utils/schema.ts"],"names":[],"mappings":"
|
|
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,CAAC;;;;;;;;;;;;;OAa9D,EAAE;QACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;KACpE,CAAC,CAAC;IAEP,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,UAAU,EAAE,GAAG,CAAC,YAAY;SAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAaD,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAA6C;IAE7C,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACzD,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;OAelE,EAAE;QACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;KACpE,CAAC,CAAC;IAEP,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,UAAU,EAAE,GAAG,CAAC,YAAY;aAC7B,CAAC,CAAC;YACH,QAAQ,EAAE,SAAS;SACpB,CAAC;IACJ,CAAC;IAED,kFAAkF;IAClF,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;OAejE,EAAE;QACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;QAC7D,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;KACpE,CAAC,CAAC;IAEP,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACtC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,OAAO;gBACnB,UAAU,EAAE,GAAG,CAAC,YAAY;aAC7B,CAAC,CAAC;YACH,QAAQ,EAAE,OAAO;SAClB,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAE7C,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,QAAQ,EAAE,MAAM;KACjB,CAAC;AACJ,CAAC;AAID,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,iBAAyC,EACzC,YAA0B;IAE1B,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC;;;;;;;;;OAS/D,EAAE;YACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;YAC1E,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE;SACvF,CAAC,CAAC;QAEL,OAAO,YAAY;aAChB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,OAAO;gBACL,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI,EAAE,GAAG,CAAC,KAAK;aAChB,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,KAAoB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IACvF,CAAC;SAAM,CAAC;QACN,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAC/D;;;;;;;;;OASC,EAAE;YACD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;YAC1E,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,EAAE;SACvF,CAAC,CAAC;QAEL,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,OAAO;gBACL,QAAQ,EAAE,GAAG,CAAC,SAAS;gBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI,EAAE,GAAG,CAAC,KAAK;aAChB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-mssql",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/index.d.ts",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.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/
|
|
31
|
-
"@powersync/service-
|
|
32
|
-
"@powersync/
|
|
33
|
-
"@powersync/service-
|
|
34
|
-
"@powersync/service-
|
|
35
|
-
"@powersync/service-
|
|
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-
|
|
42
|
-
"@powersync/service-module-mongodb-storage": "0.12.
|
|
43
|
-
"@powersync/service-
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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 =
|
|
83
|
+
WHERE sch.name = @schema
|
|
122
84
|
AND sch.name NOT IN ('sys', 'INFORMATION_SCHEMA', 'cdc')
|
|
123
|
-
AND tbl.name NOT IN ('systranschemas',
|
|
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
|
|
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-
|
|
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 {
|
|
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] ?
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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 {
|
|
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.
|
|
82
|
+
return this.options.additionalConfig.pollingBatchSize;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
private get pollingIntervalMs(): number {
|
|
86
|
-
return this.options.
|
|
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
|
|
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
|
-
|
|
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 {
|
|
5
|
+
import { AdditionalConfig } from '../types/types.js';
|
|
6
6
|
|
|
7
7
|
export interface CDCReplicationJobOptions extends replication.AbstractReplicationJobOptions {
|
|
8
8
|
connectionFactory: MSSQLConnectionManagerFactory;
|
|
9
|
-
|
|
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
|
-
|
|
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 {
|
|
5
|
+
import { AdditionalConfig } from '../types/types.js';
|
|
6
6
|
|
|
7
7
|
export interface CDCReplicatorOptions extends replication.AbstractReplicatorOptions {
|
|
8
8
|
connectionFactory: MSSQLConnectionManagerFactory;
|
|
9
|
-
|
|
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
|
-
|
|
30
|
+
additionalConfig: this.cdcReplicatorOptions.additionalConfig
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
33
|
|