typesql-cli 0.7.0 → 0.7.2
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/code-generator.d.ts.map +1 -1
- package/code-generator.js +51 -30
- package/code-generator.js.map +1 -1
- package/describe-dynamic-query.d.ts.map +1 -1
- package/describe-dynamic-query.js +47 -31
- package/describe-dynamic-query.js.map +1 -1
- package/mysql-query-analyzer/infer-column-nullability.d.ts.map +1 -1
- package/mysql-query-analyzer/infer-column-nullability.js +3 -0
- package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
- package/mysql-query-analyzer/parse.js +0 -37
- package/mysql-query-analyzer/parse.js.map +1 -1
- package/mysql-query-analyzer/select-columns.d.ts +7 -1
- package/mysql-query-analyzer/select-columns.d.ts.map +1 -1
- package/mysql-query-analyzer/select-columns.js +17 -9
- package/mysql-query-analyzer/select-columns.js.map +1 -1
- package/mysql-query-analyzer/traverse.d.ts +1 -1
- package/mysql-query-analyzer/traverse.d.ts.map +1 -1
- package/mysql-query-analyzer/traverse.js +71 -54
- package/mysql-query-analyzer/traverse.js.map +1 -1
- package/mysql-query-analyzer/types.d.ts +6 -0
- package/mysql-query-analyzer/types.d.ts.map +1 -1
- package/package.json +1 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getSimpleExpressions = exports.getTopLevelAndExpr = exports.getExpressions = exports.extractOriginalSql = exports.findColumn = exports.findColumnSchema = exports.functionAlias = exports.splitName = exports.extractFieldsFromUsingClause = exports.getColumnName = exports.selectAllColumns = exports.filterColumns = void 0;
|
3
|
+
exports.getSimpleExpressions = exports.getTopLevelAndExpr = exports.getExpressions = exports.extractOriginalSql = exports.findColumnOrNull = exports.findColumn = exports.findColumnSchema = exports.functionAlias = exports.splitName = exports.extractFieldsFromUsingClause = exports.getColumnName = exports.selectAllColumns = exports.filterColumns = void 0;
|
4
4
|
const antlr4ts_1 = require("antlr4ts");
|
5
5
|
const Interval_1 = require("antlr4ts/misc/Interval");
|
6
6
|
const ts_mysql_parser_1 = require("ts-mysql-parser");
|
@@ -201,6 +201,14 @@ function findColumnSchema(tableName, columnName, dbSchema) {
|
|
201
201
|
}
|
202
202
|
exports.findColumnSchema = findColumnSchema;
|
203
203
|
function findColumn(fieldName, columns) {
|
204
|
+
const found = findColumnOrNull(fieldName, columns);
|
205
|
+
if (!found) {
|
206
|
+
throw Error('column not found:' + JSON.stringify(fieldName));
|
207
|
+
}
|
208
|
+
return found;
|
209
|
+
}
|
210
|
+
exports.findColumn = findColumn;
|
211
|
+
function findColumnOrNull(fieldName, columns) {
|
204
212
|
//TODO - Put tableAlias always ''
|
205
213
|
const functionType = exports.functionAlias.find(col => col.column.toLowerCase() == fieldName.name.toLowerCase());
|
206
214
|
if (functionType) {
|
@@ -215,12 +223,9 @@ function findColumn(fieldName, columns) {
|
|
215
223
|
}
|
216
224
|
const found = columns.find(col => col.columnName.toLowerCase() == fieldName.name.toLowerCase() &&
|
217
225
|
(fieldName.prefix == '' || fieldName.prefix == col.tableAlias || fieldName.prefix == col.table));
|
218
|
-
if (!found) {
|
219
|
-
throw Error('column not found:' + JSON.stringify(fieldName));
|
220
|
-
}
|
221
226
|
return found;
|
222
227
|
}
|
223
|
-
exports.
|
228
|
+
exports.findColumnOrNull = findColumnOrNull;
|
224
229
|
function extractOriginalSql(rule) {
|
225
230
|
var _a, _b;
|
226
231
|
const startIndex = rule.start.startIndex;
|
@@ -236,14 +241,17 @@ function getExpressions(ctx, exprType) {
|
|
236
241
|
return tokens;
|
237
242
|
}
|
238
243
|
exports.getExpressions = getExpressions;
|
239
|
-
function collectExpr(tokens, parent, exprType) {
|
244
|
+
function collectExpr(tokens, parent, exprType, isSubQuery = false) {
|
240
245
|
if (parent instanceof exprType) {
|
241
|
-
tokens.push(
|
246
|
+
tokens.push({
|
247
|
+
expr: parent,
|
248
|
+
isSubQuery
|
249
|
+
});
|
242
250
|
}
|
243
251
|
for (let i = 0; i < parent.childCount; i++) {
|
244
252
|
const child = parent.getChild(i);
|
245
|
-
if (child instanceof antlr4ts_1.RuleContext
|
246
|
-
collectExpr(tokens, child, exprType);
|
253
|
+
if (child instanceof antlr4ts_1.RuleContext) {
|
254
|
+
collectExpr(tokens, child, exprType, (isSubQuery || child instanceof ts_mysql_parser_1.SimpleExprSubQueryContext));
|
247
255
|
}
|
248
256
|
}
|
249
257
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"select-columns.js","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/select-columns.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"select-columns.js","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/select-columns.ts"],"names":[],"mappings":";;;AAAA,uCAA0D;AAE1D,qDAAkD;AAElD,qDAMyB;AAGzB,+DAAwE;AAExE,SAAgB,aAAa,CAAC,QAAwB,EAAE,UAAuB,EAAE,UAA8B,EAAE,KAAgB;IAC7H,MAAM,aAAa,GAAG,QAAQ;SACzB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SACjI,GAAG,CAAC,WAAW,CAAC,EAAE;QAEf,+CAA+C;QAC/C,MAAM,CAAC,GAAc;YACjB,UAAU,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAA,qDAA+B,EAAC,WAAW,CAAC;YACxF,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS;SAClH,CAAA;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IACP,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACtD,MAAM,CAAC,GAAc;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,UAAU,EAAE,UAAU,IAAI,EAAE;YAC5B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO;SACvB,CAAA;QACD,OAAO,CAAC,CAAC;IACb,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAC;AAElB,CAAC;AAzBD,sCAyBC;AAED,SAAgB,gBAAgB,CAAC,WAAmB,EAAE,WAAwB;IAC1E,MAAM,UAAU,GAAgB,EAAE,CAAC,CAAC,eAAe;IACnD,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,IAAI,WAAW,IAAI,EAAE,IAAI,WAAW,IAAI,MAAM,CAAC,UAAU,IAAI,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE;YACtF,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;IACL,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACtB,CAAC;AARD,4CAQC;AAED,SAAgB,aAAa,CAAC,UAA6B;;IACvD,MAAM,KAAK,GAAG,MAAA,MAAA,UAAU,CAAC,WAAW,EAAE,0CAAE,UAAU,EAAE,0CAAE,IAAI,CAAC;IAC3D,IAAI,KAAK,EAAE;QACP,OAAO,KAAK,CAAC;KAChB;IACD,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAChD,IAAI,UAAU,GAAG,kBAAkB,CAAC,UAAU,CAAC,IAAI,EAAG,CAAE,CAAC,CAAC,qBAAqB;IAC/E,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,4CAA0B,EAAE;QACvE,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;KACzC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAXD,sCAWC;AAED,SAAgB,4BAA4B,CAAC,kBAAsC;;IAC/E,MAAM,iBAAiB,GAAG,MAAA,kBAAkB,CAAC,6BAA6B,EAAE,0CAAE,cAAc,EAAE,CAAC;IAC/F,IAAI,iBAAiB,EAAE;QACnB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;KACvE;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAND,oEAMC;AAGD,SAAgB,SAAS,CAAC,SAAiB;IACvC,MAAM,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAc;QACtB,IAAI,EAAE,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAA;IACD,MAAM,YAAY,GAAc;QAC5B,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM;KACxB,CAAA;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAXD,8BAWC;AAED,SAAS,eAAe,CAAC,IAAY;IACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/F,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAEY,QAAA,aAAa,GAAmB;IACzC;QACI,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KAEZ;IACD;QACI,MAAM,EAAE,mBAAmB;QAC3B,WAAW,EAAE,WAAW;QACxB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KAEZ;IACD;QACI,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KAEZ;IACD;QACI,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,UAAU;QACvB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KAEZ;IACD;QACI,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,KAAK;QACb,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,QAAQ;QACrB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;IACD;QACI,MAAM,EAAE,MAAM;QACd,WAAW,EAAE,MAAM;QACnB,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;KACZ;CACJ,CAAA;AAED,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,UAAkB,EAAE,QAAwB;IAC5F,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,WAAW,EAAE;WAC9E,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7D,OAAO,KAAK,CAAC;AACjB,CAAC;AAJD,4CAIC;AAED,SAAgB,UAAU,CAAC,SAAoB,EAAE,OAAoB;IACjE,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;KAChE;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAPD,gCAOC;AAED,SAAgB,gBAAgB,CAAC,SAAoB,EAAE,OAAoB;IACvE,iCAAiC;IACjC,MAAM,YAAY,GAAG,qBAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACzG,IAAI,YAAY,EAAE;QACd,MAAM,MAAM,GAAc;YACtB,UAAU,EAAE,YAAY,CAAC,MAAM;YAC/B,UAAU,EAAE,IAAA,qDAA+B,EAAC,YAAY,CAAC;YACzD,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,OAAO,EAAE,YAAY,CAAC,OAAO;YAC7B,KAAK,EAAE,EAAE;SACZ,CAAA;QACD,OAAO,MAAM,CAAC;KACjB;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE;QAC1F,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAErG,OAAO,KAAK,CAAC;AACjB,CAAC;AAjBD,4CAiBC;AAED,SAAgB,kBAAkB,CAAC,IAAuB;;IAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;IACzC,MAAM,SAAS,GAAG,CAAA,MAAA,IAAI,CAAC,IAAI,0CAAE,SAAS,KAAI,UAAU,CAAC;IACrD,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAA,IAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,OAAO,MAAM,CAAC;AAClB,CAAC;AAPD,gDAOC;AAOD,SAAgB,cAAc,CAAC,GAAgB,EAAE,QAAa;IAE1D,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AAClB,CAAC;AALD,wCAKC;AAED,SAAS,WAAW,CAAC,MAAc,EAAE,MAAmB,EAAE,QAAa,EAAE,UAAU,GAAG,KAAK;IAEvF,IAAI,MAAM,YAAY,QAAQ,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,MAAM;YACZ,UAAU;SACb,CAAC,CAAC;KACN;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,YAAY,sBAAW,EAAE;YAC9B,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,UAAU,IAAI,KAAK,YAAY,2CAAyB,CAAC,CAAC,CAAC;SACpG;KACJ;AACL,CAAC;AAOD,SAAgB,kBAAkB,CAAC,IAAiB,EAAE,GAA4B;IAE9E,IAAI,IAAI,YAAY,gCAAc,IAAI,IAAI,YAAY,gCAAc,IAAI,IAAI,YAAY,+BAAa,EAAE;QACnG,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC;YACL,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,SAAS;SAClB,CAAC,CAAC;KACN;SAAM;QACH,GAAG,CAAC,IAAI,CAAC;YACL,QAAQ,EAAE,KAAK;YACf,IAAI;SACP,CAAC,CAAC;KACN;AACL,CAAC;AAhBD,gDAgBC;AAED,SAAgB,oBAAoB,CAAC,GAAgB;IAEjD,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAClB,CAAC;AALD,oDAKC;AAED,SAAS,iBAAiB,CAAC,MAAqB,EAAE,MAAmB;IAEjE,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACvB;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,YAAY,sBAAW,EAAE;YAC9B,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACpC;KACJ;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAc;IACtC,OAAO,GAAG,YAAY,2CAAyB;WACxC,GAAG,YAAY,4CAA0B;WACzC,GAAG,YAAY,kDAAgC;WAC/C,GAAG,YAAY,2CAAyB;WACxC,GAAG,YAAY,0CAAwB;WACvC,GAAG,YAAY,0CAAwB;WACvC,GAAG,YAAY,8CAA4B;WAC3C,GAAG,YAAY,sCAAoB;WACnC,GAAG,YAAY,oDAAkC;WACjD,GAAG,YAAY,oDAAkC;WACjD,GAAG,YAAY,yCAAuB;WACtC,GAAG,YAAY,wCAAsB;WACrC,GAAG,YAAY,sCAAoB;WACnC,GAAG,YAAY,uCAAqB;WACpC,GAAG,YAAY,2CAAyB;WACxC,GAAG,YAAY,uCAAqB;WACpC,GAAG,YAAY,wCAAsB;WACrC,GAAG,YAAY,yCAAuB;WACtC,GAAG,YAAY,uCAAqB;WACpC,GAAG,YAAY,uCAAqB;WACpC,GAAG,YAAY,0CAAwB;WACvC,GAAG,YAAY,+CAA6B;WAC5C,GAAG,YAAY,0CAAwB;WACvC,GAAG,YAAY,yCAAuB;WACtC,GAAG,YAAY,2CAAyB,CAAC;AACpD,CAAC"}
|
@@ -36,7 +36,7 @@ type QuerySpecificationResult = {
|
|
36
36
|
columns: TypeAndNullInfer[];
|
37
37
|
fromColumns: ColumnDef[];
|
38
38
|
};
|
39
|
-
export declare function traverseQuerySpecification(querySpec: QuerySpecificationContext, traverseContext: TraverseContext
|
39
|
+
export declare function traverseQuerySpecification(querySpec: QuerySpecificationContext, traverseContext: TraverseContext): QuerySpecificationResult;
|
40
40
|
export declare function traverseWithClause(withClause: WithClauseContext, traverseContext: TraverseContext): void;
|
41
41
|
export declare function filterColumns(dbSchema: ColumnSchema[], withSchema: ColumnDef[], tableAlias: string | undefined, table: FieldName): ColumnDef[];
|
42
42
|
export declare function selectAllColumns(tablePrefix: string, fromColumns: ColumnDef[]): ColumnDef[];
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,sBAAsB,EAAkB,WAAW,EAAuJ,sBAAsB,EAA2O,YAAY,EAAoH,yBAAyB,EAA4C,sBAAsB,EAA4c,sBAAsB,EAA6B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG3wC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAgB,aAAa,
|
1
|
+
{"version":3,"file":"traverse.d.ts","sourceRoot":"","sources":["../../../src/mysql-query-analyzer/traverse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoD,sBAAsB,EAAkB,WAAW,EAAuJ,sBAAsB,EAA2O,YAAY,EAAoH,yBAAyB,EAA4C,sBAAsB,EAA4c,sBAAsB,EAA6B,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAG3wC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAgB,aAAa,EAAE,eAAe,EAAQ,gBAAgB,EAAyB,MAAM,SAAS,CAAC;AAKtL,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,GAAG,qBAAqB,CAAC;AAE3H,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,eAAe,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,cAAc,CAAC;CAClC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,UAAU,EAAE,gBAAgB,EAAE,CAAC;CAClC,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC9B,CAAA;AAED,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,iGAyCnH;AAsDD,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,GAAG,qBAAqB,CAmHxI;AAgFD,wBAAgB,uBAAuB,CAAC,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,GAAG,qBAAqB,CA6BxI;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,sBAAsB,EAAE,eAAe,EAAE,eAAe,eAIzG;AA6FD,KAAK,wBAAwB,GAAG;IAC5B,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,WAAW,EAAE,SAAS,EAAE,CAAC;CAC5B,CAAA;AAgBD,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,yBAAyB,EAAE,eAAe,EAAE,eAAe,GAAG,wBAAwB,CA6C3I;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,eAAe,QA2BjG;AAy2CD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,YAAY,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAgB9I;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAO3F;AAYD,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,WAmCpG;AAaD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,OAAO,CAkCjG"}
|
@@ -18,8 +18,12 @@ function traverseQueryContext(queryContext, dbSchema, namedParameters) {
|
|
18
18
|
dbSchema,
|
19
19
|
parameters,
|
20
20
|
fromColumns: [],
|
21
|
+
subQueryColumns: [],
|
22
|
+
subQuery: false,
|
23
|
+
where: false,
|
21
24
|
withSchema: [],
|
22
25
|
dynamicSqlInfo: {
|
26
|
+
with: [],
|
23
27
|
select: [],
|
24
28
|
from: [],
|
25
29
|
where: []
|
@@ -309,14 +313,14 @@ function traverseQueryExpressionOrParens(queryExpressionOrParens, traverseContex
|
|
309
313
|
}
|
310
314
|
throw Error("walkQueryExpressionOrParens");
|
311
315
|
}
|
312
|
-
function traverseQueryExpression(queryExpression, traverseContext,
|
316
|
+
function traverseQueryExpression(queryExpression, traverseContext, recursiveNames) {
|
313
317
|
const withClause = queryExpression.withClause();
|
314
318
|
if (withClause) {
|
315
319
|
traverseWithClause(withClause, traverseContext);
|
316
320
|
}
|
317
321
|
const queryExpressionBody = queryExpression.queryExpressionBody();
|
318
322
|
if (queryExpressionBody) {
|
319
|
-
return traverseQueryExpressionBody(queryExpressionBody, traverseContext,
|
323
|
+
return traverseQueryExpressionBody(queryExpressionBody, traverseContext, recursiveNames);
|
320
324
|
}
|
321
325
|
const queryExpressionParens = queryExpression.queryExpressionParens();
|
322
326
|
if (queryExpressionParens) {
|
@@ -327,7 +331,7 @@ function traverseQueryExpression(queryExpression, traverseContext, subQuery = fa
|
|
327
331
|
function traverseQueryExpressionParens(queryExpressionParens, traverseContext, recursiveNames) {
|
328
332
|
const queryExpression = queryExpressionParens.queryExpression();
|
329
333
|
if (queryExpression) {
|
330
|
-
return traverseQueryExpression(queryExpression, traverseContext,
|
334
|
+
return traverseQueryExpression(queryExpression, traverseContext, recursiveNames);
|
331
335
|
}
|
332
336
|
const queryExpressionParens2 = queryExpressionParens.queryExpressionParens();
|
333
337
|
if (queryExpressionParens2) {
|
@@ -339,16 +343,16 @@ function createUnionVar(type, name) {
|
|
339
343
|
const newVar = Object.assign(Object.assign({}, type), { name: name, table: '' });
|
340
344
|
return newVar;
|
341
345
|
}
|
342
|
-
function traverseQueryExpressionBody(queryExpressionBody, traverseContext,
|
346
|
+
function traverseQueryExpressionBody(queryExpressionBody, traverseContext, recursiveNames) {
|
343
347
|
const allQueries = (0, parse_1.getAllQuerySpecificationsFromSelectStatement)(queryExpressionBody);
|
344
348
|
const [first, ...unionQuerySpec] = allQueries;
|
345
|
-
const mainQueryResult = traverseQuerySpecification(first, traverseContext
|
349
|
+
const mainQueryResult = traverseQuerySpecification(first, traverseContext);
|
346
350
|
const resultTypes = mainQueryResult.columns.map((t, index) => unionQuerySpec.length == 0 ? t.type : createUnionVar(t.type, recursiveNames && recursiveNames.length > 0 ? recursiveNames[index] : t.name)); //TODO mover para traversequeryspecificat?
|
347
351
|
for (let queryIndex = 0; queryIndex < unionQuerySpec.length; queryIndex++) {
|
348
352
|
const columnNames = recursiveNames && recursiveNames.length > 0 ? recursiveNames : mainQueryResult.columns.map(col => col.name);
|
349
353
|
const newFromColumns = recursiveNames ? renameFromColumns(mainQueryResult.columns, columnNames) : [];
|
350
354
|
const unionQuery = unionQuerySpec[queryIndex];
|
351
|
-
const unionResult = traverseQuerySpecification(unionQuery, Object.assign(Object.assign({}, traverseContext), { fromColumns: newFromColumns })
|
355
|
+
const unionResult = traverseQuerySpecification(unionQuery, Object.assign(Object.assign({}, traverseContext), { fromColumns: newFromColumns }));
|
352
356
|
resultTypes.forEach((t2, index) => {
|
353
357
|
mainQueryResult.columns[index].notNull = mainQueryResult.columns[index].notNull && unionResult.columns[index].notNull;
|
354
358
|
traverseContext.constraints.push({
|
@@ -388,16 +392,16 @@ function renameFromColumns(fromColumns, recursiveNames) {
|
|
388
392
|
});
|
389
393
|
return newFromColumns;
|
390
394
|
}
|
391
|
-
function traverseQuerySpecification(querySpec, traverseContext
|
395
|
+
function traverseQuerySpecification(querySpec, traverseContext) {
|
392
396
|
const fromClause = querySpec.fromClause();
|
393
|
-
const fromColumnsFrom = fromClause ? traverseFromClause(fromClause, traverseContext
|
394
|
-
const allColumns = subQuery ? traverseContext.fromColumns.concat(fromColumnsFrom) : fromColumnsFrom; //(... where id = t1.id)
|
395
|
-
const selectItemListResult = traverseSelectItemList(querySpec.selectItemList(), Object.assign(Object.assign({}, traverseContext), { fromColumns: allColumns })
|
397
|
+
const fromColumnsFrom = fromClause ? traverseFromClause(fromClause, traverseContext) : [];
|
398
|
+
const allColumns = traverseContext.subQuery ? traverseContext.fromColumns.concat(fromColumnsFrom) : fromColumnsFrom; //(... where id = t1.id)
|
399
|
+
const selectItemListResult = traverseSelectItemList(querySpec.selectItemList(), Object.assign(Object.assign({}, traverseContext), { fromColumns: allColumns, subQueryColumns: fromColumnsFrom }));
|
396
400
|
const whereClause = querySpec.whereClause();
|
397
401
|
//TODO - HAVING, BLAH
|
398
402
|
if (whereClause) {
|
399
403
|
const whereExpr = whereClause === null || whereClause === void 0 ? void 0 : whereClause.expr();
|
400
|
-
traverseExpr(whereExpr, Object.assign(Object.assign({}, traverseContext), { fromColumns: allColumns
|
404
|
+
traverseExpr(whereExpr, Object.assign(Object.assign({}, traverseContext), { fromColumns: allColumns, subQueryColumns: fromColumnsFrom, where: !traverseContext.subQuery }));
|
401
405
|
}
|
402
406
|
const columnNullability = (0, infer_column_nullability_1.inferNotNull)(querySpec, traverseContext.dbSchema, allColumns);
|
403
407
|
const columns = selectItemListResult.types.map((t, index) => {
|
@@ -432,7 +436,7 @@ exports.traverseQuerySpecification = traverseQuerySpecification;
|
|
432
436
|
function traverseWithClause(withClause, traverseContext) {
|
433
437
|
//result1, result2
|
434
438
|
withClause.commonTableExpression().forEach(commonTableExpression => {
|
435
|
-
var _a;
|
439
|
+
var _a, _b;
|
436
440
|
const identifier = commonTableExpression.identifier().text;
|
437
441
|
const recursiveNames = withClause.RECURSIVE_SYMBOL() ? ((_a = commonTableExpression.columnInternalRefList()) === null || _a === void 0 ? void 0 : _a.columnInternalRef().map(t => t.text)) || [] : undefined;
|
438
442
|
const subQuery = commonTableExpression.subquery();
|
@@ -447,16 +451,25 @@ function traverseWithClause(withClause, traverseContext) {
|
|
447
451
|
};
|
448
452
|
traverseContext.withSchema.push(withCol);
|
449
453
|
});
|
454
|
+
(_b = traverseContext.dynamicSqlInfo.with) === null || _b === void 0 ? void 0 : _b.push({
|
455
|
+
fragment: (0, select_columns_1.extractOriginalSql)(commonTableExpression) + '',
|
456
|
+
relation: identifier,
|
457
|
+
fields: [],
|
458
|
+
dependOnFields: [],
|
459
|
+
dependOnParams: [],
|
460
|
+
parameters: [],
|
461
|
+
dependOn: []
|
462
|
+
});
|
450
463
|
});
|
451
464
|
}
|
452
465
|
exports.traverseWithClause = traverseWithClause;
|
453
|
-
function traverseFromClause(fromClause, traverseContext
|
466
|
+
function traverseFromClause(fromClause, traverseContext) {
|
454
467
|
var _a;
|
455
468
|
const tableReferenceList = (_a = fromClause.tableReferenceList()) === null || _a === void 0 ? void 0 : _a.tableReference();
|
456
|
-
const fromColumns = tableReferenceList ? traverseTableReferenceList(tableReferenceList, traverseContext, null
|
469
|
+
const fromColumns = tableReferenceList ? traverseTableReferenceList(tableReferenceList, traverseContext, null) : [];
|
457
470
|
return fromColumns;
|
458
471
|
}
|
459
|
-
function traverseTableReferenceList(tableReferenceList, traverseContext, currentFragment
|
472
|
+
function traverseTableReferenceList(tableReferenceList, traverseContext, currentFragment) {
|
460
473
|
const result = [];
|
461
474
|
const fragements = [];
|
462
475
|
tableReferenceList.forEach(tab => {
|
@@ -529,7 +542,7 @@ function traverseTableReferenceList(tableReferenceList, traverseContext, current
|
|
529
542
|
traverseExpr(onClause, Object.assign(Object.assign({}, traverseContext), { fromColumns: allJoinedColumns.flatMap(c => c).concat(result) }));
|
530
543
|
const columns = (0, select_columns_1.getExpressions)(onClause, ts_mysql_parser_1.SimpleExprColumnRefContext);
|
531
544
|
columns.forEach(columnRef => {
|
532
|
-
const fieldName = (0, select_columns_1.splitName)(columnRef.text);
|
545
|
+
const fieldName = (0, select_columns_1.splitName)(columnRef.expr.text);
|
533
546
|
if ((innerJoinFragment === null || innerJoinFragment === void 0 ? void 0 : innerJoinFragment.relation) != fieldName.prefix) {
|
534
547
|
innerJoinFragment.parentRelation = fieldName.prefix;
|
535
548
|
}
|
@@ -549,7 +562,7 @@ function traverseTableReferenceList(tableReferenceList, traverseContext, current
|
|
549
562
|
});
|
550
563
|
});
|
551
564
|
});
|
552
|
-
if (!subQuery) {
|
565
|
+
if (!traverseContext.subQuery) {
|
553
566
|
traverseContext.dynamicSqlInfo.from = fragements;
|
554
567
|
}
|
555
568
|
return result;
|
@@ -558,7 +571,7 @@ function traverseTableFactor(tableFactor, traverseContext, currentFragment) {
|
|
558
571
|
var _a;
|
559
572
|
const singleTable = tableFactor.singleTable();
|
560
573
|
if (singleTable) {
|
561
|
-
return traverseSingleTable(singleTable, traverseContext.dbSchema, traverseContext.withSchema, currentFragment);
|
574
|
+
return traverseSingleTable(singleTable, traverseContext.dbSchema, traverseContext.withSchema, currentFragment, traverseContext.dynamicSqlInfo.with);
|
562
575
|
}
|
563
576
|
const derivadTable = tableFactor.derivedTable();
|
564
577
|
if (derivadTable) {
|
@@ -602,7 +615,7 @@ function traverseTableReferenceListParens(ctx, traverseContext) {
|
|
602
615
|
}
|
603
616
|
throw Error('traverseTableReferenceListParens - not supported: ' + ctx.constructor.name);
|
604
617
|
}
|
605
|
-
function traverseSingleTable(singleTable, dbSchema, withSchema, currentFragment) {
|
618
|
+
function traverseSingleTable(singleTable, dbSchema, withSchema, currentFragment, withFragments) {
|
606
619
|
var _a;
|
607
620
|
const table = singleTable === null || singleTable === void 0 ? void 0 : singleTable.tableRef().text;
|
608
621
|
const tableAlias = (_a = singleTable === null || singleTable === void 0 ? void 0 : singleTable.tableAlias()) === null || _a === void 0 ? void 0 : _a.identifier().text;
|
@@ -610,6 +623,11 @@ function traverseSingleTable(singleTable, dbSchema, withSchema, currentFragment)
|
|
610
623
|
if (currentFragment) {
|
611
624
|
currentFragment.relation = tableAlias || tableName.name;
|
612
625
|
}
|
626
|
+
withFragments === null || withFragments === void 0 ? void 0 : withFragments.forEach(withFragment => {
|
627
|
+
if (withFragment.relation == table) {
|
628
|
+
withFragment.parentRelation = tableAlias || tableName.name;
|
629
|
+
}
|
630
|
+
});
|
613
631
|
const fields = filterColumns(dbSchema, withSchema, tableAlias, tableName);
|
614
632
|
return fields;
|
615
633
|
}
|
@@ -617,7 +635,7 @@ function traverseSubquery(subQuery, traverseContext, recursiveNames) {
|
|
617
635
|
const queryExpressionParens = subQuery.queryExpressionParens();
|
618
636
|
const queryExpression = queryExpressionParens.queryExpression();
|
619
637
|
if (queryExpression) {
|
620
|
-
return traverseQueryExpression(queryExpression, traverseContext, true, recursiveNames);
|
638
|
+
return traverseQueryExpression(queryExpression, Object.assign(Object.assign({}, traverseContext), { subQuery: true }), recursiveNames);
|
621
639
|
}
|
622
640
|
const queryExpressionParens2 = queryExpressionParens.queryExpressionParens();
|
623
641
|
if (queryExpressionParens2) {
|
@@ -625,7 +643,7 @@ function traverseSubquery(subQuery, traverseContext, recursiveNames) {
|
|
625
643
|
}
|
626
644
|
throw Error('traverseSubquery - not expected: ' + subQuery.constructor.name);
|
627
645
|
}
|
628
|
-
function traverseSelectItemList(selectItemList, traverseContext
|
646
|
+
function traverseSelectItemList(selectItemList, traverseContext) {
|
629
647
|
const listType = [];
|
630
648
|
if (selectItemList.MULT_OPERATOR()) {
|
631
649
|
traverseContext.fromColumns.forEach(col => {
|
@@ -643,9 +661,9 @@ function traverseSelectItemList(selectItemList, traverseContext, subQuery = fals
|
|
643
661
|
dependOnFields: [],
|
644
662
|
dependOnParams: [],
|
645
663
|
parameters: [],
|
646
|
-
dependOn: []
|
664
|
+
dependOn: [tableName]
|
647
665
|
};
|
648
|
-
if (!subQuery) {
|
666
|
+
if (!traverseContext.subQuery) {
|
649
667
|
traverseContext.dynamicSqlInfo.select.push(fieldFragment);
|
650
668
|
}
|
651
669
|
});
|
@@ -665,7 +683,6 @@ function traverseSelectItemList(selectItemList, traverseContext, subQuery = fals
|
|
665
683
|
}
|
666
684
|
const expr = selectItem.expr();
|
667
685
|
if (expr) {
|
668
|
-
const exprType = traverseExpr(expr, traverseContext);
|
669
686
|
const selectFragment = {
|
670
687
|
fragment: (0, select_columns_1.extractOriginalSql)(selectItem) + '',
|
671
688
|
fragementWithoutAlias: (0, select_columns_1.extractOriginalSql)(expr),
|
@@ -675,20 +692,9 @@ function traverseSelectItemList(selectItemList, traverseContext, subQuery = fals
|
|
675
692
|
parameters: [],
|
676
693
|
dependOn: []
|
677
694
|
};
|
678
|
-
|
695
|
+
const exprType = traverseExpr(expr, Object.assign(Object.assign({}, traverseContext), { currentFragement: traverseContext.subQuery ? traverseContext.currentFragement : selectFragment }));
|
696
|
+
if (!traverseContext.subQuery) {
|
679
697
|
(_a = traverseContext.dynamicSqlInfo.select) === null || _a === void 0 ? void 0 : _a.push(selectFragment);
|
680
|
-
const columns = (0, select_columns_1.getExpressions)(expr, ts_mysql_parser_1.SimpleExprColumnRefContext);
|
681
|
-
const columnName = (0, select_columns_1.getColumnName)(selectItem);
|
682
|
-
columns.forEach(colRef => {
|
683
|
-
const fieldName = (0, select_columns_1.splitName)(colRef.text);
|
684
|
-
const column = (0, select_columns_1.findColumn)(fieldName, traverseContext.fromColumns);
|
685
|
-
selectFragment.fields.push({
|
686
|
-
field: fieldName.name,
|
687
|
-
name: columnName,
|
688
|
-
table: column.tableAlias || column.table
|
689
|
-
});
|
690
|
-
selectFragment.dependOn.push(column.tableAlias || column.table);
|
691
|
-
});
|
692
698
|
}
|
693
699
|
// const fields = exprType.kind == 'TypeVar' ? [{ field: exprType.name, table: exprType.table + '', name: getColumnName(selectItem) }] : []
|
694
700
|
if (exprType.kind == 'TypeOperator') {
|
@@ -712,12 +718,12 @@ function traverseHavingClause(havingClause, traverseContext) {
|
|
712
718
|
const havingExpr = havingClause.expr();
|
713
719
|
traverseExpr(havingExpr, traverseContext);
|
714
720
|
}
|
715
|
-
function traverseExpr(expr, traverseContext
|
721
|
+
function traverseExpr(expr, traverseContext) {
|
716
722
|
if (expr instanceof ts_mysql_parser_1.ExprIsContext) {
|
717
723
|
const boolPri = expr.boolPri();
|
718
724
|
let paramsCount = traverseContext.parameters.length;
|
719
|
-
const boolPriType = traverseBoolPri(boolPri, traverseContext
|
720
|
-
if (where) {
|
725
|
+
const boolPriType = traverseBoolPri(boolPri, traverseContext);
|
726
|
+
if (traverseContext.where) {
|
721
727
|
const currentFragment = {
|
722
728
|
fragment: 'AND ' + (0, select_columns_1.extractOriginalSql)(expr),
|
723
729
|
fields: [],
|
@@ -733,7 +739,7 @@ function traverseExpr(expr, traverseContext, where = false) {
|
|
733
739
|
});
|
734
740
|
const columnsRef = (0, select_columns_1.getExpressions)(expr, ts_mysql_parser_1.ColumnRefContext);
|
735
741
|
columnsRef.forEach(colRef => {
|
736
|
-
const fileName = (0, select_columns_1.splitName)(colRef.text);
|
742
|
+
const fileName = (0, select_columns_1.splitName)(colRef.expr.text);
|
737
743
|
currentFragment.fields.push({
|
738
744
|
field: fileName.name,
|
739
745
|
name: fileName.name,
|
@@ -757,8 +763,8 @@ function traverseExpr(expr, traverseContext, where = false) {
|
|
757
763
|
(0, select_columns_1.getTopLevelAndExpr)(expr, all);
|
758
764
|
all.forEach(andExpression => {
|
759
765
|
let paramsCount = traverseContext.parameters.length;
|
760
|
-
traverseExpr(andExpression.expr, traverseContext, false);
|
761
|
-
if (where) {
|
766
|
+
traverseExpr(andExpression.expr, Object.assign(Object.assign({}, traverseContext), { where: false }));
|
767
|
+
if (traverseContext.where) {
|
762
768
|
const currentFragment = {
|
763
769
|
fragment: andExpression.operator + ' ' + (0, select_columns_1.extractOriginalSql)(andExpression.expr),
|
764
770
|
fields: [],
|
@@ -774,7 +780,7 @@ function traverseExpr(expr, traverseContext, where = false) {
|
|
774
780
|
});
|
775
781
|
const columnsRef = (0, select_columns_1.getExpressions)(andExpression.expr, ts_mysql_parser_1.ColumnRefContext);
|
776
782
|
columnsRef.forEach(colRef => {
|
777
|
-
const fileName = (0, select_columns_1.splitName)(colRef.text);
|
783
|
+
const fileName = (0, select_columns_1.splitName)(colRef.expr.text);
|
778
784
|
currentFragment.fields.push({
|
779
785
|
field: fileName.name,
|
780
786
|
name: fileName.name,
|
@@ -788,10 +794,10 @@ function traverseExpr(expr, traverseContext, where = false) {
|
|
788
794
|
}
|
789
795
|
throw Error('traverseExpr - not supported: ' + expr.text);
|
790
796
|
}
|
791
|
-
function traverseBoolPri(boolPri, traverseContext
|
797
|
+
function traverseBoolPri(boolPri, traverseContext) {
|
792
798
|
if (boolPri instanceof ts_mysql_parser_1.PrimaryExprPredicateContext) {
|
793
799
|
const predicate = boolPri.predicate();
|
794
|
-
const predicateType = traversePredicate(predicate, traverseContext
|
800
|
+
const predicateType = traversePredicate(predicate, traverseContext);
|
795
801
|
return predicateType;
|
796
802
|
}
|
797
803
|
if (boolPri instanceof ts_mysql_parser_1.PrimaryExprIsNullContext) {
|
@@ -829,9 +835,9 @@ function traverseBoolPri(boolPri, traverseContext, where = false) {
|
|
829
835
|
}
|
830
836
|
throw Error('traverseExpr - not supported: ' + boolPri.constructor.name);
|
831
837
|
}
|
832
|
-
function traversePredicate(predicate, traverseContext
|
838
|
+
function traversePredicate(predicate, traverseContext) {
|
833
839
|
const bitExpr = predicate.bitExpr()[0]; //TODO - predicate length = 2? [1] == predicateOperations
|
834
|
-
const bitExprType = traverseBitExpr(bitExpr, traverseContext
|
840
|
+
const bitExprType = traverseBitExpr(bitExpr, traverseContext);
|
835
841
|
const predicateOperations = predicate.predicateOperations();
|
836
842
|
if (predicateOperations) {
|
837
843
|
const rightType = traversePredicateOperations(predicateOperations, bitExprType, traverseContext);
|
@@ -871,10 +877,10 @@ function traverseExprList(exprList, traverseContext) {
|
|
871
877
|
};
|
872
878
|
return type;
|
873
879
|
}
|
874
|
-
function traverseBitExpr(bitExpr, traverseContext
|
880
|
+
function traverseBitExpr(bitExpr, traverseContext) {
|
875
881
|
const simpleExpr = bitExpr.simpleExpr();
|
876
882
|
if (simpleExpr) {
|
877
|
-
return traverseSimpleExpr(simpleExpr, traverseContext, where);
|
883
|
+
return traverseSimpleExpr(simpleExpr, Object.assign(Object.assign({}, traverseContext), { where: false }));
|
878
884
|
}
|
879
885
|
if (bitExpr.bitExpr().length == 2) {
|
880
886
|
const bitExprLeft = bitExpr.bitExpr()[0];
|
@@ -959,13 +965,13 @@ function traversePredicateOperations(predicateOperations, parentType, traverseCo
|
|
959
965
|
}
|
960
966
|
const exprList = predicateOperations.exprList();
|
961
967
|
if (exprList) {
|
962
|
-
const rightType = traverseExprList(exprList, traverseContext);
|
968
|
+
const rightType = traverseExprList(exprList, Object.assign(Object.assign({}, traverseContext), { where: false }));
|
963
969
|
return rightType;
|
964
970
|
}
|
965
971
|
}
|
966
972
|
if (predicateOperations instanceof ts_mysql_parser_1.PredicateExprLikeContext) {
|
967
973
|
const simpleExpr = predicateOperations.simpleExpr()[0];
|
968
|
-
const rightType = traverseSimpleExpr(simpleExpr, traverseContext);
|
974
|
+
const rightType = traverseSimpleExpr(simpleExpr, Object.assign(Object.assign({}, traverseContext), { where: false }));
|
969
975
|
traverseContext.constraints.push({
|
970
976
|
expression: simpleExpr.text,
|
971
977
|
type1: parentType,
|
@@ -997,7 +1003,7 @@ function traversePredicateOperations(predicateOperations, parentType, traverseCo
|
|
997
1003
|
}
|
998
1004
|
throw Error("Not supported: " + predicateOperations.constructor.name);
|
999
1005
|
}
|
1000
|
-
function traverseSimpleExpr(simpleExpr, traverseContext
|
1006
|
+
function traverseSimpleExpr(simpleExpr, traverseContext) {
|
1001
1007
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
|
1002
1008
|
if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprColumnRefContext) {
|
1003
1009
|
const fieldName = (0, select_columns_1.splitName)(simpleExpr.text);
|
@@ -1009,6 +1015,17 @@ function traverseSimpleExpr(simpleExpr, traverseContext, where = false) {
|
|
1009
1015
|
type2: column.columnType,
|
1010
1016
|
mostGeneralType: true
|
1011
1017
|
});
|
1018
|
+
if (traverseContext.currentFragement != null) {
|
1019
|
+
if (!traverseContext.subQuery) {
|
1020
|
+
traverseContext.currentFragement.dependOn.push(column.tableAlias || column.table);
|
1021
|
+
}
|
1022
|
+
else {
|
1023
|
+
const subQueryColumn = (0, select_columns_1.findColumnOrNull)(fieldName, traverseContext.subQueryColumns);
|
1024
|
+
if (subQueryColumn == null) {
|
1025
|
+
traverseContext.currentFragement.dependOn.push(column.tableAlias || column.table);
|
1026
|
+
}
|
1027
|
+
}
|
1028
|
+
}
|
1012
1029
|
return typeVar;
|
1013
1030
|
}
|
1014
1031
|
if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprParamMarkerContext) {
|
@@ -1054,7 +1071,7 @@ function traverseSimpleExpr(simpleExpr, traverseContext, where = false) {
|
|
1054
1071
|
if (simpleExpr instanceof ts_mysql_parser_1.SimpleExprListContext) {
|
1055
1072
|
const exprList = simpleExpr.exprList();
|
1056
1073
|
const listType = exprList.expr().map(item => {
|
1057
|
-
const exprType = traverseExpr(item, traverseContext, false);
|
1074
|
+
const exprType = traverseExpr(item, Object.assign(Object.assign({}, traverseContext), { where: false }));
|
1058
1075
|
return exprType;
|
1059
1076
|
});
|
1060
1077
|
const resultType = {
|