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.
@@ -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): 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,CA8BvH;AAID,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAqD1H;AAED,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAgC1H;AAED,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,gBAAgB,CAmE1H;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAoBjG;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,eAiBjG;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,QAAQ,EAAE,YAAY,EAAE,eAmBjG;AAGD,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,sBAAsB,GAAG,eAAe,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,mBAAmB,CAY1K;AAeD,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,aAMjE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,yBAAyB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,mBAAmB,CAsClL;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,SAAS,EAAE,CAO9F;AAgBD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,yBAAyB,GAAG,YAAY,CA2DpH;AAo3BD,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,GAAG,IAAI,CA8BpG"}
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
- const typeOrder = ['tinyint', 'smallint', 'mediumint', 'int', 'bigint', 'float', 'double', 'varchar'];
283
- const indexType1 = typeOrder.indexOf(type1);
284
- const indexType2 = typeOrder.indexOf(type2);
285
- const max = Math.max(indexType1, indexType2);
286
- return typeOrder[max];
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 === null || tableWild === void 0 ? void 0 : tableWild.MULT_OPERATOR()) {
793
+ if (tableWild) {
351
794
  tableWild.identifier().forEach(tabWild => {
352
- const prefix = tabWild.text;
353
- const columns = (0, select_columns_1.selectAllColumns)(prefix, context.fromColumns);
354
- columns.forEach(col => {
355
- const colType = freshVar(col.columnName, col.columnType);
356
- listType.push(colType);
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) => {