@zmdb/mssql 1.0.0-beta.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/LICENSE +674 -0
- package/README.md +110 -0
- package/dist/compiler.d.ts +3 -0
- package/dist/compiler.d.ts.map +1 -0
- package/dist/compiler.js +82 -0
- package/dist/compiler.js.map +1 -0
- package/dist/driver.d.ts +28 -0
- package/dist/driver.d.ts.map +1 -0
- package/dist/driver.js +47 -0
- package/dist/driver.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +94 -0
- package/dist/index.js.map +1 -0
- package/dist/introspect.d.ts +45 -0
- package/dist/introspect.d.ts.map +1 -0
- package/dist/introspect.js +567 -0
- package/dist/introspect.js.map +1 -0
- package/dist/migrations.d.ts +3 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +296 -0
- package/dist/migrations.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +27 -0
- package/dist/types.js.map +1 -0
- package/package.json +58 -0
- package/src/compiler.ts +109 -0
- package/src/driver.ts +87 -0
- package/src/index.ts +131 -0
- package/src/introspect.ts +790 -0
- package/src/migrations.ts +405 -0
- package/src/types.ts +34 -0
|
@@ -0,0 +1,567 @@
|
|
|
1
|
+
import { CatalogRowError, normalizeDriftSnapshot, } from '@zmdb/migrations/introspect/runtime';
|
|
2
|
+
import {} from '@zmdb/sql';
|
|
3
|
+
function valueAt(row, field) {
|
|
4
|
+
return Reflect.get(row, field);
|
|
5
|
+
}
|
|
6
|
+
function invalid(catalog, row, field, expected, value) {
|
|
7
|
+
throw new CatalogRowError(catalog, row, field, expected, value);
|
|
8
|
+
}
|
|
9
|
+
function textField(row, field, catalog, index) {
|
|
10
|
+
const value = valueAt(row, field);
|
|
11
|
+
return typeof value === 'string' ? value : invalid(catalog, index, field, 'a string', value);
|
|
12
|
+
}
|
|
13
|
+
function nullableTextField(row, field, catalog, index) {
|
|
14
|
+
const value = valueAt(row, field);
|
|
15
|
+
if (value === null)
|
|
16
|
+
return null;
|
|
17
|
+
return typeof value === 'string' ? value : invalid(catalog, index, field, 'a string or null', value);
|
|
18
|
+
}
|
|
19
|
+
function integerField(row, field, catalog, index) {
|
|
20
|
+
const value = valueAt(row, field);
|
|
21
|
+
if (typeof value === 'number' && Number.isSafeInteger(value))
|
|
22
|
+
return value;
|
|
23
|
+
if (typeof value === 'string' && /^-?\d+$/.test(value)) {
|
|
24
|
+
const parsed = Number(value);
|
|
25
|
+
if (Number.isSafeInteger(parsed))
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
return invalid(catalog, index, field, 'a safe integer or decimal integer string', value);
|
|
29
|
+
}
|
|
30
|
+
function booleanField(row, field, catalog, index) {
|
|
31
|
+
const value = valueAt(row, field);
|
|
32
|
+
if (typeof value === 'boolean')
|
|
33
|
+
return value;
|
|
34
|
+
if (value === 0 || value === '0')
|
|
35
|
+
return false;
|
|
36
|
+
if (value === 1 || value === '1')
|
|
37
|
+
return true;
|
|
38
|
+
return invalid(catalog, index, field, 'a boolean or 0/1 flag', value);
|
|
39
|
+
}
|
|
40
|
+
function scalarText(row, field, catalog, index) {
|
|
41
|
+
const value = valueAt(row, field);
|
|
42
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'bigint')
|
|
43
|
+
return String(value);
|
|
44
|
+
return invalid(catalog, index, field, 'a string or numeric scalar', value);
|
|
45
|
+
}
|
|
46
|
+
function nullableScalarText(row, field, catalog, index) {
|
|
47
|
+
return valueAt(row, field) === null ? null : scalarText(row, field, catalog, index);
|
|
48
|
+
}
|
|
49
|
+
function query(text, parameters = []) {
|
|
50
|
+
return { text, parameters };
|
|
51
|
+
}
|
|
52
|
+
function globExpression(glob) {
|
|
53
|
+
let source = '^';
|
|
54
|
+
for (const character of glob) {
|
|
55
|
+
if (character === '*')
|
|
56
|
+
source += '.*';
|
|
57
|
+
else if (character === '?')
|
|
58
|
+
source += '.';
|
|
59
|
+
else
|
|
60
|
+
source += character.replace(/[\\^$.*+?()[\]{}|]/g, '\\$&');
|
|
61
|
+
}
|
|
62
|
+
return new RegExp(`${source}$`);
|
|
63
|
+
}
|
|
64
|
+
function selected(name, options) {
|
|
65
|
+
const include = options.include;
|
|
66
|
+
if (include !== undefined && include.length > 0 && !include.some(glob => globExpression(glob).test(name))) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
const exclude = options.exclude ?? ['_zmdb_migrations'];
|
|
70
|
+
return !exclude.some(glob => globExpression(glob).test(name));
|
|
71
|
+
}
|
|
72
|
+
function schemas(options) {
|
|
73
|
+
const configured = options.schemas ?? ['dbo'];
|
|
74
|
+
return [...new Set(configured.length === 0 ? ['dbo'] : configured)].toSorted();
|
|
75
|
+
}
|
|
76
|
+
function placeholders(count) {
|
|
77
|
+
return Array.from({ length: count }, (_, index) => `@p${String(index + 1)}`).join(', ');
|
|
78
|
+
}
|
|
79
|
+
function action(value, catalog, row, field) {
|
|
80
|
+
switch (value.toUpperCase()) {
|
|
81
|
+
case 'NO_ACTION':
|
|
82
|
+
return 'no action';
|
|
83
|
+
case 'CASCADE':
|
|
84
|
+
return 'cascade';
|
|
85
|
+
case 'SET_NULL':
|
|
86
|
+
return 'set null';
|
|
87
|
+
case 'SET_DEFAULT':
|
|
88
|
+
return 'set default';
|
|
89
|
+
default:
|
|
90
|
+
return invalid(catalog, row, field, 'a SQL Server referential action', value);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function parseTable(row, index) {
|
|
94
|
+
const catalog = 'mssql sys.tables';
|
|
95
|
+
return {
|
|
96
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
97
|
+
name: textField(row, 'table_name', catalog, index),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function parseColumn(row, index) {
|
|
101
|
+
const catalog = 'mssql sys.columns';
|
|
102
|
+
return {
|
|
103
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
104
|
+
table: textField(row, 'table_name', catalog, index),
|
|
105
|
+
ordinal: integerField(row, 'ordinal_position', catalog, index),
|
|
106
|
+
name: textField(row, 'column_name', catalog, index),
|
|
107
|
+
nullable: booleanField(row, 'is_nullable', catalog, index),
|
|
108
|
+
dataType: textField(row, 'data_type', catalog, index),
|
|
109
|
+
maxLength: integerField(row, 'max_length', catalog, index),
|
|
110
|
+
precision: integerField(row, 'numeric_precision', catalog, index),
|
|
111
|
+
scale: integerField(row, 'numeric_scale', catalog, index),
|
|
112
|
+
default: nullableTextField(row, 'column_default', catalog, index),
|
|
113
|
+
identity: booleanField(row, 'is_identity', catalog, index),
|
|
114
|
+
seed: nullableScalarText(row, 'seed_value', catalog, index),
|
|
115
|
+
increment: nullableScalarText(row, 'increment_value', catalog, index),
|
|
116
|
+
computed: booleanField(row, 'is_computed', catalog, index),
|
|
117
|
+
computedDefinition: nullableTextField(row, 'computed_definition', catalog, index),
|
|
118
|
+
persisted: booleanField(row, 'is_persisted', catalog, index),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function parsePrimaryKey(row, index) {
|
|
122
|
+
const catalog = 'mssql sys.key_constraints';
|
|
123
|
+
return {
|
|
124
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
125
|
+
table: textField(row, 'table_name', catalog, index),
|
|
126
|
+
ordinal: integerField(row, 'ordinal_position', catalog, index),
|
|
127
|
+
column: textField(row, 'column_name', catalog, index),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function parseForeignKey(row, index) {
|
|
131
|
+
const catalog = 'mssql sys.foreign_keys';
|
|
132
|
+
return {
|
|
133
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
134
|
+
table: textField(row, 'table_name', catalog, index),
|
|
135
|
+
constraint: textField(row, 'constraint_name', catalog, index),
|
|
136
|
+
ordinal: integerField(row, 'ordinal_position', catalog, index),
|
|
137
|
+
column: textField(row, 'column_name', catalog, index),
|
|
138
|
+
targetSchema: textField(row, 'target_schema', catalog, index),
|
|
139
|
+
targetTable: textField(row, 'target_table', catalog, index),
|
|
140
|
+
targetColumn: textField(row, 'target_column', catalog, index),
|
|
141
|
+
onUpdate: textField(row, 'update_action', catalog, index),
|
|
142
|
+
onDelete: textField(row, 'delete_action', catalog, index),
|
|
143
|
+
disabled: booleanField(row, 'is_disabled', catalog, index),
|
|
144
|
+
trusted: !booleanField(row, 'is_not_trusted', catalog, index),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
function parseIndex(row, index) {
|
|
148
|
+
const catalog = 'mssql sys.indexes';
|
|
149
|
+
return {
|
|
150
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
151
|
+
table: textField(row, 'table_name', catalog, index),
|
|
152
|
+
name: textField(row, 'index_name', catalog, index),
|
|
153
|
+
unique: booleanField(row, 'is_unique', catalog, index),
|
|
154
|
+
primary: booleanField(row, 'is_primary_key', catalog, index),
|
|
155
|
+
type: textField(row, 'index_type', catalog, index),
|
|
156
|
+
filtered: booleanField(row, 'has_filter', catalog, index),
|
|
157
|
+
predicate: nullableTextField(row, 'filter_definition', catalog, index),
|
|
158
|
+
ordinal: integerField(row, 'ordinal_position', catalog, index),
|
|
159
|
+
included: booleanField(row, 'is_included_column', catalog, index),
|
|
160
|
+
column: textField(row, 'column_name', catalog, index),
|
|
161
|
+
disabled: booleanField(row, 'is_disabled', catalog, index),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function parseSequence(row, index) {
|
|
165
|
+
const catalog = 'mssql sys.sequences';
|
|
166
|
+
return {
|
|
167
|
+
schema: textField(row, 'schema_name', catalog, index),
|
|
168
|
+
name: textField(row, 'sequence_name', catalog, index),
|
|
169
|
+
dataType: textField(row, 'data_type', catalog, index),
|
|
170
|
+
precision: integerField(row, 'numeric_precision', catalog, index),
|
|
171
|
+
scale: integerField(row, 'numeric_scale', catalog, index),
|
|
172
|
+
start: scalarText(row, 'start_value', catalog, index),
|
|
173
|
+
increment: scalarText(row, 'increment_value', catalog, index),
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
function tableKey(schema, table) {
|
|
177
|
+
return `${schema}\0${table}`;
|
|
178
|
+
}
|
|
179
|
+
function catalogType(column) {
|
|
180
|
+
const type = column.dataType.toUpperCase();
|
|
181
|
+
if (type === 'NVARCHAR' || type === 'NCHAR') {
|
|
182
|
+
return column.maxLength === -1 ? `${type}(MAX)` : `${type}(${String(column.maxLength / 2)})`;
|
|
183
|
+
}
|
|
184
|
+
if (type === 'VARCHAR' || type === 'CHAR' || type === 'VARBINARY' || type === 'BINARY') {
|
|
185
|
+
return column.maxLength === -1 ? `${type}(MAX)` : `${type}(${String(column.maxLength)})`;
|
|
186
|
+
}
|
|
187
|
+
if (type === 'DECIMAL' || type === 'NUMERIC') {
|
|
188
|
+
return `${type}(${String(column.precision)},${String(column.scale)})`;
|
|
189
|
+
}
|
|
190
|
+
if (type === 'DATETIME2' || type === 'DATETIMEOFFSET' || type === 'TIME') {
|
|
191
|
+
return `${type}(${String(column.scale)})`;
|
|
192
|
+
}
|
|
193
|
+
return type;
|
|
194
|
+
}
|
|
195
|
+
function mappedType(column) {
|
|
196
|
+
const type = column.dataType.toLowerCase();
|
|
197
|
+
const source = catalogType(column);
|
|
198
|
+
const warnings = [];
|
|
199
|
+
if (column.identity) {
|
|
200
|
+
if (column.seed === null || column.increment === null) {
|
|
201
|
+
throw new TypeError(`mssql identity column "${column.table}"."${column.name}" has no seed or increment`);
|
|
202
|
+
}
|
|
203
|
+
if (type === 'int' && column.seed === '1' && column.increment === '1') {
|
|
204
|
+
return { type: 'serial', warnings };
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
type: `${source} IDENTITY(${column.seed},${column.increment})`,
|
|
208
|
+
warnings,
|
|
209
|
+
};
|
|
210
|
+
}
|
|
211
|
+
if (type === 'int')
|
|
212
|
+
return { type: 'integer', warnings };
|
|
213
|
+
if (type === 'bigint')
|
|
214
|
+
return { type: 'bigint', warnings };
|
|
215
|
+
if (type === 'smallint' || type === 'tinyint') {
|
|
216
|
+
warnings.push(`SQL Server type ${source} was widened to integer`);
|
|
217
|
+
return { type: 'integer', warnings };
|
|
218
|
+
}
|
|
219
|
+
if (type === 'decimal' || type === 'numeric')
|
|
220
|
+
return { type: source, warnings };
|
|
221
|
+
if (type === 'float' || type === 'real' || type === 'money' || type === 'smallmoney') {
|
|
222
|
+
return { type: source, warnings };
|
|
223
|
+
}
|
|
224
|
+
if (type === 'nvarchar') {
|
|
225
|
+
return column.maxLength === -1
|
|
226
|
+
? { type: 'text', warnings }
|
|
227
|
+
: { type: 'varchar', length: column.maxLength / 2, warnings };
|
|
228
|
+
}
|
|
229
|
+
if (type === 'varchar') {
|
|
230
|
+
warnings.push(`SQL Server ${source} uses a database code page; forward zmdb DDL emits Unicode NVARCHAR`);
|
|
231
|
+
return column.maxLength === -1
|
|
232
|
+
? { type: 'text', warnings }
|
|
233
|
+
: { type: 'varchar', length: column.maxLength, warnings };
|
|
234
|
+
}
|
|
235
|
+
if (type === 'nchar' || type === 'char') {
|
|
236
|
+
warnings.push(`SQL Server fixed-width type ${source} was normalized to varchar`);
|
|
237
|
+
const length = type === 'nchar' ? column.maxLength / 2 : column.maxLength;
|
|
238
|
+
return { type: 'varchar', length, warnings };
|
|
239
|
+
}
|
|
240
|
+
if (type === 'ntext' || type === 'text') {
|
|
241
|
+
if (type === 'text') {
|
|
242
|
+
warnings.push('SQL Server TEXT uses a database code page; forward zmdb DDL emits Unicode NVARCHAR(MAX)');
|
|
243
|
+
}
|
|
244
|
+
return { type: 'text', warnings };
|
|
245
|
+
}
|
|
246
|
+
if (type === 'bit')
|
|
247
|
+
return { type: 'boolean', warnings };
|
|
248
|
+
if (type === 'datetimeoffset') {
|
|
249
|
+
if (column.scale !== 3) {
|
|
250
|
+
warnings.push(`SQL Server ${source} was normalized to timestamp; forward zmdb DDL emits DATETIMEOFFSET(3)`);
|
|
251
|
+
}
|
|
252
|
+
return { type: 'timestamp', warnings };
|
|
253
|
+
}
|
|
254
|
+
if (type === 'datetime2' || type === 'datetime' || type === 'smalldatetime') {
|
|
255
|
+
warnings.push(`SQL Server ${source} has no offset; it was preserved as a custom SQL type instead of being called timestamp`);
|
|
256
|
+
return { type: source, warnings };
|
|
257
|
+
}
|
|
258
|
+
if (type === 'uniqueidentifier')
|
|
259
|
+
return { type: 'UNIQUEIDENTIFIER', warnings };
|
|
260
|
+
if (type === 'xml')
|
|
261
|
+
return { type: 'XML', warnings };
|
|
262
|
+
if (type === 'varbinary' || type === 'binary' || type === 'image' || type === 'date' || type === 'time') {
|
|
263
|
+
return { type: source, warnings };
|
|
264
|
+
}
|
|
265
|
+
warnings.push(`SQL Server type ${source} cannot be represented by the current declared SQL type vocabulary`);
|
|
266
|
+
return { type: source, warnings };
|
|
267
|
+
}
|
|
268
|
+
function primaryKeys(rows) {
|
|
269
|
+
const grouped = new Map();
|
|
270
|
+
for (const row of rows) {
|
|
271
|
+
const key = tableKey(row.schema, row.table);
|
|
272
|
+
const values = grouped.get(key);
|
|
273
|
+
if (values)
|
|
274
|
+
values.push(row);
|
|
275
|
+
else
|
|
276
|
+
grouped.set(key, [row]);
|
|
277
|
+
}
|
|
278
|
+
return new Map([...grouped].map(([key, values]) => [
|
|
279
|
+
key,
|
|
280
|
+
values.toSorted((left, right) => left.ordinal - right.ordinal).map(value => value.column),
|
|
281
|
+
]));
|
|
282
|
+
}
|
|
283
|
+
function foreignKeys(rows, warnings) {
|
|
284
|
+
const grouped = new Map();
|
|
285
|
+
for (const row of rows) {
|
|
286
|
+
const key = `${tableKey(row.schema, row.table)}\0${row.constraint}`;
|
|
287
|
+
const values = grouped.get(key);
|
|
288
|
+
if (values)
|
|
289
|
+
values.push(row);
|
|
290
|
+
else
|
|
291
|
+
grouped.set(key, [row]);
|
|
292
|
+
}
|
|
293
|
+
const byTable = new Map();
|
|
294
|
+
for (const values of grouped.values()) {
|
|
295
|
+
values.sort((left, right) => left.ordinal - right.ordinal);
|
|
296
|
+
const first = values[0];
|
|
297
|
+
if (first === undefined)
|
|
298
|
+
continue;
|
|
299
|
+
if (values.some(value => value.targetSchema !== first.targetSchema ||
|
|
300
|
+
value.targetTable !== first.targetTable ||
|
|
301
|
+
value.disabled !== first.disabled ||
|
|
302
|
+
value.trusted !== first.trusted)) {
|
|
303
|
+
throw new TypeError(`mssql foreign key "${first.constraint}" has inconsistent catalog rows`);
|
|
304
|
+
}
|
|
305
|
+
if (first.targetSchema !== first.schema) {
|
|
306
|
+
warnings.push({
|
|
307
|
+
table: first.table,
|
|
308
|
+
reason: `SQL Server foreign key "${first.constraint}" targets schema "${first.targetSchema}"; ` +
|
|
309
|
+
'the schema-neutral drift model preserves the target table name but not its schema',
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
if (first.disabled) {
|
|
313
|
+
warnings.push({
|
|
314
|
+
table: first.table,
|
|
315
|
+
reason: `SQL Server foreign key "${first.constraint}" is disabled`,
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
if (!first.trusted) {
|
|
319
|
+
warnings.push({
|
|
320
|
+
table: first.table,
|
|
321
|
+
reason: `SQL Server foreign key "${first.constraint}" is not trusted`,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
const snapshot = {
|
|
325
|
+
name: first.constraint,
|
|
326
|
+
columns: values.map(value => value.column),
|
|
327
|
+
targetTable: first.targetTable,
|
|
328
|
+
targetColumns: values.map(value => value.targetColumn),
|
|
329
|
+
onDelete: action(first.onDelete, 'mssql sys.foreign_keys', 0, 'delete_action'),
|
|
330
|
+
onUpdate: action(first.onUpdate, 'mssql sys.foreign_keys', 0, 'update_action'),
|
|
331
|
+
disabled: first.disabled,
|
|
332
|
+
trusted: first.trusted,
|
|
333
|
+
};
|
|
334
|
+
const key = tableKey(first.schema, first.table);
|
|
335
|
+
const tableValues = byTable.get(key);
|
|
336
|
+
if (tableValues)
|
|
337
|
+
tableValues.push(snapshot);
|
|
338
|
+
else
|
|
339
|
+
byTable.set(key, [snapshot]);
|
|
340
|
+
}
|
|
341
|
+
return new Map([...byTable].map(([key, values]) => [key, values.toSorted((left, right) => left.name.localeCompare(right.name))]));
|
|
342
|
+
}
|
|
343
|
+
function indexes(rows, warnings) {
|
|
344
|
+
const grouped = new Map();
|
|
345
|
+
for (const row of rows) {
|
|
346
|
+
if (row.primary)
|
|
347
|
+
continue;
|
|
348
|
+
const key = `${tableKey(row.schema, row.table)}\0${row.name}`;
|
|
349
|
+
const values = grouped.get(key);
|
|
350
|
+
if (values)
|
|
351
|
+
values.push(row);
|
|
352
|
+
else
|
|
353
|
+
grouped.set(key, [row]);
|
|
354
|
+
}
|
|
355
|
+
const byTable = new Map();
|
|
356
|
+
for (const values of grouped.values()) {
|
|
357
|
+
values.sort((left, right) => left.ordinal - right.ordinal);
|
|
358
|
+
const first = values[0];
|
|
359
|
+
if (first === undefined)
|
|
360
|
+
continue;
|
|
361
|
+
if (values.some(value => value.unique !== first.unique ||
|
|
362
|
+
value.type !== first.type ||
|
|
363
|
+
value.filtered !== first.filtered ||
|
|
364
|
+
value.predicate !== first.predicate ||
|
|
365
|
+
value.disabled !== first.disabled)) {
|
|
366
|
+
throw new TypeError(`mssql index "${first.name}" has inconsistent catalog rows`);
|
|
367
|
+
}
|
|
368
|
+
if (first.filtered !== (first.predicate !== null)) {
|
|
369
|
+
throw new TypeError(`mssql index "${first.name}" reports has_filter=${String(first.filtered)} with ` +
|
|
370
|
+
`${first.predicate === null ? 'no' : 'a'} filter definition`);
|
|
371
|
+
}
|
|
372
|
+
const type = first.type.toUpperCase();
|
|
373
|
+
const clustered = type === 'CLUSTERED';
|
|
374
|
+
if (type !== 'CLUSTERED' && type !== 'NONCLUSTERED') {
|
|
375
|
+
warnings.push({
|
|
376
|
+
table: first.table,
|
|
377
|
+
reason: `SQL Server index "${first.name}" uses ${first.type}, which the current DDL vocabulary cannot recreate`,
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
else if (clustered) {
|
|
381
|
+
warnings.push({
|
|
382
|
+
table: first.table,
|
|
383
|
+
reason: `SQL Server index "${first.name}" is clustered; clustering is preserved as catalog evidence but not emitted by the current DDL vocabulary`,
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
const includedColumns = values.filter(value => value.included).map(value => value.column);
|
|
387
|
+
if (includedColumns.length > 0) {
|
|
388
|
+
warnings.push({
|
|
389
|
+
table: first.table,
|
|
390
|
+
reason: `SQL Server index "${first.name}" includes ${includedColumns.join(', ')}; ` +
|
|
391
|
+
'included columns are preserved as catalog evidence but not emitted by the current DDL vocabulary',
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
if (first.disabled) {
|
|
395
|
+
warnings.push({ table: first.table, reason: `SQL Server index "${first.name}" is disabled` });
|
|
396
|
+
}
|
|
397
|
+
const columns = values.filter(value => !value.included).map(value => value.column);
|
|
398
|
+
const snapshot = {
|
|
399
|
+
name: first.name,
|
|
400
|
+
columns,
|
|
401
|
+
unique: first.unique,
|
|
402
|
+
...(type === 'NONCLUSTERED' ? {} : { method: first.type.toLowerCase() }),
|
|
403
|
+
...(first.predicate === null ? {} : { where: first.predicate }),
|
|
404
|
+
clustered,
|
|
405
|
+
includedColumns,
|
|
406
|
+
disabled: first.disabled,
|
|
407
|
+
};
|
|
408
|
+
const key = tableKey(first.schema, first.table);
|
|
409
|
+
const tableValues = byTable.get(key);
|
|
410
|
+
if (tableValues)
|
|
411
|
+
tableValues.push(snapshot);
|
|
412
|
+
else
|
|
413
|
+
byTable.set(key, [snapshot]);
|
|
414
|
+
}
|
|
415
|
+
return new Map([...byTable].map(([key, values]) => [key, values.toSorted((left, right) => left.name.localeCompare(right.name))]));
|
|
416
|
+
}
|
|
417
|
+
function sequenceType(sequence) {
|
|
418
|
+
const type = sequence.dataType.toUpperCase();
|
|
419
|
+
return type === 'DECIMAL' || type === 'NUMERIC'
|
|
420
|
+
? `${type}(${String(sequence.precision)},${String(sequence.scale)})`
|
|
421
|
+
: type;
|
|
422
|
+
}
|
|
423
|
+
async function mssqlSnapshot(driver, options = {}) {
|
|
424
|
+
const selectedSchemas = schemas(options);
|
|
425
|
+
const slots = placeholders(selectedSchemas.length);
|
|
426
|
+
const [tableRows, columnRows, primaryKeyRows, foreignKeyRows, indexRows, sequenceRows] = await Promise.all([
|
|
427
|
+
driver.execute(query(`SELECT s.name AS schema_name, t.name AS table_name ` +
|
|
428
|
+
`FROM sys.tables t JOIN sys.schemas s ON s.schema_id = t.schema_id ` +
|
|
429
|
+
`WHERE t.is_ms_shipped = 0 AND s.name IN (${slots}) ORDER BY s.name, t.name`, selectedSchemas)),
|
|
430
|
+
driver.execute(query(`SELECT s.name AS schema_name, t.name AS table_name, c.column_id AS ordinal_position, ` +
|
|
431
|
+
`c.name AS column_name, c.is_nullable, ty.name AS data_type, c.max_length, ` +
|
|
432
|
+
`c.precision AS numeric_precision, c.scale AS numeric_scale, dc.definition AS column_default, ` +
|
|
433
|
+
`c.is_identity, ic.seed_value, ic.increment_value, c.is_computed, ` +
|
|
434
|
+
`cc.definition AS computed_definition, COALESCE(cc.is_persisted, 0) AS is_persisted ` +
|
|
435
|
+
`FROM sys.tables t JOIN sys.schemas s ON s.schema_id = t.schema_id ` +
|
|
436
|
+
`JOIN sys.columns c ON c.object_id = t.object_id ` +
|
|
437
|
+
`JOIN sys.types ty ON ty.user_type_id = c.user_type_id ` +
|
|
438
|
+
`LEFT JOIN sys.default_constraints dc ON dc.object_id = c.default_object_id ` +
|
|
439
|
+
`LEFT JOIN sys.identity_columns ic ON ic.object_id = c.object_id AND ic.column_id = c.column_id ` +
|
|
440
|
+
`LEFT JOIN sys.computed_columns cc ON cc.object_id = c.object_id AND cc.column_id = c.column_id ` +
|
|
441
|
+
`WHERE t.is_ms_shipped = 0 AND s.name IN (${slots}) ` +
|
|
442
|
+
`ORDER BY s.name, t.name, c.column_id`, selectedSchemas)),
|
|
443
|
+
driver.execute(query(`SELECT s.name AS schema_name, t.name AS table_name, ic.key_ordinal AS ordinal_position, ` +
|
|
444
|
+
`c.name AS column_name FROM sys.key_constraints kc ` +
|
|
445
|
+
`JOIN sys.tables t ON t.object_id = kc.parent_object_id ` +
|
|
446
|
+
`JOIN sys.schemas s ON s.schema_id = t.schema_id ` +
|
|
447
|
+
`JOIN sys.index_columns ic ON ic.object_id = t.object_id AND ic.index_id = kc.unique_index_id ` +
|
|
448
|
+
`JOIN sys.columns c ON c.object_id = t.object_id AND c.column_id = ic.column_id ` +
|
|
449
|
+
`WHERE kc.type = 'PK' AND s.name IN (${slots}) ORDER BY s.name, t.name, ic.key_ordinal`, selectedSchemas)),
|
|
450
|
+
driver.execute(query(`SELECT s.name AS schema_name, t.name AS table_name, fk.name AS constraint_name, ` +
|
|
451
|
+
`fkc.constraint_column_id AS ordinal_position, pc.name AS column_name, ` +
|
|
452
|
+
`rs.name AS target_schema, rt.name AS target_table, rc.name AS target_column, ` +
|
|
453
|
+
`fk.update_referential_action_desc AS update_action, ` +
|
|
454
|
+
`fk.delete_referential_action_desc AS delete_action, fk.is_disabled, fk.is_not_trusted ` +
|
|
455
|
+
`FROM sys.foreign_keys fk JOIN sys.foreign_key_columns fkc ON fkc.constraint_object_id = fk.object_id ` +
|
|
456
|
+
`JOIN sys.tables t ON t.object_id = fk.parent_object_id ` +
|
|
457
|
+
`JOIN sys.schemas s ON s.schema_id = t.schema_id ` +
|
|
458
|
+
`JOIN sys.columns pc ON pc.object_id = t.object_id AND pc.column_id = fkc.parent_column_id ` +
|
|
459
|
+
`JOIN sys.tables rt ON rt.object_id = fk.referenced_object_id ` +
|
|
460
|
+
`JOIN sys.schemas rs ON rs.schema_id = rt.schema_id ` +
|
|
461
|
+
`JOIN sys.columns rc ON rc.object_id = rt.object_id AND rc.column_id = fkc.referenced_column_id ` +
|
|
462
|
+
`WHERE s.name IN (${slots}) ORDER BY s.name, t.name, fk.name, fkc.constraint_column_id`, selectedSchemas)),
|
|
463
|
+
driver.execute(query(`SELECT s.name AS schema_name, t.name AS table_name, i.name AS index_name, i.is_unique, ` +
|
|
464
|
+
`i.is_primary_key, i.type_desc AS index_type, i.has_filter, i.filter_definition, ` +
|
|
465
|
+
`CASE WHEN ic.is_included_column = 1 THEN ic.index_column_id ELSE ic.key_ordinal END AS ordinal_position, ` +
|
|
466
|
+
`ic.is_included_column, c.name AS column_name, i.is_disabled ` +
|
|
467
|
+
`FROM sys.indexes i JOIN sys.tables t ON t.object_id = i.object_id ` +
|
|
468
|
+
`JOIN sys.schemas s ON s.schema_id = t.schema_id ` +
|
|
469
|
+
`JOIN sys.index_columns ic ON ic.object_id = i.object_id AND ic.index_id = i.index_id ` +
|
|
470
|
+
`JOIN sys.columns c ON c.object_id = i.object_id AND c.column_id = ic.column_id ` +
|
|
471
|
+
`WHERE i.name IS NOT NULL AND i.is_hypothetical = 0 AND s.name IN (${slots}) ` +
|
|
472
|
+
`ORDER BY s.name, t.name, i.name, ic.is_included_column, ordinal_position`, selectedSchemas)),
|
|
473
|
+
driver.execute(query(`SELECT s.name AS schema_name, seq.name AS sequence_name, ty.name AS data_type, ` +
|
|
474
|
+
`seq.precision AS numeric_precision, seq.scale AS numeric_scale, seq.start_value, seq.increment AS increment_value ` +
|
|
475
|
+
`FROM sys.sequences seq JOIN sys.schemas s ON s.schema_id = seq.schema_id ` +
|
|
476
|
+
`JOIN sys.types ty ON ty.user_type_id = seq.user_type_id ` +
|
|
477
|
+
`WHERE s.name IN (${slots}) ORDER BY s.name, seq.name`, selectedSchemas)),
|
|
478
|
+
]);
|
|
479
|
+
const tables = tableRows.map(parseTable).filter(table => selected(table.name, options));
|
|
480
|
+
const duplicate = tables.find((table, index) => tables.findIndex(candidate => candidate.name === table.name) !== index);
|
|
481
|
+
if (duplicate !== undefined) {
|
|
482
|
+
throw new TypeError(`mssql introspection cannot represent table "${duplicate.name}" from more than one schema in a schema-neutral snapshot`);
|
|
483
|
+
}
|
|
484
|
+
const parsedColumns = columnRows.map(parseColumn);
|
|
485
|
+
const parsedPrimaryKeys = primaryKeyRows.map(parsePrimaryKey);
|
|
486
|
+
const parsedForeignKeys = foreignKeyRows.map(parseForeignKey);
|
|
487
|
+
const parsedIndexes = indexRows.map(parseIndex);
|
|
488
|
+
const parsedSequences = sequenceRows.map(parseSequence);
|
|
489
|
+
const primaryKeyByTable = primaryKeys(parsedPrimaryKeys);
|
|
490
|
+
const warnings = [];
|
|
491
|
+
const foreignKeyByTable = foreignKeys(parsedForeignKeys, warnings);
|
|
492
|
+
const indexByTable = indexes(parsedIndexes, warnings);
|
|
493
|
+
const snapshots = [];
|
|
494
|
+
for (const table of tables) {
|
|
495
|
+
const key = tableKey(table.schema, table.name);
|
|
496
|
+
const primaryKey = primaryKeyByTable.get(key) ?? [];
|
|
497
|
+
const columns = parsedColumns
|
|
498
|
+
.filter(column => column.schema === table.schema && column.table === table.name)
|
|
499
|
+
.map(column => {
|
|
500
|
+
const mapped = mappedType(column);
|
|
501
|
+
for (const reason of mapped.warnings)
|
|
502
|
+
warnings.push({ table: table.name, column: column.name, reason });
|
|
503
|
+
if (column.computed && column.computedDefinition === null) {
|
|
504
|
+
throw new TypeError(`mssql computed column "${table.name}"."${column.name}" has no definition`);
|
|
505
|
+
}
|
|
506
|
+
return {
|
|
507
|
+
name: column.name,
|
|
508
|
+
type: mapped.type,
|
|
509
|
+
catalogType: catalogType(column),
|
|
510
|
+
nullable: column.nullable,
|
|
511
|
+
primaryKey: primaryKey.includes(column.name),
|
|
512
|
+
...(mapped.length === undefined ? {} : { length: mapped.length }),
|
|
513
|
+
...(column.default === null ? {} : { default: column.default }),
|
|
514
|
+
...(column.identity
|
|
515
|
+
? {
|
|
516
|
+
identity: {
|
|
517
|
+
seed: column.seed ?? '',
|
|
518
|
+
increment: column.increment ?? '',
|
|
519
|
+
},
|
|
520
|
+
}
|
|
521
|
+
: {}),
|
|
522
|
+
...(column.computed && column.computedDefinition !== null
|
|
523
|
+
? {
|
|
524
|
+
computed: {
|
|
525
|
+
expression: column.computedDefinition,
|
|
526
|
+
persisted: column.persisted,
|
|
527
|
+
},
|
|
528
|
+
}
|
|
529
|
+
: {}),
|
|
530
|
+
};
|
|
531
|
+
})
|
|
532
|
+
.toSorted((left, right) => left.name.localeCompare(right.name));
|
|
533
|
+
snapshots.push({
|
|
534
|
+
name: table.name,
|
|
535
|
+
columns,
|
|
536
|
+
primaryKey,
|
|
537
|
+
foreignKeys: foreignKeyByTable.get(key) ?? [],
|
|
538
|
+
indexes: indexByTable.get(key) ?? [],
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
const sequences = parsedSequences
|
|
542
|
+
.filter(sequence => selected(sequence.name, options))
|
|
543
|
+
.map(sequence => ({
|
|
544
|
+
name: sequence.name,
|
|
545
|
+
...(sequence.schema === 'dbo' ? {} : { schema: sequence.schema }),
|
|
546
|
+
catalogType: sequenceType(sequence),
|
|
547
|
+
start: sequence.start,
|
|
548
|
+
increment: sequence.increment,
|
|
549
|
+
}))
|
|
550
|
+
.toSorted((left, right) => left.name.localeCompare(right.name));
|
|
551
|
+
return {
|
|
552
|
+
version: 1,
|
|
553
|
+
tables: snapshots.toSorted((left, right) => left.name.localeCompare(right.name)),
|
|
554
|
+
extensions: [],
|
|
555
|
+
warnings: warnings.toSorted((left, right) => left.table.localeCompare(right.table) ||
|
|
556
|
+
(left.column ?? '').localeCompare(right.column ?? '') ||
|
|
557
|
+
left.reason.localeCompare(right.reason)),
|
|
558
|
+
sequences,
|
|
559
|
+
};
|
|
560
|
+
}
|
|
561
|
+
export const mssqlIntrospector = Object.freeze({
|
|
562
|
+
name: 'mssql',
|
|
563
|
+
dialect: 'mssql',
|
|
564
|
+
snapshot: mssqlSnapshot,
|
|
565
|
+
normalizeForDrift: (snapshot, role) => normalizeDriftSnapshot(snapshot, role),
|
|
566
|
+
});
|
|
567
|
+
//# sourceMappingURL=introspect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"introspect.js","sourceRoot":"","sources":["../src/introspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,gBAAgB,EAKtB,MAAM,WAAW,CAAC;AA6XnB,eAAO,MAAM,eAAe,EAAE,gBAAgB,CAAC,OAAO,CAWpD,CAAC"}
|