rawsql-ts 0.11.44-beta → 0.12.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.min.js +9 -9
- package/dist/esm/index.min.js.map +3 -3
- package/dist/esm/src/models/DDLStatements.d.ts +38 -0
- package/dist/esm/src/models/DDLStatements.js +61 -1
- package/dist/esm/src/models/DDLStatements.js.map +1 -1
- package/dist/esm/src/models/SqlPrintToken.d.ts +3 -0
- package/dist/esm/src/models/SqlPrintToken.js +3 -0
- package/dist/esm/src/models/SqlPrintToken.js.map +1 -1
- package/dist/esm/src/parsers/AnalyzeStatementParser.d.ts +13 -0
- package/dist/esm/src/parsers/AnalyzeStatementParser.js +90 -0
- package/dist/esm/src/parsers/AnalyzeStatementParser.js.map +1 -0
- package/dist/esm/src/parsers/ExplainStatementParser.d.ts +23 -0
- package/dist/esm/src/parsers/ExplainStatementParser.js +185 -0
- package/dist/esm/src/parsers/ExplainStatementParser.js.map +1 -0
- package/dist/esm/src/parsers/ParenExpressionParser.js +25 -0
- package/dist/esm/src/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlParser.d.ts +4 -2
- package/dist/esm/src/parsers/SqlParser.js +56 -0
- package/dist/esm/src/parsers/SqlParser.js.map +1 -1
- package/dist/esm/src/parsers/SqlPrintTokenParser.d.ts +8 -0
- package/dist/esm/src/parsers/SqlPrintTokenParser.js +131 -7
- package/dist/esm/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/esm/src/tokenReaders/CommandTokenReader.js +1 -0
- package/dist/esm/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/esm/src/transformers/OnelineFormattingHelper.js +7 -0
- package/dist/esm/src/transformers/OnelineFormattingHelper.js.map +1 -1
- package/dist/esm/src/transformers/SqlPrinter.d.ts +1 -0
- package/dist/esm/src/transformers/SqlPrinter.js +29 -1
- package/dist/esm/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/esm/tsconfig.browser.tsbuildinfo +1 -1
- package/dist/index.min.js +9 -9
- package/dist/index.min.js.map +3 -3
- package/dist/src/models/DDLStatements.d.ts +38 -0
- package/dist/src/models/DDLStatements.js +64 -1
- package/dist/src/models/DDLStatements.js.map +1 -1
- package/dist/src/models/SqlPrintToken.d.ts +3 -0
- package/dist/src/models/SqlPrintToken.js +3 -0
- package/dist/src/models/SqlPrintToken.js.map +1 -1
- package/dist/src/parsers/AnalyzeStatementParser.d.ts +13 -0
- package/dist/src/parsers/AnalyzeStatementParser.js +94 -0
- package/dist/src/parsers/AnalyzeStatementParser.js.map +1 -0
- package/dist/src/parsers/ExplainStatementParser.d.ts +23 -0
- package/dist/src/parsers/ExplainStatementParser.js +189 -0
- package/dist/src/parsers/ExplainStatementParser.js.map +1 -0
- package/dist/src/parsers/ParenExpressionParser.js +25 -0
- package/dist/src/parsers/ParenExpressionParser.js.map +1 -1
- package/dist/src/parsers/SqlParser.d.ts +4 -2
- package/dist/src/parsers/SqlParser.js +56 -0
- package/dist/src/parsers/SqlParser.js.map +1 -1
- package/dist/src/parsers/SqlPrintTokenParser.d.ts +8 -0
- package/dist/src/parsers/SqlPrintTokenParser.js +130 -6
- package/dist/src/parsers/SqlPrintTokenParser.js.map +1 -1
- package/dist/src/tokenReaders/CommandTokenReader.js +1 -0
- package/dist/src/tokenReaders/CommandTokenReader.js.map +1 -1
- package/dist/src/transformers/OnelineFormattingHelper.js +7 -0
- package/dist/src/transformers/OnelineFormattingHelper.js.map +1 -1
- package/dist/src/transformers/SqlPrinter.d.ts +1 -0
- package/dist/src/transformers/SqlPrinter.js +29 -1
- package/dist/src/transformers/SqlPrinter.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -155,3 +155,41 @@ export declare class DropConstraintStatement extends SqlComponent {
|
|
|
155
155
|
behavior?: DropBehavior;
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Option entry within an EXPLAIN statement.
|
|
160
|
+
*/
|
|
161
|
+
export declare class ExplainOption extends SqlComponent {
|
|
162
|
+
static kind: symbol;
|
|
163
|
+
name: IdentifierString;
|
|
164
|
+
value: ValueComponent | null;
|
|
165
|
+
constructor(params: {
|
|
166
|
+
name: IdentifierString;
|
|
167
|
+
value?: ValueComponent | null;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* EXPLAIN statement representation.
|
|
172
|
+
*/
|
|
173
|
+
export declare class ExplainStatement extends SqlComponent {
|
|
174
|
+
static kind: symbol;
|
|
175
|
+
options: ExplainOption[] | null;
|
|
176
|
+
statement: SqlComponent;
|
|
177
|
+
constructor(params: {
|
|
178
|
+
options?: ExplainOption[] | null;
|
|
179
|
+
statement: SqlComponent;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* ANALYZE statement representation.
|
|
184
|
+
*/
|
|
185
|
+
export declare class AnalyzeStatement extends SqlComponent {
|
|
186
|
+
static kind: symbol;
|
|
187
|
+
verbose: boolean;
|
|
188
|
+
target: QualifiedName | null;
|
|
189
|
+
columns: IdentifierString[] | null;
|
|
190
|
+
constructor(params?: {
|
|
191
|
+
verbose?: boolean;
|
|
192
|
+
target?: QualifiedName | null;
|
|
193
|
+
columns?: IdentifierString[] | null;
|
|
194
|
+
});
|
|
195
|
+
}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { SqlComponent } from "./SqlComponent";
|
|
2
|
-
import { QualifiedName } from "./ValueComponent";
|
|
2
|
+
import { QualifiedName, IdentifierString } from "./ValueComponent";
|
|
3
|
+
function cloneIdentifierWithComments(identifier) {
|
|
4
|
+
const clone = new IdentifierString(identifier.name);
|
|
5
|
+
// Preserve positioned comment metadata while cloning identifiers.
|
|
6
|
+
if (identifier.positionedComments) {
|
|
7
|
+
clone.positionedComments = identifier.positionedComments.map(entry => ({
|
|
8
|
+
position: entry.position,
|
|
9
|
+
comments: [...entry.comments],
|
|
10
|
+
}));
|
|
11
|
+
}
|
|
12
|
+
else if (identifier.comments && identifier.comments.length > 0) {
|
|
13
|
+
// Copy legacy comment arrays when no positioned comments exist.
|
|
14
|
+
clone.comments = [...identifier.comments];
|
|
15
|
+
}
|
|
16
|
+
return clone;
|
|
17
|
+
}
|
|
3
18
|
/**
|
|
4
19
|
* DROP TABLE statement representation.
|
|
5
20
|
*/
|
|
@@ -138,4 +153,49 @@ export class DropConstraintStatement extends SqlComponent {
|
|
|
138
153
|
}
|
|
139
154
|
}
|
|
140
155
|
DropConstraintStatement.kind = Symbol("DropConstraintStatement");
|
|
156
|
+
/**
|
|
157
|
+
* Option entry within an EXPLAIN statement.
|
|
158
|
+
*/
|
|
159
|
+
export class ExplainOption extends SqlComponent {
|
|
160
|
+
constructor(params) {
|
|
161
|
+
var _a;
|
|
162
|
+
super();
|
|
163
|
+
// Clone the option name so explain options keep associated metadata.
|
|
164
|
+
this.name = cloneIdentifierWithComments(params.name);
|
|
165
|
+
this.value = (_a = params.value) !== null && _a !== void 0 ? _a : null;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
ExplainOption.kind = Symbol("ExplainOption");
|
|
169
|
+
/**
|
|
170
|
+
* EXPLAIN statement representation.
|
|
171
|
+
*/
|
|
172
|
+
export class ExplainStatement extends SqlComponent {
|
|
173
|
+
constructor(params) {
|
|
174
|
+
super();
|
|
175
|
+
this.options = params.options ? params.options.map(option => new ExplainOption(option)) : null;
|
|
176
|
+
this.statement = params.statement;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
ExplainStatement.kind = Symbol("ExplainStatement");
|
|
180
|
+
/**
|
|
181
|
+
* ANALYZE statement representation.
|
|
182
|
+
*/
|
|
183
|
+
export class AnalyzeStatement extends SqlComponent {
|
|
184
|
+
constructor(params) {
|
|
185
|
+
var _a;
|
|
186
|
+
super();
|
|
187
|
+
this.verbose = (_a = params === null || params === void 0 ? void 0 : params.verbose) !== null && _a !== void 0 ? _a : false;
|
|
188
|
+
this.target = (params === null || params === void 0 ? void 0 : params.target)
|
|
189
|
+
? new QualifiedName(params.target.namespaces, params.target.name)
|
|
190
|
+
: null;
|
|
191
|
+
if (params === null || params === void 0 ? void 0 : params.columns) {
|
|
192
|
+
// Clone target columns so position-aware comments remain intact.
|
|
193
|
+
this.columns = params.columns.map(cloneIdentifierWithComments);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
this.columns = null;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
AnalyzeStatement.kind = Symbol("AnalyzeStatement");
|
|
141
201
|
//# sourceMappingURL=DDLStatements.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DDLStatements.js","sourceRoot":"","sources":["../../../../src/models/DDLStatements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACH,aAAa,
|
|
1
|
+
{"version":3,"file":"DDLStatements.js","sourceRoot":"","sources":["../../../../src/models/DDLStatements.ts"],"names":[],"mappings":"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"}
|
|
@@ -98,6 +98,9 @@ export declare enum SqlPrintTokenContainerType {
|
|
|
98
98
|
AlterTableDropConstraint = "AlterTableDropConstraint",
|
|
99
99
|
AlterTableDropColumn = "AlterTableDropColumn",
|
|
100
100
|
DropConstraintStatement = "DropConstraintStatement",
|
|
101
|
+
ExplainStatement = "ExplainStatement",
|
|
102
|
+
ExplainOption = "ExplainOption",
|
|
103
|
+
AnalyzeStatement = "AnalyzeStatement",
|
|
101
104
|
MergeQuery = "MergeQuery",
|
|
102
105
|
MergeWhenClause = "MergeWhenClause",
|
|
103
106
|
MergeUpdateAction = "MergeUpdateAction",
|
|
@@ -101,6 +101,9 @@ export var SqlPrintTokenContainerType;
|
|
|
101
101
|
SqlPrintTokenContainerType["AlterTableDropConstraint"] = "AlterTableDropConstraint";
|
|
102
102
|
SqlPrintTokenContainerType["AlterTableDropColumn"] = "AlterTableDropColumn";
|
|
103
103
|
SqlPrintTokenContainerType["DropConstraintStatement"] = "DropConstraintStatement";
|
|
104
|
+
SqlPrintTokenContainerType["ExplainStatement"] = "ExplainStatement";
|
|
105
|
+
SqlPrintTokenContainerType["ExplainOption"] = "ExplainOption";
|
|
106
|
+
SqlPrintTokenContainerType["AnalyzeStatement"] = "AnalyzeStatement";
|
|
104
107
|
SqlPrintTokenContainerType["MergeQuery"] = "MergeQuery";
|
|
105
108
|
SqlPrintTokenContainerType["MergeWhenClause"] = "MergeWhenClause";
|
|
106
109
|
SqlPrintTokenContainerType["MergeUpdateAction"] = "MergeUpdateAction";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlPrintToken.js","sourceRoot":"","sources":["../../../../src/models/SqlPrintToken.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,iBAcX;AAdD,WAAY,iBAAiB;IACzB,mEAAa,CAAA;IACb,+DAAO,CAAA;IACP,2DAAK,CAAA;IACL,2DAAK,CAAA;IACL,uEAAW,CAAA;IACX,iEAAQ,CAAA;IACR,+DAAO,CAAA;IACP,mEAAS,CAAA;IACT,uDAAG,CAAA;IACH,yDAAI,CAAA;IACJ,4DAAK,CAAA;IACL,kFAAgB,CAAA;IAChB,8EAAc,CAAA;AAClB,CAAC,EAdW,iBAAiB,KAAjB,iBAAiB,QAc5B;AAED,2DAA2D;AAC3D,MAAM,CAAN,IAAY,
|
|
1
|
+
{"version":3,"file":"SqlPrintToken.js","sourceRoot":"","sources":["../../../../src/models/SqlPrintToken.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AnalyzeStatement } from "../models/DDLStatements";
|
|
2
|
+
import { Lexeme } from "../models/Lexeme";
|
|
3
|
+
/**
|
|
4
|
+
* Parses ANALYZE statements.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AnalyzeStatementParser {
|
|
7
|
+
static parse(sql: string): AnalyzeStatement;
|
|
8
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number): {
|
|
9
|
+
value: AnalyzeStatement;
|
|
10
|
+
newIndex: number;
|
|
11
|
+
};
|
|
12
|
+
private static canStartQualifiedName;
|
|
13
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { SqlTokenizer } from "./SqlTokenizer";
|
|
2
|
+
import { AnalyzeStatement } from "../models/DDLStatements";
|
|
3
|
+
import { TokenType } from "../models/Lexeme";
|
|
4
|
+
import { FullNameParser } from "./FullNameParser";
|
|
5
|
+
import { QualifiedName } from "../models/ValueComponent";
|
|
6
|
+
/**
|
|
7
|
+
* Parses ANALYZE statements.
|
|
8
|
+
*/
|
|
9
|
+
export class AnalyzeStatementParser {
|
|
10
|
+
static parse(sql) {
|
|
11
|
+
const tokenizer = new SqlTokenizer(sql);
|
|
12
|
+
const lexemes = tokenizer.readLexemes();
|
|
13
|
+
const result = this.parseFromLexeme(lexemes, 0);
|
|
14
|
+
if (result.newIndex < lexemes.length) {
|
|
15
|
+
throw new Error(`[AnalyzeStatementParser] Unexpected token "${lexemes[result.newIndex].value}" after ANALYZE statement.`);
|
|
16
|
+
}
|
|
17
|
+
return result.value;
|
|
18
|
+
}
|
|
19
|
+
static parseFromLexeme(lexemes, index) {
|
|
20
|
+
var _a, _b, _c, _d, _e;
|
|
21
|
+
let idx = index;
|
|
22
|
+
if (((_a = lexemes[idx]) === null || _a === void 0 ? void 0 : _a.value.toLowerCase()) !== "analyze") {
|
|
23
|
+
throw new Error(`[AnalyzeStatementParser] Expected ANALYZE at index ${idx}.`);
|
|
24
|
+
}
|
|
25
|
+
idx++;
|
|
26
|
+
// Capture optional VERBOSE modifier immediately after ANALYZE.
|
|
27
|
+
let verbose = false;
|
|
28
|
+
if (((_b = lexemes[idx]) === null || _b === void 0 ? void 0 : _b.value.toLowerCase()) === "verbose") {
|
|
29
|
+
verbose = true;
|
|
30
|
+
idx++;
|
|
31
|
+
}
|
|
32
|
+
// Parse optional target relation name if present.
|
|
33
|
+
let target = null;
|
|
34
|
+
if (this.canStartQualifiedName(lexemes[idx])) {
|
|
35
|
+
const { namespaces, name, newIndex } = FullNameParser.parseFromLexeme(lexemes, idx);
|
|
36
|
+
target = new QualifiedName(namespaces, name);
|
|
37
|
+
idx = newIndex;
|
|
38
|
+
}
|
|
39
|
+
// Parse optional column list guarded by parentheses.
|
|
40
|
+
let columns = null;
|
|
41
|
+
if (((_c = lexemes[idx]) === null || _c === void 0 ? void 0 : _c.type) & TokenType.OpenParen) {
|
|
42
|
+
if (!target) {
|
|
43
|
+
throw new Error("[AnalyzeStatementParser] Column list requires a target relation before '('.");
|
|
44
|
+
}
|
|
45
|
+
idx++; // consume '('
|
|
46
|
+
columns = [];
|
|
47
|
+
// Loop through comma-separated column identifiers until closing parenthesis.
|
|
48
|
+
while (idx < lexemes.length) {
|
|
49
|
+
if (lexemes[idx].type & TokenType.CloseParen) {
|
|
50
|
+
if (columns.length === 0) {
|
|
51
|
+
throw new Error("[AnalyzeStatementParser] Column list must include at least one column identifier.");
|
|
52
|
+
}
|
|
53
|
+
idx++; // consume ')'
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
const { name, newIndex } = FullNameParser.parseFromLexeme(lexemes, idx);
|
|
57
|
+
columns.push(name);
|
|
58
|
+
idx = newIndex;
|
|
59
|
+
if (((_d = lexemes[idx]) === null || _d === void 0 ? void 0 : _d.type) & TokenType.Comma) {
|
|
60
|
+
idx++;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (((_e = lexemes[idx]) === null || _e === void 0 ? void 0 : _e.type) & TokenType.CloseParen) {
|
|
64
|
+
idx++; // consume ')'
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
throw new Error(`[AnalyzeStatementParser] Expected ',' or ')' after column identifier at index ${idx}.`);
|
|
68
|
+
}
|
|
69
|
+
if (columns === null || columns.length === 0) {
|
|
70
|
+
throw new Error("[AnalyzeStatementParser] Column list cannot be empty.");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Reject trailing identifiers when no target was provided.
|
|
74
|
+
if (!target && lexemes[idx] && !(lexemes[idx].type & TokenType.CloseParen)) {
|
|
75
|
+
throw new Error(`[AnalyzeStatementParser] Unexpected token "${lexemes[idx].value}" after ANALYZE clause.`);
|
|
76
|
+
}
|
|
77
|
+
const statement = new AnalyzeStatement({ verbose, target, columns });
|
|
78
|
+
return { value: statement, newIndex: idx };
|
|
79
|
+
}
|
|
80
|
+
static canStartQualifiedName(lexeme) {
|
|
81
|
+
if (!lexeme) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
if (lexeme.type & (TokenType.Identifier | TokenType.Command | TokenType.Function | TokenType.Type)) {
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
return (lexeme.type & TokenType.OpenBracket) !== 0;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=AnalyzeStatementParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnalyzeStatementParser.js","sourceRoot":"","sources":["../../../../src/parsers/AnalyzeStatementParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ExplainStatement } from "../models/DDLStatements";
|
|
2
|
+
import { Lexeme } from "../models/Lexeme";
|
|
3
|
+
import { SqlComponent } from "../models/SqlComponent";
|
|
4
|
+
type NestedStatementParser = (lexemes: Lexeme[], index: number) => {
|
|
5
|
+
value: SqlComponent;
|
|
6
|
+
newIndex: number;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Parses EXPLAIN statements including legacy shorthand flags and option lists.
|
|
10
|
+
*/
|
|
11
|
+
export declare class ExplainStatementParser {
|
|
12
|
+
static parse(sql: string, parseNested: NestedStatementParser): ExplainStatement;
|
|
13
|
+
static parseFromLexeme(lexemes: Lexeme[], index: number, parseNested: NestedStatementParser): {
|
|
14
|
+
value: ExplainStatement;
|
|
15
|
+
newIndex: number;
|
|
16
|
+
};
|
|
17
|
+
private static parseOptionList;
|
|
18
|
+
private static isLegacyFlag;
|
|
19
|
+
private static canStartOptionName;
|
|
20
|
+
private static extractAfterComments;
|
|
21
|
+
private static attachTrailingCommentsToNextLexeme;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { SqlTokenizer } from "./SqlTokenizer";
|
|
2
|
+
import { ExplainOption, ExplainStatement } from "../models/DDLStatements";
|
|
3
|
+
import { IdentifierString, RawString } from "../models/ValueComponent";
|
|
4
|
+
import { TokenType } from "../models/Lexeme";
|
|
5
|
+
import { ValueParser } from "./ValueParser";
|
|
6
|
+
/**
|
|
7
|
+
* Parses EXPLAIN statements including legacy shorthand flags and option lists.
|
|
8
|
+
*/
|
|
9
|
+
export class ExplainStatementParser {
|
|
10
|
+
static parse(sql, parseNested) {
|
|
11
|
+
const tokenizer = new SqlTokenizer(sql);
|
|
12
|
+
const lexemes = tokenizer.readLexemes();
|
|
13
|
+
const result = this.parseFromLexeme(lexemes, 0, parseNested);
|
|
14
|
+
if (result.newIndex < lexemes.length) {
|
|
15
|
+
throw new Error(`[ExplainStatementParser] Unexpected token "${lexemes[result.newIndex].value}" after EXPLAIN statement.`);
|
|
16
|
+
}
|
|
17
|
+
return result.value;
|
|
18
|
+
}
|
|
19
|
+
static parseFromLexeme(lexemes, index, parseNested) {
|
|
20
|
+
let idx = index;
|
|
21
|
+
const first = lexemes[idx];
|
|
22
|
+
if (!first || first.value.toLowerCase() !== "explain") {
|
|
23
|
+
throw new Error(`[ExplainStatementParser] Expected EXPLAIN at index ${idx}.`);
|
|
24
|
+
}
|
|
25
|
+
idx++;
|
|
26
|
+
const options = [];
|
|
27
|
+
// Collect legacy shorthand flags (ANALYZE, VERBOSE) before option list.
|
|
28
|
+
while (this.isLegacyFlag(lexemes[idx])) {
|
|
29
|
+
const flagLexeme = lexemes[idx];
|
|
30
|
+
const optionName = new IdentifierString(flagLexeme.value.toLowerCase());
|
|
31
|
+
if (flagLexeme.comments && flagLexeme.comments.length > 0) {
|
|
32
|
+
optionName.comments = [...flagLexeme.comments];
|
|
33
|
+
}
|
|
34
|
+
const option = new ExplainOption({
|
|
35
|
+
name: optionName,
|
|
36
|
+
value: new RawString("true"),
|
|
37
|
+
});
|
|
38
|
+
options.push(option);
|
|
39
|
+
idx++;
|
|
40
|
+
}
|
|
41
|
+
// Parse optional parenthesised option list.
|
|
42
|
+
if (lexemes[idx] && (lexemes[idx].type & TokenType.OpenParen) !== 0) {
|
|
43
|
+
const optionResult = this.parseOptionList(lexemes, idx);
|
|
44
|
+
options.push(...optionResult.options);
|
|
45
|
+
idx = optionResult.newIndex;
|
|
46
|
+
if (optionResult.trailingComments && optionResult.trailingComments.length > 0) {
|
|
47
|
+
// Promote comments that follow the option list so they attach to the nested statement.
|
|
48
|
+
this.attachTrailingCommentsToNextLexeme(lexemes, idx, optionResult.trailingComments);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (idx >= lexemes.length) {
|
|
52
|
+
throw new Error("[ExplainStatementParser] EXPLAIN must be followed by a statement to analyze.");
|
|
53
|
+
}
|
|
54
|
+
const nested = parseNested(lexemes, idx);
|
|
55
|
+
const statement = nested.value;
|
|
56
|
+
idx = nested.newIndex;
|
|
57
|
+
const explain = new ExplainStatement({
|
|
58
|
+
options: options.length > 0 ? options : null,
|
|
59
|
+
statement,
|
|
60
|
+
});
|
|
61
|
+
return { value: explain, newIndex: idx };
|
|
62
|
+
}
|
|
63
|
+
static parseOptionList(lexemes, index) {
|
|
64
|
+
let idx = index;
|
|
65
|
+
if (!(lexemes[idx].type & TokenType.OpenParen)) {
|
|
66
|
+
throw new Error(`[ExplainStatementParser] Expected '(' to start option list at index ${idx}.`);
|
|
67
|
+
}
|
|
68
|
+
idx++; // consume '('
|
|
69
|
+
const options = [];
|
|
70
|
+
let trailingComments = null;
|
|
71
|
+
while (idx < lexemes.length) {
|
|
72
|
+
const token = lexemes[idx];
|
|
73
|
+
if (!token) {
|
|
74
|
+
throw new Error("[ExplainStatementParser] Unterminated option list.");
|
|
75
|
+
}
|
|
76
|
+
if (token.type & TokenType.CloseParen) {
|
|
77
|
+
idx++; // consume ')'
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
if (!this.canStartOptionName(token)) {
|
|
81
|
+
throw new Error(`[ExplainStatementParser] Expected option name inside EXPLAIN option list at index ${idx}, found "${token.value}".`);
|
|
82
|
+
}
|
|
83
|
+
const nameComponent = new IdentifierString(token.value.toLowerCase());
|
|
84
|
+
if (token.comments && token.comments.length > 0) {
|
|
85
|
+
nameComponent.comments = [...token.comments];
|
|
86
|
+
}
|
|
87
|
+
idx++;
|
|
88
|
+
let value = null;
|
|
89
|
+
// Optional equals sign before value.
|
|
90
|
+
if (lexemes[idx] && (lexemes[idx].type & TokenType.Operator) && lexemes[idx].value === "=") {
|
|
91
|
+
idx++;
|
|
92
|
+
}
|
|
93
|
+
// Consume explicit value when present (anything other than comma/close paren).
|
|
94
|
+
if (lexemes[idx] && !(lexemes[idx].type & TokenType.Comma) && !(lexemes[idx].type & TokenType.CloseParen)) {
|
|
95
|
+
const parsedValue = ValueParser.parseFromLexeme(lexemes, idx);
|
|
96
|
+
value = parsedValue.value;
|
|
97
|
+
idx = parsedValue.newIndex;
|
|
98
|
+
}
|
|
99
|
+
if (!value) {
|
|
100
|
+
value = new RawString("true");
|
|
101
|
+
}
|
|
102
|
+
options.push(new ExplainOption({ name: nameComponent, value }));
|
|
103
|
+
if (!lexemes[idx]) {
|
|
104
|
+
throw new Error("[ExplainStatementParser] Unterminated option list.");
|
|
105
|
+
}
|
|
106
|
+
if (lexemes[idx].type & TokenType.Comma) {
|
|
107
|
+
idx++;
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (lexemes[idx].type & TokenType.CloseParen) {
|
|
111
|
+
trailingComments = this.extractAfterComments(lexemes[idx]);
|
|
112
|
+
idx++;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
throw new Error(`[ExplainStatementParser] Expected ',' or ')' after EXPLAIN option at index ${idx}, found "${lexemes[idx].value}".`);
|
|
116
|
+
}
|
|
117
|
+
return { options, newIndex: idx, trailingComments };
|
|
118
|
+
}
|
|
119
|
+
static isLegacyFlag(lexeme) {
|
|
120
|
+
if (!lexeme) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
if (!(lexeme.type & (TokenType.Identifier | TokenType.Command | TokenType.Function | TokenType.Type))) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
const keyword = lexeme.value.toLowerCase();
|
|
127
|
+
return keyword === "analyze" || keyword === "verbose";
|
|
128
|
+
}
|
|
129
|
+
static canStartOptionName(lexeme) {
|
|
130
|
+
return (lexeme.type & (TokenType.Identifier | TokenType.Command | TokenType.Function | TokenType.Type)) !== 0;
|
|
131
|
+
}
|
|
132
|
+
static extractAfterComments(token) {
|
|
133
|
+
let collected = null;
|
|
134
|
+
if (token.positionedComments && token.positionedComments.length > 0) {
|
|
135
|
+
// Split out 'after' comments so they can be reassigned to the following token.
|
|
136
|
+
const retained = [];
|
|
137
|
+
for (const posComment of token.positionedComments) {
|
|
138
|
+
if (posComment.position === 'after' && posComment.comments && posComment.comments.length > 0) {
|
|
139
|
+
if (!collected) {
|
|
140
|
+
collected = [];
|
|
141
|
+
}
|
|
142
|
+
collected.push(...posComment.comments);
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
retained.push(posComment);
|
|
146
|
+
}
|
|
147
|
+
token.positionedComments = retained.length > 0 ? retained : undefined;
|
|
148
|
+
}
|
|
149
|
+
if (token.comments && token.comments.length > 0) {
|
|
150
|
+
// Fall back to legacy comment storage when positioned comments are absent.
|
|
151
|
+
if (!collected) {
|
|
152
|
+
collected = [];
|
|
153
|
+
}
|
|
154
|
+
collected.push(...token.comments);
|
|
155
|
+
token.comments = null;
|
|
156
|
+
}
|
|
157
|
+
return collected;
|
|
158
|
+
}
|
|
159
|
+
static attachTrailingCommentsToNextLexeme(lexemes, index, comments) {
|
|
160
|
+
if (!comments || comments.length === 0) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const target = lexemes[index];
|
|
164
|
+
if (!target) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
if (!target.positionedComments) {
|
|
168
|
+
// Initialise positioned comments to allow inserting 'before' entries.
|
|
169
|
+
target.positionedComments = [];
|
|
170
|
+
}
|
|
171
|
+
const beforeEntry = target.positionedComments.find(pos => pos.position === 'before');
|
|
172
|
+
if (beforeEntry) {
|
|
173
|
+
// Append to existing leading comments on the target lexeme.
|
|
174
|
+
beforeEntry.comments.push(...comments);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// Seed a new leading comment entry on the next lexeme.
|
|
178
|
+
target.positionedComments.push({
|
|
179
|
+
position: 'before',
|
|
180
|
+
comments: [...comments],
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=ExplainStatementParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExplainStatementParser.js","sourceRoot":"","sources":["../../../../src/parsers/ExplainStatementParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,6 +74,31 @@ export class ParenExpressionParser {
|
|
|
74
74
|
const result = ValueParser.parseArgument(TokenType.OpenParen, TokenType.CloseParen, lexemes, index);
|
|
75
75
|
idx = result.newIndex;
|
|
76
76
|
const value = new ParenExpression(result.value);
|
|
77
|
+
// Preserve comments that trail immediately after the closing parenthesis (e.g. `(expr) -- note`).
|
|
78
|
+
const closingIndex = idx - 1;
|
|
79
|
+
if (closingIndex >= 0 && closingIndex < lexemes.length) {
|
|
80
|
+
const closingLexeme = lexemes[closingIndex];
|
|
81
|
+
if (closingLexeme.type & TokenType.CloseParen) {
|
|
82
|
+
if (closingLexeme.positionedComments && closingLexeme.positionedComments.length > 0) {
|
|
83
|
+
const afterComments = closingLexeme.positionedComments
|
|
84
|
+
.filter(comment => comment.position === 'after' && comment.comments.length > 0)
|
|
85
|
+
.map(comment => ({
|
|
86
|
+
position: comment.position,
|
|
87
|
+
comments: [...comment.comments],
|
|
88
|
+
}));
|
|
89
|
+
if (afterComments.length > 0) {
|
|
90
|
+
value.positionedComments = value.positionedComments
|
|
91
|
+
? [...value.positionedComments, ...afterComments]
|
|
92
|
+
: afterComments;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
else if (closingLexeme.comments && closingLexeme.comments.length > 0) {
|
|
96
|
+
value.comments = value.comments
|
|
97
|
+
? value.comments.concat(closingLexeme.comments)
|
|
98
|
+
: [...closingLexeme.comments];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
77
102
|
return { value, newIndex: idx };
|
|
78
103
|
}
|
|
79
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParenExpressionParser.js","sourceRoot":"","sources":["../../../../src/parsers/ParenExpressionParser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ParenExpressionParser.js","sourceRoot":"","sources":["../../../../src/parsers/ParenExpressionParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAkB,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,MAAM,OAAO,qBAAqB;IACvB,MAAM,CAAC,eAAe,CAAC,OAAiB,EAAE,KAAa;QAC1D,IAAI,GAAG,GAAG,KAAK,CAAC;QAEhB,4EAA4E;QAC5E,IAAI,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,IAAI,CACvE,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ;YACnC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ;YACnC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CACpC,EAAE,CAAC;YACA,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,sBAAsB,GAAG,UAAU,CAAC,kBAAkB;gBACxD,CAAC,CAAC,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAClC,CAAC,CAAC;gBACH,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,kBAAkB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACjF,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB;YAC/B,MAAM,MAAM,GAAG,iBAAiB,CAAC,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/D,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;YAEtB,oDAAoD;YACpD,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,eAAe,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YACrF,CAAC;YAED,oEAAoE;YACpE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACnC,MAAM,qBAAqB,GAAG,aAAa,CAAC,QAAQ,CAAC;YACrD,MAAM,yBAAyB,GAAG,aAAa,CAAC,kBAAkB,CAAC;YACnE,GAAG,EAAE,CAAC,CAAC,qBAAqB;YAE5B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE5C,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,uGAAuG;gBACvG,MAAM,cAAc,GAAG,sBAAsB;qBACxC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;qBAChF,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACf,QAAQ,EAAE,QAAiB;oBAC3B,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAClC,CAAC,CAAC,CAAC;gBAER,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;wBAC/C,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC;wBAClD,CAAC,CAAC,cAAc,CAAC;gBACzB,CAAC;YACL,CAAC;iBAAM,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7D,gFAAgF;gBAChF,MAAM,kBAAkB,GAAG,EAAE,QAAQ,EAAE,QAAiB,EAAE,QAAQ,EAAE,CAAC,GAAG,kBAAkB,CAAC,EAAE,CAAC;gBAC9F,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;oBAC/C,CAAC,CAAC,CAAC,kBAAkB,EAAE,GAAG,KAAK,CAAC,kBAAkB,CAAC;oBACnD,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;YAC/B,CAAC;YAED,IAAI,yBAAyB,IAAI,yBAAyB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpE,+FAA+F;gBAC/F,MAAM,aAAa,GAAG,yBAAyB;qBAC1C,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;qBAChF,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;iBAClC,CAAC,CAAC,CAAC;gBAER,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;wBAC/C,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,aAAa,CAAC;wBACjD,CAAC,CAAC,aAAa,CAAC;gBACxB,CAAC;YACL,CAAC;iBAAM,IAAI,qBAAqB,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnE,uEAAuE;gBACvE,KAAK,CAAC,QAAQ,GAAG,qBAAqB,CAAC;YAC3C,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QACpC,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;QACpG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAEtB,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEhD,kGAAkG;QAClG,MAAM,YAAY,GAAG,GAAG,GAAG,CAAC,CAAC;QAC7B,IAAI,YAAY,IAAI,CAAC,IAAI,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACrD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC5C,IAAI,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;gBAC5C,IAAI,aAAa,CAAC,kBAAkB,IAAI,aAAa,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClF,MAAM,aAAa,GAAG,aAAa,CAAC,kBAAkB;yBACjD,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;yBAC9E,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;wBACb,QAAQ,EAAE,OAAO,CAAC,QAAQ;wBAC1B,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;qBAClC,CAAC,CAAC,CAAC;oBACR,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,KAAK,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB;4BAC/C,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,GAAG,aAAa,CAAC;4BACjD,CAAC,CAAC,aAAa,CAAC;oBACxB,CAAC;gBACL,CAAC;qBAAM,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrE,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ;wBAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC;wBAC/C,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACtC,CAAC;YACL,CAAC;QACL,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACpC,CAAC;CACJ"}
|
|
@@ -4,8 +4,8 @@ import type { UpdateQuery } from '../models/UpdateQuery';
|
|
|
4
4
|
import type { DeleteQuery } from '../models/DeleteQuery';
|
|
5
5
|
import type { CreateTableQuery } from '../models/CreateTableQuery';
|
|
6
6
|
import type { MergeQuery } from '../models/MergeQuery';
|
|
7
|
-
import type { DropTableStatement, DropIndexStatement, CreateIndexStatement, AlterTableStatement, DropConstraintStatement } from '../models/DDLStatements';
|
|
8
|
-
export type ParsedStatement = SelectQuery | InsertQuery | UpdateQuery | DeleteQuery | CreateTableQuery | MergeQuery | DropTableStatement | DropIndexStatement | CreateIndexStatement | AlterTableStatement | DropConstraintStatement;
|
|
7
|
+
import type { DropTableStatement, DropIndexStatement, CreateIndexStatement, AlterTableStatement, DropConstraintStatement, AnalyzeStatement, ExplainStatement } from '../models/DDLStatements';
|
|
8
|
+
export type ParsedStatement = SelectQuery | InsertQuery | UpdateQuery | DeleteQuery | CreateTableQuery | MergeQuery | DropTableStatement | DropIndexStatement | CreateIndexStatement | AlterTableStatement | DropConstraintStatement | AnalyzeStatement | ExplainStatement;
|
|
9
9
|
export interface SqlParserOptions {
|
|
10
10
|
mode?: 'single' | 'multiple';
|
|
11
11
|
skipEmptyStatements?: boolean;
|
|
@@ -22,6 +22,7 @@ export declare class SqlParser {
|
|
|
22
22
|
static parseMany(sql: string, options?: SqlParserManyOptions): ParsedStatement[];
|
|
23
23
|
private static dispatchParse;
|
|
24
24
|
private static parseSelectStatement;
|
|
25
|
+
private static parseExplainStatement;
|
|
25
26
|
private static parseInsertStatement;
|
|
26
27
|
private static parseUpdateStatement;
|
|
27
28
|
private static parseDeleteStatement;
|
|
@@ -31,6 +32,7 @@ export declare class SqlParser {
|
|
|
31
32
|
private static parseCreateIndexStatement;
|
|
32
33
|
private static parseAlterTableStatement;
|
|
33
34
|
private static parseDropConstraintStatement;
|
|
35
|
+
private static parseAnalyzeStatement;
|
|
34
36
|
private static parseMergeStatement;
|
|
35
37
|
private static getCommandAfterWith;
|
|
36
38
|
private static cloneLexemeArray;
|