rawsql-ts 0.24.4 → 0.25.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 +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.min.js +5 -5
- package/dist/esm/index.min.js.map +4 -4
- package/dist/esm/parsers/FunctionExpressionParser.d.ts +3 -0
- package/dist/esm/parsers/FunctionExpressionParser.js +50 -2
- package/dist/esm/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/esm/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/esm/parsers/SqlPrintTokenParser.js +11 -1
- package/dist/esm/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
- package/dist/esm/transformers/AstCommentAttachmentExtractor.js +221 -0
- package/dist/esm/transformers/AstCommentAttachmentExtractor.js.map +1 -0
- package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
- package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js +235 -0
- package/dist/esm/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
- package/dist/esm/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
- package/dist/esm/transformers/NamedQueryDefinitionExtractor.js +370 -0
- package/dist/esm/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
- package/dist/esm/transformers/SelectBodyExtractor.d.ts +21 -0
- package/dist/esm/transformers/SelectBodyExtractor.js +137 -0
- package/dist/esm/transformers/SelectBodyExtractor.js.map +1 -0
- package/dist/esm/transformers/SelectOutputCollector.d.ts +47 -0
- package/dist/esm/transformers/SelectOutputCollector.js +281 -0
- package/dist/esm/transformers/SelectOutputCollector.js.map +1 -0
- package/dist/esm/transformers/SelectValueCollector.d.ts +9 -1
- package/dist/esm/transformers/SelectValueCollector.js +83 -58
- package/dist/esm/transformers/SelectValueCollector.js.map +1 -1
- package/dist/esm/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
- package/dist/esm/transformers/WildcardColumnInferenceCollector.js +373 -0
- package/dist/esm/transformers/WildcardColumnInferenceCollector.js.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +5 -5
- package/dist/index.min.js.map +4 -4
- package/dist/parsers/FunctionExpressionParser.js +49 -1
- package/dist/parsers/FunctionExpressionParser.js.map +1 -1
- package/dist/parsers/SqlPrintTokenParser.js +11 -1
- package/dist/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/index.d.ts +6 -0
- package/dist/src/parsers/FunctionExpressionParser.d.ts +3 -0
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +1 -0
- package/dist/src/transformers/AstCommentAttachmentExtractor.d.ts +61 -0
- package/dist/src/transformers/ClauseScopedColumnReferenceCollector.d.ts +47 -0
- package/dist/src/transformers/NamedQueryDefinitionExtractor.d.ts +53 -0
- package/dist/src/transformers/SelectBodyExtractor.d.ts +21 -0
- package/dist/src/transformers/SelectOutputCollector.d.ts +47 -0
- package/dist/src/transformers/SelectValueCollector.d.ts +9 -1
- package/dist/src/transformers/WildcardColumnInferenceCollector.d.ts +129 -0
- package/dist/transformers/AstCommentAttachmentExtractor.js +231 -0
- package/dist/transformers/AstCommentAttachmentExtractor.js.map +1 -0
- package/dist/transformers/ClauseScopedColumnReferenceCollector.js +239 -0
- package/dist/transformers/ClauseScopedColumnReferenceCollector.js.map +1 -0
- package/dist/transformers/NamedQueryDefinitionExtractor.js +374 -0
- package/dist/transformers/NamedQueryDefinitionExtractor.js.map +1 -0
- package/dist/transformers/SelectBodyExtractor.js +141 -0
- package/dist/transformers/SelectBodyExtractor.js.map +1 -0
- package/dist/transformers/SelectOutputCollector.js +291 -0
- package/dist/transformers/SelectOutputCollector.js.map +1 -0
- package/dist/transformers/SelectValueCollector.js +83 -58
- package/dist/transformers/SelectValueCollector.js.map +1 -1
- package/dist/transformers/WildcardColumnInferenceCollector.js +377 -0
- package/dist/transformers/WildcardColumnInferenceCollector.js.map +1 -0
- package/dist/tsconfig.browser.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { SelectQuery } from "../models/SelectQuery";
|
|
2
|
+
import { ClauseScopedColumnReferenceClause } from "./ClauseScopedColumnReferenceCollector";
|
|
3
|
+
/** Kind of named query boundary whose wildcard output is being inferred. */
|
|
4
|
+
export type WildcardColumnInferenceTargetKind = "cte" | "derivedTable";
|
|
5
|
+
/** Syntax form of the wildcard SELECT item that may supply required columns. */
|
|
6
|
+
export type WildcardColumnInferenceWildcardKind = "qualified" | "unqualified";
|
|
7
|
+
/** Conservative reason why a downstream requirement could not be assigned to one wildcard supplier. */
|
|
8
|
+
export type WildcardColumnInferenceUnresolvedReason = "duplicateOutputOwnership" | "multipleWildcardSuppliers" | "unqualifiedWildcardMultipleSources" | "noWildcardSupplier" | "unsupportedQueryShape";
|
|
9
|
+
/** Clause-scoped downstream reference that requires an output column from the target. */
|
|
10
|
+
export interface WildcardColumnInferenceRequiredBy {
|
|
11
|
+
/** Clause that owns the downstream reference. */
|
|
12
|
+
clause: ClauseScopedColumnReferenceClause;
|
|
13
|
+
/** SQL text form of the downstream column reference. */
|
|
14
|
+
qualifiedName: string;
|
|
15
|
+
/** Namespace or alias used by the downstream reference, if present. */
|
|
16
|
+
namespace: string | null;
|
|
17
|
+
/** Output column name required by the downstream reference. */
|
|
18
|
+
column: string;
|
|
19
|
+
}
|
|
20
|
+
/** Metadata for a wildcard SELECT item inside the target query. */
|
|
21
|
+
export interface WildcardColumnInferenceWildcard {
|
|
22
|
+
/** Whether the wildcard was written as `*` or as a qualified form such as `a.*`. */
|
|
23
|
+
kind: WildcardColumnInferenceWildcardKind;
|
|
24
|
+
/** SELECT-list position of the wildcard item. */
|
|
25
|
+
outputIndex: number;
|
|
26
|
+
/** Source alias that the wildcard can safely be associated with, when known. */
|
|
27
|
+
sourceAlias: string | null;
|
|
28
|
+
/** Physical source name for the wildcard source, when it is statically visible. */
|
|
29
|
+
sourceName: string | null;
|
|
30
|
+
}
|
|
31
|
+
/** Explicit non-wildcard output preserved alongside inferred wildcard requirements. */
|
|
32
|
+
export interface WildcardColumnInferenceExplicitColumn {
|
|
33
|
+
/** Output name exposed by the explicit SELECT item. */
|
|
34
|
+
outputName: string;
|
|
35
|
+
/** Source alias for a simple qualified column expression, when uniquely known. */
|
|
36
|
+
sourceAlias: string | null;
|
|
37
|
+
/** Physical source name for a simple qualified column expression, when uniquely known. */
|
|
38
|
+
sourceName: string | null;
|
|
39
|
+
/** Source column name for a simple qualified column expression, when uniquely known. */
|
|
40
|
+
sourceColumnName: string | null;
|
|
41
|
+
}
|
|
42
|
+
/** Resolved required column supplied by a single unambiguous wildcard. */
|
|
43
|
+
export interface WildcardColumnInferenceResolvedColumn {
|
|
44
|
+
/** Output column name required from the target. */
|
|
45
|
+
outputName: string;
|
|
46
|
+
/** Source alias selected as the wildcard supplier. */
|
|
47
|
+
sourceAlias: string | null;
|
|
48
|
+
/** Physical source name selected as the wildcard supplier, when known. */
|
|
49
|
+
sourceName: string | null;
|
|
50
|
+
/** Source column name inferred from the downstream output requirement. */
|
|
51
|
+
sourceColumnName: string;
|
|
52
|
+
/** Wildcard SELECT item that supplies this required column. */
|
|
53
|
+
wildcard: WildcardColumnInferenceWildcard;
|
|
54
|
+
/** Distinct downstream clauses that required this column. */
|
|
55
|
+
requiredByClause: ClauseScopedColumnReferenceClause[];
|
|
56
|
+
/** Clause-scoped downstream references that required this column. */
|
|
57
|
+
requiredBy: WildcardColumnInferenceRequiredBy[];
|
|
58
|
+
}
|
|
59
|
+
/** Required output column that could not be assigned to a single wildcard supplier. */
|
|
60
|
+
export interface WildcardColumnInferenceUnresolvedColumn {
|
|
61
|
+
/** Output column name required from the target. */
|
|
62
|
+
outputName: string;
|
|
63
|
+
/** Conservative reason why inference did not choose a supplier. */
|
|
64
|
+
reason: WildcardColumnInferenceUnresolvedReason;
|
|
65
|
+
/** Candidate wildcard suppliers visible for this requirement. */
|
|
66
|
+
candidateWildcards: WildcardColumnInferenceWildcard[];
|
|
67
|
+
/** Distinct downstream clauses that required this column. */
|
|
68
|
+
requiredByClause: ClauseScopedColumnReferenceClause[];
|
|
69
|
+
/** Clause-scoped downstream references that required this column. */
|
|
70
|
+
requiredBy: WildcardColumnInferenceRequiredBy[];
|
|
71
|
+
}
|
|
72
|
+
/** Metadata-only wildcard inference result for one CTE or derived table target. */
|
|
73
|
+
export interface WildcardColumnInferenceResult {
|
|
74
|
+
/** Kind of target whose wildcard output was inspected. */
|
|
75
|
+
targetKind: WildcardColumnInferenceTargetKind;
|
|
76
|
+
/** CTE name for CTE targets, otherwise null. */
|
|
77
|
+
targetName: string | null;
|
|
78
|
+
/** Alias used by the downstream consumer when available. */
|
|
79
|
+
targetAlias: string | null;
|
|
80
|
+
/** Wildcard SELECT items found inside the target query. */
|
|
81
|
+
wildcards: WildcardColumnInferenceWildcard[];
|
|
82
|
+
/** Explicit non-wildcard outputs found inside the target query. */
|
|
83
|
+
explicitColumns: WildcardColumnInferenceExplicitColumn[];
|
|
84
|
+
/** Downstream requirements assigned to exactly one wildcard supplier. */
|
|
85
|
+
requiredColumns: WildcardColumnInferenceResolvedColumn[];
|
|
86
|
+
/** Downstream requirements that were intentionally left unresolved. */
|
|
87
|
+
unresolvedColumns: WildcardColumnInferenceUnresolvedColumn[];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Infers the subset of wildcard columns required by downstream references.
|
|
91
|
+
*
|
|
92
|
+
* This collector only returns metadata. It does not rewrite SQL and does not attempt full
|
|
93
|
+
* table-column discovery. When ownership is ambiguous, the requirement is reported as unresolved.
|
|
94
|
+
*/
|
|
95
|
+
export declare class WildcardColumnInferenceCollector {
|
|
96
|
+
private readonly clauseCollector;
|
|
97
|
+
private readonly requirements;
|
|
98
|
+
private readonly visitedQueries;
|
|
99
|
+
private nextObjectId;
|
|
100
|
+
private objectIds;
|
|
101
|
+
/**
|
|
102
|
+
* Collect wildcard column inference metadata for CTEs and derived tables visible in a SELECT query.
|
|
103
|
+
*/
|
|
104
|
+
collect(query: SelectQuery): WildcardColumnInferenceResult[];
|
|
105
|
+
private collectFromSelectQuery;
|
|
106
|
+
private collectCteQuery;
|
|
107
|
+
private collectConsumerRequirements;
|
|
108
|
+
private collectConsumerTargets;
|
|
109
|
+
private createCteTarget;
|
|
110
|
+
private createDerivedTableTarget;
|
|
111
|
+
private collectNestedSources;
|
|
112
|
+
private addRequirement;
|
|
113
|
+
private inferTarget;
|
|
114
|
+
private collectTargetOutputMetadata;
|
|
115
|
+
private collectWildcardMetadata;
|
|
116
|
+
private createUnresolved;
|
|
117
|
+
private flattenReferences;
|
|
118
|
+
private createRequiredBy;
|
|
119
|
+
private collectRequiredByClauses;
|
|
120
|
+
private getTargetMatchNames;
|
|
121
|
+
private getUniqueTarget;
|
|
122
|
+
private getUniqueSource;
|
|
123
|
+
private getSourceMatchNames;
|
|
124
|
+
private getSourceName;
|
|
125
|
+
private collectLeadingCommonTables;
|
|
126
|
+
private mergeCommonTables;
|
|
127
|
+
private getObjectId;
|
|
128
|
+
private isSelectQuery;
|
|
129
|
+
}
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
import { SubQuerySource, TableSource } from "../models/Clause";
|
|
2
|
+
import { BinarySelectQuery, SimpleSelectQuery } from "../models/SelectQuery";
|
|
3
|
+
import { ColumnReference } from "../models/ValueComponent";
|
|
4
|
+
import { ClauseScopedColumnReferenceCollector } from "./ClauseScopedColumnReferenceCollector";
|
|
5
|
+
import { SelectOutputCollector } from "./SelectOutputCollector";
|
|
6
|
+
const clauseOrder = [
|
|
7
|
+
"select",
|
|
8
|
+
"where",
|
|
9
|
+
"joinOn",
|
|
10
|
+
"groupBy",
|
|
11
|
+
"having",
|
|
12
|
+
"orderBy",
|
|
13
|
+
"window",
|
|
14
|
+
"limitOffset"
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Infers the subset of wildcard columns required by downstream references.
|
|
18
|
+
*
|
|
19
|
+
* This collector only returns metadata. It does not rewrite SQL and does not attempt full
|
|
20
|
+
* table-column discovery. When ownership is ambiguous, the requirement is reported as unresolved.
|
|
21
|
+
*/
|
|
22
|
+
export class WildcardColumnInferenceCollector {
|
|
23
|
+
constructor() {
|
|
24
|
+
this.clauseCollector = new ClauseScopedColumnReferenceCollector();
|
|
25
|
+
this.requirements = new Map();
|
|
26
|
+
this.visitedQueries = new Set();
|
|
27
|
+
this.nextObjectId = 0;
|
|
28
|
+
this.objectIds = new WeakMap();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Collect wildcard column inference metadata for CTEs and derived tables visible in a SELECT query.
|
|
32
|
+
*/
|
|
33
|
+
collect(query) {
|
|
34
|
+
this.requirements.clear();
|
|
35
|
+
this.visitedQueries.clear();
|
|
36
|
+
this.nextObjectId = 0;
|
|
37
|
+
this.objectIds = new WeakMap();
|
|
38
|
+
this.collectFromSelectQuery(query, []);
|
|
39
|
+
return [...this.requirements.values()].map(item => this.inferTarget(item));
|
|
40
|
+
}
|
|
41
|
+
collectFromSelectQuery(query, commonTables) {
|
|
42
|
+
var _a, _b, _c, _d;
|
|
43
|
+
if (this.visitedQueries.has(query)) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
this.visitedQueries.add(query);
|
|
47
|
+
if (query instanceof BinarySelectQuery) {
|
|
48
|
+
const rightCommonTables = this.mergeCommonTables(commonTables, this.collectLeadingCommonTables(query.left));
|
|
49
|
+
this.collectFromSelectQuery(query.left, commonTables);
|
|
50
|
+
this.collectFromSelectQuery(query.right, rightCommonTables);
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (!(query instanceof SimpleSelectQuery)) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
const scopedCommonTables = this.mergeCommonTables(commonTables, (_b = (_a = query.withClause) === null || _a === void 0 ? void 0 : _a.tables) !== null && _b !== void 0 ? _b : []);
|
|
57
|
+
this.collectConsumerRequirements(query, scopedCommonTables);
|
|
58
|
+
this.collectNestedSources(query.fromClause, scopedCommonTables);
|
|
59
|
+
for (const commonTable of (_d = (_c = query.withClause) === null || _c === void 0 ? void 0 : _c.tables) !== null && _d !== void 0 ? _d : []) {
|
|
60
|
+
this.collectCteQuery(commonTable.query, scopedCommonTables);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
collectCteQuery(query, commonTables) {
|
|
64
|
+
if (this.isSelectQuery(query)) {
|
|
65
|
+
this.collectFromSelectQuery(query, commonTables);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
collectConsumerRequirements(query, commonTables) {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
if (!query.fromClause) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const targets = this.collectConsumerTargets(query.fromClause, commonTables);
|
|
74
|
+
if (targets.length === 0) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const targetByMatchName = new Map();
|
|
78
|
+
for (const target of targets) {
|
|
79
|
+
for (const name of this.getTargetMatchNames(target)) {
|
|
80
|
+
const existing = (_a = targetByMatchName.get(name)) !== null && _a !== void 0 ? _a : [];
|
|
81
|
+
existing.push(target);
|
|
82
|
+
targetByMatchName.set(name, existing);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
const singleUnqualifiedTarget = query.fromClause.getSources().length === 1 && targets.length === 1 ? targets[0] : null;
|
|
86
|
+
for (const reference of this.flattenReferences(this.clauseCollector.collect(query))) {
|
|
87
|
+
if (reference.column === "*") {
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
const matchedTarget = reference.namespace
|
|
91
|
+
? this.getUniqueTarget((_b = targetByMatchName.get(reference.namespace)) !== null && _b !== void 0 ? _b : [])
|
|
92
|
+
: singleUnqualifiedTarget;
|
|
93
|
+
if (matchedTarget) {
|
|
94
|
+
this.addRequirement(matchedTarget, reference.column, this.createRequiredBy(reference));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
collectConsumerTargets(fromClause, commonTables) {
|
|
99
|
+
const targets = [];
|
|
100
|
+
for (const source of fromClause.getSources()) {
|
|
101
|
+
const cteTarget = this.createCteTarget(source, commonTables);
|
|
102
|
+
if (cteTarget) {
|
|
103
|
+
targets.push(cteTarget);
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
const derivedTarget = this.createDerivedTableTarget(source);
|
|
107
|
+
if (derivedTarget) {
|
|
108
|
+
targets.push(derivedTarget);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return targets;
|
|
112
|
+
}
|
|
113
|
+
createCteTarget(source, commonTables) {
|
|
114
|
+
if (!(source.datasource instanceof TableSource)) {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const tableName = source.datasource.getSourceName();
|
|
118
|
+
const commonTable = commonTables.find(item => item.getSourceAliasName() === tableName);
|
|
119
|
+
if (!commonTable || !this.isSelectQuery(commonTable.query)) {
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
key: `cte:${this.getObjectId(commonTable)}`,
|
|
124
|
+
targetKind: "cte",
|
|
125
|
+
targetName: commonTable.getSourceAliasName(),
|
|
126
|
+
targetAlias: source.aliasExpression ? source.getAliasName() : commonTable.getSourceAliasName(),
|
|
127
|
+
query: commonTable.query
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
createDerivedTableTarget(source) {
|
|
131
|
+
if (!(source.datasource instanceof SubQuerySource)) {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
key: `derived:${this.getObjectId(source.datasource.query)}`,
|
|
136
|
+
targetKind: "derivedTable",
|
|
137
|
+
targetName: null,
|
|
138
|
+
targetAlias: source.getAliasName(),
|
|
139
|
+
query: source.datasource.query
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
collectNestedSources(fromClause, commonTables) {
|
|
143
|
+
if (!fromClause) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
for (const source of fromClause.getSources()) {
|
|
147
|
+
if (source.datasource instanceof SubQuerySource) {
|
|
148
|
+
this.collectFromSelectQuery(source.datasource.query, commonTables);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
addRequirement(target, column, requiredBy) {
|
|
153
|
+
var _a;
|
|
154
|
+
let requirement = this.requirements.get(target.key);
|
|
155
|
+
if (!requirement) {
|
|
156
|
+
requirement = {
|
|
157
|
+
descriptor: target,
|
|
158
|
+
requiredByColumn: new Map()
|
|
159
|
+
};
|
|
160
|
+
this.requirements.set(target.key, requirement);
|
|
161
|
+
}
|
|
162
|
+
const existing = (_a = requirement.requiredByColumn.get(column)) !== null && _a !== void 0 ? _a : [];
|
|
163
|
+
existing.push(requiredBy);
|
|
164
|
+
requirement.requiredByColumn.set(column, existing);
|
|
165
|
+
}
|
|
166
|
+
inferTarget(requirement) {
|
|
167
|
+
const descriptor = requirement.descriptor;
|
|
168
|
+
const baseResult = {
|
|
169
|
+
targetKind: descriptor.targetKind,
|
|
170
|
+
targetName: descriptor.targetName,
|
|
171
|
+
targetAlias: descriptor.targetAlias,
|
|
172
|
+
wildcards: [],
|
|
173
|
+
explicitColumns: [],
|
|
174
|
+
requiredColumns: [],
|
|
175
|
+
unresolvedColumns: []
|
|
176
|
+
};
|
|
177
|
+
if (!(descriptor.query instanceof SimpleSelectQuery)) {
|
|
178
|
+
for (const [outputName, requiredBy] of requirement.requiredByColumn) {
|
|
179
|
+
baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "unsupportedQueryShape", [], requiredBy));
|
|
180
|
+
}
|
|
181
|
+
return baseResult;
|
|
182
|
+
}
|
|
183
|
+
const outputMetadata = this.collectTargetOutputMetadata(descriptor.query);
|
|
184
|
+
baseResult.wildcards = outputMetadata.wildcards;
|
|
185
|
+
baseResult.explicitColumns = outputMetadata.explicitColumns;
|
|
186
|
+
for (const [outputName, requiredBy] of requirement.requiredByColumn) {
|
|
187
|
+
const explicitMatches = outputMetadata.explicitColumns.filter(item => item.outputName === outputName);
|
|
188
|
+
const candidateWildcards = outputMetadata.wildcards;
|
|
189
|
+
if (explicitMatches.length > 0 && candidateWildcards.length > 0) {
|
|
190
|
+
baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "duplicateOutputOwnership", candidateWildcards, requiredBy));
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
if (explicitMatches.length > 0) {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
if (outputMetadata.unqualifiedWildcardWithMultipleSources) {
|
|
197
|
+
baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "unqualifiedWildcardMultipleSources", candidateWildcards, requiredBy));
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (candidateWildcards.length === 0) {
|
|
201
|
+
baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "noWildcardSupplier", [], requiredBy));
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
if (candidateWildcards.length > 1) {
|
|
205
|
+
baseResult.unresolvedColumns.push(this.createUnresolved(outputName, "multipleWildcardSuppliers", candidateWildcards, requiredBy));
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
const wildcard = candidateWildcards[0];
|
|
209
|
+
baseResult.requiredColumns.push({
|
|
210
|
+
outputName,
|
|
211
|
+
sourceAlias: wildcard.sourceAlias,
|
|
212
|
+
sourceName: wildcard.sourceName,
|
|
213
|
+
sourceColumnName: outputName,
|
|
214
|
+
wildcard,
|
|
215
|
+
requiredByClause: this.collectRequiredByClauses(requiredBy),
|
|
216
|
+
requiredBy
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return baseResult;
|
|
220
|
+
}
|
|
221
|
+
collectTargetOutputMetadata(query) {
|
|
222
|
+
const wildcards = [];
|
|
223
|
+
let unqualifiedWildcardWithMultipleSources = false;
|
|
224
|
+
query.selectClause.items.forEach((item, outputIndex) => {
|
|
225
|
+
const wildcard = this.collectWildcardMetadata(item, outputIndex, query.fromClause);
|
|
226
|
+
if (wildcard === "unqualifiedWildcardMultipleSources") {
|
|
227
|
+
unqualifiedWildcardWithMultipleSources = true;
|
|
228
|
+
wildcards.push({
|
|
229
|
+
kind: "unqualified",
|
|
230
|
+
outputIndex,
|
|
231
|
+
sourceAlias: null,
|
|
232
|
+
sourceName: null
|
|
233
|
+
});
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (wildcard) {
|
|
237
|
+
wildcards.push(wildcard);
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
const explicitColumns = new SelectOutputCollector()
|
|
241
|
+
.collect(query)
|
|
242
|
+
.filter(item => !(item.value instanceof ColumnReference && item.value.column.name === "*"))
|
|
243
|
+
.map(item => ({
|
|
244
|
+
outputName: item.name,
|
|
245
|
+
sourceAlias: item.sourceAlias,
|
|
246
|
+
sourceName: item.sourceName,
|
|
247
|
+
sourceColumnName: item.sourceColumnName
|
|
248
|
+
}));
|
|
249
|
+
return {
|
|
250
|
+
wildcards,
|
|
251
|
+
explicitColumns,
|
|
252
|
+
unqualifiedWildcardWithMultipleSources
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
collectWildcardMetadata(item, outputIndex, fromClause) {
|
|
256
|
+
if (!(item.value instanceof ColumnReference) || item.value.column.name !== "*") {
|
|
257
|
+
return null;
|
|
258
|
+
}
|
|
259
|
+
if (!fromClause) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
if (item.value.namespaces === null) {
|
|
263
|
+
const sources = fromClause.getSources();
|
|
264
|
+
if (sources.length !== 1) {
|
|
265
|
+
return "unqualifiedWildcardMultipleSources";
|
|
266
|
+
}
|
|
267
|
+
return {
|
|
268
|
+
kind: "unqualified",
|
|
269
|
+
outputIndex,
|
|
270
|
+
sourceAlias: sources[0].getAliasName(),
|
|
271
|
+
sourceName: this.getSourceName(sources[0])
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
const namespace = item.value.getNamespace();
|
|
275
|
+
const source = this.getUniqueSource(fromClause.getSources().filter(candidate => this.getSourceMatchNames(candidate).includes(namespace)));
|
|
276
|
+
return {
|
|
277
|
+
kind: "qualified",
|
|
278
|
+
outputIndex,
|
|
279
|
+
sourceAlias: namespace,
|
|
280
|
+
sourceName: source ? this.getSourceName(source) : null
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
createUnresolved(outputName, reason, candidateWildcards, requiredBy) {
|
|
284
|
+
return {
|
|
285
|
+
outputName,
|
|
286
|
+
reason,
|
|
287
|
+
candidateWildcards,
|
|
288
|
+
requiredByClause: this.collectRequiredByClauses(requiredBy),
|
|
289
|
+
requiredBy
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
flattenReferences(references) {
|
|
293
|
+
return clauseOrder.flatMap(clause => references[clause]);
|
|
294
|
+
}
|
|
295
|
+
createRequiredBy(reference) {
|
|
296
|
+
return {
|
|
297
|
+
clause: reference.clause,
|
|
298
|
+
qualifiedName: reference.qualifiedName,
|
|
299
|
+
namespace: reference.namespace,
|
|
300
|
+
column: reference.column
|
|
301
|
+
};
|
|
302
|
+
}
|
|
303
|
+
collectRequiredByClauses(requiredBy) {
|
|
304
|
+
const clauses = new Set(requiredBy.map(item => item.clause));
|
|
305
|
+
return clauseOrder.filter(clause => clauses.has(clause));
|
|
306
|
+
}
|
|
307
|
+
getTargetMatchNames(target) {
|
|
308
|
+
if (target.targetAlias) {
|
|
309
|
+
return [target.targetAlias];
|
|
310
|
+
}
|
|
311
|
+
return target.targetName ? [target.targetName] : [];
|
|
312
|
+
}
|
|
313
|
+
getUniqueTarget(targets) {
|
|
314
|
+
return targets.length === 1 ? targets[0] : null;
|
|
315
|
+
}
|
|
316
|
+
getUniqueSource(sources) {
|
|
317
|
+
return sources.length === 1 ? sources[0] : null;
|
|
318
|
+
}
|
|
319
|
+
getSourceMatchNames(source) {
|
|
320
|
+
const names = new Set();
|
|
321
|
+
const aliasName = source.getAliasName();
|
|
322
|
+
if (aliasName) {
|
|
323
|
+
names.add(aliasName);
|
|
324
|
+
}
|
|
325
|
+
if (source.datasource instanceof TableSource) {
|
|
326
|
+
names.add(source.datasource.table.name);
|
|
327
|
+
names.add(source.datasource.getSourceName());
|
|
328
|
+
}
|
|
329
|
+
return [...names];
|
|
330
|
+
}
|
|
331
|
+
getSourceName(source) {
|
|
332
|
+
if (source.datasource instanceof TableSource) {
|
|
333
|
+
return source.datasource.getSourceName();
|
|
334
|
+
}
|
|
335
|
+
return null;
|
|
336
|
+
}
|
|
337
|
+
collectLeadingCommonTables(query) {
|
|
338
|
+
var _a, _b;
|
|
339
|
+
if (query instanceof SimpleSelectQuery) {
|
|
340
|
+
return (_b = (_a = query.withClause) === null || _a === void 0 ? void 0 : _a.tables) !== null && _b !== void 0 ? _b : [];
|
|
341
|
+
}
|
|
342
|
+
if (query instanceof BinarySelectQuery) {
|
|
343
|
+
return this.collectLeadingCommonTables(query.left);
|
|
344
|
+
}
|
|
345
|
+
return [];
|
|
346
|
+
}
|
|
347
|
+
mergeCommonTables(left, right) {
|
|
348
|
+
const merged = [...left];
|
|
349
|
+
for (const table of right) {
|
|
350
|
+
const existingIndex = merged.findIndex(item => item.getSourceAliasName() === table.getSourceAliasName());
|
|
351
|
+
if (existingIndex === -1) {
|
|
352
|
+
merged.push(table);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
merged[existingIndex] = table;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
return merged;
|
|
359
|
+
}
|
|
360
|
+
getObjectId(value) {
|
|
361
|
+
const existing = this.objectIds.get(value);
|
|
362
|
+
if (existing !== undefined) {
|
|
363
|
+
return existing;
|
|
364
|
+
}
|
|
365
|
+
const id = this.nextObjectId++;
|
|
366
|
+
this.objectIds.set(value, id);
|
|
367
|
+
return id;
|
|
368
|
+
}
|
|
369
|
+
isSelectQuery(query) {
|
|
370
|
+
return !!query && typeof query === "object" && "__selectQueryType" in query && query.__selectQueryType === "SelectQuery";
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=WildcardColumnInferenceCollector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WildcardColumnInferenceCollector.js","sourceRoot":"","sources":["../../../src/transformers/WildcardColumnInferenceCollector.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -58,6 +58,8 @@ __exportStar(require("./transformers/CTEDisabler"), exports);
|
|
|
58
58
|
__exportStar(require("./transformers/CTEDependencyAnalyzer"), exports);
|
|
59
59
|
__exportStar(require("./transformers/CTETableReferenceCollector"), exports);
|
|
60
60
|
__exportStar(require("./transformers/CTEQueryDecomposer"), exports);
|
|
61
|
+
__exportStar(require("./transformers/NamedQueryDefinitionExtractor"), exports);
|
|
62
|
+
__exportStar(require("./transformers/AstCommentAttachmentExtractor"), exports);
|
|
61
63
|
__exportStar(require("./transformers/CTEComposer"), exports);
|
|
62
64
|
__exportStar(require("./transformers/CTERenamer"), exports);
|
|
63
65
|
__exportStar(require("./transformers/AliasRenamer"), exports);
|
|
@@ -65,6 +67,7 @@ __exportStar(require("./transformers/SmartRenamer"), exports);
|
|
|
65
67
|
__exportStar(require("./formatters/OriginalFormatRestorer"), exports);
|
|
66
68
|
__exportStar(require("./transformers/SqlIdentifierRenamer"), exports);
|
|
67
69
|
__exportStar(require("./transformers/ColumnReferenceCollector"), exports);
|
|
70
|
+
__exportStar(require("./transformers/ClauseScopedColumnReferenceCollector"), exports);
|
|
68
71
|
__exportStar(require("./transformers/Formatter"), exports);
|
|
69
72
|
__exportStar(require("./transformers/SqlFormatter"), exports);
|
|
70
73
|
__exportStar(require("./transformers/QueryBuilder"), exports); // old name:QueryConverter
|
|
@@ -78,6 +81,9 @@ __exportStar(require("./transformers/SimulatedSelectConverter"), exports);
|
|
|
78
81
|
__exportStar(require("./transformers/DDLToFixtureConverter"), exports);
|
|
79
82
|
__exportStar(require("./transformers/DDLGeneralizer"), exports);
|
|
80
83
|
__exportStar(require("./transformers/DDLDiffGenerator"), exports);
|
|
84
|
+
__exportStar(require("./transformers/SelectBodyExtractor"), exports);
|
|
85
|
+
__exportStar(require("./transformers/SelectOutputCollector"), exports);
|
|
86
|
+
__exportStar(require("./transformers/WildcardColumnInferenceCollector"), exports);
|
|
81
87
|
__exportStar(require("./transformers/SelectValueCollector"), exports);
|
|
82
88
|
__exportStar(require("./transformers/SelectableColumnCollector"), exports);
|
|
83
89
|
var SelectableColumnCollector_1 = require("./transformers/SelectableColumnCollector");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,8DAA4C;AAE5C,8DAA4C;AAC5C,8DAA4C;AAC5C,8DAA4C;AAC5C,6DAA2C;AAC3C,8DAA4C;AAC5C,6DAA2C;AAC3C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,6DAA2C;AAC3C,iEAA+C;AAC/C,4DAA0C;AAC1C,kEAAgD;AAChD,mEAAiD;AACjD,mEAAiD;AACjD,sEAAoD;AAEpD,qDAAmC;AAEnC,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,4DAA0C;AAC1C,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,4DAA0C;AAC1C,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAE9C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,uEAAqD;AACrD,4EAA0D;AAC1D,oEAAkD;AAElD,6DAA2C;AAC3C,4DAA0C;AAC1C,8DAA4C;AAC5C,8DAA4C;AAC5C,sEAAoD;AACpD,sEAAoD;AAEpD,0EAAwD;AACxD,2DAAyC;AACzC,8DAA4C;AAC5C,8DAA4C,CAAC,0BAA0B;AACvE,kFAAgE;AAChE,6EAA2D;AAE3D,6EAA2D;AAC3D,6EAA2D;AAC3D,4EAA0D;AAC1D,6EAA2D;AAC3D,0EAAwD;AACxD,uEAAqD;AACrD,gEAA8C;AAC9C,kEAAgD;AAChD,sEAAoD;AACpD,2EAAyD;AACzD,sFAAkF;AAAzE,mIAAA,sBAAsB,OAAA;AAC/B,yEAAuD;AACvD,sEAAsH;AAA7G,sHAAA,iBAAiB,OAAA;AAC1B,qEAAmD;AACnD,oEAAkD;AAClD,gFAA8D;AAC9D,kFAMgD;AAJ5C,kIAAA,uBAAuB,OAAA;AACvB,8IAAA,mCAAmC,OAAA;AACnC,6HAAA,kBAAkB,OAAA;AAClB,yIAAA,8BAA8B,OAAA;AAElC,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AAEzD,iEAA+C;AAC/C,kEAAmF;AAA1E,8GAAA,WAAW,OAAA;AACpB,yEAAuD;AACvD,kFAAwG;AAA/F,yHAAA,cAAc,OAAA;AACvB,2EAAyD;AACzD,kEAAgD;AAChD,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AAEnD,0DAAwC;AACxC,oEAAkD;AAClD,6DAA2C;AAC3C,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AAErC,4DAA0C;AAG1C,kDAAkD;AAClD,gEAA8C;AAE9C,wDAAsC;AAOtC,8DAA4C;AAK5C,6DAA2C;AAG3C,yDAA+E;AAAtE,oHAAA,kBAAkB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAE9C,8CAA8C;AAC9C,yDAAuC;AAEvC,qDAAqD;AACrD,2DAaiC;AAZ7B,0DAA0D;AAC1D,kHAAA,eAAe,OAAA;AACf,8CAA8C;AAC9C,mHAAA,gBAAgB,OAAA;AAChB,mDAAmD;AACnD,+GAAA,YAAY,OAAA;AACZ,yDAAyD;AACzD,+GAAA,YAAY,OAAA;AACZ,2DAA2D;AAC3D,sHAAA,mBAAmB,OAAA;AACnB,yDAAyD;AACzD,2HAAA,wBAAwB,OAAA;AAI5B,oEAAoE"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,sDAAoC;AACpC,yDAAuC;AACvC,8DAA4C;AAE5C,8DAA4C;AAC5C,8DAA4C;AAC5C,8DAA4C;AAC5C,6DAA2C;AAC3C,8DAA4C;AAC5C,6DAA2C;AAC3C,8DAA4C;AAC5C,4DAA0C;AAC1C,4DAA0C;AAC1C,6DAA2C;AAC3C,iEAA+C;AAC/C,4DAA0C;AAC1C,kEAAgD;AAChD,mEAAiD;AACjD,mEAAiD;AACjD,sEAAoD;AAEpD,qDAAmC;AAEnC,6DAA2C;AAC3C,uDAAqC;AACrC,wDAAsC;AACtC,0DAAwC;AACxC,uDAAqC;AACrC,kDAAgC;AAChC,oDAAkC;AAClC,kDAAgC;AAChC,4DAA0C;AAC1C,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,4DAA0C;AAC1C,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAE9C,8DAA4C;AAC5C,+DAA6C;AAC7C,6DAA2C;AAC3C,uEAAqD;AACrD,4EAA0D;AAC1D,oEAAkD;AAElD,+EAA6D;AAC7D,+EAA6D;AAC7D,6DAA2C;AAC3C,4DAA0C;AAC1C,8DAA4C;AAC5C,8DAA4C;AAC5C,sEAAoD;AACpD,sEAAoD;AAEpD,0EAAwD;AACxD,sFAAoE;AACpE,2DAAyC;AACzC,8DAA4C;AAC5C,8DAA4C,CAAC,0BAA0B;AACvE,kFAAgE;AAChE,6EAA2D;AAE3D,6EAA2D;AAC3D,6EAA2D;AAC3D,4EAA0D;AAC1D,6EAA2D;AAC3D,0EAAwD;AACxD,uEAAqD;AACrD,gEAA8C;AAC9C,kEAAgD;AAChD,qEAAmD;AACnD,uEAAqD;AACrD,kFAAgE;AAChE,sEAAoD;AACpD,2EAAyD;AACzD,sFAAkF;AAAzE,mIAAA,sBAAsB,OAAA;AAC/B,yEAAuD;AACvD,sEAAsH;AAA7G,sHAAA,iBAAiB,OAAA;AAC1B,qEAAmD;AACnD,oEAAkD;AAClD,gFAA8D;AAC9D,kFAMgD;AAJ5C,kIAAA,uBAAuB,OAAA;AACvB,8IAAA,mCAAmC,OAAA;AACnC,6HAAA,kBAAkB,OAAA;AAClB,yIAAA,8BAA8B,OAAA;AAElC,qEAAmD;AACnD,sEAAoD;AACpD,2EAAyD;AAEzD,iEAA+C;AAC/C,kEAAmF;AAA1E,8GAAA,WAAW,OAAA;AACpB,yEAAuD;AACvD,kFAAwG;AAA/F,yHAAA,cAAc,OAAA;AACvB,2EAAyD;AACzD,kEAAgD;AAChD,iEAA+C;AAC/C,uEAAqD;AACrD,qEAAmD;AAEnD,0DAAwC;AACxC,oEAAkD;AAClD,6DAA2C;AAC3C,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AAErC,4DAA0C;AAG1C,kDAAkD;AAClD,gEAA8C;AAE9C,wDAAsC;AAOtC,8DAA4C;AAK5C,6DAA2C;AAG3C,yDAA+E;AAAtE,oHAAA,kBAAkB,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAE9C,8CAA8C;AAC9C,yDAAuC;AAEvC,qDAAqD;AACrD,2DAaiC;AAZ7B,0DAA0D;AAC1D,kHAAA,eAAe,OAAA;AACf,8CAA8C;AAC9C,mHAAA,gBAAgB,OAAA;AAChB,mDAAmD;AACnD,+GAAA,YAAY,OAAA;AACZ,yDAAyD;AACzD,+GAAA,YAAY,OAAA;AACZ,2DAA2D;AAC3D,sHAAA,mBAAmB,OAAA;AACnB,yDAAyD;AACzD,2HAAA,wBAAwB,OAAA;AAI5B,oEAAoE"}
|