rawsql-ts 0.26.0 → 0.27.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 +2 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +2 -2
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/transformers/ConditionOptimization.d.ts +11 -1
- package/dist/esm/transformers/ConditionOptimization.js +122 -66
- 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 -141
- package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
- package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +6 -0
- package/dist/esm/transformers/SSSQLFilterBuilder.js +84 -8
- package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -1
- package/dist/esm/transformers/SqlComponentFormatter.d.ts +11 -0
- package/dist/esm/transformers/SqlComponentFormatter.js +16 -0
- package/dist/esm/transformers/SqlComponentFormatter.js.map +1 -0
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js +1435 -0
- package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +4 -4
- package/dist/src/index.d.ts +2 -0
- package/dist/src/transformers/ConditionOptimization.d.ts +11 -1
- package/dist/src/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
- package/dist/src/transformers/SSSQLFilterBuilder.d.ts +6 -0
- package/dist/src/transformers/SqlComponentFormatter.d.ts +11 -0
- package/dist/src/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
- package/dist/transformers/ConditionOptimization.js +146 -65
- package/dist/transformers/ConditionOptimization.js.map +1 -1
- package/dist/transformers/ParameterConditionPlacementOptimizer.js +407 -140
- package/dist/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
- package/dist/transformers/SSSQLFilterBuilder.js +92 -16
- package/dist/transformers/SSSQLFilterBuilder.js.map +1 -1
- package/dist/transformers/SqlComponentFormatter.js +21 -0
- package/dist/transformers/SqlComponentFormatter.js.map +1 -0
- package/dist/transformers/StaticPredicatePlacementOptimizer.js +1445 -0
- package/dist/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { SelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
|
2
2
|
import { ParameterConditionMove, ParameterConditionOptimizationError, ParameterConditionOptimizationOptions, ParameterConditionOptimizationWarning, ParameterConditionSkipped } from "./ParameterConditionPlacementOptimizer";
|
|
3
|
+
import { StaticPredicateMove, StaticPredicatePlacementError, StaticPredicatePlacementWarning, StaticPredicateSkipped } from "./StaticPredicatePlacementOptimizer";
|
|
3
4
|
import { OptionalConditionPruningParameters } from "./PruneOptionalConditionBranches";
|
|
4
5
|
export type ConditionOptimizationInput = string | SelectQuery | SimpleSelectQuery;
|
|
5
|
-
export type ConditionOptimizationPhaseKind = "sssql_optional_condition" | "parameter_condition_placement";
|
|
6
|
+
export type ConditionOptimizationPhaseKind = "sssql_optional_condition" | "parameter_condition_placement" | "static_predicate_placement";
|
|
6
7
|
export interface ConditionOptimizationOptions extends ParameterConditionOptimizationOptions {
|
|
7
8
|
/**
|
|
8
9
|
* Explicit opt-in values for SSSQL optional branch pruning.
|
|
@@ -36,15 +37,23 @@ export interface SssqlOptionalConditionSkipped {
|
|
|
36
37
|
}
|
|
37
38
|
export type ConditionOptimizationApplied = SssqlOptionalConditionApplied | (ParameterConditionMove & {
|
|
38
39
|
phaseKind: "parameter_condition_placement";
|
|
40
|
+
}) | (StaticPredicateMove & {
|
|
41
|
+
phaseKind: "static_predicate_placement";
|
|
39
42
|
});
|
|
40
43
|
export type ConditionOptimizationSkipped = SssqlOptionalConditionSkipped | (ParameterConditionSkipped & {
|
|
41
44
|
phaseKind: "parameter_condition_placement";
|
|
45
|
+
}) | (StaticPredicateSkipped & {
|
|
46
|
+
phaseKind: "static_predicate_placement";
|
|
42
47
|
});
|
|
43
48
|
export type ConditionOptimizationWarning = (ParameterConditionOptimizationWarning & {
|
|
44
49
|
phaseKind: ConditionOptimizationPhaseKind;
|
|
50
|
+
}) | (StaticPredicatePlacementWarning & {
|
|
51
|
+
phaseKind: ConditionOptimizationPhaseKind;
|
|
45
52
|
});
|
|
46
53
|
export type ConditionOptimizationError = (ParameterConditionOptimizationError & {
|
|
47
54
|
phaseKind: ConditionOptimizationPhaseKind;
|
|
55
|
+
}) | (StaticPredicatePlacementError & {
|
|
56
|
+
phaseKind: ConditionOptimizationPhaseKind;
|
|
48
57
|
});
|
|
49
58
|
export interface ConditionOptimizationSafety {
|
|
50
59
|
mode: "safe_only";
|
|
@@ -55,6 +64,7 @@ export interface ConditionOptimizationSafety {
|
|
|
55
64
|
export interface ConditionOptimizationResult {
|
|
56
65
|
ok: boolean;
|
|
57
66
|
sql: string;
|
|
67
|
+
query: SelectQuery | null;
|
|
58
68
|
phases: readonly ConditionOptimizationPhaseSummary[];
|
|
59
69
|
applied: readonly ConditionOptimizationApplied[];
|
|
60
70
|
skipped: readonly ConditionOptimizationSkipped[];
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { SelectQueryParser } from "../parsers/SelectQueryParser";
|
|
2
|
-
import {
|
|
2
|
+
import { ParameterConditionPlacementOptimizer } from "./ParameterConditionPlacementOptimizer";
|
|
3
|
+
import { StaticPredicatePlacementOptimizer } from "./StaticPredicatePlacementOptimizer";
|
|
3
4
|
import { collectSupportedOptionalConditionBranches, pruneOptionalConditionBranches } from "./PruneOptionalConditionBranches";
|
|
4
5
|
import { SSSQLFilterBuilder } from "./SSSQLFilterBuilder";
|
|
5
|
-
import {
|
|
6
|
-
const formatSqlComponent = (component) => {
|
|
7
|
-
return new SqlFormatter().format(component).formattedSql;
|
|
8
|
-
};
|
|
6
|
+
import { formatSqlComponent, hasSqlComponentFormatOverride } from "./SqlComponentFormatter";
|
|
9
7
|
const hasOwnParameter = (parameters, parameterName) => Object.prototype.hasOwnProperty.call(parameters, parameterName);
|
|
10
8
|
const isAbsentOptionalValue = (parameters, parameterName) => parameters[parameterName] === null || parameters[parameterName] === undefined;
|
|
11
|
-
const parseConditionOptimizationInput = (input) => {
|
|
9
|
+
const parseConditionOptimizationInput = (input, options) => {
|
|
12
10
|
const warnings = [];
|
|
13
11
|
const errors = [];
|
|
14
|
-
const sourceSql = typeof input === "string" ? input : formatSqlComponent(input);
|
|
12
|
+
const sourceSql = typeof input === "string" ? input : formatSqlComponent(input, options);
|
|
15
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
|
+
}
|
|
16
23
|
if (formatterGeneratedSource) {
|
|
17
24
|
warnings.push({
|
|
18
25
|
phaseKind: "sssql_optional_condition",
|
|
@@ -45,31 +52,31 @@ const parseConditionOptimizationInput = (input) => {
|
|
|
45
52
|
};
|
|
46
53
|
}
|
|
47
54
|
};
|
|
48
|
-
const buildSssqlApplied = (branch) => {
|
|
55
|
+
const buildSssqlApplied = (branch, options) => {
|
|
49
56
|
return {
|
|
50
57
|
phaseKind: "sssql_optional_condition",
|
|
51
58
|
kind: "prune_optional_branch",
|
|
52
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
59
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
53
60
|
parameterName: branch.parameterName,
|
|
54
61
|
reason: "The optional branch parameter is explicitly absent, so the safe-only SSSQL phase pruned the branch."
|
|
55
62
|
};
|
|
56
63
|
};
|
|
57
|
-
const buildSssqlRefreshApplied = (branch, previousConditionSql) => {
|
|
64
|
+
const buildSssqlRefreshApplied = (branch, previousConditionSql, options) => {
|
|
58
65
|
return {
|
|
59
66
|
phaseKind: "sssql_optional_condition",
|
|
60
67
|
kind: "refresh_optional_branch",
|
|
61
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
68
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
62
69
|
previousConditionSql,
|
|
63
70
|
parameterName: branch.parameterName,
|
|
64
71
|
reason: "The safe-only SSSQL phase refreshed the optional branch placement before ordinary parameter placement."
|
|
65
72
|
};
|
|
66
73
|
};
|
|
67
|
-
const buildSssqlSkipped = (branch, parameters) => {
|
|
74
|
+
const buildSssqlSkipped = (branch, parameters, options) => {
|
|
68
75
|
const parameterProvided = hasOwnParameter(parameters, branch.parameterName);
|
|
69
76
|
return {
|
|
70
77
|
phaseKind: "sssql_optional_condition",
|
|
71
78
|
kind: "optional_branch_skipped",
|
|
72
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
79
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
73
80
|
parameterName: branch.parameterName,
|
|
74
81
|
code: parameterProvided
|
|
75
82
|
? "SSSQL_OPTIONAL_PARAMETER_PRESENT"
|
|
@@ -79,11 +86,11 @@ const buildSssqlSkipped = (branch, parameters) => {
|
|
|
79
86
|
: "No optional branch parameter value was provided, so the branch remains unchanged."
|
|
80
87
|
};
|
|
81
88
|
};
|
|
82
|
-
const buildSssqlRefreshSkipped = (branch, code, reason) => {
|
|
89
|
+
const buildSssqlRefreshSkipped = (branch, code, reason, options) => {
|
|
83
90
|
return {
|
|
84
91
|
phaseKind: "sssql_optional_condition",
|
|
85
92
|
kind: "optional_branch_skipped",
|
|
86
|
-
conditionSql: formatSqlComponent(branch.expression),
|
|
93
|
+
conditionSql: formatSqlComponent(branch.expression, options),
|
|
87
94
|
parameterName: branch.parameterName,
|
|
88
95
|
code,
|
|
89
96
|
reason
|
|
@@ -98,78 +105,89 @@ const buildSssqlRefreshFilters = (branches, parameters) => {
|
|
|
98
105
|
}
|
|
99
106
|
return filters;
|
|
100
107
|
};
|
|
101
|
-
const refreshRemainingSssqlBranches = (
|
|
102
|
-
const parsed = parseConditionOptimizationInput(sql);
|
|
108
|
+
const refreshRemainingSssqlBranches = (query, fallbackSql, parameters, options) => {
|
|
103
109
|
const applied = [];
|
|
104
110
|
const skipped = [];
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
sql: parsed.sql,
|
|
108
|
-
applied,
|
|
109
|
-
skipped,
|
|
110
|
-
warnings: parsed.warnings,
|
|
111
|
-
errors: parsed.errors,
|
|
112
|
-
formatterGeneratedSource: parsed.formatterGeneratedSource
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
const beforeBranches = collectSupportedOptionalConditionBranches(parsed.query);
|
|
111
|
+
const beforeBranches = collectSupportedOptionalConditionBranches(query);
|
|
116
112
|
if (beforeBranches.length === 0) {
|
|
117
113
|
return {
|
|
118
|
-
|
|
114
|
+
query,
|
|
115
|
+
sql: fallbackSql,
|
|
119
116
|
applied,
|
|
120
117
|
skipped,
|
|
121
|
-
warnings:
|
|
122
|
-
errors:
|
|
123
|
-
formatterGeneratedSource:
|
|
118
|
+
warnings: [],
|
|
119
|
+
errors: [],
|
|
120
|
+
formatterGeneratedSource: false
|
|
124
121
|
};
|
|
125
122
|
}
|
|
126
123
|
const beforeBranchSql = new WeakMap();
|
|
127
124
|
const beforeBranchQuery = new WeakMap();
|
|
128
125
|
for (const branch of beforeBranches) {
|
|
129
|
-
beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression));
|
|
126
|
+
beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression, options));
|
|
130
127
|
beforeBranchQuery.set(branch.expression, branch.query);
|
|
131
128
|
}
|
|
132
129
|
try {
|
|
133
|
-
new SSSQLFilterBuilder().refresh(
|
|
130
|
+
new SSSQLFilterBuilder().refresh(query, buildSssqlRefreshFilters(beforeBranches, parameters));
|
|
134
131
|
}
|
|
135
132
|
catch (error) {
|
|
136
133
|
const detail = error instanceof Error ? error.message : String(error);
|
|
137
134
|
return {
|
|
138
|
-
|
|
135
|
+
query,
|
|
136
|
+
sql: fallbackSql,
|
|
139
137
|
applied,
|
|
140
|
-
skipped: beforeBranches.map(branch => buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", `SSSQL optional branch refresh was skipped because safe refresh could not be proven: ${detail}
|
|
141
|
-
warnings:
|
|
142
|
-
errors:
|
|
143
|
-
formatterGeneratedSource:
|
|
138
|
+
skipped: beforeBranches.map(branch => buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", `SSSQL optional branch refresh was skipped because safe refresh could not be proven: ${detail}`, options)),
|
|
139
|
+
warnings: [],
|
|
140
|
+
errors: [],
|
|
141
|
+
formatterGeneratedSource: false
|
|
144
142
|
};
|
|
145
143
|
}
|
|
146
|
-
const afterBranches = collectSupportedOptionalConditionBranches(
|
|
144
|
+
const afterBranches = collectSupportedOptionalConditionBranches(query);
|
|
147
145
|
for (const branch of afterBranches) {
|
|
148
146
|
const previousSql = beforeBranchSql.get(branch.expression);
|
|
149
147
|
const previousQuery = beforeBranchQuery.get(branch.expression);
|
|
150
148
|
if (!previousSql || !previousQuery) {
|
|
151
|
-
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", "SSSQL optional branch refresh left an untracked branch unchanged."));
|
|
149
|
+
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_UNSUPPORTED", "SSSQL optional branch refresh left an untracked branch unchanged.", options));
|
|
152
150
|
continue;
|
|
153
151
|
}
|
|
154
|
-
const refreshedSql = formatSqlComponent(branch.expression);
|
|
152
|
+
const refreshedSql = formatSqlComponent(branch.expression, options);
|
|
155
153
|
if (previousQuery !== branch.query || previousSql !== refreshedSql) {
|
|
156
|
-
applied.push(buildSssqlRefreshApplied(branch, previousSql));
|
|
154
|
+
applied.push(buildSssqlRefreshApplied(branch, previousSql, options));
|
|
157
155
|
continue;
|
|
158
156
|
}
|
|
159
|
-
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_NOOP", "SSSQL optional branch refresh found no safe placement change to apply."));
|
|
157
|
+
skipped.push(buildSssqlRefreshSkipped(branch, "SSSQL_OPTIONAL_REFRESH_NOOP", "SSSQL optional branch refresh found no safe placement change to apply.", options));
|
|
160
158
|
}
|
|
161
159
|
return {
|
|
162
|
-
|
|
160
|
+
query,
|
|
161
|
+
sql: applied.length > 0 || hasSqlComponentFormatOverride(options)
|
|
162
|
+
? formatSqlComponent(query, options)
|
|
163
|
+
: fallbackSql,
|
|
163
164
|
applied,
|
|
164
165
|
skipped,
|
|
165
|
-
warnings:
|
|
166
|
-
errors:
|
|
167
|
-
formatterGeneratedSource:
|
|
166
|
+
warnings: [],
|
|
167
|
+
errors: [],
|
|
168
|
+
formatterGeneratedSource: false
|
|
168
169
|
};
|
|
169
170
|
};
|
|
171
|
+
const refreshRemainingSssqlBranchesFromSql = (sql, parameters, options) => {
|
|
172
|
+
const parsed = parseConditionOptimizationInput(sql, options);
|
|
173
|
+
if (!parsed.query) {
|
|
174
|
+
return {
|
|
175
|
+
query: null,
|
|
176
|
+
sql: parsed.sql,
|
|
177
|
+
applied: [],
|
|
178
|
+
skipped: [],
|
|
179
|
+
warnings: parsed.warnings,
|
|
180
|
+
errors: parsed.errors,
|
|
181
|
+
formatterGeneratedSource: parsed.formatterGeneratedSource
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
const refreshed = refreshRemainingSssqlBranches(parsed.query, sql, parameters, options);
|
|
185
|
+
return Object.assign(Object.assign({}, refreshed), { warnings: [...parsed.warnings, ...refreshed.warnings], errors: [...parsed.errors, ...refreshed.errors], formatterGeneratedSource: parsed.formatterGeneratedSource || refreshed.formatterGeneratedSource });
|
|
186
|
+
};
|
|
170
187
|
const runSssqlOptionalConditionPhase = (input, options) => {
|
|
171
188
|
var _a;
|
|
172
|
-
const
|
|
189
|
+
const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
|
|
190
|
+
const parsed = parseConditionOptimizationInput(input, options);
|
|
173
191
|
const warnings = [...parsed.warnings];
|
|
174
192
|
let errors = [...parsed.errors];
|
|
175
193
|
const applied = [];
|
|
@@ -177,6 +195,7 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
177
195
|
const optionalConditionParameters = (_a = options.optionalConditionParameters) !== null && _a !== void 0 ? _a : {};
|
|
178
196
|
if (!parsed.query) {
|
|
179
197
|
return {
|
|
198
|
+
query: null,
|
|
180
199
|
sql: parsed.sql,
|
|
181
200
|
applied,
|
|
182
201
|
skipped,
|
|
@@ -186,14 +205,16 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
186
205
|
};
|
|
187
206
|
}
|
|
188
207
|
let currentSql = parsed.sql;
|
|
208
|
+
let currentQuery = parsed.query;
|
|
209
|
+
let formatterGeneratedSource = parsed.formatterGeneratedSource;
|
|
189
210
|
const branches = collectSupportedOptionalConditionBranches(parsed.query);
|
|
190
211
|
const pruneBranches = branches.filter(branch => hasOwnParameter(optionalConditionParameters, branch.parameterName)
|
|
191
212
|
&& isAbsentOptionalValue(optionalConditionParameters, branch.parameterName));
|
|
192
213
|
if (pruneBranches.length > 0) {
|
|
193
214
|
try {
|
|
194
215
|
pruneOptionalConditionBranches(parsed.query, optionalConditionParameters);
|
|
195
|
-
currentSql = formatSqlComponent(parsed.query);
|
|
196
|
-
applied.push(...pruneBranches.map(buildSssqlApplied));
|
|
216
|
+
currentSql = formatSqlComponent(parsed.query, options);
|
|
217
|
+
applied.push(...pruneBranches.map(branch => buildSssqlApplied(branch, options)));
|
|
197
218
|
}
|
|
198
219
|
catch (error) {
|
|
199
220
|
errors = [...errors, {
|
|
@@ -205,34 +226,43 @@ const runSssqlOptionalConditionPhase = (input, options) => {
|
|
|
205
226
|
}
|
|
206
227
|
}
|
|
207
228
|
if (errors.length === 0) {
|
|
208
|
-
const refreshPhase =
|
|
229
|
+
const refreshPhase = reuseOwnedModel
|
|
230
|
+
? refreshRemainingSssqlBranches(parsed.query, currentSql, optionalConditionParameters, options)
|
|
231
|
+
: refreshRemainingSssqlBranchesFromSql(currentSql, optionalConditionParameters, options);
|
|
209
232
|
applied.push(...refreshPhase.applied);
|
|
210
233
|
skipped.push(...refreshPhase.skipped);
|
|
211
234
|
warnings.push(...refreshPhase.warnings);
|
|
212
235
|
errors.push(...refreshPhase.errors);
|
|
213
236
|
currentSql = refreshPhase.sql;
|
|
237
|
+
currentQuery = refreshPhase.query;
|
|
238
|
+
formatterGeneratedSource = formatterGeneratedSource || refreshPhase.formatterGeneratedSource;
|
|
214
239
|
}
|
|
215
240
|
else {
|
|
216
241
|
for (const branch of branches) {
|
|
217
242
|
if (pruneBranches.includes(branch)) {
|
|
218
243
|
continue;
|
|
219
244
|
}
|
|
220
|
-
skipped.push(buildSssqlSkipped(branch, optionalConditionParameters));
|
|
245
|
+
skipped.push(buildSssqlSkipped(branch, optionalConditionParameters, options));
|
|
221
246
|
}
|
|
222
247
|
}
|
|
223
248
|
return {
|
|
249
|
+
query: errors.length === 0 ? currentQuery : null,
|
|
224
250
|
sql: errors.length === 0 ? currentSql : parsed.sql,
|
|
225
251
|
applied,
|
|
226
252
|
skipped,
|
|
227
253
|
warnings,
|
|
228
254
|
errors,
|
|
229
|
-
formatterGeneratedSource
|
|
255
|
+
formatterGeneratedSource
|
|
230
256
|
};
|
|
231
257
|
};
|
|
232
258
|
const mapParameterWarnings = (warnings) => warnings.map(warning => (Object.assign({ phaseKind: "parameter_condition_placement" }, warning)));
|
|
233
259
|
const mapParameterErrors = (errors) => errors.map(error => (Object.assign({ phaseKind: "parameter_condition_placement" }, error)));
|
|
234
260
|
const mapParameterApplied = (applied) => applied.map(item => (Object.assign({ phaseKind: "parameter_condition_placement" }, item)));
|
|
235
261
|
const mapParameterSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "parameter_condition_placement" }, item)));
|
|
262
|
+
const mapStaticWarnings = (warnings) => warnings.map(warning => (Object.assign({ phaseKind: "static_predicate_placement" }, warning)));
|
|
263
|
+
const mapStaticErrors = (errors) => errors.map(error => (Object.assign({ phaseKind: "static_predicate_placement" }, error)));
|
|
264
|
+
const mapStaticApplied = (applied) => applied.map(item => (Object.assign({ phaseKind: "static_predicate_placement" }, item)));
|
|
265
|
+
const mapStaticSkipped = (skipped) => skipped.map(item => (Object.assign({ phaseKind: "static_predicate_placement" }, item)));
|
|
236
266
|
const makePhaseSummary = (kind, counts) => ({
|
|
237
267
|
kind,
|
|
238
268
|
appliedCount: counts.appliedCount,
|
|
@@ -241,24 +271,42 @@ const makePhaseSummary = (kind, counts) => ({
|
|
|
241
271
|
errorCount: counts.errorCount
|
|
242
272
|
});
|
|
243
273
|
const runConditionOptimization = (input, options, defaultDryRun) => {
|
|
244
|
-
var _a;
|
|
274
|
+
var _a, _b, _c;
|
|
245
275
|
const dryRun = (_a = options.dryRun) !== null && _a !== void 0 ? _a : defaultDryRun;
|
|
246
|
-
|
|
247
|
-
//
|
|
248
|
-
//
|
|
276
|
+
const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
|
|
277
|
+
// Run semantic SSSQL handling before generic placement phases so optional
|
|
278
|
+
// branches remain owned by SSSQL even if later phases grow broader support.
|
|
249
279
|
const sssqlPhase = runSssqlOptionalConditionPhase(input, Object.assign(Object.assign({}, options), { dryRun }));
|
|
280
|
+
const parameterOptimizer = new ParameterConditionPlacementOptimizer();
|
|
281
|
+
const parameterInput = reuseOwnedModel
|
|
282
|
+
? (_b = sssqlPhase.query) !== null && _b !== void 0 ? _b : sssqlPhase.sql
|
|
283
|
+
: sssqlPhase.sql;
|
|
284
|
+
const parameterOptions = Object.assign(Object.assign({}, options), { dryRun, cloneInput: reuseOwnedModel && sssqlPhase.query ? false : options.cloneInput });
|
|
250
285
|
const parameterPhase = dryRun
|
|
251
|
-
?
|
|
252
|
-
:
|
|
286
|
+
? parameterOptimizer.plan(parameterInput, parameterOptions)
|
|
287
|
+
: parameterOptimizer.optimize(parameterInput, parameterOptions);
|
|
253
288
|
const parameterWarnings = mapParameterWarnings(parameterPhase.warnings);
|
|
254
289
|
const parameterErrors = mapParameterErrors(parameterPhase.errors);
|
|
255
290
|
const parameterApplied = mapParameterApplied(parameterPhase.applied);
|
|
256
291
|
const parameterSkipped = mapParameterSkipped(parameterPhase.skipped);
|
|
257
|
-
const
|
|
258
|
-
const
|
|
292
|
+
const staticOptimizer = new StaticPredicatePlacementOptimizer();
|
|
293
|
+
const staticInput = reuseOwnedModel
|
|
294
|
+
? (_c = parameterPhase.query) !== null && _c !== void 0 ? _c : parameterPhase.sql
|
|
295
|
+
: parameterPhase.sql;
|
|
296
|
+
const staticOptions = Object.assign(Object.assign({}, options), { dryRun, cloneInput: reuseOwnedModel && parameterPhase.query ? false : options.cloneInput });
|
|
297
|
+
const staticPhase = dryRun
|
|
298
|
+
? staticOptimizer.plan(staticInput, staticOptions)
|
|
299
|
+
: staticOptimizer.optimize(staticInput, staticOptions);
|
|
300
|
+
const staticWarnings = mapStaticWarnings(staticPhase.warnings);
|
|
301
|
+
const staticErrors = mapStaticErrors(staticPhase.errors);
|
|
302
|
+
const staticApplied = mapStaticApplied(staticPhase.applied);
|
|
303
|
+
const staticSkipped = mapStaticSkipped(staticPhase.skipped);
|
|
304
|
+
const warnings = [...sssqlPhase.warnings, ...parameterWarnings, ...staticWarnings];
|
|
305
|
+
const errors = [...sssqlPhase.errors, ...parameterErrors, ...staticErrors];
|
|
259
306
|
return {
|
|
260
307
|
ok: errors.length === 0,
|
|
261
|
-
sql:
|
|
308
|
+
sql: staticPhase.sql,
|
|
309
|
+
query: staticPhase.query,
|
|
262
310
|
phases: [
|
|
263
311
|
makePhaseSummary("sssql_optional_condition", {
|
|
264
312
|
appliedCount: sssqlPhase.applied.length,
|
|
@@ -271,17 +319,25 @@ const runConditionOptimization = (input, options, defaultDryRun) => {
|
|
|
271
319
|
skippedCount: parameterSkipped.length,
|
|
272
320
|
warningCount: parameterWarnings.length,
|
|
273
321
|
errorCount: parameterErrors.length
|
|
322
|
+
}),
|
|
323
|
+
makePhaseSummary("static_predicate_placement", {
|
|
324
|
+
appliedCount: staticApplied.length,
|
|
325
|
+
skippedCount: staticSkipped.length,
|
|
326
|
+
warningCount: staticWarnings.length,
|
|
327
|
+
errorCount: staticErrors.length
|
|
274
328
|
})
|
|
275
329
|
],
|
|
276
|
-
applied: [...sssqlPhase.applied, ...parameterApplied],
|
|
277
|
-
skipped: [...sssqlPhase.skipped, ...parameterSkipped],
|
|
330
|
+
applied: [...sssqlPhase.applied, ...parameterApplied, ...staticApplied],
|
|
331
|
+
skipped: [...sssqlPhase.skipped, ...parameterSkipped, ...staticSkipped],
|
|
278
332
|
warnings,
|
|
279
333
|
errors,
|
|
280
334
|
safety: {
|
|
281
335
|
mode: "safe_only",
|
|
282
336
|
unsafeRewriteApplied: false,
|
|
283
337
|
dryRun,
|
|
284
|
-
formatterGeneratedSource: sssqlPhase.formatterGeneratedSource
|
|
338
|
+
formatterGeneratedSource: sssqlPhase.formatterGeneratedSource
|
|
339
|
+
|| parameterPhase.safety.formatterGeneratedSource
|
|
340
|
+
|| staticPhase.safety.formatterGeneratedSource
|
|
285
341
|
}
|
|
286
342
|
};
|
|
287
343
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConditionOptimization.js","sourceRoot":"","sources":["../../../src/transformers/ConditionOptimization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACH,mCAAmC,EAMnC,kCAAkC,EACrC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,yCAAyC,EAEzC,8BAA8B,EAEjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAyF9C,MAAM,kBAAkB,GAAG,CAAC,SAA2D,EAAU,EAAE;IAC/F,OAAO,IAAI,YAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CACpB,UAA8C,EAC9C,aAAqB,EACd,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAE9E,MAAM,qBAAqB,GAAG,CAC1B,UAA8C,EAC9C,aAAqB,EACd,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,KAAK,SAAS,CAAC;AAE5F,MAAM,+BAA+B,GAAG,CACpC,KAAiC,EACD,EAAE;IAClC,MAAM,QAAQ,GAAmC,EAAE,CAAC;IACpD,MAAM,MAAM,GAAiC,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChF,MAAM,wBAAwB,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAE3D,IAAI,wBAAwB,EAAE,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC;YACV,SAAS,EAAE,0BAA0B;YACrC,IAAI,EAAE,qBAAqB;YAC3B,OAAO,EAAE,wFAAwF;SACpG,CAAC,CAAC;IACP,CAAC;IAED,IAAI,CAAC;QACD,OAAO;YACH,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC;YACzC,GAAG,EAAE,SAAS;YACd,wBAAwB;YACxB,QAAQ;YACR,MAAM;SACT,CAAC;IACN,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,IAAI,CAAC;YACR,SAAS,EAAE,0BAA0B;YACrC,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,sEAAsE;YAC/E,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACjE,CAAC,CAAC;QAEH,OAAO;YACH,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,SAAS;YACd,wBAAwB;YACxB,QAAQ;YACR,MAAM;SACT,CAAC;IACN,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACtB,MAAwC,EACX,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,uBAAuB;QAC7B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,qGAAqG;KAChH,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC7B,MAAwC,EACxC,oBAA4B,EACC,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,oBAAoB;QACpB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,wGAAwG;KACnH,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACtB,MAAwC,EACxC,UAA8C,EACjB,EAAE;IAC/B,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;IAC5E,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI,EAAE,iBAAiB;YACnB,CAAC,CAAC,kCAAkC;YACpC,CAAC,CAAC,uCAAuC;QAC7C,MAAM,EAAE,iBAAiB;YACrB,CAAC,CAAC,yEAAyE;YAC3E,CAAC,CAAC,mFAAmF;KAC5F,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC7B,MAAwC,EACxC,IAAY,EACZ,MAAc,EACe,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC;QACnD,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,IAAI;QACJ,MAAM;KACT,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC7B,QAAqD,EACrD,UAA8C,EACZ,EAAE;IACpC,MAAM,OAAO,GAAuC,EAAE,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,eAAe,CAAC,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC;YAC7E,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,6BAA6B,GAAG,CAClC,GAAW,EACX,UAA8C,EAC9B,EAAE;IAClB,MAAM,MAAM,GAAG,+BAA+B,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,OAAO;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;SAC5D,CAAC;IACN,CAAC;IAED,MAAM,cAAc,GAAG,yCAAyC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,OAAO;YACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;SAC5D,CAAC;IACN,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,OAAO,EAA0B,CAAC;IAC9D,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAqC,CAAC;IAC3E,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC;QACD,IAAI,kBAAkB,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,wBAAwB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IACzG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,OAAO;YACH,GAAG;YACH,OAAO;YACP,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAC1D,MAAM,EACN,oCAAoC,EACpC,uFAAuF,MAAM,EAAE,CAClG,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;SAC5D,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,yCAAyC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9E,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CACjC,MAAM,EACN,oCAAoC,EACpC,mEAAmE,CACtE,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,aAAa,KAAK,MAAM,CAAC,KAAK,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;YAC5D,SAAS;QACb,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,CACjC,MAAM,EACN,6BAA6B,EAC7B,wEAAwE,CAC3E,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,GAAG,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG;QAChE,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;KAC5D,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACnC,KAAiC,EACjC,OAAqC,EACrB,EAAE;;IAClB,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,2BAA2B,GAAG,MAAA,OAAO,CAAC,2BAA2B,mCAAI,EAAE,CAAC;IAE9E,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;YACH,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO;YACP,OAAO;YACP,QAAQ;YACR,MAAM;YACN,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;SAC5D,CAAC;IACN,CAAC;IAED,IAAI,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC;IAC5B,MAAM,QAAQ,GAAG,yCAAyC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC3C,eAAe,CAAC,2BAA2B,EAAE,MAAM,CAAC,aAAa,CAAC;WAC/D,qBAAqB,CAAC,2BAA2B,EAAE,MAAM,CAAC,aAAa,CAAC,CAC9E,CAAC;IAEF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,CAAC;YACD,8BAA8B,CAAC,MAAM,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAC;YAC1E,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE;oBACjB,SAAS,EAAE,0BAA0B;oBACrC,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,0EAA0E;oBACnF,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBACjE,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,6BAA6B,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QACpC,UAAU,GAAG,YAAY,CAAC,GAAG,CAAC;IAClC,CAAC;SAAM,CAAC;QACJ,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,SAAS;YACb,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACzE,CAAC;IACL,CAAC;IAED,OAAO;QACH,GAAG,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG;QAClD,OAAO;QACP,OAAO;QACP,QAAQ;QACR,MAAM;QACN,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;KAC5D,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CACzB,QAA0D,EAC5B,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iBACzD,SAAS,EAAE,+BAA+B,IACvC,OAAO,EACZ,CAAC,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CACvB,MAAsD,EAC1B,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,iBACnD,SAAS,EAAE,+BAA+B,IACvC,KAAK,EACV,CAAC,CAAC;AAEJ,MAAM,mBAAmB,GAAG,CACxB,OAA0C,EACZ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBACrD,SAAS,EAAE,+BAA+B,IACvC,IAAI,EACT,CAAC,CAAC;AAEJ,MAAM,mBAAmB,GAAG,CACxB,OAA6C,EACf,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBACrD,SAAS,EAAE,+BAA+B,IACvC,IAAI,EACT,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CACrB,IAAoC,EACpC,MAKC,EACgC,EAAE,CAAC,CAAC;IACrC,IAAI;IACJ,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,YAAY,EAAE,MAAM,CAAC,YAAY;IACjC,UAAU,EAAE,MAAM,CAAC,UAAU;CAChC,CAAC,CAAC;AAEH,MAAM,wBAAwB,GAAG,CAC7B,KAAiC,EACjC,OAAqC,EACrC,aAAsB,EACK,EAAE;;IAC7B,MAAM,MAAM,GAAG,MAAA,OAAO,CAAC,MAAM,mCAAI,aAAa,CAAC;IAE/C,qEAAqE;IACrE,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,kCAAO,OAAO,KAAE,MAAM,IAAG,CAAC;IACjF,MAAM,cAAc,GAAG,MAAM;QACzB,CAAC,CAAC,kCAAkC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC;QAChE,CAAC,CAAC,mCAAmC,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,eAAe,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,CAAC;IAE1D,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QACvB,GAAG,EAAE,cAAc,CAAC,GAAG;QACvB,MAAM,EAAE;YACJ,gBAAgB,CAAC,0BAA0B,EAAE;gBACzC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;gBACvC,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM;gBACvC,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM;gBACxC,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM;aACvC,CAAC;YACF,gBAAgB,CAAC,+BAA+B,EAAE;gBAC9C,YAAY,EAAE,gBAAgB,CAAC,MAAM;gBACrC,YAAY,EAAE,gBAAgB,CAAC,MAAM;gBACrC,YAAY,EAAE,iBAAiB,CAAC,MAAM;gBACtC,UAAU,EAAE,eAAe,CAAC,MAAM;aACrC,CAAC;SACL;QACD,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC;QACrD,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,gBAAgB,CAAC;QACrD,QAAQ;QACR,MAAM;QACN,MAAM,EAAE;YACJ,IAAI,EAAE,WAAW;YACjB,oBAAoB,EAAE,KAAK;YAC3B,MAAM;YACN,wBAAwB,EAAE,UAAU,CAAC,wBAAwB,IAAI,cAAc,CAAC,MAAM,CAAC,wBAAwB;SAClH;KACJ,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CACrC,KAAiC,EACjC,UAAwC,EAAE,EACf,EAAE;IAC7B,OAAO,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAC9B,KAAiC,EACjC,UAAwC,EAAE,EACf,EAAE;IAC7B,OAAO,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC,CAAC"}
|
|
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;
|