rawsql-ts 0.26.1 → 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 (34) hide show
  1. package/dist/esm/index.d.ts +1 -0
  2. package/dist/esm/index.js.map +1 -1
  3. package/dist/esm/index.min.js +1 -1
  4. package/dist/esm/index.min.js.map +3 -3
  5. package/dist/esm/transformers/ConditionOptimization.d.ts +1 -0
  6. package/dist/esm/transformers/ConditionOptimization.js +97 -57
  7. package/dist/esm/transformers/ConditionOptimization.js.map +1 -1
  8. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  9. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js +408 -138
  10. package/dist/esm/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  11. package/dist/esm/transformers/SqlComponentFormatter.d.ts +9 -1
  12. package/dist/esm/transformers/SqlComponentFormatter.js +10 -1
  13. package/dist/esm/transformers/SqlComponentFormatter.js.map +1 -1
  14. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.d.ts +22 -4
  15. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js +332 -95
  16. package/dist/esm/transformers/StaticPredicatePlacementOptimizer.js.map +1 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/index.min.js +1 -1
  19. package/dist/index.min.js.map +3 -3
  20. package/dist/src/index.d.ts +1 -0
  21. package/dist/src/transformers/ConditionOptimization.d.ts +1 -0
  22. package/dist/src/transformers/ParameterConditionPlacementOptimizer.d.ts +26 -7
  23. package/dist/src/transformers/SqlComponentFormatter.d.ts +9 -1
  24. package/dist/src/transformers/StaticPredicatePlacementOptimizer.d.ts +22 -4
  25. package/dist/transformers/ConditionOptimization.js +107 -54
  26. package/dist/transformers/ConditionOptimization.js.map +1 -1
  27. package/dist/transformers/ParameterConditionPlacementOptimizer.js +406 -136
  28. package/dist/transformers/ParameterConditionPlacementOptimizer.js.map +1 -1
  29. package/dist/transformers/SqlComponentFormatter.js +12 -2
  30. package/dist/transformers/SqlComponentFormatter.js.map +1 -1
  31. package/dist/transformers/StaticPredicatePlacementOptimizer.js +330 -93
  32. package/dist/transformers/StaticPredicatePlacementOptimizer.js.map +1 -1
  33. package/dist/tsconfig.browser.tsbuildinfo +1 -1
  34. package/package.json +1 -1
@@ -64,6 +64,7 @@ export interface ConditionOptimizationSafety {
64
64
  export interface ConditionOptimizationResult {
65
65
  ok: boolean;
66
66
  sql: string;
67
+ query: SelectQuery | null;
67
68
  phases: readonly ConditionOptimizationPhaseSummary[];
68
69
  applied: readonly ConditionOptimizationApplied[];
69
70
  skipped: readonly ConditionOptimizationSkipped[];
@@ -1,16 +1,25 @@
1
1
  import { SelectQueryParser } from "../parsers/SelectQueryParser";
2
- import { optimizeParameterConditionPlacement, planParameterConditionOptimization } from "./ParameterConditionPlacementOptimizer";
3
- import { optimizeStaticPredicatePlacement, planStaticPredicatePlacement } from "./StaticPredicatePlacementOptimizer";
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,31 +52,31 @@ 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"
@@ -77,11 +86,11 @@ const buildSssqlSkipped = (branch, parameters) => {
77
86
  : "No optional branch parameter value was provided, so the branch remains unchanged."
78
87
  };
79
88
  };
80
- const buildSssqlRefreshSkipped = (branch, code, reason) => {
89
+ const buildSssqlRefreshSkipped = (branch, code, reason, options) => {
81
90
  return {
82
91
  phaseKind: "sssql_optional_condition",
83
92
  kind: "optional_branch_skipped",
84
- conditionSql: formatSqlComponent(branch.expression),
93
+ conditionSql: formatSqlComponent(branch.expression, options),
85
94
  parameterName: branch.parameterName,
86
95
  code,
87
96
  reason
@@ -96,78 +105,89 @@ const buildSssqlRefreshFilters = (branches, parameters) => {
96
105
  }
97
106
  return filters;
98
107
  };
99
- const refreshRemainingSssqlBranches = (sql, parameters) => {
100
- const parsed = parseConditionOptimizationInput(sql);
108
+ const refreshRemainingSssqlBranches = (query, fallbackSql, parameters, options) => {
101
109
  const applied = [];
102
110
  const skipped = [];
103
- if (!parsed.query) {
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);
111
+ const beforeBranches = collectSupportedOptionalConditionBranches(query);
114
112
  if (beforeBranches.length === 0) {
115
113
  return {
116
- sql: parsed.sql,
114
+ query,
115
+ sql: fallbackSql,
117
116
  applied,
118
117
  skipped,
119
- warnings: parsed.warnings,
120
- errors: parsed.errors,
121
- formatterGeneratedSource: parsed.formatterGeneratedSource
118
+ warnings: [],
119
+ errors: [],
120
+ formatterGeneratedSource: false
122
121
  };
123
122
  }
124
123
  const beforeBranchSql = new WeakMap();
125
124
  const beforeBranchQuery = new WeakMap();
126
125
  for (const branch of beforeBranches) {
127
- beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression));
126
+ beforeBranchSql.set(branch.expression, formatSqlComponent(branch.expression, options));
128
127
  beforeBranchQuery.set(branch.expression, branch.query);
129
128
  }
130
129
  try {
131
- new SSSQLFilterBuilder().refresh(parsed.query, buildSssqlRefreshFilters(beforeBranches, parameters));
130
+ new SSSQLFilterBuilder().refresh(query, buildSssqlRefreshFilters(beforeBranches, parameters));
132
131
  }
133
132
  catch (error) {
134
133
  const detail = error instanceof Error ? error.message : String(error);
135
134
  return {
136
- sql,
135
+ query,
136
+ sql: fallbackSql,
137
137
  applied,
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}`)),
139
- warnings: parsed.warnings,
140
- errors: parsed.errors,
141
- 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
142
142
  };
143
143
  }
144
- const afterBranches = collectSupportedOptionalConditionBranches(parsed.query);
144
+ const afterBranches = collectSupportedOptionalConditionBranches(query);
145
145
  for (const branch of afterBranches) {
146
146
  const previousSql = beforeBranchSql.get(branch.expression);
147
147
  const previousQuery = beforeBranchQuery.get(branch.expression);
148
148
  if (!previousSql || !previousQuery) {
149
- 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));
150
150
  continue;
151
151
  }
152
- const refreshedSql = formatSqlComponent(branch.expression);
152
+ const refreshedSql = formatSqlComponent(branch.expression, options);
153
153
  if (previousQuery !== branch.query || previousSql !== refreshedSql) {
154
- applied.push(buildSssqlRefreshApplied(branch, previousSql));
154
+ applied.push(buildSssqlRefreshApplied(branch, previousSql, options));
155
155
  continue;
156
156
  }
157
- 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));
158
158
  }
159
159
  return {
160
- sql: applied.length > 0 ? formatSqlComponent(parsed.query) : sql,
160
+ query,
161
+ sql: applied.length > 0 || hasSqlComponentFormatOverride(options)
162
+ ? formatSqlComponent(query, options)
163
+ : fallbackSql,
161
164
  applied,
162
165
  skipped,
163
- warnings: parsed.warnings,
164
- errors: parsed.errors,
165
- formatterGeneratedSource: parsed.formatterGeneratedSource
166
+ warnings: [],
167
+ errors: [],
168
+ formatterGeneratedSource: false
166
169
  };
167
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
+ };
168
187
  const runSssqlOptionalConditionPhase = (input, options) => {
169
188
  var _a;
170
- const parsed = parseConditionOptimizationInput(input);
189
+ const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
190
+ const parsed = parseConditionOptimizationInput(input, options);
171
191
  const warnings = [...parsed.warnings];
172
192
  let errors = [...parsed.errors];
173
193
  const applied = [];
@@ -175,6 +195,7 @@ const runSssqlOptionalConditionPhase = (input, options) => {
175
195
  const optionalConditionParameters = (_a = options.optionalConditionParameters) !== null && _a !== void 0 ? _a : {};
176
196
  if (!parsed.query) {
177
197
  return {
198
+ query: null,
178
199
  sql: parsed.sql,
179
200
  applied,
180
201
  skipped,
@@ -184,14 +205,16 @@ const runSssqlOptionalConditionPhase = (input, options) => {
184
205
  };
185
206
  }
186
207
  let currentSql = parsed.sql;
208
+ let currentQuery = parsed.query;
209
+ let formatterGeneratedSource = parsed.formatterGeneratedSource;
187
210
  const branches = collectSupportedOptionalConditionBranches(parsed.query);
188
211
  const pruneBranches = branches.filter(branch => hasOwnParameter(optionalConditionParameters, branch.parameterName)
189
212
  && isAbsentOptionalValue(optionalConditionParameters, branch.parameterName));
190
213
  if (pruneBranches.length > 0) {
191
214
  try {
192
215
  pruneOptionalConditionBranches(parsed.query, optionalConditionParameters);
193
- currentSql = formatSqlComponent(parsed.query);
194
- applied.push(...pruneBranches.map(buildSssqlApplied));
216
+ currentSql = formatSqlComponent(parsed.query, options);
217
+ applied.push(...pruneBranches.map(branch => buildSssqlApplied(branch, options)));
195
218
  }
196
219
  catch (error) {
197
220
  errors = [...errors, {
@@ -203,28 +226,33 @@ const runSssqlOptionalConditionPhase = (input, options) => {
203
226
  }
204
227
  }
205
228
  if (errors.length === 0) {
206
- const refreshPhase = refreshRemainingSssqlBranches(currentSql, optionalConditionParameters);
229
+ const refreshPhase = reuseOwnedModel
230
+ ? refreshRemainingSssqlBranches(parsed.query, currentSql, optionalConditionParameters, options)
231
+ : refreshRemainingSssqlBranchesFromSql(currentSql, optionalConditionParameters, options);
207
232
  applied.push(...refreshPhase.applied);
208
233
  skipped.push(...refreshPhase.skipped);
209
234
  warnings.push(...refreshPhase.warnings);
210
235
  errors.push(...refreshPhase.errors);
211
236
  currentSql = refreshPhase.sql;
237
+ currentQuery = refreshPhase.query;
238
+ formatterGeneratedSource = formatterGeneratedSource || refreshPhase.formatterGeneratedSource;
212
239
  }
213
240
  else {
214
241
  for (const branch of branches) {
215
242
  if (pruneBranches.includes(branch)) {
216
243
  continue;
217
244
  }
218
- skipped.push(buildSssqlSkipped(branch, optionalConditionParameters));
245
+ skipped.push(buildSssqlSkipped(branch, optionalConditionParameters, options));
219
246
  }
220
247
  }
221
248
  return {
249
+ query: errors.length === 0 ? currentQuery : null,
222
250
  sql: errors.length === 0 ? currentSql : parsed.sql,
223
251
  applied,
224
252
  skipped,
225
253
  warnings,
226
254
  errors,
227
- formatterGeneratedSource: parsed.formatterGeneratedSource
255
+ formatterGeneratedSource
228
256
  };
229
257
  };
230
258
  const mapParameterWarnings = (warnings) => warnings.map(warning => (Object.assign({ phaseKind: "parameter_condition_placement" }, warning)));
@@ -243,21 +271,32 @@ const makePhaseSummary = (kind, counts) => ({
243
271
  errorCount: counts.errorCount
244
272
  });
245
273
  const runConditionOptimization = (input, options, defaultDryRun) => {
246
- var _a;
274
+ var _a, _b, _c;
247
275
  const dryRun = (_a = options.dryRun) !== null && _a !== void 0 ? _a : defaultDryRun;
276
+ const reuseOwnedModel = options.cloneInput === false && typeof input !== "string";
248
277
  // Run semantic SSSQL handling before generic placement phases so optional
249
278
  // branches remain owned by SSSQL even if later phases grow broader support.
250
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 });
251
285
  const parameterPhase = dryRun
252
- ? planParameterConditionOptimization(sssqlPhase.sql, { dryRun })
253
- : optimizeParameterConditionPlacement(sssqlPhase.sql, { dryRun });
286
+ ? parameterOptimizer.plan(parameterInput, parameterOptions)
287
+ : parameterOptimizer.optimize(parameterInput, parameterOptions);
254
288
  const parameterWarnings = mapParameterWarnings(parameterPhase.warnings);
255
289
  const parameterErrors = mapParameterErrors(parameterPhase.errors);
256
290
  const parameterApplied = mapParameterApplied(parameterPhase.applied);
257
291
  const parameterSkipped = mapParameterSkipped(parameterPhase.skipped);
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 });
258
297
  const staticPhase = dryRun
259
- ? planStaticPredicatePlacement(parameterPhase.sql, { dryRun })
260
- : optimizeStaticPredicatePlacement(parameterPhase.sql, { dryRun });
298
+ ? staticOptimizer.plan(staticInput, staticOptions)
299
+ : staticOptimizer.optimize(staticInput, staticOptions);
261
300
  const staticWarnings = mapStaticWarnings(staticPhase.warnings);
262
301
  const staticErrors = mapStaticErrors(staticPhase.errors);
263
302
  const staticApplied = mapStaticApplied(staticPhase.applied);
@@ -267,6 +306,7 @@ const runConditionOptimization = (input, options, defaultDryRun) => {
267
306
  return {
268
307
  ok: errors.length === 0,
269
308
  sql: staticPhase.sql,
309
+ query: staticPhase.query,
270
310
  phases: [
271
311
  makePhaseSummary("sssql_optional_condition", {
272
312
  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, 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;