typesql-cli 0.4.11 → 0.5.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/mysql-query-analyzer/collect-constraints.d.ts +8 -7
- package/mysql-query-analyzer/collect-constraints.d.ts.map +1 -1
- package/mysql-query-analyzer/collect-constraints.js +473 -28
- package/mysql-query-analyzer/collect-constraints.js.map +1 -1
- package/mysql-query-analyzer/infer-column-nullability.d.ts +2 -2
- package/mysql-query-analyzer/infer-column-nullability.d.ts.map +1 -1
- package/mysql-query-analyzer/infer-column-nullability.js +5 -4
- package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
- package/mysql-query-analyzer/parse.d.ts +7 -7
- package/mysql-query-analyzer/parse.d.ts.map +1 -1
- package/mysql-query-analyzer/parse.js +77 -34
- package/mysql-query-analyzer/parse.js.map +1 -1
- package/mysql-query-analyzer/select-columns.d.ts +4 -3
- package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
- package/mysql-query-analyzer/select-columns.js +50 -39
- package/mysql-query-analyzer/select-columns.js.map +1 -1
- package/mysql-query-analyzer/types.d.ts +4 -0
- package/mysql-query-analyzer/types.d.ts.map +1 -1
- package/package.json +1 -1
@@ -26,6 +26,7 @@ export type Constraint = {
|
|
26
26
|
};
|
27
27
|
export type InferenceContext = {
|
28
28
|
dbSchema: ColumnSchema[];
|
29
|
+
withSchema: ColumnSchema[];
|
29
30
|
parameters: TypeVar[];
|
30
31
|
constraints: Constraint[];
|
31
32
|
fromColumns: ColumnDef[];
|
@@ -34,16 +35,16 @@ export declare function freshVar(name: string, typeVar: InferType, selectItem?:
|
|
34
35
|
export type NamedNodes = {
|
35
36
|
[key: string]: Type;
|
36
37
|
};
|
37
|
-
export declare function analiseTree(tree: RuleContext, dbSchema: ColumnSchema[], namedParameters: string[]): TypeInferenceResult;
|
38
|
-
export declare function analiseInsertStatement(insertStatement: InsertStatementContext, dbSchema: ColumnSchema[]): InsertInfoResult;
|
39
|
-
export declare function analiseDeleteStatement(deleteStatement: DeleteStatementContext, dbSchema: ColumnSchema[]): DeleteInfoResult;
|
40
|
-
export declare function analiseUpdateStatement(updateStatement: UpdateStatementContext, dbSchema: ColumnSchema[]): UpdateInfoResult;
|
38
|
+
export declare function analiseTree(tree: RuleContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[], namedParameters: string[]): TypeInferenceResult;
|
39
|
+
export declare function analiseInsertStatement(insertStatement: InsertStatementContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[]): InsertInfoResult;
|
40
|
+
export declare function analiseDeleteStatement(deleteStatement: DeleteStatementContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[]): DeleteInfoResult;
|
41
|
+
export declare function analiseUpdateStatement(updateStatement: UpdateStatementContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[]): UpdateInfoResult;
|
41
42
|
export declare function getInsertColumns(insertStatement: InsertStatementContext, dbSchema: ColumnSchema[]): ColumnSchema[];
|
42
43
|
export declare function getUpdateColumns(updateStatement: UpdateStatementContext, dbSchema: ColumnSchema[]): ColumnDef[];
|
43
44
|
export declare function getDeleteColumns(deleteStatement: DeleteStatementContext, dbSchema: ColumnSchema[]): ColumnDef[];
|
44
|
-
export declare function analiseSelectStatement(selectStatement: SelectStatementContext | SubqueryContext, dbSchema: ColumnSchema[], namedParameters: string[]): TypeInferenceResult;
|
45
|
-
export declare function unionTypeResult(type1: InferType, type2: InferType):
|
46
|
-
export declare function analiseQuerySpecification(querySpec: QuerySpecificationContext, dbSchema: ColumnSchema[], namedParameters: string[], fromColumns: ColumnDef[]): TypeInferenceResult;
|
45
|
+
export declare function analiseSelectStatement(selectStatement: SelectStatementContext | SubqueryContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[], namedParameters: string[]): TypeInferenceResult;
|
46
|
+
export declare function unionTypeResult(type1: InferType, type2: InferType): any;
|
47
|
+
export declare function analiseQuerySpecification(querySpec: QuerySpecificationContext, dbSchema: ColumnSchema[], withSchema: ColumnSchema[], namedParameters: string[], fromColumns: ColumnDef[]): TypeInferenceResult;
|
47
48
|
export declare function generateTypeInfo(namedNodes: TypeVar[], constraints: Constraint[]): InferType[];
|
48
49
|
export declare function walkQuerySpecification(context: InferenceContext, querySpec: QuerySpecificationContext): TypeOperator;
|
49
50
|
export declare function walkSubquery(context: InferenceContext, queryExpressionParens: SubqueryContext): Type;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"collect-constraints.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/collect-constraints.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAGvC,OAAO,EAGkE,yBAAyB,EAGrC,sBAAsB,EAC/E,eAAe,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB,EAE1F,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAM7H,OAAO,EAAa,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQxD,MAAM,MAAM,OAAO,GAAG;IAClB,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,UAAU,CAAC,EAAE,IAAI,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,YAAY,CAAC;AAE1C,KAAK,YAAY,GAAG;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,UAAU,CAAC,EAAE,IAAI,CAAA;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,IAAI,CAAC;IACvB,YAAY,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;IAC9D,IAAI,CAAC,EAAE,IAAI,CAAC;CACf,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,EAAE,CAAC;IACtB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,EAAE,CAAC;CAC5B,CAAA;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAelG;AAGD,MAAM,MAAM,UAAU,GAAG;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAA;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,mBAAmB,
|
1
|
+
{"version":3,"file":"collect-constraints.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/collect-constraints.ts"],"names":[],"mappings":"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"}
|
@@ -29,16 +29,16 @@ function freshVar(name, typeVar, selectItem, list) {
|
|
29
29
|
return param;
|
30
30
|
}
|
31
31
|
exports.freshVar = freshVar;
|
32
|
-
function analiseTree(tree, dbSchema, namedParameters) {
|
32
|
+
function analiseTree(tree, dbSchema, withSchema, namedParameters) {
|
33
33
|
var _a, _b, _c;
|
34
34
|
if (tree instanceof ts_mysql_parser_1.QueryContext) {
|
35
35
|
const selectStatement = (_a = tree.simpleStatement()) === null || _a === void 0 ? void 0 : _a.selectStatement();
|
36
36
|
if (selectStatement) {
|
37
|
-
return analiseSelectStatement(selectStatement, dbSchema, namedParameters);
|
37
|
+
return analiseSelectStatement(selectStatement, dbSchema, withSchema, namedParameters);
|
38
38
|
}
|
39
39
|
const insertStatement = (_b = tree.simpleStatement()) === null || _b === void 0 ? void 0 : _b.insertStatement();
|
40
40
|
if (insertStatement) {
|
41
|
-
const insertStmt = analiseInsertStatement(insertStatement, dbSchema);
|
41
|
+
const insertStmt = analiseInsertStatement(insertStatement, dbSchema, withSchema);
|
42
42
|
const TypeInfer = {
|
43
43
|
columns: [],
|
44
44
|
parameters: insertStmt.parameters.map(param => param.columnType)
|
@@ -47,7 +47,7 @@ function analiseTree(tree, dbSchema, namedParameters) {
|
|
47
47
|
}
|
48
48
|
const updateStatement = (_c = tree.simpleStatement()) === null || _c === void 0 ? void 0 : _c.updateStatement();
|
49
49
|
if (updateStatement) {
|
50
|
-
const updateStmt = analiseUpdateStatement(updateStatement, dbSchema);
|
50
|
+
const updateStmt = analiseUpdateStatement(updateStatement, dbSchema, withSchema);
|
51
51
|
const TypeInfer = {
|
52
52
|
columns: [],
|
53
53
|
parameters: updateStmt.data.map(param => param.columnType)
|
@@ -58,7 +58,7 @@ function analiseTree(tree, dbSchema, namedParameters) {
|
|
58
58
|
throw Error('invalid type of tree');
|
59
59
|
}
|
60
60
|
exports.analiseTree = analiseTree;
|
61
|
-
function analiseInsertStatement(insertStatement, dbSchema) {
|
61
|
+
function analiseInsertStatement(insertStatement, dbSchema, withSchema) {
|
62
62
|
const valuesContext = insertStatement.insertFromConstructor().insertValues().valueList().values()[0];
|
63
63
|
const insertColumns = getInsertColumns(insertStatement, dbSchema);
|
64
64
|
const allParameters = [];
|
@@ -74,6 +74,7 @@ function analiseInsertStatement(insertStatement, dbSchema) {
|
|
74
74
|
exprOrDefaultList.forEach((expr, index) => {
|
75
75
|
const context = {
|
76
76
|
dbSchema,
|
77
|
+
withSchema,
|
77
78
|
constraints: [],
|
78
79
|
parameters: [],
|
79
80
|
fromColumns: []
|
@@ -103,7 +104,7 @@ function analiseInsertStatement(insertStatement, dbSchema) {
|
|
103
104
|
return typeInferenceResult;
|
104
105
|
}
|
105
106
|
exports.analiseInsertStatement = analiseInsertStatement;
|
106
|
-
function analiseDeleteStatement(deleteStatement, dbSchema) {
|
107
|
+
function analiseDeleteStatement(deleteStatement, dbSchema, withSchema) {
|
107
108
|
var _a;
|
108
109
|
const whereExpr = (_a = deleteStatement.whereClause()) === null || _a === void 0 ? void 0 : _a.expr();
|
109
110
|
const deleteColumns = getDeleteColumns(deleteStatement, dbSchema);
|
@@ -113,7 +114,8 @@ function analiseDeleteStatement(deleteStatement, dbSchema) {
|
|
113
114
|
fromColumns: deleteColumns,
|
114
115
|
parameters: [],
|
115
116
|
constraints: [],
|
116
|
-
dbSchema
|
117
|
+
dbSchema,
|
118
|
+
withSchema
|
117
119
|
};
|
118
120
|
walkExpr(context, whereExpr);
|
119
121
|
const typeInfo = generateTypeInfo(context.parameters, context.constraints);
|
@@ -133,7 +135,7 @@ function analiseDeleteStatement(deleteStatement, dbSchema) {
|
|
133
135
|
return typeInferenceResult;
|
134
136
|
}
|
135
137
|
exports.analiseDeleteStatement = analiseDeleteStatement;
|
136
|
-
function analiseUpdateStatement(updateStatement, dbSchema) {
|
138
|
+
function analiseUpdateStatement(updateStatement, dbSchema, withSchema) {
|
137
139
|
var _a;
|
138
140
|
const updateElement = updateStatement.updateList().updateElement();
|
139
141
|
const updateColumns = getUpdateColumns(updateStatement, dbSchema);
|
@@ -144,6 +146,7 @@ function analiseUpdateStatement(updateStatement, dbSchema) {
|
|
144
146
|
if (expr) {
|
145
147
|
const context = {
|
146
148
|
dbSchema,
|
149
|
+
withSchema,
|
147
150
|
parameters: [],
|
148
151
|
constraints: [],
|
149
152
|
fromColumns: updateColumns
|
@@ -171,6 +174,7 @@ function analiseUpdateStatement(updateStatement, dbSchema) {
|
|
171
174
|
if (whereExpr) {
|
172
175
|
const context = {
|
173
176
|
dbSchema,
|
177
|
+
withSchema,
|
174
178
|
parameters: [],
|
175
179
|
constraints: [],
|
176
180
|
fromColumns: updateColumns
|
@@ -254,14 +258,14 @@ function getDeleteColumns(deleteStatement, dbSchema) {
|
|
254
258
|
return columns;
|
255
259
|
}
|
256
260
|
exports.getDeleteColumns = getDeleteColumns;
|
257
|
-
function analiseSelectStatement(selectStatement, dbSchema, namedParameters) {
|
261
|
+
function analiseSelectStatement(selectStatement, dbSchema, withSchema, namedParameters) {
|
258
262
|
const querySpec = (0, parse_1.getQuerySpecificationsFromSelectStatement)(selectStatement);
|
259
|
-
const fromColumns = (0, select_columns_1.getColumnsFrom)(querySpec[0], dbSchema);
|
260
|
-
let result = analiseQuerySpecification(querySpec[0], dbSchema, namedParameters, fromColumns);
|
263
|
+
const fromColumns = (0, select_columns_1.getColumnsFrom)(querySpec[0], dbSchema, withSchema);
|
264
|
+
let result = analiseQuerySpecification(querySpec[0], dbSchema, dbSchema, namedParameters, fromColumns);
|
261
265
|
for (let index = 1; index < querySpec.length; index++) {
|
262
266
|
const unionQuery = querySpec[index];
|
263
|
-
const fromColumns2 = (0, select_columns_1.getColumnsFrom)(unionQuery, dbSchema);
|
264
|
-
const result2 = analiseQuerySpecification(unionQuery, dbSchema, namedParameters, fromColumns2);
|
267
|
+
const fromColumns2 = (0, select_columns_1.getColumnsFrom)(unionQuery, dbSchema, withSchema);
|
268
|
+
const result2 = analiseQuerySpecification(unionQuery, dbSchema, dbSchema, namedParameters, fromColumns2);
|
265
269
|
result = unionResult(result, result2);
|
266
270
|
}
|
267
271
|
return result;
|
@@ -279,16 +283,455 @@ function unionResult(typeInference1, typeInference2) {
|
|
279
283
|
};
|
280
284
|
}
|
281
285
|
function unionTypeResult(type1, type2) {
|
282
|
-
|
283
|
-
const
|
284
|
-
|
285
|
-
|
286
|
-
|
286
|
+
//Gernerated with tests\check-mysql-inference.ts
|
287
|
+
const typeMapping = {
|
288
|
+
"decimal_tinyint": "decimal",
|
289
|
+
"decimal_smallint": "decimal",
|
290
|
+
"decimal_int": "decimal",
|
291
|
+
"decimal_float": "double",
|
292
|
+
"decimal_double": "double",
|
293
|
+
"decimal_timestamp": "varchar",
|
294
|
+
"decimal_bigint": "decimal",
|
295
|
+
"decimal_mediumint": "decimal",
|
296
|
+
"decimal_date": "varchar",
|
297
|
+
"decimal_time": "varchar",
|
298
|
+
"decimal_datetime": "varchar",
|
299
|
+
"decimal_year": "decimal",
|
300
|
+
"decimal_varchar": "varchar",
|
301
|
+
"decimal_bit": "decimal",
|
302
|
+
"decimal_json": "varbinary",
|
303
|
+
"decimal_enum": "varchar",
|
304
|
+
"decimal_set": "varchar",
|
305
|
+
"decimal_tinyblob": "text",
|
306
|
+
"decimal_mediumblob": "text",
|
307
|
+
"decimal_longblob": "longtext",
|
308
|
+
"decimal_blob": "text",
|
309
|
+
"decimal_tinytext": "text",
|
310
|
+
"decimal_mediumtext": "text",
|
311
|
+
"decimal_longtext": "longtext",
|
312
|
+
"decimal_text": "text",
|
313
|
+
"decimal_varbinary": "varbinary",
|
314
|
+
"decimal_binary": "binary",
|
315
|
+
"decimal_char": "binary",
|
316
|
+
"decimal_geometry": "varbinary",
|
317
|
+
"tinyint_smallint": "smallint",
|
318
|
+
"tinyint_int": "int",
|
319
|
+
"tinyint_float": "float",
|
320
|
+
"tinyint_double": "double",
|
321
|
+
"tinyint_timestamp": "varchar",
|
322
|
+
"tinyint_bigint": "bigint",
|
323
|
+
"tinyint_mediumint": "mediumint",
|
324
|
+
"tinyint_date": "varchar",
|
325
|
+
"tinyint_time": "varchar",
|
326
|
+
"tinyint_datetime": "varchar",
|
327
|
+
"tinyint_year": "tinyint",
|
328
|
+
"tinyint_varchar": "varchar",
|
329
|
+
"tinyint_bit": "decimal",
|
330
|
+
"tinyint_json": "varbinary",
|
331
|
+
"tinyint_enum": "varchar",
|
332
|
+
"tinyint_set": "varchar",
|
333
|
+
"tinyint_tinyblob": "text",
|
334
|
+
"tinyint_mediumblob": "text",
|
335
|
+
"tinyint_longblob": "longtext",
|
336
|
+
"tinyint_blob": "text",
|
337
|
+
"tinyint_tinytext": "text",
|
338
|
+
"tinyint_mediumtext": "text",
|
339
|
+
"tinyint_longtext": "longtext",
|
340
|
+
"tinyint_text": "text",
|
341
|
+
"tinyint_varbinary": "varbinary",
|
342
|
+
"tinyint_binary": "binary",
|
343
|
+
"tinyint_char": "binary",
|
344
|
+
"tinyint_geometry": "varbinary",
|
345
|
+
"smallint_int": "int",
|
346
|
+
"smallint_float": "float",
|
347
|
+
"smallint_double": "double",
|
348
|
+
"smallint_timestamp": "varchar",
|
349
|
+
"smallint_bigint": "bigint",
|
350
|
+
"smallint_mediumint": "mediumint",
|
351
|
+
"smallint_date": "varchar",
|
352
|
+
"smallint_time": "varchar",
|
353
|
+
"smallint_datetime": "varchar",
|
354
|
+
"smallint_year": "smallint",
|
355
|
+
"smallint_varchar": "varchar",
|
356
|
+
"smallint_bit": "decimal",
|
357
|
+
"smallint_json": "varbinary",
|
358
|
+
"smallint_enum": "varchar",
|
359
|
+
"smallint_set": "varchar",
|
360
|
+
"smallint_tinyblob": "text",
|
361
|
+
"smallint_mediumblob": "text",
|
362
|
+
"smallint_longblob": "longtext",
|
363
|
+
"smallint_blob": "text",
|
364
|
+
"smallint_tinytext": "text",
|
365
|
+
"smallint_mediumtext": "text",
|
366
|
+
"smallint_longtext": "longtext",
|
367
|
+
"smallint_text": "text",
|
368
|
+
"smallint_varbinary": "varbinary",
|
369
|
+
"smallint_binary": "binary",
|
370
|
+
"smallint_char": "binary",
|
371
|
+
"smallint_geometry": "varbinary",
|
372
|
+
"int_float": "double",
|
373
|
+
"int_double": "double",
|
374
|
+
"int_timestamp": "varchar",
|
375
|
+
"int_bigint": "bigint",
|
376
|
+
"int_mediumint": "int",
|
377
|
+
"int_date": "varchar",
|
378
|
+
"int_time": "varchar",
|
379
|
+
"int_datetime": "varchar",
|
380
|
+
"int_year": "int",
|
381
|
+
"int_varchar": "varchar",
|
382
|
+
"int_bit": "decimal",
|
383
|
+
"int_json": "varbinary",
|
384
|
+
"int_enum": "varchar",
|
385
|
+
"int_set": "varchar",
|
386
|
+
"int_tinyblob": "text",
|
387
|
+
"int_mediumblob": "text",
|
388
|
+
"int_longblob": "longtext",
|
389
|
+
"int_blob": "text",
|
390
|
+
"int_tinytext": "text",
|
391
|
+
"int_mediumtext": "text",
|
392
|
+
"int_longtext": "longtext",
|
393
|
+
"int_text": "text",
|
394
|
+
"int_varbinary": "varbinary",
|
395
|
+
"int_binary": "binary",
|
396
|
+
"int_char": "binary",
|
397
|
+
"int_geometry": "varbinary",
|
398
|
+
"float_double": "double",
|
399
|
+
"float_timestamp": "varchar",
|
400
|
+
"float_bigint": "float",
|
401
|
+
"float_mediumint": "float",
|
402
|
+
"float_date": "varchar",
|
403
|
+
"float_time": "varchar",
|
404
|
+
"float_datetime": "varchar",
|
405
|
+
"float_year": "float",
|
406
|
+
"float_varchar": "varchar",
|
407
|
+
"float_bit": "double",
|
408
|
+
"float_json": "varbinary",
|
409
|
+
"float_enum": "varchar",
|
410
|
+
"float_set": "varchar",
|
411
|
+
"float_tinyblob": "text",
|
412
|
+
"float_mediumblob": "text",
|
413
|
+
"float_longblob": "longtext",
|
414
|
+
"float_blob": "text",
|
415
|
+
"float_tinytext": "text",
|
416
|
+
"float_mediumtext": "text",
|
417
|
+
"float_longtext": "longtext",
|
418
|
+
"float_text": "text",
|
419
|
+
"float_varbinary": "varbinary",
|
420
|
+
"float_binary": "binary",
|
421
|
+
"float_char": "binary",
|
422
|
+
"float_geometry": "varbinary",
|
423
|
+
"double_timestamp": "varchar",
|
424
|
+
"double_bigint": "double",
|
425
|
+
"double_mediumint": "double",
|
426
|
+
"double_date": "varchar",
|
427
|
+
"double_time": "varchar",
|
428
|
+
"double_datetime": "varchar",
|
429
|
+
"double_year": "double",
|
430
|
+
"double_varchar": "varchar",
|
431
|
+
"double_bit": "double",
|
432
|
+
"double_json": "varbinary",
|
433
|
+
"double_enum": "varchar",
|
434
|
+
"double_set": "varchar",
|
435
|
+
"double_tinyblob": "text",
|
436
|
+
"double_mediumblob": "text",
|
437
|
+
"double_longblob": "longtext",
|
438
|
+
"double_blob": "text",
|
439
|
+
"double_tinytext": "text",
|
440
|
+
"double_mediumtext": "text",
|
441
|
+
"double_longtext": "longtext",
|
442
|
+
"double_text": "text",
|
443
|
+
"double_varbinary": "varbinary",
|
444
|
+
"double_binary": "binary",
|
445
|
+
"double_char": "binary",
|
446
|
+
"double_geometry": "varbinary",
|
447
|
+
"timestamp_bigint": "varchar",
|
448
|
+
"timestamp_mediumint": "varchar",
|
449
|
+
"timestamp_date": "datetime",
|
450
|
+
"timestamp_time": "datetime",
|
451
|
+
"timestamp_datetime": "datetime",
|
452
|
+
"timestamp_year": "varchar",
|
453
|
+
"timestamp_varchar": "varchar",
|
454
|
+
"timestamp_bit": "varbinary",
|
455
|
+
"timestamp_json": "varbinary",
|
456
|
+
"timestamp_enum": "varchar",
|
457
|
+
"timestamp_set": "varchar",
|
458
|
+
"timestamp_tinyblob": "text",
|
459
|
+
"timestamp_mediumblob": "text",
|
460
|
+
"timestamp_longblob": "longtext",
|
461
|
+
"timestamp_blob": "text",
|
462
|
+
"timestamp_tinytext": "text",
|
463
|
+
"timestamp_mediumtext": "text",
|
464
|
+
"timestamp_longtext": "longtext",
|
465
|
+
"timestamp_text": "text",
|
466
|
+
"timestamp_varbinary": "varbinary",
|
467
|
+
"timestamp_binary": "binary",
|
468
|
+
"timestamp_char": "binary",
|
469
|
+
"timestamp_geometry": "varbinary",
|
470
|
+
"bigint_mediumint": "bigint",
|
471
|
+
"bigint_date": "varchar",
|
472
|
+
"bigint_time": "varchar",
|
473
|
+
"bigint_datetime": "varchar",
|
474
|
+
"bigint_year": "bigint",
|
475
|
+
"bigint_varchar": "varchar",
|
476
|
+
"bigint_bit": "decimal",
|
477
|
+
"bigint_json": "varbinary",
|
478
|
+
"bigint_enum": "varchar",
|
479
|
+
"bigint_set": "varchar",
|
480
|
+
"bigint_tinyblob": "text",
|
481
|
+
"bigint_mediumblob": "text",
|
482
|
+
"bigint_longblob": "longtext",
|
483
|
+
"bigint_blob": "text",
|
484
|
+
"bigint_tinytext": "text",
|
485
|
+
"bigint_mediumtext": "text",
|
486
|
+
"bigint_longtext": "longtext",
|
487
|
+
"bigint_text": "text",
|
488
|
+
"bigint_varbinary": "varbinary",
|
489
|
+
"bigint_binary": "binary",
|
490
|
+
"bigint_char": "binary",
|
491
|
+
"bigint_geometry": "varbinary",
|
492
|
+
"mediumint_date": "varchar",
|
493
|
+
"mediumint_time": "varchar",
|
494
|
+
"mediumint_datetime": "varchar",
|
495
|
+
"mediumint_year": "mediumint",
|
496
|
+
"mediumint_varchar": "varchar",
|
497
|
+
"mediumint_bit": "decimal",
|
498
|
+
"mediumint_json": "varbinary",
|
499
|
+
"mediumint_enum": "varchar",
|
500
|
+
"mediumint_set": "varchar",
|
501
|
+
"mediumint_tinyblob": "text",
|
502
|
+
"mediumint_mediumblob": "text",
|
503
|
+
"mediumint_longblob": "longtext",
|
504
|
+
"mediumint_blob": "text",
|
505
|
+
"mediumint_tinytext": "text",
|
506
|
+
"mediumint_mediumtext": "text",
|
507
|
+
"mediumint_longtext": "longtext",
|
508
|
+
"mediumint_text": "text",
|
509
|
+
"mediumint_varbinary": "varbinary",
|
510
|
+
"mediumint_binary": "binary",
|
511
|
+
"mediumint_char": "binary",
|
512
|
+
"mediumint_geometry": "varbinary",
|
513
|
+
"date_time": "datetime",
|
514
|
+
"date_datetime": "datetime",
|
515
|
+
"date_year": "varchar",
|
516
|
+
"date_varchar": "varchar",
|
517
|
+
"date_bit": "varbinary",
|
518
|
+
"date_json": "varbinary",
|
519
|
+
"date_enum": "varchar",
|
520
|
+
"date_set": "varchar",
|
521
|
+
"date_tinyblob": "text",
|
522
|
+
"date_mediumblob": "text",
|
523
|
+
"date_longblob": "longtext",
|
524
|
+
"date_blob": "text",
|
525
|
+
"date_tinytext": "text",
|
526
|
+
"date_mediumtext": "text",
|
527
|
+
"date_longtext": "longtext",
|
528
|
+
"date_text": "text",
|
529
|
+
"date_varbinary": "varbinary",
|
530
|
+
"date_binary": "binary",
|
531
|
+
"date_char": "binary",
|
532
|
+
"date_geometry": "varbinary",
|
533
|
+
"time_datetime": "datetime",
|
534
|
+
"time_year": "varchar",
|
535
|
+
"time_varchar": "varchar",
|
536
|
+
"time_bit": "varbinary",
|
537
|
+
"time_json": "varbinary",
|
538
|
+
"time_enum": "varchar",
|
539
|
+
"time_set": "varchar",
|
540
|
+
"time_tinyblob": "text",
|
541
|
+
"time_mediumblob": "text",
|
542
|
+
"time_longblob": "longtext",
|
543
|
+
"time_blob": "text",
|
544
|
+
"time_tinytext": "text",
|
545
|
+
"time_mediumtext": "text",
|
546
|
+
"time_longtext": "longtext",
|
547
|
+
"time_text": "text",
|
548
|
+
"time_varbinary": "varbinary",
|
549
|
+
"time_binary": "binary",
|
550
|
+
"time_char": "binary",
|
551
|
+
"time_geometry": "varbinary",
|
552
|
+
"datetime_year": "varchar",
|
553
|
+
"datetime_varchar": "varchar",
|
554
|
+
"datetime_bit": "varbinary",
|
555
|
+
"datetime_json": "varbinary",
|
556
|
+
"datetime_enum": "varchar",
|
557
|
+
"datetime_set": "varchar",
|
558
|
+
"datetime_tinyblob": "text",
|
559
|
+
"datetime_mediumblob": "text",
|
560
|
+
"datetime_longblob": "longtext",
|
561
|
+
"datetime_blob": "text",
|
562
|
+
"datetime_tinytext": "text",
|
563
|
+
"datetime_mediumtext": "text",
|
564
|
+
"datetime_longtext": "longtext",
|
565
|
+
"datetime_text": "text",
|
566
|
+
"datetime_varbinary": "varbinary",
|
567
|
+
"datetime_binary": "binary",
|
568
|
+
"datetime_char": "binary",
|
569
|
+
"datetime_geometry": "varbinary",
|
570
|
+
"year_varchar": "varchar",
|
571
|
+
"year_bit": "bigint",
|
572
|
+
"year_json": "varbinary",
|
573
|
+
"year_enum": "varchar",
|
574
|
+
"year_set": "varchar",
|
575
|
+
"year_tinyblob": "text",
|
576
|
+
"year_mediumblob": "text",
|
577
|
+
"year_longblob": "longtext",
|
578
|
+
"year_blob": "text",
|
579
|
+
"year_tinytext": "text",
|
580
|
+
"year_mediumtext": "text",
|
581
|
+
"year_longtext": "longtext",
|
582
|
+
"year_text": "text",
|
583
|
+
"year_varbinary": "varbinary",
|
584
|
+
"year_binary": "binary",
|
585
|
+
"year_char": "binary",
|
586
|
+
"year_geometry": "varbinary",
|
587
|
+
"varchar_bit": "varbinary",
|
588
|
+
"varchar_json": "varbinary",
|
589
|
+
"varchar_enum": "varchar",
|
590
|
+
"varchar_set": "varchar",
|
591
|
+
"varchar_tinyblob": "text",
|
592
|
+
"varchar_mediumblob": "text",
|
593
|
+
"varchar_longblob": "longtext",
|
594
|
+
"varchar_blob": "text",
|
595
|
+
"varchar_tinytext": "text",
|
596
|
+
"varchar_mediumtext": "text",
|
597
|
+
"varchar_longtext": "longtext",
|
598
|
+
"varchar_text": "text",
|
599
|
+
"varchar_varbinary": "varbinary",
|
600
|
+
"varchar_binary": "varbinary",
|
601
|
+
"varchar_char": "varchar",
|
602
|
+
"varchar_geometry": "varbinary",
|
603
|
+
"bit_json": "varbinary",
|
604
|
+
"bit_enum": "varbinary",
|
605
|
+
"bit_set": "varbinary",
|
606
|
+
"bit_tinyblob": "text",
|
607
|
+
"bit_mediumblob": "text",
|
608
|
+
"bit_longblob": "longtext",
|
609
|
+
"bit_blob": "text",
|
610
|
+
"bit_tinytext": "tinytext",
|
611
|
+
"bit_mediumtext": "mediumtext",
|
612
|
+
"bit_longtext": "longtext",
|
613
|
+
"bit_text": "text",
|
614
|
+
"bit_varbinary": "varbinary",
|
615
|
+
"bit_binary": "binary",
|
616
|
+
"bit_char": "binary",
|
617
|
+
"bit_geometry": "varbinary",
|
618
|
+
"json_enum": "varbinary",
|
619
|
+
"json_set": "varbinary",
|
620
|
+
"json_tinyblob": "longtext",
|
621
|
+
"json_mediumblob": "longtext",
|
622
|
+
"json_longblob": "longtext",
|
623
|
+
"json_blob": "longtext",
|
624
|
+
"json_tinytext": "longtext",
|
625
|
+
"json_mediumtext": "longtext",
|
626
|
+
"json_longtext": "longtext",
|
627
|
+
"json_text": "longtext",
|
628
|
+
"json_varbinary": "varbinary",
|
629
|
+
"json_binary": "varbinary",
|
630
|
+
"json_char": "varbinary",
|
631
|
+
"json_geometry": "varbinary",
|
632
|
+
"enum_set": "varchar",
|
633
|
+
"enum_tinyblob": "text",
|
634
|
+
"enum_mediumblob": "text",
|
635
|
+
"enum_longblob": "longtext",
|
636
|
+
"enum_blob": "text",
|
637
|
+
"enum_tinytext": "text",
|
638
|
+
"enum_mediumtext": "text",
|
639
|
+
"enum_longtext": "longtext",
|
640
|
+
"enum_text": "text",
|
641
|
+
"enum_varbinary": "varbinary",
|
642
|
+
"enum_binary": "binary",
|
643
|
+
"enum_char": "binary",
|
644
|
+
"enum_geometry": "varbinary",
|
645
|
+
"set_tinyblob": "text",
|
646
|
+
"set_mediumblob": "text",
|
647
|
+
"set_longblob": "longtext",
|
648
|
+
"set_blob": "text",
|
649
|
+
"set_tinytext": "text",
|
650
|
+
"set_mediumtext": "text",
|
651
|
+
"set_longtext": "longtext",
|
652
|
+
"set_text": "text",
|
653
|
+
"set_varbinary": "varbinary",
|
654
|
+
"set_binary": "binary",
|
655
|
+
"set_char": "binary",
|
656
|
+
"set_geometry": "varbinary",
|
657
|
+
"tinyblob_mediumblob": "text",
|
658
|
+
"tinyblob_longblob": "longtext",
|
659
|
+
"tinyblob_blob": "text",
|
660
|
+
"tinyblob_tinytext": "tinytext",
|
661
|
+
"tinyblob_mediumtext": "mediumtext",
|
662
|
+
"tinyblob_longtext": "longtext",
|
663
|
+
"tinyblob_text": "text",
|
664
|
+
"tinyblob_varbinary": "text",
|
665
|
+
"tinyblob_binary": "text",
|
666
|
+
"tinyblob_char": "text",
|
667
|
+
"tinyblob_geometry": "longtext",
|
668
|
+
"mediumblob_longblob": "longtext",
|
669
|
+
"mediumblob_blob": "text",
|
670
|
+
"mediumblob_tinytext": "text",
|
671
|
+
"mediumblob_mediumtext": "mediumtext",
|
672
|
+
"mediumblob_longtext": "longtext",
|
673
|
+
"mediumblob_text": "text",
|
674
|
+
"mediumblob_varbinary": "text",
|
675
|
+
"mediumblob_binary": "text",
|
676
|
+
"mediumblob_char": "text",
|
677
|
+
"mediumblob_geometry": "longtext",
|
678
|
+
"longblob_blob": "longtext",
|
679
|
+
"longblob_tinytext": "longtext",
|
680
|
+
"longblob_mediumtext": "longtext",
|
681
|
+
"longblob_longtext": "longtext",
|
682
|
+
"longblob_text": "longtext",
|
683
|
+
"longblob_varbinary": "longtext",
|
684
|
+
"longblob_binary": "longtext",
|
685
|
+
"longblob_char": "longtext",
|
686
|
+
"longblob_geometry": "longtext",
|
687
|
+
"blob_tinytext": "text",
|
688
|
+
"blob_mediumtext": "mediumtext",
|
689
|
+
"blob_longtext": "longtext",
|
690
|
+
"blob_text": "text",
|
691
|
+
"blob_varbinary": "text",
|
692
|
+
"blob_binary": "text",
|
693
|
+
"blob_char": "text",
|
694
|
+
"blob_geometry": "longtext",
|
695
|
+
"tinytext_mediumtext": "text",
|
696
|
+
"tinytext_longtext": "longtext",
|
697
|
+
"tinytext_text": "text",
|
698
|
+
"tinytext_varbinary": "tinytext",
|
699
|
+
"tinytext_binary": "tinytext",
|
700
|
+
"tinytext_char": "text",
|
701
|
+
"tinytext_geometry": "longtext",
|
702
|
+
"mediumtext_longtext": "longtext",
|
703
|
+
"mediumtext_text": "text",
|
704
|
+
"mediumtext_varbinary": "mediumtext",
|
705
|
+
"mediumtext_binary": "mediumtext",
|
706
|
+
"mediumtext_char": "text",
|
707
|
+
"mediumtext_geometry": "longtext",
|
708
|
+
"longtext_text": "longtext",
|
709
|
+
"longtext_varbinary": "longtext",
|
710
|
+
"longtext_binary": "longtext",
|
711
|
+
"longtext_char": "longtext",
|
712
|
+
"longtext_geometry": "longtext",
|
713
|
+
"text_varbinary": "text",
|
714
|
+
"text_binary": "text",
|
715
|
+
"text_char": "text",
|
716
|
+
"text_geometry": "longtext",
|
717
|
+
"varbinary_binary": "varbinary",
|
718
|
+
"varbinary_char": "varbinary",
|
719
|
+
"varbinary_geometry": "varbinary",
|
720
|
+
"binary_char": "binary",
|
721
|
+
"binary_geometry": "varbinary",
|
722
|
+
"char_geometry": "varbinary"
|
723
|
+
};
|
724
|
+
if (type1 == type2)
|
725
|
+
return type1;
|
726
|
+
//@ts-ignore
|
727
|
+
//ex. tinyint_smallint or smallint_tinyint
|
728
|
+
return typeMapping[type1 + "_" + type2] || typeMapping[type2 + "_" + type1];
|
287
729
|
}
|
288
730
|
exports.unionTypeResult = unionTypeResult;
|
289
|
-
function analiseQuerySpecification(querySpec, dbSchema, namedParameters, fromColumns) {
|
731
|
+
function analiseQuerySpecification(querySpec, dbSchema, withSchema, namedParameters, fromColumns) {
|
290
732
|
const context = {
|
291
733
|
dbSchema,
|
734
|
+
withSchema,
|
292
735
|
parameters: [],
|
293
736
|
constraints: [],
|
294
737
|
fromColumns: fromColumns
|
@@ -347,14 +790,16 @@ function walkQuerySpecification(context, querySpec) {
|
|
347
790
|
}
|
348
791
|
querySpec.selectItemList().selectItem().forEach(selectItem => {
|
349
792
|
const tableWild = selectItem.tableWild(); //ex. t1.*
|
350
|
-
if (tableWild
|
793
|
+
if (tableWild) {
|
351
794
|
tableWild.identifier().forEach(tabWild => {
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
795
|
+
if (tableWild.MULT_OPERATOR()) {
|
796
|
+
const prefix = tabWild.text;
|
797
|
+
const columns = (0, select_columns_1.selectAllColumns)(prefix, context.fromColumns);
|
798
|
+
columns.forEach(col => {
|
799
|
+
const colType = freshVar(col.columnName, col.columnType);
|
800
|
+
listType.push(colType);
|
801
|
+
});
|
802
|
+
}
|
358
803
|
});
|
359
804
|
}
|
360
805
|
else {
|
@@ -1174,11 +1619,11 @@ function walkFunctionParameters(context, simpleExprFunction, params) {
|
|
1174
1619
|
}
|
1175
1620
|
function walkSubquery(context, queryExpressionParens) {
|
1176
1621
|
const querySpec = (0, parse_1.getQuerySpecificationsFromSelectStatement)(queryExpressionParens);
|
1177
|
-
const subqueryColumns = (0, select_columns_1.getColumnsFrom)(querySpec[0], context.dbSchema);
|
1622
|
+
const subqueryColumns = (0, select_columns_1.getColumnsFrom)(querySpec[0], context.dbSchema, context.withSchema);
|
1178
1623
|
const newContext = Object.assign(Object.assign({}, context), { fromColumns: context.fromColumns.concat(subqueryColumns) });
|
1179
1624
|
const typeInferResult = walkQuerySpecification(newContext, querySpec[0]);
|
1180
1625
|
for (let queryIndex = 1; queryIndex < querySpec.length; queryIndex++) { //union (if have any)
|
1181
|
-
const unionColumns = (0, select_columns_1.getColumnsFrom)(querySpec[queryIndex], context.dbSchema);
|
1626
|
+
const unionColumns = (0, select_columns_1.getColumnsFrom)(querySpec[queryIndex], context.dbSchema, context.withSchema);
|
1182
1627
|
const unionNewContext = Object.assign(Object.assign({}, context), { fromColumns: context.fromColumns.concat(unionColumns) });
|
1183
1628
|
const unionResult = walkQuerySpecification(unionNewContext, querySpec[queryIndex]);
|
1184
1629
|
typeInferResult.types.forEach((field, fieldIndex) => {
|