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.
Files changed (42) hide show
  1. package/dist/esm/index.d.ts +2 -0
  2. package/dist/esm/index.js +1 -0
  3. package/dist/esm/index.js.map +1 -1
  4. package/dist/esm/index.min.js +2 -2
  5. package/dist/esm/index.min.js.map +4 -4
  6. package/dist/esm/transformers/ConditionOptimization.d.ts +11 -1
  7. package/dist/esm/transformers/ConditionOptimization.js +122 -66
  8. package/dist/esm/transformers/ConditionOptimization.js.map +1 -1
  9. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  10. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js +408 -141
  11. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  12. package/dist/esm/transformers/SSSQLFilterBuilder.d.ts +6 -0
  13. package/dist/esm/transformers/SSSQLFilterBuilder.js +84 -8
  14. package/dist/esm/transformers/SSSQLFilterBuilder.js.map +1 -1
  15. package/dist/esm/transformers/SqlComponentFormatter.d.ts +11 -0
  16. package/dist/esm/transformers/SqlComponentFormatter.js +16 -0
  17. package/dist/esm/transformers/SqlComponentFormatter.js.map +1 -0
  18. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
  19. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js +1435 -0
  20. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
  21. package/dist/index.js +1 -0
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.min.js +2 -2
  24. package/dist/index.min.js.map +4 -4
  25. package/dist/src/index.d.ts +2 -0
  26. package/dist/src/transformers/ConditionOptimization.d.ts +11 -1
  27. package/dist/src/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  28. package/dist/src/transformers/SSSQLFilterBuilder.d.ts +6 -0
  29. package/dist/src/transformers/SqlComponentFormatter.d.ts +11 -0
  30. package/dist/src/transformers/StaticPredicatePlacementOptimizer.d.ts +103 -0
  31. package/dist/transformers/ConditionOptimization.js +146 -65
  32. package/dist/transformers/ConditionOptimization.js.map +1 -1
  33. package/dist/transformers/ParameterConditionPlacementOptimizer.js +407 -140
  34. package/dist/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  35. package/dist/transformers/SSSQLFilterBuilder.js +92 -16
  36. package/dist/transformers/SSSQLFilterBuilder.js.map +1 -1
  37. package/dist/transformers/SqlComponentFormatter.js +21 -0
  38. package/dist/transformers/SqlComponentFormatter.js.map +1 -0
  39. package/dist/transformers/StaticPredicatePlacementOptimizer.js +1445 -0
  40. package/dist/transformers/StaticPredicatePlacementOptimizer.js.map +1 -0
  41. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  42. 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 { optimizeParameterConditionPlacement, planParameterConditionOptimization } from "./ParameterConditionPlacementOptimizer";
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 { SqlFormatter } from "./SqlFormatter";
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 = (sql, parameters) => {
102
- const parsed = parseConditionOptimizationInput(sql);
108
+ const refreshRemainingSssqlBranches = (query, fallbackSql, parameters, options) => {
103
109
  const applied = [];
104
110
  const skipped = [];
105
- if (!parsed.query) {
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
- sql: parsed.sql,
114
+ query,
115
+ sql: fallbackSql,
119
116
  applied,
120
117
  skipped,
121
- warnings: parsed.warnings,
122
- errors: parsed.errors,
123
- formatterGeneratedSource: parsed.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(parsed.query, buildSssqlRefreshFilters(beforeBranches, parameters));
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
- sql,
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: parsed.warnings,
142
- errors: parsed.errors,
143
- formatterGeneratedSource: parsed.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(parsed.query);
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
- sql: applied.length > 0 ? formatSqlComponent(parsed.query) : sql,
160
+ query,
161
+ sql: applied.length > 0 || hasSqlComponentFormatOverride(options)
162
+ ? formatSqlComponent(query, options)
163
+ : fallbackSql,
163
164
  applied,
164
165
  skipped,
165
- warnings: parsed.warnings,
166
- errors: parsed.errors,
167
- formatterGeneratedSource: parsed.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 parsed = parseConditionOptimizationInput(input);
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 = refreshRemainingSssqlBranches(currentSql, optionalConditionParameters);
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: parsed.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
- // Run the semantic SSSQL phase before the generic placement phase so
247
- // optional branches remain owned by SSSQL even if parameter placement grows
248
- // broader OR-predicate support later.
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
- ? planParameterConditionOptimization(sssqlPhase.sql, { dryRun })
252
- : optimizeParameterConditionPlacement(sssqlPhase.sql, { dryRun });
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 warnings = [...sssqlPhase.warnings, ...parameterWarnings];
258
- const errors = [...sssqlPhase.errors, ...parameterErrors];
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: parameterPhase.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 || parameterPhase.safety.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":"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"}
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,oCAAoC,EAMvC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,iCAAiC,EAKpC,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACH,yCAAyC,EAEzC,8BAA8B,EAEjC,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACH,kBAAkB,EAClB,6BAA6B,EAEhC,MAAM,yBAAyB,CAAC;AAkGjC,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,EACjC,OAAqC,EACL,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,EAAE,OAAO,CAAC,CAAC;IACzF,MAAM,wBAAwB,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC;IAE3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;QAC5D,OAAO;YACH,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,SAAS;YACd,wBAAwB,EAAE,KAAK;YAC/B,QAAQ;YACR,MAAM;SACT,CAAC;IACN,CAAC;IAED,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,EACxC,OAAkC,EACL,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,uBAAuB;QAC7B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAC5D,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,qGAAqG;KAChH,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,wBAAwB,GAAG,CAC7B,MAAwC,EACxC,oBAA4B,EAC5B,OAAkC,EACL,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAC5D,oBAAoB;QACpB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,wGAAwG;KACnH,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACtB,MAAwC,EACxC,UAA8C,EAC9C,OAAkC,EACL,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,EAAE,OAAO,CAAC;QAC5D,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,EACd,OAAkC,EACL,EAAE;IAC/B,OAAO;QACH,SAAS,EAAE,0BAA0B;QACrC,IAAI,EAAE,yBAAyB;QAC/B,YAAY,EAAE,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC;QAC5D,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,KAAkB,EAClB,WAAmB,EACnB,UAA8C,EAC9C,OAAkC,EAClB,EAAE;IAClB,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,OAAO,GAAoC,EAAE,CAAC;IAEpD,MAAM,cAAc,GAAG,yCAAyC,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;YACH,KAAK;YACL,GAAG,EAAE,WAAW;YAChB,OAAO;YACP,OAAO;YACP,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,wBAAwB,EAAE,KAAK;SAClC,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,EAAE,OAAO,CAAC,CAAC,CAAC;QACvF,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,KAAK,EAAE,wBAAwB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAClG,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,KAAK;YACL,GAAG,EAAE,WAAW;YAChB,OAAO;YACP,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,wBAAwB,CAC1D,MAAM,EACN,oCAAoC,EACpC,uFAAuF,MAAM,EAAE,EAC/F,OAAO,CACV,CAAC;YACF,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,EAAE;YACV,wBAAwB,EAAE,KAAK;SAClC,CAAC;IACN,CAAC;IAED,MAAM,aAAa,GAAG,yCAAyC,CAAC,KAAK,CAAC,CAAC;IACvE,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,EACnE,OAAO,CACV,CAAC,CAAC;YACH,SAAS;QACb,CAAC;QAED,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACpE,IAAI,aAAa,KAAK,MAAM,CAAC,KAAK,IAAI,WAAW,KAAK,YAAY,EAAE,CAAC;YACjE,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,SAAS;QACb,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,CACjC,MAAM,EACN,6BAA6B,EAC7B,wEAAwE,EACxE,OAAO,CACV,CAAC,CAAC;IACP,CAAC;IAED,OAAO;QACH,KAAK;QACL,GAAG,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,6BAA6B,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC;YACpC,CAAC,CAAC,WAAW;QACjB,OAAO;QACP,OAAO;QACP,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,EAAE;QACV,wBAAwB,EAAE,KAAK;KAClC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,oCAAoC,GAAG,CACzC,GAAW,EACX,UAA8C,EAC9C,OAAqC,EACrB,EAAE;IAClB,MAAM,MAAM,GAAG,+BAA+B,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO;YACH,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,wBAAwB,EAAE,MAAM,CAAC,wBAAwB;SAC5D,CAAC;IACN,CAAC;IAED,MAAM,SAAS,GAAG,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxF,uCACO,SAAS,KACZ,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,EACrD,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,EAC/C,wBAAwB,EAAE,MAAM,CAAC,wBAAwB,IAAI,SAAS,CAAC,wBAAwB,IACjG;AACN,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACnC,KAAiC,EACjC,OAAqC,EACrB,EAAE;;IAClB,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IAClF,MAAM,MAAM,GAAG,+BAA+B,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC/D,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,KAAK,EAAE,IAAI;YACX,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,IAAI,YAAY,GAAuB,MAAM,CAAC,KAAK,CAAC;IACpD,IAAI,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;IAC/D,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,EAAE,OAAO,CAAC,CAAC;YACvD,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACrF,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,eAAe;YAChC,CAAC,CAAC,6BAA6B,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,2BAA2B,EAAE,OAAO,CAAC;YAC/F,CAAC,CAAC,oCAAoC,CAAC,UAAU,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAC7F,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;QAC9B,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC;QAClC,wBAAwB,GAAG,wBAAwB,IAAI,YAAY,CAAC,wBAAwB,CAAC;IACjG,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,EAAE,OAAO,CAAC,CAAC,CAAC;QAClF,CAAC;IACL,CAAC;IAED,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;QAChD,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;KAC3B,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,iBAAiB,GAAG,CACtB,QAAoD,EACtB,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,iBACzD,SAAS,EAAE,4BAA4B,IACpC,OAAO,EACZ,CAAC,CAAC;AAEJ,MAAM,eAAe,GAAG,CACpB,MAAgD,EACpB,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,iBACnD,SAAS,EAAE,4BAA4B,IACpC,KAAK,EACV,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CACrB,OAAuC,EACT,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBACrD,SAAS,EAAE,4BAA4B,IACpC,IAAI,EACT,CAAC,CAAC;AAEJ,MAAM,gBAAgB,GAAG,CACrB,OAA0C,EACZ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iBACrD,SAAS,EAAE,4BAA4B,IACpC,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;IAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,UAAU,KAAK,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;IAElF,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,UAAU,GAAG,8BAA8B,CAAC,KAAK,kCAAO,OAAO,KAAE,MAAM,IAAG,CAAC;IACjF,MAAM,kBAAkB,GAAG,IAAI,oCAAoC,EAAE,CAAC;IACtE,MAAM,cAAc,GAAG,eAAe;QAClC,CAAC,CAAC,MAAA,UAAU,CAAC,KAAK,mCAAI,UAAU,CAAC,GAAG;QACpC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;IACrB,MAAM,gBAAgB,mCACf,OAAO,KACV,MAAM,EACN,UAAU,EAAE,eAAe,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAC/E,CAAC;IACF,MAAM,cAAc,GAAG,MAAM;QACzB,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC3D,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;IACpE,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,eAAe,GAAG,IAAI,iCAAiC,EAAE,CAAC;IAChE,MAAM,WAAW,GAAG,eAAe;QAC/B,CAAC,CAAC,MAAA,cAAc,CAAC,KAAK,mCAAI,cAAc,CAAC,GAAG;QAC5C,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC;IACzB,MAAM,aAAa,mCACZ,OAAO,KACV,MAAM,EACN,UAAU,EAAE,eAAe,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GACnF,CAAC;IACF,MAAM,WAAW,GAAG,MAAM;QACtB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC;QAClD,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,eAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,aAAa,GAAG,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,CAAC,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,iBAAiB,EAAE,GAAG,cAAc,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,eAAe,EAAE,GAAG,YAAY,CAAC,CAAC;IAE3E,OAAO;QACH,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QACvB,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,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;YACF,gBAAgB,CAAC,4BAA4B,EAAE;gBAC3C,YAAY,EAAE,aAAa,CAAC,MAAM;gBAClC,YAAY,EAAE,aAAa,CAAC,MAAM;gBAClC,YAAY,EAAE,cAAc,CAAC,MAAM;gBACnC,UAAU,EAAE,YAAY,CAAC,MAAM;aAClC,CAAC;SACL;QACD,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC;QACvE,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,aAAa,CAAC;QACvE,QAAQ;QACR,MAAM;QACN,MAAM,EAAE;YACJ,IAAI,EAAE,WAAW;YACjB,oBAAoB,EAAE,KAAK;YAC3B,MAAM;YACN,wBAAwB,EAAE,UAAU,CAAC,wBAAwB;mBACtD,cAAc,CAAC,MAAM,CAAC,wBAAwB;mBAC9C,WAAW,CAAC,MAAM,CAAC,wBAAwB;SACrD;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,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, UNION, DISTINCT, GROUP BY, WINDOW, OUTER
9
- * JOIN, expression outputs, and function predicates are reported as skipped.
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 findCurrentQueryBoundary;
64
- private findTargetQueryBoundary;
72
+ private findRootQueryBoundary;
73
+ private resolveTargetPlacement;
65
74
  private resolveSourceBinding;
66
75
  private resolveUpstreamQuery;
67
- private resolveTargetColumn;
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;