typesql-cli 0.19.2 → 0.21.0
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/README.md +5 -0
- package/cli.js +51 -64
- package/cli.js.map +1 -1
- package/code-generator.d.ts +1 -1
- package/code-generator.d.ts.map +1 -1
- package/code-generator.js +4 -3
- package/code-generator.js.map +1 -1
- package/code-generator2.d.ts.map +1 -1
- package/code-generator2.js +151 -115
- package/code-generator2.js.map +1 -1
- package/codegen/code-generator.d.ts +13 -0
- package/codegen/code-generator.d.ts.map +1 -0
- package/codegen/code-generator.js +106 -0
- package/codegen/code-generator.js.map +1 -0
- package/codegen/code-generator2.d.ts +10 -0
- package/codegen/code-generator2.d.ts.map +1 -0
- package/codegen/code-generator2.js +917 -0
- package/codegen/code-generator2.js.map +1 -0
- package/codegen/codegen-util.d.ts +1 -0
- package/codegen/codegen-util.d.ts.map +1 -0
- package/codegen/codegen-util.js +2 -0
- package/codegen/codegen-util.js.map +1 -0
- package/codegen/generic/codegen-util.d.ts +8 -0
- package/codegen/generic/codegen-util.d.ts.map +1 -0
- package/codegen/generic/codegen-util.js +89 -0
- package/codegen/generic/codegen-util.js.map +1 -0
- package/codegen/mysql2.d.ts +40 -0
- package/codegen/mysql2.d.ts.map +1 -0
- package/codegen/mysql2.js +667 -0
- package/codegen/mysql2.js.map +1 -0
- package/codegen/pg.d.ts +9 -0
- package/codegen/pg.d.ts.map +1 -0
- package/codegen/pg.js +760 -0
- package/codegen/pg.js.map +1 -0
- package/codegen/postgres-pg.d.ts +10 -0
- package/codegen/postgres-pg.d.ts.map +1 -0
- package/codegen/postgres-pg.js +917 -0
- package/codegen/postgres-pg.js.map +1 -0
- package/codegen/shared/codegen-util.d.ts +28 -0
- package/codegen/shared/codegen-util.d.ts.map +1 -0
- package/codegen/shared/codegen-util.js +303 -0
- package/codegen/shared/codegen-util.js.map +1 -0
- package/codegen/sqlite-code-generator.d.ts +15 -0
- package/codegen/sqlite-code-generator.d.ts.map +1 -0
- package/codegen/sqlite-code-generator.js +1049 -0
- package/codegen/sqlite-code-generator.js.map +1 -0
- package/codegen/sqlite.d.ts +13 -0
- package/codegen/sqlite.d.ts.map +1 -0
- package/codegen/sqlite.js +893 -0
- package/codegen/sqlite.js.map +1 -0
- package/describe-query.d.ts.map +1 -1
- package/describe-query.js +45 -32
- package/describe-query.js.map +1 -1
- package/dialects/postgres.d.ts +4 -1
- package/dialects/postgres.d.ts.map +1 -1
- package/dialects/postgres.js +4 -2
- package/dialects/postgres.js.map +1 -1
- package/drivers/sqlite.d.ts +4 -1
- package/drivers/sqlite.d.ts.map +1 -1
- package/drivers/sqlite.js +4 -1
- package/drivers/sqlite.js.map +1 -1
- package/drivers/types.d.ts +3 -1
- package/drivers/types.d.ts.map +1 -1
- package/generic/codegen-util.d.ts +8 -0
- package/generic/codegen-util.d.ts.map +1 -0
- package/generic/codegen-util.js +89 -0
- package/generic/codegen-util.js.map +1 -0
- package/load-config.d.ts +6 -0
- package/load-config.d.ts.map +1 -1
- package/load-config.js +65 -1
- package/load-config.js.map +1 -1
- package/mysql-mapping.d.ts +4 -1
- package/mysql-mapping.d.ts.map +1 -1
- package/mysql-mapping.js +5 -3
- package/mysql-mapping.js.map +1 -1
- package/mysql-query-analyzer/infer-column-nullability.js +1 -1
- package/mysql-query-analyzer/infer-column-nullability.js.map +1 -1
- package/mysql-query-analyzer/parse.d.ts.map +1 -1
- package/mysql-query-analyzer/parse.js +3 -2
- package/mysql-query-analyzer/parse.js.map +1 -1
- package/package.json +2 -1
- package/postgres-pg.d.ts +10 -0
- package/postgres-pg.d.ts.map +1 -0
- package/postgres-pg.js +917 -0
- package/postgres-pg.js.map +1 -0
- package/postgres-query-analyzer/describe.d.ts +1 -1
- package/postgres-query-analyzer/describe.d.ts.map +1 -1
- package/postgres-query-analyzer/describe.js +77 -48
- package/postgres-query-analyzer/describe.js.map +1 -1
- package/postgres-query-analyzer/traverse.d.ts +1 -0
- package/postgres-query-analyzer/traverse.d.ts.map +1 -1
- package/postgres-query-analyzer/traverse.js +90 -28
- package/postgres-query-analyzer/traverse.js.map +1 -1
- package/postgres-query-analyzer/util.d.ts +9 -0
- package/postgres-query-analyzer/util.d.ts.map +1 -0
- package/postgres-query-analyzer/util.js +58 -0
- package/postgres-query-analyzer/util.js.map +1 -0
- package/rescript.d.ts +1 -0
- package/rescript.d.ts.map +1 -0
- package/rescript.js +2 -0
- package/rescript.js.map +1 -0
- package/sqlite-query-analyzer/parser.js +3 -3
- package/sqlite-query-analyzer/parser.js.map +1 -1
- package/sqlite-query-analyzer/replace-list-params.d.ts.map +1 -1
- package/sqlite-query-analyzer/replace-list-params.js.map +1 -1
- package/sqlite-query-analyzer/sqlite-code-generator.d.ts +15 -0
- package/sqlite-query-analyzer/sqlite-code-generator.d.ts.map +1 -0
- package/sqlite-query-analyzer/sqlite-code-generator.js +1049 -0
- package/sqlite-query-analyzer/sqlite-code-generator.js.map +1 -0
- package/sqlite-query-analyzer/traverse.js +1 -1
- package/sqlite-query-analyzer/traverse.js.map +1 -1
- package/sqlite.d.ts +43 -0
- package/sqlite.d.ts.map +1 -0
- package/sqlite.js +755 -0
- package/sqlite.js.map +1 -0
- package/ts-dynamic-query-descriptor.d.ts.map +1 -1
- package/ts-dynamic-query-descriptor.js +2 -1
- package/ts-dynamic-query-descriptor.js.map +1 -1
- package/ts-nested-descriptor.d.ts.map +1 -1
- package/ts-nested-descriptor.js +1 -1
- package/ts-nested-descriptor.js.map +1 -1
- package/types.d.ts +9 -1
- package/types.d.ts.map +1 -1
@@ -8,6 +8,7 @@ const typesql_parser_1 = require("@wsporto/typesql-parser");
|
|
8
8
|
const select_columns_1 = require("../mysql-query-analyzer/select-columns");
|
9
9
|
const postgres_1 = require("@wsporto/typesql-parser/postgres");
|
10
10
|
const case_nullability_checker_1 = require("./case-nullability-checker");
|
11
|
+
const util_1 = require("./util");
|
11
12
|
function defaultOptions() {
|
12
13
|
return {
|
13
14
|
collectNestedInfo: false,
|
@@ -89,7 +90,7 @@ function traverseSelectstmt(selectstmt, context, traverseResult) {
|
|
89
90
|
const paramIsListResult = getInParameterList(selectstmt);
|
90
91
|
const selectResult = traverse_selectstmt(selectstmt, context, traverseResult);
|
91
92
|
//select parameters are collected after from paramters
|
92
|
-
traverseResult.parameters.sort((param1, param2) => param1.
|
93
|
+
traverseResult.parameters.sort((param1, param2) => param1.paramPos - param2.paramPos);
|
93
94
|
const multipleRowsResult = !(selectResult.singleRow || isSingleRowResult(selectstmt, selectResult.columns));
|
94
95
|
const limit = checkLimit(selectstmt);
|
95
96
|
const postgresTraverseResult = {
|
@@ -98,8 +99,12 @@ function traverseSelectstmt(selectstmt, context, traverseResult) {
|
|
98
99
|
columns: selectResult.columns,
|
99
100
|
parametersNullability: traverseResult.parameters.map(param => (Object.assign({ isNotNull: param.isNotNull }, addConstraintIfNotNull(param.checkConstraint)))),
|
100
101
|
parameterList: paramIsListResult,
|
102
|
+
orderByColumns: selectResult.orderByColumns,
|
101
103
|
limit
|
102
104
|
};
|
105
|
+
if (selectResult.orderByColumns && selectResult.orderByColumns.length > 0) {
|
106
|
+
postgresTraverseResult.orderByColumns = selectResult.orderByColumns;
|
107
|
+
}
|
103
108
|
if (traverseResult.relations) {
|
104
109
|
postgresTraverseResult.relations = traverseResult.relations;
|
105
110
|
}
|
@@ -120,7 +125,7 @@ function traverse_selectstmt(selectstmt, context, traverseResult) {
|
|
120
125
|
};
|
121
126
|
}
|
122
127
|
function traverse_select_no_parens(select_no_parens, context, traverseResult) {
|
123
|
-
var _a;
|
128
|
+
var _a, _b;
|
124
129
|
const with_clause = select_no_parens.with_clause();
|
125
130
|
if (with_clause) {
|
126
131
|
with_clause.cte_list().common_table_expr_list()
|
@@ -135,13 +140,22 @@ function traverse_select_no_parens(select_no_parens, context, traverseResult) {
|
|
135
140
|
}
|
136
141
|
const select_clause = select_no_parens.select_clause();
|
137
142
|
const selectResult = traverse_select_clause(select_clause, context, traverseResult);
|
143
|
+
const sort_clause = (_a = select_no_parens.sort_clause_()) === null || _a === void 0 ? void 0 : _a.sort_clause();
|
144
|
+
if (sort_clause) {
|
145
|
+
context.ignoreColumnRef = true;
|
146
|
+
sort_clause.sortby_list().sortby_list().forEach(sortby => {
|
147
|
+
const a_expr = sortby.a_expr();
|
148
|
+
traverse_a_expr(a_expr, context, traverseResult);
|
149
|
+
});
|
150
|
+
context.ignoreColumnRef = undefined;
|
151
|
+
}
|
138
152
|
const select_limit = select_no_parens.select_limit();
|
139
153
|
if (select_limit) {
|
140
154
|
const numParamsBefore = traverseResult.parameters.length;
|
141
155
|
let fragment = '';
|
142
156
|
const limit_clause = select_limit.limit_clause();
|
143
157
|
if (limit_clause) {
|
144
|
-
const limit_a_expr = (
|
158
|
+
const limit_a_expr = (_b = limit_clause.select_limit_value()) === null || _b === void 0 ? void 0 : _b.a_expr();
|
145
159
|
if (limit_a_expr) {
|
146
160
|
traverse_a_expr(limit_a_expr, context, traverseResult);
|
147
161
|
}
|
@@ -158,7 +172,7 @@ function traverse_select_no_parens(select_no_parens, context, traverseResult) {
|
|
158
172
|
}
|
159
173
|
}
|
160
174
|
if (fragment) {
|
161
|
-
const parameters = traverseResult.parameters.slice(numParamsBefore)
|
175
|
+
const parameters = getParametersIndexes(traverseResult.parameters.slice(numParamsBefore));
|
162
176
|
traverseResult.dynamicQueryInfo.limitOffset = {
|
163
177
|
fragment,
|
164
178
|
parameters
|
@@ -175,7 +189,7 @@ function traverse_common_table_expr(common_table_expr, context, traverseResult)
|
|
175
189
|
const selectResult = traverse_selectstmt(select_stmt, Object.assign(Object.assign({}, context), { collectDynamicQueryInfo: false }), traverseResult);
|
176
190
|
const columnsWithTalbeName = selectResult.columns.map(col => (Object.assign(Object.assign({}, col), { table: tableName })));
|
177
191
|
if (context.collectDynamicQueryInfo) {
|
178
|
-
const parameters = traverseResult.parameters.slice(numParamsBefore)
|
192
|
+
const parameters = getParametersIndexes(traverseResult.parameters.slice(numParamsBefore));
|
179
193
|
(_a = traverseResult.dynamicQueryInfo) === null || _a === void 0 ? void 0 : _a.with.push({
|
180
194
|
fragment: (0, select_columns_1.extractOriginalSql)(common_table_expr),
|
181
195
|
relationName: tableName,
|
@@ -184,6 +198,10 @@ function traverse_common_table_expr(common_table_expr, context, traverseResult)
|
|
184
198
|
}
|
185
199
|
return columnsWithTalbeName;
|
186
200
|
}
|
201
|
+
function getParametersIndexes(params) {
|
202
|
+
const parameters = [...new Set(params.map(param => param.parameterNumber - 1))];
|
203
|
+
return parameters;
|
204
|
+
}
|
187
205
|
function traverse_select_clause(select_clause, context, traverseResult) {
|
188
206
|
const simple_select_intersect_list = select_clause.simple_select_intersect_list();
|
189
207
|
const mainSelectResult = traverse_simple_select_intersect(simple_select_intersect_list[0], context, traverseResult);
|
@@ -201,6 +219,7 @@ function traverse_select_clause(select_clause, context, traverseResult) {
|
|
201
219
|
}
|
202
220
|
return {
|
203
221
|
columns,
|
222
|
+
orderByColumns: mainSelectResult.orderByColumns,
|
204
223
|
singleRow: simple_select_intersect_list.length == 1 ? mainSelectResult.singleRow : false
|
205
224
|
};
|
206
225
|
}
|
@@ -224,7 +243,7 @@ function traverse_simple_select_pramary(simple_select_pramary, context, traverse
|
|
224
243
|
if (from_clause) {
|
225
244
|
const where_clause = simple_select_pramary.where_clause();
|
226
245
|
fromResult = traverse_from_clause(from_clause, context, traverseResult);
|
227
|
-
fromResult.columns = where_clause != null ? fromResult.columns.map(field =>
|
246
|
+
fromResult.columns = where_clause != null ? fromResult.columns.map(field => (Object.assign(Object.assign({}, field), { is_nullable: !checkIsNotNull(where_clause, field, fromResult.columns) }))) : fromResult.columns;
|
228
247
|
}
|
229
248
|
const values_clause = simple_select_pramary.values_clause();
|
230
249
|
if (values_clause) {
|
@@ -242,10 +261,10 @@ function traverse_simple_select_pramary(simple_select_pramary, context, traverse
|
|
242
261
|
const numParamsBefore = traverseResult.parameters.length;
|
243
262
|
traverse_a_expr(where_a_expr, newContext, traverseResult);
|
244
263
|
if (context.collectDynamicQueryInfo) {
|
245
|
-
const parameters = traverseResult.parameters.slice(numParamsBefore)
|
264
|
+
const parameters = getParametersIndexes(traverseResult.parameters.slice(numParamsBefore));
|
246
265
|
const relations = extractRelations(where_a_expr);
|
247
266
|
(_b = traverseResult.dynamicQueryInfo) === null || _b === void 0 ? void 0 : _b.where.push({
|
248
|
-
fragment:
|
267
|
+
fragment: `${(0, select_columns_1.extractOriginalSql)(where_a_expr)}`,
|
249
268
|
parameters,
|
250
269
|
dependOnRelations: relations
|
251
270
|
});
|
@@ -254,11 +273,11 @@ function traverse_simple_select_pramary(simple_select_pramary, context, traverse
|
|
254
273
|
(_d = (_c = simple_select_pramary.group_clause()) === null || _c === void 0 ? void 0 : _c.group_by_list()) === null || _d === void 0 ? void 0 : _d.group_by_item_list().forEach(group_by => {
|
255
274
|
const a_expr = group_by.a_expr();
|
256
275
|
if (a_expr) {
|
257
|
-
newContext.
|
276
|
+
newContext.ignoreColumnRef = true;
|
258
277
|
/* The GROUP BY clause can reference column aliases defined in the SELECT list.
|
259
278
|
There's no need to retrieve nullability or type information from the GROUP BY expressions (findColumn(col). */
|
260
279
|
traverse_a_expr(a_expr, newContext, traverseResult);
|
261
|
-
newContext.
|
280
|
+
newContext.ignoreColumnRef = false;
|
262
281
|
}
|
263
282
|
});
|
264
283
|
const having_expr = (_e = simple_select_pramary.having_clause()) === null || _e === void 0 ? void 0 : _e.a_expr();
|
@@ -266,9 +285,11 @@ function traverse_simple_select_pramary(simple_select_pramary, context, traverse
|
|
266
285
|
traverse_a_expr(having_expr, newContext, traverseResult);
|
267
286
|
}
|
268
287
|
const filteredColumns = filterColumns_simple_select_pramary(simple_select_pramary, Object.assign(Object.assign({}, context), { fromColumns: fromResult.columns, parentColumns: context.fromColumns }), traverseResult);
|
288
|
+
const orderByColumns = (0, util_1.getOrderByColumns)(fromResult.columns, filteredColumns);
|
269
289
|
return {
|
270
290
|
columns: filteredColumns,
|
271
|
-
singleRow: fromResult.singleRow
|
291
|
+
singleRow: fromResult.singleRow,
|
292
|
+
orderByColumns
|
272
293
|
};
|
273
294
|
}
|
274
295
|
function extractRelations(a_expr) {
|
@@ -364,7 +385,7 @@ function traverse_target_el(target_el, context, traverseResult) {
|
|
364
385
|
});
|
365
386
|
}
|
366
387
|
if (context.collectDynamicQueryInfo) {
|
367
|
-
const parameters = traverseResult.parameters.slice(numParamsBefore)
|
388
|
+
const parameters = getParametersIndexes(traverseResult.parameters.slice(numParamsBefore));
|
368
389
|
const relations = extractRelations(target_el.a_expr());
|
369
390
|
(_b = traverseResult.dynamicQueryInfo) === null || _b === void 0 ? void 0 : _b.select.push({
|
370
391
|
fragment: (0, select_columns_1.extractOriginalSql)(target_el),
|
@@ -692,8 +713,15 @@ function traverse_expr_typecast(a_expr_typecast, context, traverseResult) {
|
|
692
713
|
}
|
693
714
|
function traverseColumnRef(columnref, fromColumns) {
|
694
715
|
const fieldName = getFieldName(columnref);
|
695
|
-
const col =
|
696
|
-
|
716
|
+
const col = findColumnOrNull(fieldName, fromColumns);
|
717
|
+
if (col != null) {
|
718
|
+
return Object.assign(Object.assign({}, col), { is_nullable: col.is_nullable });
|
719
|
+
}
|
720
|
+
const record = findRecordOrNull(fieldName, fromColumns);
|
721
|
+
if (record != null) {
|
722
|
+
return record;
|
723
|
+
}
|
724
|
+
throw Error('Column not found: ' + fieldNameToString(fieldName));
|
697
725
|
}
|
698
726
|
function getFieldName(columnref) {
|
699
727
|
const colid = get_colid_text(columnref.colid());
|
@@ -781,7 +809,7 @@ function traversec_expr(c_expr, context, traverseResult) {
|
|
781
809
|
}
|
782
810
|
const columnref = c_expr.columnref();
|
783
811
|
if (columnref) {
|
784
|
-
if (context.
|
812
|
+
if (context.ignoreColumnRef) {
|
785
813
|
return {
|
786
814
|
column_name: columnref.getText(),
|
787
815
|
is_nullable: false,
|
@@ -821,8 +849,9 @@ function traversec_expr(c_expr, context, traverseResult) {
|
|
821
849
|
}
|
822
850
|
if (c_expr.PARAM()) {
|
823
851
|
traverseResult.parameters.push({
|
824
|
-
|
825
|
-
isNotNull: !context.propagatesNull
|
852
|
+
paramPos: c_expr.start.start,
|
853
|
+
isNotNull: !context.propagatesNull,
|
854
|
+
parameterNumber: Number(c_expr.PARAM().getText().slice(1)) //$1, $2...
|
826
855
|
});
|
827
856
|
return {
|
828
857
|
column_name: c_expr.PARAM().getText(),
|
@@ -941,7 +970,7 @@ function traversec_expr_case(c_expr_case, context, traverseResult) {
|
|
941
970
|
const elseIsNotNull = (elseResult === null || elseResult === void 0 ? void 0 : elseResult.is_nullable) === false || branchNotNull;
|
942
971
|
const notNull = elseIsNotNull && whenIsNotNull;
|
943
972
|
return {
|
944
|
-
column_name: '
|
973
|
+
column_name: 'case',
|
945
974
|
is_nullable: !notNull,
|
946
975
|
table: '',
|
947
976
|
schema: '',
|
@@ -1361,13 +1390,35 @@ function findColumnOrNull(fieldName, fromColumns) {
|
|
1361
1390
|
const col = fromColumns.find(col => (fieldName.prefix === '' || col.table.toLowerCase() === fieldName.prefix.toLowerCase()) && col.column_name.toLowerCase() === fieldName.name.toLowerCase());
|
1362
1391
|
return col;
|
1363
1392
|
}
|
1393
|
+
function findRecordOrNull(fieldName, fromColumns) {
|
1394
|
+
const table = fromColumns.filter(col => col.table.toLowerCase() === fieldName.name.toLowerCase()
|
1395
|
+
|| fieldName.name === '*' && col.table === fieldName.prefix);
|
1396
|
+
if (table.length === 0) {
|
1397
|
+
return null;
|
1398
|
+
}
|
1399
|
+
return Object.assign(Object.assign({}, table[0]), { recordTypes: table });
|
1400
|
+
}
|
1364
1401
|
function fieldNameToString(fieldName) {
|
1365
1402
|
return fieldName.prefix !== '' ? `${fieldName.prefix}.${fieldName.name}` : fieldName.name;
|
1366
1403
|
}
|
1367
|
-
function
|
1368
|
-
|
1369
|
-
|
1370
|
-
|
1404
|
+
function checkIsNotNull(where_clause, field, fromColumns) {
|
1405
|
+
if (!field.is_nullable) {
|
1406
|
+
return true;
|
1407
|
+
}
|
1408
|
+
const fieldName = { name: field.column_name, prefix: field.table };
|
1409
|
+
const isNotNullExpr = isNotNull(fieldName, where_clause);
|
1410
|
+
if (!isNotNullExpr) {
|
1411
|
+
return false; //notNull: true
|
1412
|
+
}
|
1413
|
+
const col = findColumnOrNull(fieldName, fromColumns);
|
1414
|
+
if (col != null) {
|
1415
|
+
return true; //notNull: true
|
1416
|
+
}
|
1417
|
+
const record = findRecordOrNull({ name: fieldName.prefix, prefix: '' }, fromColumns);
|
1418
|
+
if (record != null) {
|
1419
|
+
return true; //notNull: true
|
1420
|
+
}
|
1421
|
+
return false;
|
1371
1422
|
}
|
1372
1423
|
function traverse_from_clause(from_clause, context, traverseResult) {
|
1373
1424
|
const from_list = from_clause.from_list();
|
@@ -1381,11 +1432,17 @@ function traverse_from_clause(from_clause, context, traverseResult) {
|
|
1381
1432
|
};
|
1382
1433
|
}
|
1383
1434
|
function traverse_from_list(from_list, context, traverseResult) {
|
1384
|
-
const
|
1385
|
-
const columns =
|
1435
|
+
const tableRefs = from_list.table_ref_list();
|
1436
|
+
const columns = [];
|
1437
|
+
let singleRow = false;
|
1438
|
+
for (const table_ref of tableRefs) {
|
1439
|
+
const result = traverse_table_ref(table_ref, Object.assign(Object.assign({}, context), { parentColumns: columns }), traverseResult);
|
1440
|
+
columns.push(...result.columns);
|
1441
|
+
singleRow = result.singleRow;
|
1442
|
+
}
|
1386
1443
|
return {
|
1387
1444
|
columns: columns,
|
1388
|
-
singleRow:
|
1445
|
+
singleRow: tableRefs.length === 1 ? singleRow : false
|
1389
1446
|
};
|
1390
1447
|
}
|
1391
1448
|
function getFromColumns(tableName, withColumns, dbSchema) {
|
@@ -1508,7 +1565,7 @@ function traverse_joins(joinList, context, traverseResult) {
|
|
1508
1565
|
collectNestedInfo(joinQual, joinColumns, traverseResult);
|
1509
1566
|
}
|
1510
1567
|
if (context.collectDynamicQueryInfo) {
|
1511
|
-
const parameters = traverseResult.parameters.slice(numParamsBefore)
|
1568
|
+
const parameters = getParametersIndexes(traverseResult.parameters.slice(numParamsBefore));
|
1512
1569
|
collectDynamicQueryInfoTableRef(join.tableRef, joinType, joinQual, joinColumns, parameters, traverseResult);
|
1513
1570
|
}
|
1514
1571
|
});
|
@@ -1781,6 +1838,9 @@ function get_indiretion_text(indirection) {
|
|
1781
1838
|
if (colLabel) {
|
1782
1839
|
return get_colid_text(colLabel);
|
1783
1840
|
}
|
1841
|
+
if (indirection_el_list[0].STAR()) {
|
1842
|
+
return '*';
|
1843
|
+
}
|
1784
1844
|
}
|
1785
1845
|
return '';
|
1786
1846
|
}
|
@@ -2033,7 +2093,7 @@ function isNotNull_a_expr_in(a_expr_in, field) {
|
|
2033
2093
|
}
|
2034
2094
|
function isNotNull_a_expr_unary_not(a_expr_unary_not, field) {
|
2035
2095
|
const a_expr_isnull = a_expr_unary_not.a_expr_isnull();
|
2036
|
-
if (a_expr_isnull) {
|
2096
|
+
if (!a_expr_unary_not.NOT() && a_expr_isnull) {
|
2037
2097
|
return isNotNull_a_expr_isnull(a_expr_isnull, field);
|
2038
2098
|
}
|
2039
2099
|
return false;
|
@@ -2172,7 +2232,9 @@ function isNotNull_c_expr(c_expr, field) {
|
|
2172
2232
|
const columnref = c_expr.columnref();
|
2173
2233
|
if (columnref) {
|
2174
2234
|
const fieldName = getFieldName(columnref);
|
2175
|
-
|
2235
|
+
const fieldIsNotNull = (fieldName.name === field.name && (fieldName.prefix === '' || field.prefix === fieldName.prefix));
|
2236
|
+
const tableIsNotNull = (fieldName.name === '*' && fieldName.prefix === field.prefix) || fieldName.name === field.prefix;
|
2237
|
+
return fieldIsNotNull || tableIsNotNull;
|
2176
2238
|
}
|
2177
2239
|
const aexprconst = c_expr.aexprconst();
|
2178
2240
|
if (aexprconst) {
|