dt-sql-parser 4.3.2-beta.0 → 4.4.0-beta.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/lib/flink/FlinkSqlParser.d.ts +129 -118
- package/dist/lib/flink/FlinkSqlParser.js +2794 -2720
- package/dist/lib/flink/FlinkSqlParserListener.d.ts +11 -0
- package/dist/lib/flink/FlinkSqlParserVisitor.d.ts +7 -0
- package/dist/parser/common/basicSQL.js +14 -12
- package/dist/parser/flink/index.d.ts +4 -0
- package/dist/parser/flink/index.js +18 -1
- package/dist/parser/hive/index.d.ts +4 -0
- package/dist/parser/hive/index.js +12 -1
- package/dist/parser/impala/index.d.ts +4 -0
- package/dist/parser/impala/index.js +12 -1
- package/dist/parser/mysql/index.d.ts +4 -0
- package/dist/parser/mysql/index.js +12 -1
- package/dist/parser/postgresql/index.d.ts +4 -0
- package/dist/parser/postgresql/index.js +18 -1
- package/dist/parser/spark/index.d.ts +4 -0
- package/dist/parser/spark/index.js +16 -1
- package/dist/parser/trino/index.d.ts +4 -0
- package/dist/parser/trino/index.js +12 -1
- package/package.json +1 -1
|
@@ -77,6 +77,7 @@ import { InsertSimpleStatementContext } from "./FlinkSqlParser.js";
|
|
|
77
77
|
import { InsertPartitionDefinitionContext } from "./FlinkSqlParser.js";
|
|
78
78
|
import { ValuesDefinitionContext } from "./FlinkSqlParser.js";
|
|
79
79
|
import { ValuesRowDefinitionContext } from "./FlinkSqlParser.js";
|
|
80
|
+
import { ValueDefinitionContext } from "./FlinkSqlParser.js";
|
|
80
81
|
import { InsertMulStatementCompatibilityContext } from "./FlinkSqlParser.js";
|
|
81
82
|
import { InsertMulStatementContext } from "./FlinkSqlParser.js";
|
|
82
83
|
import { QueryStatementContext } from "./FlinkSqlParser.js";
|
|
@@ -1005,6 +1006,16 @@ export declare class FlinkSqlParserListener implements ParseTreeListener {
|
|
|
1005
1006
|
* @param ctx the parse tree
|
|
1006
1007
|
*/
|
|
1007
1008
|
exitValuesRowDefinition?: (ctx: ValuesRowDefinitionContext) => void;
|
|
1009
|
+
/**
|
|
1010
|
+
* Enter a parse tree produced by `FlinkSqlParser.valueDefinition`.
|
|
1011
|
+
* @param ctx the parse tree
|
|
1012
|
+
*/
|
|
1013
|
+
enterValueDefinition?: (ctx: ValueDefinitionContext) => void;
|
|
1014
|
+
/**
|
|
1015
|
+
* Exit a parse tree produced by `FlinkSqlParser.valueDefinition`.
|
|
1016
|
+
* @param ctx the parse tree
|
|
1017
|
+
*/
|
|
1018
|
+
exitValueDefinition?: (ctx: ValueDefinitionContext) => void;
|
|
1008
1019
|
/**
|
|
1009
1020
|
* Enter a parse tree produced by `FlinkSqlParser.insertMulStatementCompatibility`.
|
|
1010
1021
|
* @param ctx the parse tree
|
|
@@ -77,6 +77,7 @@ import { InsertSimpleStatementContext } from "./FlinkSqlParser.js";
|
|
|
77
77
|
import { InsertPartitionDefinitionContext } from "./FlinkSqlParser.js";
|
|
78
78
|
import { ValuesDefinitionContext } from "./FlinkSqlParser.js";
|
|
79
79
|
import { ValuesRowDefinitionContext } from "./FlinkSqlParser.js";
|
|
80
|
+
import { ValueDefinitionContext } from "./FlinkSqlParser.js";
|
|
80
81
|
import { InsertMulStatementCompatibilityContext } from "./FlinkSqlParser.js";
|
|
81
82
|
import { InsertMulStatementContext } from "./FlinkSqlParser.js";
|
|
82
83
|
import { QueryStatementContext } from "./FlinkSqlParser.js";
|
|
@@ -694,6 +695,12 @@ export declare class FlinkSqlParserVisitor<Result> extends AbstractParseTreeVisi
|
|
|
694
695
|
* @return the visitor result
|
|
695
696
|
*/
|
|
696
697
|
visitValuesRowDefinition?: (ctx: ValuesRowDefinitionContext) => Result;
|
|
698
|
+
/**
|
|
699
|
+
* Visit a parse tree produced by `FlinkSqlParser.valueDefinition`.
|
|
700
|
+
* @param ctx the parse tree
|
|
701
|
+
* @return the visitor result
|
|
702
|
+
*/
|
|
703
|
+
visitValueDefinition?: (ctx: ValueDefinitionContext) => Result;
|
|
697
704
|
/**
|
|
698
705
|
* Visit a parse tree produced by `FlinkSqlParser.insertMulStatementCompatibility`.
|
|
699
706
|
* @param ctx the parse tree
|
|
@@ -36,6 +36,7 @@ export class BasicSQL {
|
|
|
36
36
|
createParser(input, errorListener) {
|
|
37
37
|
const lexer = this.createLexer(input, errorListener);
|
|
38
38
|
const tokenStream = new CommonTokenStream(lexer);
|
|
39
|
+
tokenStream.fill();
|
|
39
40
|
const parser = this.createParserFromTokenStream(tokenStream);
|
|
40
41
|
parser.interpreter.predictionMode = PredictionMode.SLL;
|
|
41
42
|
if (errorListener) {
|
|
@@ -375,23 +376,24 @@ export class BasicSQL {
|
|
|
375
376
|
};
|
|
376
377
|
}
|
|
377
378
|
getAllEntities(input, caretPosition) {
|
|
378
|
-
|
|
379
|
+
/**
|
|
380
|
+
* Create a new parser to generate brand new parse tree.
|
|
381
|
+
* And the new parse tree should not effect cached parse tree which is used by validate and getSuggestionAtCaretPosition method.
|
|
382
|
+
*/
|
|
383
|
+
const parser = this.createParser(input);
|
|
384
|
+
const allTokens = parser.tokenStream.getTokens();
|
|
379
385
|
const caretTokenIndex = caretPosition
|
|
380
386
|
? findCaretTokenIndex(caretPosition, allTokens)
|
|
381
387
|
: void 0;
|
|
382
388
|
const collectListener = this.createEntityCollector(input, allTokens, caretTokenIndex);
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
// parser.caretTokenIndex = tokenIndex;
|
|
389
|
-
// }
|
|
390
|
-
// const parseTree = parser.program();
|
|
391
|
-
const parseTree = this.parseWithCache(input);
|
|
389
|
+
parser.entityCollecting = true;
|
|
390
|
+
if (caretPosition && caretTokenIndex !== undefined) {
|
|
391
|
+
parser.caretTokenIndex = caretTokenIndex;
|
|
392
|
+
}
|
|
393
|
+
const parseTree = parser.program();
|
|
392
394
|
this.listen(collectListener, parseTree);
|
|
393
|
-
|
|
394
|
-
|
|
395
|
+
parser.caretTokenIndex = -1;
|
|
396
|
+
parser.entityCollecting = false;
|
|
395
397
|
return collectListener.getEntities();
|
|
396
398
|
}
|
|
397
399
|
/**
|
|
@@ -13,6 +13,10 @@ export { FlinkEntityCollector, FlinkSqlSplitListener };
|
|
|
13
13
|
export declare class FlinkSQL extends BasicSQL<FlinkSqlLexer, ProgramContext, FlinkSqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): FlinkSqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): FlinkSqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): FlinkSqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): FlinkErrorListener;
|
|
@@ -11,6 +11,16 @@ export { FlinkEntityCollector, FlinkSqlSplitListener };
|
|
|
11
11
|
export class FlinkSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([
|
|
18
|
+
FlinkSqlParser.RULE_nonReservedKeywords,
|
|
19
|
+
FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncName,
|
|
20
|
+
FlinkSqlParser.RULE_reservedKeywordsFollowParamsUsedAsFuncName,
|
|
21
|
+
FlinkSqlParser.RULE_reservedKeywordsNoParamsUsedAsFuncName,
|
|
22
|
+
FlinkSqlParser.RULE_reservedKeywordsUsedAsFuncParam,
|
|
23
|
+
]);
|
|
14
24
|
this.preferredRules = new Set([
|
|
15
25
|
FlinkSqlParser.RULE_catalogPath, // catalog name
|
|
16
26
|
FlinkSqlParser.RULE_databasePath, // database name
|
|
@@ -29,6 +39,7 @@ export class FlinkSQL extends BasicSQL {
|
|
|
29
39
|
FlinkSqlParser.RULE_columnNameCreate,
|
|
30
40
|
FlinkSqlParser.RULE_tablePropertyKey,
|
|
31
41
|
FlinkSqlParser.RULE_tablePropertyValue,
|
|
42
|
+
...this.excludeKeywordRules,
|
|
32
43
|
]);
|
|
33
44
|
}
|
|
34
45
|
createLexerFromCharStream(charStreams) {
|
|
@@ -127,7 +138,13 @@ export class FlinkSQL extends BasicSQL {
|
|
|
127
138
|
default:
|
|
128
139
|
break;
|
|
129
140
|
}
|
|
130
|
-
if (syntaxContextType
|
|
141
|
+
if (syntaxContextType &&
|
|
142
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
145
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
146
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
147
|
+
})) {
|
|
131
148
|
originalSyntaxSuggestions.push({
|
|
132
149
|
syntaxContextType,
|
|
133
150
|
wordRanges: tokenRanges,
|
|
@@ -13,6 +13,10 @@ export { HiveEntityCollector, HiveSqlSplitListener };
|
|
|
13
13
|
export declare class HiveSQL extends BasicSQL<HiveSqlLexer, ProgramContext, HiveSqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): HiveSqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): HiveSqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): HiveSqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): HiveErrorListener;
|
|
@@ -11,6 +11,10 @@ export { HiveEntityCollector, HiveSqlSplitListener };
|
|
|
11
11
|
export class HiveSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([HiveSqlParser.RULE_nonReserved]);
|
|
14
18
|
this.preferredRules = new Set([
|
|
15
19
|
HiveSqlParser.RULE_dbSchemaName, // db or schema name
|
|
16
20
|
HiveSqlParser.RULE_dbSchemaNameCreate, // db or schema name that will be created
|
|
@@ -24,6 +28,7 @@ export class HiveSQL extends BasicSQL {
|
|
|
24
28
|
HiveSqlParser.RULE_columnName,
|
|
25
29
|
HiveSqlParser.RULE_columnNamePath,
|
|
26
30
|
HiveSqlParser.RULE_columnNameCreate,
|
|
31
|
+
...this.excludeKeywordRules,
|
|
27
32
|
]);
|
|
28
33
|
}
|
|
29
34
|
createLexerFromCharStream(charStreams) {
|
|
@@ -115,7 +120,13 @@ export class HiveSQL extends BasicSQL {
|
|
|
115
120
|
default:
|
|
116
121
|
break;
|
|
117
122
|
}
|
|
118
|
-
if (syntaxContextType
|
|
123
|
+
if (syntaxContextType &&
|
|
124
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
125
|
+
var _a, _b;
|
|
126
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
127
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
128
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
129
|
+
})) {
|
|
119
130
|
originalSyntaxSuggestions.push({
|
|
120
131
|
syntaxContextType,
|
|
121
132
|
wordRanges: tokenRanges,
|
|
@@ -13,6 +13,10 @@ export { ImpalaEntityCollector, ImpalaSqlSplitListener };
|
|
|
13
13
|
export declare class ImpalaSQL extends BasicSQL<ImpalaSqlLexer, ProgramContext, ImpalaSqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): ImpalaSqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): ImpalaSqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): ImpalaSqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): ImpalaErrorListener;
|
|
@@ -11,6 +11,10 @@ export { ImpalaEntityCollector, ImpalaSqlSplitListener };
|
|
|
11
11
|
export class ImpalaSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([ImpalaSqlParser.RULE_nonReserved]);
|
|
14
18
|
this.preferredRules = new Set([
|
|
15
19
|
ImpalaSqlParser.RULE_functionNameCreate,
|
|
16
20
|
ImpalaSqlParser.RULE_tableNameCreate,
|
|
@@ -23,6 +27,7 @@ export class ImpalaSQL extends BasicSQL {
|
|
|
23
27
|
ImpalaSqlParser.RULE_databaseNamePath,
|
|
24
28
|
ImpalaSqlParser.RULE_columnNamePath,
|
|
25
29
|
ImpalaSqlParser.RULE_columnName,
|
|
30
|
+
...this.excludeKeywordRules,
|
|
26
31
|
]);
|
|
27
32
|
}
|
|
28
33
|
createLexerFromCharStream(charStreams) {
|
|
@@ -104,7 +109,13 @@ export class ImpalaSQL extends BasicSQL {
|
|
|
104
109
|
default:
|
|
105
110
|
break;
|
|
106
111
|
}
|
|
107
|
-
if (syntaxContextType
|
|
112
|
+
if (syntaxContextType &&
|
|
113
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
114
|
+
var _a, _b;
|
|
115
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
116
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
117
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
118
|
+
})) {
|
|
108
119
|
originalSyntaxSuggestions.push({
|
|
109
120
|
syntaxContextType,
|
|
110
121
|
wordRanges: tokenRanges,
|
|
@@ -13,6 +13,10 @@ export { MySqlEntityCollector, MysqlSplitListener };
|
|
|
13
13
|
export declare class MySQL extends BasicSQL<MySqlLexer, ProgramContext, MySqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): MySqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): MySqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): MysqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): MysqlErrorListener;
|
|
@@ -11,6 +11,10 @@ export { MySqlEntityCollector, MysqlSplitListener };
|
|
|
11
11
|
export class MySQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([MySqlParser.RULE_keywordsCanBeId]);
|
|
14
18
|
this.preferredRules = new Set([
|
|
15
19
|
MySqlParser.RULE_databaseName,
|
|
16
20
|
MySqlParser.RULE_databaseNameCreate,
|
|
@@ -22,6 +26,7 @@ export class MySQL extends BasicSQL {
|
|
|
22
26
|
MySqlParser.RULE_functionNameCreate,
|
|
23
27
|
MySqlParser.RULE_columnName,
|
|
24
28
|
MySqlParser.RULE_columnNameCreate,
|
|
29
|
+
...this.excludeKeywordRules,
|
|
25
30
|
]);
|
|
26
31
|
}
|
|
27
32
|
createLexerFromCharStream(charStreams) {
|
|
@@ -94,7 +99,13 @@ export class MySQL extends BasicSQL {
|
|
|
94
99
|
default:
|
|
95
100
|
break;
|
|
96
101
|
}
|
|
97
|
-
if (syntaxContextType
|
|
102
|
+
if (syntaxContextType &&
|
|
103
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
104
|
+
var _a, _b;
|
|
105
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
106
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
107
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
108
|
+
})) {
|
|
98
109
|
originalSyntaxSuggestions.push({
|
|
99
110
|
syntaxContextType,
|
|
100
111
|
wordRanges: tokenRanges,
|
|
@@ -13,6 +13,10 @@ export { PostgreSqlEntityCollector, PostgreSqlSplitListener };
|
|
|
13
13
|
export declare class PostgreSQL extends BasicSQL<PostgreSqlLexer, ProgramContext, PostgreSqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): PostgreSqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): PostgreSqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): PostgreSqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): PostgreSqlErrorListener;
|
|
@@ -11,6 +11,16 @@ export { PostgreSqlEntityCollector, PostgreSqlSplitListener };
|
|
|
11
11
|
export class PostgreSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([
|
|
18
|
+
PostgreSqlParser.RULE_nonReservedWord,
|
|
19
|
+
PostgreSqlParser.RULE_identifier,
|
|
20
|
+
PostgreSqlParser.RULE_reservedKeyword,
|
|
21
|
+
PostgreSqlParser.RULE_typeFuncNameKeyword,
|
|
22
|
+
PostgreSqlParser.RULE_colNameKeyword,
|
|
23
|
+
]);
|
|
14
24
|
this.preferredRules = new Set([
|
|
15
25
|
PostgreSqlParser.RULE_tableNameCreate, // table name
|
|
16
26
|
PostgreSqlParser.RULE_tableName, // table name that will be created
|
|
@@ -27,6 +37,7 @@ export class PostgreSQL extends BasicSQL {
|
|
|
27
37
|
PostgreSqlParser.RULE_columnNameCreate, // column name that will be created
|
|
28
38
|
PostgreSqlParser.RULE_columnName, // column name
|
|
29
39
|
PostgreSqlParser.RULE_columnNamePath, // column name
|
|
40
|
+
...this.excludeKeywordRules,
|
|
30
41
|
]);
|
|
31
42
|
}
|
|
32
43
|
createLexerFromCharStream(charStreams) {
|
|
@@ -127,7 +138,13 @@ export class PostgreSQL extends BasicSQL {
|
|
|
127
138
|
default:
|
|
128
139
|
break;
|
|
129
140
|
}
|
|
130
|
-
if (syntaxContextType
|
|
141
|
+
if (syntaxContextType &&
|
|
142
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
145
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
146
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
147
|
+
})) {
|
|
131
148
|
originalSyntaxSuggestions.push({
|
|
132
149
|
syntaxContextType,
|
|
133
150
|
wordRanges: tokenRanges,
|
|
@@ -13,6 +13,10 @@ export { SparkEntityCollector, SparkSqlSplitListener };
|
|
|
13
13
|
export declare class SparkSQL extends BasicSQL<SparkSqlLexer, ProgramContext, SparkSqlParser> {
|
|
14
14
|
protected createLexerFromCharStream(charStreams: CharStream): SparkSqlLexer;
|
|
15
15
|
protected createParserFromTokenStream(tokenStream: CommonTokenStream): SparkSqlParser;
|
|
16
|
+
/**
|
|
17
|
+
* The rules that keywords you don't want to be suggested.
|
|
18
|
+
*/
|
|
19
|
+
protected excludeKeywordRules: Set<number>;
|
|
16
20
|
protected preferredRules: Set<number>;
|
|
17
21
|
protected get splitListener(): SparkSqlSplitListener;
|
|
18
22
|
protected createErrorListener(_errorListener: ErrorListener): SparkErrorListener;
|
|
@@ -11,6 +11,14 @@ export { SparkEntityCollector, SparkSqlSplitListener };
|
|
|
11
11
|
export class SparkSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([
|
|
18
|
+
SparkSqlParser.RULE_strictIdentifier,
|
|
19
|
+
SparkSqlParser.RULE_strictNonReserved,
|
|
20
|
+
SparkSqlParser.RULE_nonReserved,
|
|
21
|
+
]);
|
|
14
22
|
this.preferredRules = new Set([
|
|
15
23
|
SparkSqlParser.RULE_namespaceName,
|
|
16
24
|
SparkSqlParser.RULE_namespaceNameCreate,
|
|
@@ -23,6 +31,7 @@ export class SparkSQL extends BasicSQL {
|
|
|
23
31
|
SparkSqlParser.RULE_columnName,
|
|
24
32
|
SparkSqlParser.RULE_columnNamePath,
|
|
25
33
|
SparkSqlParser.RULE_columnNameCreate,
|
|
34
|
+
...this.excludeKeywordRules,
|
|
26
35
|
]);
|
|
27
36
|
}
|
|
28
37
|
createLexerFromCharStream(charStreams) {
|
|
@@ -110,7 +119,13 @@ export class SparkSQL extends BasicSQL {
|
|
|
110
119
|
default:
|
|
111
120
|
break;
|
|
112
121
|
}
|
|
113
|
-
if (syntaxContextType
|
|
122
|
+
if (syntaxContextType &&
|
|
123
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
124
|
+
var _a, _b;
|
|
125
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
126
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
127
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
128
|
+
})) {
|
|
114
129
|
originalSyntaxSuggestions.push({
|
|
115
130
|
syntaxContextType,
|
|
116
131
|
wordRanges: tokenRanges,
|
|
@@ -17,6 +17,10 @@ export declare class TrinoSQL extends BasicSQL<TrinoSqlLexer, ProgramContext, Tr
|
|
|
17
17
|
protected createErrorListener(_errorListener: ErrorListener): TrinoErrorListener;
|
|
18
18
|
protected createEntityCollector(input: string, allTokens?: Token[], caretTokenIndex?: number): TrinoEntityCollector;
|
|
19
19
|
protected createSemanticContextCollector(input: string, caretPosition: CaretPosition, allTokens: Token[], options?: SemanticCollectOptions): TrinoSemanticContextCollector;
|
|
20
|
+
/**
|
|
21
|
+
* The rules that keywords you don't want to be suggested.
|
|
22
|
+
*/
|
|
23
|
+
protected excludeKeywordRules: Set<number>;
|
|
20
24
|
protected preferredRules: Set<number>;
|
|
21
25
|
protected processCandidates(candidates: CandidatesCollection, allTokens: Token[], caretTokenIndex: number): Suggestions<Token>;
|
|
22
26
|
}
|
|
@@ -11,6 +11,10 @@ export { TrinoEntityCollector, TrinoSqlSplitListener };
|
|
|
11
11
|
export class TrinoSQL extends BasicSQL {
|
|
12
12
|
constructor() {
|
|
13
13
|
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* The rules that keywords you don't want to be suggested.
|
|
16
|
+
*/
|
|
17
|
+
this.excludeKeywordRules = new Set([TrinoSqlParser.RULE_nonReserved]);
|
|
14
18
|
this.preferredRules = new Set([
|
|
15
19
|
TrinoSqlParser.RULE_catalogRef,
|
|
16
20
|
TrinoSqlParser.RULE_catalogNameCreate,
|
|
@@ -25,6 +29,7 @@ export class TrinoSQL extends BasicSQL {
|
|
|
25
29
|
TrinoSqlParser.RULE_columnRef,
|
|
26
30
|
TrinoSqlParser.RULE_columnName,
|
|
27
31
|
TrinoSqlParser.RULE_columnNameCreate,
|
|
32
|
+
...this.excludeKeywordRules,
|
|
28
33
|
]);
|
|
29
34
|
}
|
|
30
35
|
createLexerFromCharStream(charStreams) {
|
|
@@ -116,7 +121,13 @@ export class TrinoSQL extends BasicSQL {
|
|
|
116
121
|
default:
|
|
117
122
|
break;
|
|
118
123
|
}
|
|
119
|
-
if (syntaxContextType
|
|
124
|
+
if (syntaxContextType &&
|
|
125
|
+
!originalSyntaxSuggestions.some((syn) => {
|
|
126
|
+
var _a, _b;
|
|
127
|
+
return syn.syntaxContextType === syntaxContextType &&
|
|
128
|
+
((_a = syn.wordRanges.map((wordRange) => wordRange.text)) === null || _a === void 0 ? void 0 : _a.join(',')) ===
|
|
129
|
+
((_b = tokenRanges.map((tokenRange) => tokenRange.text)) === null || _b === void 0 ? void 0 : _b.join(','));
|
|
130
|
+
})) {
|
|
120
131
|
originalSyntaxSuggestions.push({
|
|
121
132
|
syntaxContextType,
|
|
122
133
|
wordRanges: tokenRanges,
|