rawsql-ts 0.26.1 → 0.28.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/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +1 -1
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/transformers/ConditionOptimization.d.ts +5 -0
- package/dist/esm/transformers/ConditionOptimization.js +125 -67
- package/dist/esm/transformers/ConditionOptimization.js.map +1 -1
- package/dist/esm/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
- package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js +408 -138
- package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
- package/dist/esm/transformers/SqlComponentFormatter.d.ts +9 -1
- package/dist/esm/transformers/SqlComponentFormatter.js +10 -1
- package/dist/esm/transformers/SqlComponentFormatter.js.map +1 -1
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.d.ts +22 -4
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js +332 -95
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +3 -3
- package/dist/src/index.d.ts +1 -0
- package/dist/src/transformers/ConditionOptimization.d.ts +5 -0
- package/dist/src/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
- package/dist/src/transformers/SqlComponentFormatter.d.ts +9 -1
- package/dist/src/transformers/StaticPredicatePlacementOptimizer.d.ts +22 -4
- package/dist/transformers/ConditionOptimization.js +135 -62
- package/dist/transformers/ConditionOptimization.js.map +1 -1
- package/dist/transformers/ParameterConditionPlacementOptimizer.js +406 -136
- package/dist/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
- package/dist/transformers/SqlComponentFormatter.js +12 -2
- package/dist/transformers/SqlComponentFormatter.js.map +1 -1
- package/dist/transformers/StaticPredicatePlacementOptimizer.js +330 -93
- package/dist/transformers/StaticPredicatePlacementOptimizer.js.map +1 -1
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -19,6 +19,7 @@ export interface ConditionOptimizationPhaseSummary {
|
|
|
19
19
|
warningCount: number;
|
|
20
20
|
errorCount: number;
|
|
21
21
|
}
|
|
22
|
+
export type ConditionOptimizationSkipDisposition = "blocked" | "unchanged" | "ignored";
|
|
22
23
|
export interface SssqlOptionalConditionApplied {
|
|
23
24
|
phaseKind: "sssql_optional_condition";
|
|
24
25
|
kind: "prune_optional_branch" | "refresh_optional_branch";
|
|
@@ -34,6 +35,7 @@ export interface SssqlOptionalConditionSkipped {
|
|
|
34
35
|
parameterName: string;
|
|
35
36
|
code: string;
|
|
36
37
|
reason: string;
|
|
38
|
+
skipDisposition: ConditionOptimizationSkipDisposition;
|
|
37
39
|
}
|
|
38
40
|
export type ConditionOptimizationApplied = SssqlOptionalConditionApplied | (ParameterConditionMove & {
|
|
39
41
|
phaseKind: "parameter_condition_placement";
|
|
@@ -42,8 +44,10 @@ export type ConditionOptimizationApplied = SssqlOptionalConditionApplied | (Para
|
|
|
42
44
|
});
|
|
43
45
|
export type ConditionOptimizationSkipped = SssqlOptionalConditionSkipped | (ParameterConditionSkipped & {
|
|
44
46
|
phaseKind: "parameter_condition_placement";
|
|
47
|
+
skipDisposition: ConditionOptimizationSkipDisposition;
|
|
45
48
|
}) | (StaticPredicateSkipped & {
|
|
46
49
|
phaseKind: "static_predicate_placement";
|
|
50
|
+
skipDisposition: ConditionOptimizationSkipDisposition;
|
|
47
51
|
});
|
|
48
52
|
export type ConditionOptimizationWarning = (ParameterConditionOptimizationWarning & {
|
|
49
53
|
phaseKind: ConditionOptimizationPhaseKind;
|
|
@@ -64,6 +68,7 @@ export interface ConditionOptimizationSafety {
|
|
|
64
68
|
export interface ConditionOptimizationResult {
|
|
65
69
|
ok: boolean;
|
|
66
70
|
sql: string;
|
|
71
|
+
query: SelectQuery | null;
|
|
67
72
|
phases: readonly ConditionOptimizationPhaseSummary[];
|
|
68
73
|
applied: readonly ConditionOptimizationApplied[];
|
|
69
74
|
skipped: readonly ConditionOptimizationSkipped[];
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
import { SelectQueryParser } from "../parsers/SelectQueryParser";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ParameterConditionPlacementOptimizer } from "./ParameterConditionPlacementOptimizer";
|
|
3
|
+
import { StaticPredicatePlacementOptimizer } from "./StaticPredicatePlacementOptimizer";
|
|
4
4
|
import { collectSupportedOptionalConditionBranches, pruneOptionalConditionBranches } from "./PruneOptionalConditionBranches";
|
|
5
5
|
import { SSSQLFilterBuilder } from "./SSSQLFilterBuilder";
|
|
6
|
-
import { formatSqlComponent } from "./SqlComponentFormatter";
|
|
6
|
+
import { formatSqlComponent, hasSqlComponentFormatOverride } from "./SqlComponentFormatter";
|
|
7
7
|
const hasOwnParameter = (parameters, parameterName) => Object.prototype.hasOwnProperty.call(parameters, parameterName);
|
|
8
8
|
const isAbsentOptionalValue = (parameters, parameterName) => parameters[parameterName] === null || parameters[parameterName] === undefined;
|
|
9
|
-
const parseConditionOptimizationInput = (input) => {
|
|
9
|
+
const parseConditionOptimizationInput = (input, options) => {
|
|
10
10
|
const warnings = [];
|
|
11
11
|
const errors = [];
|
|
12
|
-
const sourceSql = typeof input === "string" ? input : formatSqlComponent(input);
|
|
12
|
+
const sourceSql = typeof input === "string" ? input : formatSqlComponent(input, options);
|
|
13
13
|
const formatterGeneratedSource = typeof input !== "string";
|
|
14
|
+
if (typeof input !== "string" && options.cloneInput === false) {
|
|
15
|
+
return {
|
|
16
|
+
query: input,
|
|
17
|
+
sql: sourceSql,
|
|
18
|
+
formatterGeneratedSource: false,
|
|
19
|
+
warnings,
|
|
20
|
+
errors
|
|
21
|
+
};
|
|
22
|
+
}
|
|
14
23
|
if (formatterGeneratedSource) {
|
|
15
24
|
warnings.push({
|
|
16
25
|
phaseKind: "sssql_optional_condition",
|
|
@@ -43,48 +52,50 @@ const parseConditionOptimizationInput = (input) => {
|
|
|
43
52
|
};
|
|
44
53
|
}
|
|
45
54
|
};
|
|
46
|
-
const buildSssqlApplied = (branch) => {
|
|
55
|
+
const buildSssqlApplied = (branch, options) => {
|
|
47
56
|
return {
|
|
48
57
|
phaseKind: "sssql_optional_condition",
|
|
49
58
|
kind: "prune_optional_branch",
|
|
50
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
59
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
51
60
|
parameterName: branch.parameterName,
|
|
52
61
|
reason: "The optional branch parameter is explicitly absent, so the safe-only SSSQL phase pruned the branch."
|
|
53
62
|
};
|
|
54
63
|
};
|
|
55
|
-
const buildSssqlRefreshApplied = (branch, previousConditionSql) => {
|
|
64
|
+
const buildSssqlRefreshApplied = (branch, previousConditionSql, options) => {
|
|
56
65
|
return {
|
|
57
66
|
phaseKind: "sssql_optional_condition",
|
|
58
67
|
kind: "refresh_optional_branch",
|
|
59
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
68
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
60
69
|
previousConditionSql,
|
|
61
70
|
parameterName: branch.parameterName,
|
|
62
71
|
reason: "The safe-only SSSQL phase refreshed the optional branch placement before ordinary parameter placement."
|
|
63
72
|
};
|
|
64
73
|
};
|
|
65
|
-
const buildSssqlSkipped = (branch, parameters) => {
|
|
74
|
+
const buildSssqlSkipped = (branch, parameters, options) => {
|
|
66
75
|
const parameterProvided = hasOwnParameter(parameters, branch.parameterName);
|
|
67
76
|
return {
|
|
68
77
|
phaseKind: "sssql_optional_condition",
|
|
69
78
|
kind: "optional_branch_skipped",
|
|
70
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
79
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
71
80
|
parameterName: branch.parameterName,
|
|
72
81
|
code: parameterProvided
|
|
73
82
|
? "SSSQL_OPTIONAL_PARAMETER_PRESENT"
|
|
74
83
|
: "SSSQL_OPTIONAL_PARAMETER_NOT_PROVIDED",
|
|
75
84
|
reason: parameterProvided
|
|
76
85
|
? "The optional branch parameter is present, so the branch remains active."
|
|
77
|
-
: "No optional branch parameter value was provided, so the branch remains unchanged."
|
|
86
|
+
: "No optional branch parameter value was provided, so the branch remains unchanged.",
|
|
87
|
+
skipDisposition: parameterProvided ? "unchanged" : "ignored"
|
|
78
88
|
};
|
|
79
89
|
};
|
|
80
|
-
const buildSssqlRefreshSkipped = (branch, code, reason) => {
|
|
90
|
+
const buildSssqlRefreshSkipped = (branch, code, reason, skipDisposition, options) => {
|
|
81
91
|
return {
|
|
82
92
|
phaseKind: "sssql_optional_condition",
|
|
83
93
|
kind: "optional_branch_skipped",
|
|
84
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
94
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
85
95
|
parameterName: branch.parameterName,
|
|
86
96
|
code,
|
|
87
|
-
reason
|
|
97
|
+
reason,
|
|
98
|
+
skipDisposition
|
|
88
99
|
};
|
|
89
100
|
};
|
|
90
101
|
const buildSssqlRefreshFilters = (branches, parameters) => {
|
|
@@ -96,78 +107,105 @@ const buildSssqlRefreshFilters = (branches, parameters) => {
|
|
|
96
107
|
}
|
|
97
108
|
return filters;
|
|
98
109
|
};
|
|
99
|
-
const refreshRemainingSssqlBranches = (
|
|
100
|
-
|
|
110
|
+
const refreshRemainingSssqlBranches = (query, fallbackSql, parameters, options) => {
|
|
111
|
+
var _a, _b;
|
|
101
112
|
const applied = [];
|
|
102
113
|
const skipped = [];
|
|
103
|
-
|
|
104
|
-
return {
|
|
105
|
-
sql: parsed.sql,
|
|
106
|
-
applied,
|
|
107
|
-
skipped,
|
|
108
|
-
warnings: parsed.warnings,
|
|
109
|
-
errors: parsed.errors,
|
|
110
|
-
formatterGeneratedSource: parsed.formatterGeneratedSource
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
const beforeBranches = collectSupportedOptionalConditionBranches(parsed.query);
|
|
114
|
+
const beforeBranches = collectSupportedOptionalConditionBranches(query);
|
|
114
115
|
if (beforeBranches.length === 0) {
|
|
115
116
|
return {
|
|
116
|
-
|
|
117
|
+
query,
|
|
118
|
+
sql: fallbackSql,
|
|
117
119
|
applied,
|
|
118
120
|
skipped,
|
|
119
|
-
warnings:
|
|
120
|
-
errors:
|
|
121
|
-
formatterGeneratedSource:
|
|
121
|
+
warnings: [],
|
|
122
|
+
errors: [],
|
|
123
|
+
formatterGeneratedSource: false
|
|
122
124
|
};
|
|
123
125
|
}
|
|
124
126
|
const beforeBranchSql = new WeakMap();
|
|
125
127
|
const beforeBranchQuery = new WeakMap();
|
|
128
|
+
const parameterCounts = new Map();
|
|
126
129
|
for (const branch of beforeBranches) {
|
|
127
|
-
beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression));
|
|
130
|
+
beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression, options));
|
|
128
131
|
beforeBranchQuery.set(branch.expression, branch.query);
|
|
132
|
+
parameterCounts.set(branch.parameterName, ((_a = parameterCounts.get(branch.parameterName)) !== null && _a !== void 0 ? _a : 0) + 1);
|
|
129
133
|
}
|
|
130
|
-
|
|
131
|
-
|
|
134
|
+
const alreadyReportedExpressions = new WeakSet();
|
|
135
|
+
const refreshableBranches = [];
|
|
136
|
+
for (const branch of beforeBranches) {
|
|
137
|
+
if (((_b = parameterCounts.get(branch.parameterName)) !== null && _b !== void 0 ? _b : 0) > 1) {
|
|
138
|
+
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_DUPLICATE_PARAMETER_UNCHANGED", "SSSQL optional branch refresh left this duplicate parameter branch unchanged so each query scope can keep its existing local predicate.", "unchanged", options));
|
|
139
|
+
alreadyReportedExpressions.add(branch.expression);
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
refreshableBranches.push(branch);
|
|
132
143
|
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
};
|
|
144
|
+
for (const branch of refreshableBranches) {
|
|
145
|
+
try {
|
|
146
|
+
new SSSQLFilterBuilder().refresh(query, buildSssqlRefreshFilters([branch], parameters));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
150
|
+
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", `SSSQL optional branch refresh was skipped because safe refresh could not be proven: ${detail}`, "blocked", options));
|
|
151
|
+
alreadyReportedExpressions.add(branch.expression);
|
|
152
|
+
}
|
|
143
153
|
}
|
|
144
|
-
const afterBranches = collectSupportedOptionalConditionBranches(
|
|
154
|
+
const afterBranches = collectSupportedOptionalConditionBranches(query);
|
|
145
155
|
for (const branch of afterBranches) {
|
|
156
|
+
if (alreadyReportedExpressions.has(branch.expression)) {
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
146
159
|
const previousSql = beforeBranchSql.get(branch.expression);
|
|
147
160
|
const previousQuery = beforeBranchQuery.get(branch.expression);
|
|
148
161
|
if (!previousSql || !previousQuery) {
|
|
149
|
-
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", "SSSQL optional branch refresh left an untracked branch unchanged."));
|
|
162
|
+
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", "SSSQL optional branch refresh left an untracked branch unchanged.", "blocked", options));
|
|
150
163
|
continue;
|
|
151
164
|
}
|
|
152
|
-
const refreshedSql = formatSqlComponent(branch.expression);
|
|
165
|
+
const refreshedSql = formatSqlComponent(branch.expression, options);
|
|
153
166
|
if (previousQuery !== branch.query || previousSql !== refreshedSql) {
|
|
154
|
-
applied.push(buildSssqlRefreshApplied(branch, previousSql));
|
|
167
|
+
applied.push(buildSssqlRefreshApplied(branch, previousSql, options));
|
|
155
168
|
continue;
|
|
156
169
|
}
|
|
157
|
-
|
|
170
|
+
const parameterProvided = hasOwnParameter(parameters, branch.parameterName);
|
|
171
|
+
skipped.push(buildSssqlRefreshSkipped(branch, parameterProvided
|
|
172
|
+
? "SSSQL_OPTIONAL_REFRESH_NOOP"
|
|
173
|
+
: "SSSQL_OPTIONAL_PARAMETER_NOT_PROVIDED", parameterProvided
|
|
174
|
+
? "SSSQL optional branch refresh found no safe placement change to apply."
|
|
175
|
+
: "No optional branch parameter value was provided, so the branch was not a refresh target.", parameterProvided ? "unchanged" : "ignored", options));
|
|
158
176
|
}
|
|
159
177
|
return {
|
|
160
|
-
|
|
178
|
+
query,
|
|
179
|
+
sql: applied.length > 0 || hasSqlComponentFormatOverride(options)
|
|
180
|
+
? formatSqlComponent(query, options)
|
|
181
|
+
: fallbackSql,
|
|
161
182
|
applied,
|
|
162
183
|
skipped,
|
|
163
|
-
warnings:
|
|
164
|
-
errors:
|
|
165
|
-
formatterGeneratedSource:
|
|
184
|
+
warnings: [],
|
|
185
|
+
errors: [],
|
|
186
|
+
formatterGeneratedSource: false
|
|
166
187
|
};
|
|
167
188
|
};
|
|
189
|
+
const refreshRemainingSssqlBranchesFromSql = (sql, parameters, options) => {
|
|
190
|
+
const parsed = parseConditionOptimizationInput(sql, options);
|
|
191
|
+
if (!parsed.query) {
|
|
192
|
+
return {
|
|
193
|
+
query: null,
|
|
194
|
+
sql: parsed.sql,
|
|
195
|
+
applied: [],
|
|
196
|
+
skipped: [],
|
|
197
|
+
warnings: parsed.warnings,
|
|
198
|
+
errors: parsed.errors,
|
|
199
|
+
formatterGeneratedSource: parsed.formatterGeneratedSource
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
const refreshed = refreshRemainingSssqlBranches(parsed.query, sql, parameters, options);
|
|
203
|
+
return Object.assign(Object.assign({}, refreshed), { warnings: [...parsed.warnings, ...refreshed.warnings], errors: [...parsed.errors, ...refreshed.errors], formatterGeneratedSource: parsed.formatterGeneratedSource || refreshed.formatterGeneratedSource });
|
|
204
|
+
};
|
|
168
205
|
const runSssqlOptionalConditionPhase = (input, options) => {
|
|
169
206
|
var _a;
|
|
170
|
-
const
|
|
207
|
+
const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
|
|
208
|
+
const parsed = parseConditionOptimizationInput(input, options);
|
|
171
209
|
const warnings = [...parsed.warnings];
|
|
172
210
|
let errors = [...parsed.errors];
|
|
173
211
|
const applied = [];
|
|
@@ -175,6 +213,7 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
175
213
|
const optionalConditionParameters = (_a = options.optionalConditionParameters) !== null && _a !== void 0 ? _a : {};
|
|
176
214
|
if (!parsed.query) {
|
|
177
215
|
return {
|
|
216
|
+
query: null,
|
|
178
217
|
sql: parsed.sql,
|
|
179
218
|
applied,
|
|
180
219
|
skipped,
|
|
@@ -184,14 +223,16 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
184
223
|
};
|
|
185
224
|
}
|
|
186
225
|
let currentSql = parsed.sql;
|
|
226
|
+
let currentQuery = parsed.query;
|
|
227
|
+
let formatterGeneratedSource = parsed.formatterGeneratedSource;
|
|
187
228
|
const branches = collectSupportedOptionalConditionBranches(parsed.query);
|
|
188
229
|
const pruneBranches = branches.filter(branch => hasOwnParameter(optionalConditionParameters, branch.parameterName)
|
|
189
230
|
&& isAbsentOptionalValue(optionalConditionParameters, branch.parameterName));
|
|
190
231
|
if (pruneBranches.length > 0) {
|
|
191
232
|
try {
|
|
192
233
|
pruneOptionalConditionBranches(parsed.query, optionalConditionParameters);
|
|
193
|
-
currentSql = formatSqlComponent(parsed.query);
|
|
194
|
-
applied.push(...pruneBranches.map(buildSssqlApplied));
|
|
234
|
+
currentSql = formatSqlComponent(parsed.query, options);
|
|
235
|
+
applied.push(...pruneBranches.map(branch => buildSssqlApplied(branch, options)));
|
|
195
236
|
}
|
|
196
237
|
catch (error) {
|
|
197
238
|
errors = [...errors, {
|
|
@@ -203,38 +244,43 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
203
244
|
}
|
|
204
245
|
}
|
|
205
246
|
if (errors.length === 0) {
|
|
206
|
-
const refreshPhase =
|
|
247
|
+
const refreshPhase = reuseOwnedModel
|
|
248
|
+
? refreshRemainingSssqlBranches(parsed.query, currentSql, optionalConditionParameters, options)
|
|
249
|
+
: refreshRemainingSssqlBranchesFromSql(currentSql, optionalConditionParameters, options);
|
|
207
250
|
applied.push(...refreshPhase.applied);
|
|
208
251
|
skipped.push(...refreshPhase.skipped);
|
|
209
252
|
warnings.push(...refreshPhase.warnings);
|
|
210
253
|
errors.push(...refreshPhase.errors);
|
|
211
254
|
currentSql = refreshPhase.sql;
|
|
255
|
+
currentQuery = refreshPhase.query;
|
|
256
|
+
formatterGeneratedSource = formatterGeneratedSource || refreshPhase.formatterGeneratedSource;
|
|
212
257
|
}
|
|
213
258
|
else {
|
|
214
259
|
for (const branch of branches) {
|
|
215
260
|
if (pruneBranches.includes(branch)) {
|
|
216
261
|
continue;
|
|
217
262
|
}
|
|
218
|
-
skipped.push(buildSssqlSkipped(branch, optionalConditionParameters));
|
|
263
|
+
skipped.push(buildSssqlSkipped(branch, optionalConditionParameters, options));
|
|
219
264
|
}
|
|
220
265
|
}
|
|
221
266
|
return {
|
|
267
|
+
query: errors.length === 0 ? currentQuery : null,
|
|
222
268
|
sql: errors.length === 0 ? currentSql : parsed.sql,
|
|
223
269
|
applied,
|
|
224
270
|
skipped,
|
|
225
271
|
warnings,
|
|
226
272
|
errors,
|
|
227
|
-
formatterGeneratedSource
|
|
273
|
+
formatterGeneratedSource
|
|
228
274
|
};
|
|
229
275
|
};
|
|
230
276
|
const mapParameterWarnings = (warnings) => warnings.map(warning => (Object.assign({ phaseKind: "parameter_condition_placement" }, warning)));
|
|
231
277
|
const mapParameterErrors = (errors) => errors.map(error => (Object.assign({ phaseKind: "parameter_condition_placement" }, error)));
|
|
232
278
|
const mapParameterApplied = (applied) => applied.map(item => (Object.assign({ phaseKind: "parameter_condition_placement" }, item)));
|
|
233
|
-
const mapParameterSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "parameter_condition_placement" }, item)));
|
|
279
|
+
const mapParameterSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "parameter_condition_placement", skipDisposition: "blocked" }, item)));
|
|
234
280
|
const mapStaticWarnings = (warnings) => warnings.map(warning => (Object.assign({ phaseKind: "static_predicate_placement" }, warning)));
|
|
235
281
|
const mapStaticErrors = (errors) => errors.map(error => (Object.assign({ phaseKind: "static_predicate_placement" }, error)));
|
|
236
282
|
const mapStaticApplied = (applied) => applied.map(item => (Object.assign({ phaseKind: "static_predicate_placement" }, item)));
|
|
237
|
-
const mapStaticSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "static_predicate_placement" }, item)));
|
|
283
|
+
const mapStaticSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "static_predicate_placement", skipDisposition: "blocked" }, item)));
|
|
238
284
|
const makePhaseSummary = (kind, counts) => ({
|
|
239
285
|
kind,
|
|
240
286
|
appliedCount: counts.appliedCount,
|
|
@@ -243,21 +289,32 @@ const makePhaseSummary = (kind, counts) => ({
|
|
|
243
289
|
errorCount: counts.errorCount
|
|
244
290
|
});
|
|
245
291
|
const runConditionOptimization = (input, options, defaultDryRun) => {
|
|
246
|
-
var _a;
|
|
292
|
+
var _a, _b, _c;
|
|
247
293
|
const dryRun = (_a = options.dryRun) !== null && _a !== void 0 ? _a : defaultDryRun;
|
|
294
|
+
const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
|
|
248
295
|
// Run semantic SSSQL handling before generic placement phases so optional
|
|
249
296
|
// branches remain owned by SSSQL even if later phases grow broader support.
|
|
250
297
|
const sssqlPhase = runSssqlOptionalConditionPhase(input, Object.assign(Object.assign({}, options), { dryRun }));
|
|
298
|
+
const parameterOptimizer = new ParameterConditionPlacementOptimizer();
|
|
299
|
+
const parameterInput = reuseOwnedModel
|
|
300
|
+
? (_b = sssqlPhase.query) !== null && _b !== void 0 ? _b : sssqlPhase.sql
|
|
301
|
+
: sssqlPhase.sql;
|
|
302
|
+
const parameterOptions = Object.assign(Object.assign({}, options), { dryRun, cloneInput: reuseOwnedModel && sssqlPhase.query ? false : options.cloneInput });
|
|
251
303
|
const parameterPhase = dryRun
|
|
252
|
-
?
|
|
253
|
-
:
|
|
304
|
+
? parameterOptimizer.plan(parameterInput, parameterOptions)
|
|
305
|
+
: parameterOptimizer.optimize(parameterInput, parameterOptions);
|
|
254
306
|
const parameterWarnings = mapParameterWarnings(parameterPhase.warnings);
|
|
255
307
|
const parameterErrors = mapParameterErrors(parameterPhase.errors);
|
|
256
308
|
const parameterApplied = mapParameterApplied(parameterPhase.applied);
|
|
257
309
|
const parameterSkipped = mapParameterSkipped(parameterPhase.skipped);
|
|
310
|
+
const staticOptimizer = new StaticPredicatePlacementOptimizer();
|
|
311
|
+
const staticInput = reuseOwnedModel
|
|
312
|
+
? (_c = parameterPhase.query) !== null && _c !== void 0 ? _c : parameterPhase.sql
|
|
313
|
+
: parameterPhase.sql;
|
|
314
|
+
const staticOptions = Object.assign(Object.assign({}, options), { dryRun, cloneInput: reuseOwnedModel && parameterPhase.query ? false : options.cloneInput });
|
|
258
315
|
const staticPhase = dryRun
|
|
259
|
-
?
|
|
260
|
-
:
|
|
316
|
+
? staticOptimizer.plan(staticInput, staticOptions)
|
|
317
|
+
: staticOptimizer.optimize(staticInput, staticOptions);
|
|
261
318
|
const staticWarnings = mapStaticWarnings(staticPhase.warnings);
|
|
262
319
|
const staticErrors = mapStaticErrors(staticPhase.errors);
|
|
263
320
|
const staticApplied = mapStaticApplied(staticPhase.applied);
|
|
@@ -267,6 +324,7 @@ const runConditionOptimization = (input, options, defaultDryRun) => {
|
|
|
267
324
|
return {
|
|
268
325
|
ok: errors.length === 0,
|
|
269
326
|
sql: staticPhase.sql,
|
|
327
|
+
query: staticPhase.query,
|
|
270
328
|
phases: [
|
|
271
329
|
makePhaseSummary("sssql_optional_condition", {
|
|
272
330
|
appliedCount: sssqlPhase.applied.length,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionOptimization.js","sourceRoot":"","sources":["../../../src/transformers/ConditionOptimization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConditionOptimization.js","sourceRoot":"","sources":["../../../src/transformers/ConditionOptimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
|
2
|
+
import { SqlComponentFormatOptions } from "./SqlComponentFormatter";
|
|
2
3
|
export type ParameterConditionOptimizationInput = string | SelectQuery | SimpleSelectQuery;
|
|
3
4
|
/**
|
|
4
5
|
* First-phase safe-only placement for ordinary parameter predicates.
|
|
5
6
|
*
|
|
6
7
|
* The optimizer intentionally handles only root top-level AND predicates and one
|
|
7
8
|
* CTE/derived-table hop where the destination output is a direct column reference.
|
|
8
|
-
* Unsupported boundaries such as OR,
|
|
9
|
-
*
|
|
9
|
+
* Unsupported boundaries such as OR, DISTINCT ON, WINDOW, OUTER JOIN,
|
|
10
|
+
* expression outputs, and function predicates are reported as skipped.
|
|
10
11
|
*/
|
|
11
|
-
export interface ParameterConditionOptimizationOptions {
|
|
12
|
+
export interface ParameterConditionOptimizationOptions extends SqlComponentFormatOptions {
|
|
12
13
|
dryRun?: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether AST/model inputs should be cloned before optimization.
|
|
16
|
+
* Defaults to true for public-call safety. Internal pipelines can pass false
|
|
17
|
+
* when they own the model and want to avoid AST -> SQL -> AST round trips.
|
|
18
|
+
*/
|
|
19
|
+
cloneInput?: boolean;
|
|
13
20
|
}
|
|
14
21
|
export interface ParameterConditionOptimizationWarning {
|
|
15
22
|
code: string;
|
|
@@ -45,6 +52,7 @@ export interface ParameterConditionOptimizationSafety {
|
|
|
45
52
|
export interface ParameterConditionOptimizationResult {
|
|
46
53
|
ok: boolean;
|
|
47
54
|
sql: string;
|
|
55
|
+
query: SelectQuery | null;
|
|
48
56
|
applied: readonly ParameterConditionMove[];
|
|
49
57
|
skipped: readonly ParameterConditionSkipped[];
|
|
50
58
|
warnings: readonly ParameterConditionOptimizationWarning[];
|
|
@@ -58,21 +66,32 @@ export declare class ParameterConditionPlacementOptimizer {
|
|
|
58
66
|
private parseInput;
|
|
59
67
|
private analyzeCandidate;
|
|
60
68
|
private findUnsupportedExpression;
|
|
69
|
+
private findUnsupportedParameterPredicateShape;
|
|
61
70
|
private isSupportedInPredicate;
|
|
62
71
|
private resolveTarget;
|
|
63
|
-
private
|
|
64
|
-
private
|
|
72
|
+
private findRootQueryBoundary;
|
|
73
|
+
private resolveTargetPlacement;
|
|
65
74
|
private resolveSourceBinding;
|
|
66
75
|
private resolveUpstreamQuery;
|
|
67
|
-
private
|
|
76
|
+
private resolveUnionTarget;
|
|
77
|
+
private resolveTargetColumns;
|
|
78
|
+
private resolveTargetColumnByOutputIndex;
|
|
79
|
+
private resolveDeepestBranchTarget;
|
|
68
80
|
private verifyColumnResolvableInQuery;
|
|
81
|
+
private isGroupKeyColumn;
|
|
82
|
+
private sameResolvableColumnInQuery;
|
|
83
|
+
private resolveColumnSourceAlias;
|
|
69
84
|
private rebaseCondition;
|
|
70
85
|
private getSourceBindings;
|
|
71
86
|
private findNullableSideBoundary;
|
|
72
87
|
private hasOuterJoin;
|
|
88
|
+
private hasDistinctOnBoundary;
|
|
89
|
+
private hasOrdinaryDistinct;
|
|
73
90
|
private getOutputColumnMatchCount;
|
|
91
|
+
private collectUnionBranches;
|
|
92
|
+
private resolveUnionOutputIndex;
|
|
93
|
+
private collectSelectOutputs;
|
|
74
94
|
private resolveSourceQueryForColumns;
|
|
75
|
-
private getSelectItemOutputName;
|
|
76
95
|
private findCte;
|
|
77
96
|
private countTableSourceReferences;
|
|
78
97
|
private hasWindowUsage;
|