dt-sql-parser 4.0.0-ng.2 → 4.0.1

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 (147) hide show
  1. package/README.md +119 -112
  2. package/dist/index.d.ts +7 -9
  3. package/dist/index.js +4 -7
  4. package/dist/lib/SQLParserBase.d.ts +8 -0
  5. package/dist/lib/SQLParserBase.js +14 -0
  6. package/dist/lib/{flinksql → flink}/FlinkSqlLexer.d.ts +2 -2
  7. package/dist/lib/{flinksql → flink}/FlinkSqlLexer.js +2 -1
  8. package/dist/lib/{flinksql → flink}/FlinkSqlParser.d.ts +5 -11
  9. package/dist/lib/{flinksql → flink}/FlinkSqlParser.js +2065 -2054
  10. package/dist/lib/{flinksql → flink}/FlinkSqlParserListener.d.ts +0 -13
  11. package/dist/lib/{flinksql → flink}/FlinkSqlParserListener.js +1 -1
  12. package/dist/lib/{flinksql → flink}/FlinkSqlParserVisitor.d.ts +0 -8
  13. package/dist/lib/{flinksql → flink}/FlinkSqlParserVisitor.js +2 -1
  14. package/dist/lib/hive/HiveSqlLexer.d.ts +258 -257
  15. package/dist/lib/hive/HiveSqlLexer.js +1794 -1786
  16. package/dist/lib/hive/HiveSqlParser.d.ts +1266 -3176
  17. package/dist/lib/hive/HiveSqlParser.js +23046 -33454
  18. package/dist/lib/hive/HiveSqlParserListener.d.ts +141 -2036
  19. package/dist/lib/hive/HiveSqlParserVisitor.d.ts +151 -1358
  20. package/dist/lib/hive/HiveSqlParserVisitor.js +1 -0
  21. package/dist/lib/impala/ImpalaSqlLexer.d.ts +170 -154
  22. package/dist/lib/impala/ImpalaSqlLexer.js +1179 -1099
  23. package/dist/lib/impala/ImpalaSqlParser.d.ts +282 -240
  24. package/dist/lib/impala/ImpalaSqlParser.js +3881 -3744
  25. package/dist/lib/impala/ImpalaSqlParserListener.d.ts +22 -11
  26. package/dist/lib/impala/ImpalaSqlParserVisitor.d.ts +14 -7
  27. package/dist/lib/impala/ImpalaSqlParserVisitor.js +1 -0
  28. package/dist/lib/index.d.ts +6 -8
  29. package/dist/lib/index.js +6 -8
  30. package/dist/lib/mysql/MySqlLexer.d.ts +2 -2
  31. package/dist/lib/mysql/MySqlLexer.js +1 -0
  32. package/dist/lib/mysql/MySqlParser.d.ts +347 -418
  33. package/dist/lib/mysql/MySqlParser.js +10484 -11099
  34. package/dist/lib/mysql/MySqlParserListener.d.ts +41 -126
  35. package/dist/lib/mysql/MySqlParserVisitor.d.ts +23 -76
  36. package/dist/lib/mysql/MySqlParserVisitor.js +1 -0
  37. package/dist/lib/{pgsql/PostgreSQLLexer.d.ts → postgresql/PostgreSqlLexer.d.ts} +3 -3
  38. package/dist/lib/{pgsql/PostgreSQLLexer.js → postgresql/PostgreSqlLexer.js} +618 -617
  39. package/dist/lib/{pgsql/PostgreSQLParser.d.ts → postgresql/PostgreSqlParser.d.ts} +3598 -3484
  40. package/dist/lib/{pgsql/PostgreSQLParser.js → postgresql/PostgreSqlParser.js} +41502 -42831
  41. package/dist/lib/{pgsql/PostgreSQLParserListener.d.ts → postgresql/PostgreSqlParserListener.d.ts} +2797 -2730
  42. package/dist/lib/{pgsql/PostgreSQLParserListener.js → postgresql/PostgreSqlParserListener.js} +3 -3
  43. package/dist/lib/{pgsql/PostgreSQLParserVisitor.d.ts → postgresql/PostgreSqlParserVisitor.d.ts} +1845 -1810
  44. package/dist/lib/{pgsql/PostgreSQLParserVisitor.js → postgresql/PostgreSqlParserVisitor.js} +4 -3
  45. package/dist/lib/spark/SparkSqlLexer.d.ts +305 -298
  46. package/dist/lib/spark/SparkSqlLexer.js +1777 -1735
  47. package/dist/lib/spark/SparkSqlParser.d.ts +1764 -669
  48. package/dist/lib/spark/SparkSqlParser.js +15460 -10769
  49. package/dist/lib/spark/SparkSqlParserListener.d.ts +1285 -35
  50. package/dist/lib/spark/SparkSqlParserVisitor.d.ts +790 -21
  51. package/dist/lib/spark/SparkSqlParserVisitor.js +1 -0
  52. package/dist/lib/{trinosql → trino}/TrinoSqlLexer.d.ts +2 -2
  53. package/dist/lib/{trinosql → trino}/TrinoSqlLexer.js +2 -1
  54. package/dist/lib/{trinosql → trino}/TrinoSqlListener.d.ts +7 -5
  55. package/dist/lib/{trinosql → trino}/TrinoSqlListener.js +1 -1
  56. package/dist/lib/{trinosql → trino}/TrinoSqlParser.d.ts +11 -5
  57. package/dist/lib/{trinosql → trino}/TrinoSqlParser.js +360 -320
  58. package/dist/lib/{trinosql → trino}/TrinoSqlVisitor.d.ts +4 -3
  59. package/dist/lib/{trinosql → trino}/TrinoSqlVisitor.js +2 -1
  60. package/dist/parser/common/{basicParser.d.ts → basicSQL.d.ts} +22 -19
  61. package/dist/parser/common/{basicParser.js → basicSQL.js} +52 -34
  62. package/dist/parser/common/entityCollector.d.ts +78 -0
  63. package/dist/parser/common/entityCollector.js +191 -0
  64. package/dist/parser/common/{utils/findCaretTokenIndex.d.ts → findCaretTokenIndex.d.ts} +2 -2
  65. package/dist/parser/common/{utils/findCaretTokenIndex.js → findCaretTokenIndex.js} +3 -2
  66. package/dist/parser/common/parseErrorListener.d.ts +6 -6
  67. package/dist/parser/common/parseErrorListener.js +1 -1
  68. package/dist/parser/common/simpleStack.d.ts +10 -0
  69. package/dist/parser/common/simpleStack.js +23 -0
  70. package/dist/parser/common/splitListener.d.ts +8 -0
  71. package/dist/parser/common/splitListener.js +12 -0
  72. package/dist/parser/common/textAndWord.d.ts +52 -0
  73. package/dist/parser/common/textAndWord.js +58 -0
  74. package/dist/parser/common/{basic-parser-types.d.ts → types.d.ts} +4 -31
  75. package/dist/parser/common/types.js +34 -0
  76. package/dist/parser/flink/flinkEntityCollector.d.ts +33 -0
  77. package/dist/parser/flink/flinkEntityCollector.js +84 -0
  78. package/dist/parser/flink/flinkSplitListener.d.ts +6 -0
  79. package/dist/parser/flink/flinkSplitListener.js +6 -0
  80. package/dist/parser/flink/index.d.ts +17 -0
  81. package/dist/parser/{flinksql.js → flink/index.js} +26 -37
  82. package/dist/parser/hive/hiveEntityCollector.d.ts +35 -0
  83. package/dist/parser/hive/hiveEntityCollector.js +90 -0
  84. package/dist/parser/hive/hiveSplitListener.d.ts +6 -0
  85. package/dist/parser/hive/hiveSplitListener.js +6 -0
  86. package/dist/parser/hive/index.d.ts +17 -0
  87. package/dist/parser/{hive.js → hive/index.js} +24 -34
  88. package/dist/parser/impala/impalaEntityCollector.d.ts +35 -0
  89. package/dist/parser/impala/impalaEntityCollector.js +90 -0
  90. package/dist/parser/impala/impalaSplitListener.d.ts +6 -0
  91. package/dist/parser/impala/impalaSplitListener.js +6 -0
  92. package/dist/parser/impala/index.d.ts +17 -0
  93. package/dist/parser/{impala.js → impala/index.js} +24 -34
  94. package/dist/parser/index.d.ts +7 -8
  95. package/dist/parser/index.js +7 -8
  96. package/dist/parser/mysql/index.d.ts +17 -0
  97. package/dist/parser/{mysql.js → mysql/index.js} +24 -34
  98. package/dist/parser/mysql/mysqlEntityCollector.d.ts +37 -0
  99. package/dist/parser/mysql/mysqlEntityCollector.js +96 -0
  100. package/dist/parser/mysql/mysqlSplitListener.d.ts +6 -0
  101. package/dist/parser/mysql/mysqlSplitListener.js +6 -0
  102. package/dist/parser/postgresql/index.d.ts +17 -0
  103. package/dist/parser/postgresql/index.js +130 -0
  104. package/dist/parser/postgresql/postgreEntityCollector.d.ts +37 -0
  105. package/dist/parser/postgresql/postgreEntityCollector.js +96 -0
  106. package/dist/parser/postgresql/postgreSplitListener.d.ts +6 -0
  107. package/dist/parser/postgresql/postgreSplitListener.js +6 -0
  108. package/dist/parser/spark/index.d.ts +17 -0
  109. package/dist/parser/{spark.js → spark/index.js} +29 -40
  110. package/dist/parser/spark/sparkEntityCollector.d.ts +37 -0
  111. package/dist/parser/spark/sparkEntityCollector.js +96 -0
  112. package/dist/parser/spark/sparkSplitListener.d.ts +6 -0
  113. package/dist/parser/spark/sparkSplitListener.js +6 -0
  114. package/dist/parser/trino/index.d.ts +17 -0
  115. package/dist/parser/{trinosql.js → trino/index.js} +25 -36
  116. package/dist/parser/trino/trinoEntityCollector.d.ts +30 -0
  117. package/dist/parser/trino/trinoEntityCollector.js +75 -0
  118. package/dist/parser/trino/trinoSplitListener.d.ts +6 -0
  119. package/dist/parser/trino/trinoSplitListener.js +6 -0
  120. package/package.json +1 -1
  121. package/dist/lib/plsql/PlSqlBaseLexer.d.ts +0 -5
  122. package/dist/lib/plsql/PlSqlBaseLexer.js +0 -7
  123. package/dist/lib/plsql/PlSqlBaseParser.d.ts +0 -10
  124. package/dist/lib/plsql/PlSqlBaseParser.js +0 -22
  125. package/dist/lib/plsql/PlSqlLexer.d.ts +0 -2381
  126. package/dist/lib/plsql/PlSqlLexer.js +0 -16440
  127. package/dist/lib/plsql/PlSqlParser.d.ts +0 -17080
  128. package/dist/lib/plsql/PlSqlParser.js +0 -184484
  129. package/dist/lib/plsql/PlSqlParserListener.d.ts +0 -8003
  130. package/dist/lib/plsql/PlSqlParserListener.js +0 -11
  131. package/dist/lib/plsql/PlSqlParserVisitor.d.ts +0 -5095
  132. package/dist/lib/plsql/PlSqlParserVisitor.js +0 -11
  133. package/dist/parser/common/basic-parser-types.js +0 -34
  134. package/dist/parser/flinksql.d.ts +0 -23
  135. package/dist/parser/hive.d.ts +0 -23
  136. package/dist/parser/impala.d.ts +0 -23
  137. package/dist/parser/mysql.d.ts +0 -23
  138. package/dist/parser/pgsql.d.ts +0 -23
  139. package/dist/parser/pgsql.js +0 -140
  140. package/dist/parser/plsql.d.ts +0 -13
  141. package/dist/parser/plsql.js +0 -25
  142. package/dist/parser/spark.d.ts +0 -23
  143. package/dist/parser/trinosql.d.ts +0 -23
  144. package/dist/utils/index.d.ts +0 -19
  145. package/dist/utils/index.js +0 -170
  146. package/dist/utils/token.d.ts +0 -59
  147. package/dist/utils/token.js +0 -48
@@ -0,0 +1,96 @@
1
+ import { EntityContextType } from '../common/types';
2
+ import { StmtContextType, EntityCollector } from '../common/entityCollector';
3
+ export class MySqlEntityCollector extends EntityCollector {
4
+ /** ====== Entity Begin */
5
+ exitDatabaseName(ctx) {
6
+ this.pushEntity(ctx, EntityContextType.DATABASE);
7
+ }
8
+ exitDatabaseNameCreate(ctx) {
9
+ this.pushEntity(ctx, EntityContextType.DATABASE_CREATE);
10
+ }
11
+ exitTableName(ctx) {
12
+ this.pushEntity(ctx, EntityContextType.TABLE);
13
+ }
14
+ exitTableNameCreate(ctx) {
15
+ this.pushEntity(ctx, EntityContextType.TABLE_CREATE);
16
+ }
17
+ exitViewName(ctx) {
18
+ this.pushEntity(ctx, EntityContextType.VIEW);
19
+ }
20
+ exitViewNameCreate(ctx) {
21
+ this.pushEntity(ctx, EntityContextType.VIEW_CREATE);
22
+ }
23
+ exitFunctionNameCreate(ctx) {
24
+ this.pushEntity(ctx, EntityContextType.FUNCTION_CREATE);
25
+ }
26
+ exitColumnNameCreate(ctx) {
27
+ this.pushEntity(ctx, EntityContextType.COLUMN_CREATE);
28
+ }
29
+ /** ===== Statement begin */
30
+ enterSingleStatement(ctx) {
31
+ this.pushStmt(ctx, StmtContextType.COMMON_STMT);
32
+ }
33
+ exitSingleStatement(ctx) {
34
+ this.popStmt();
35
+ }
36
+ enterQueryCreateTable(ctx) {
37
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
38
+ }
39
+ exitQueryCreateTable(ctx) {
40
+ this.popStmt();
41
+ }
42
+ enterColumnCreateTable(ctx) {
43
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
44
+ }
45
+ exitColumnCreateTable(ctx) {
46
+ this.popStmt();
47
+ }
48
+ enterCopyCreateTable(ctx) {
49
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
50
+ }
51
+ exitCopyCreateTable(ctx) {
52
+ this.popStmt();
53
+ }
54
+ enterCreateView(ctx) {
55
+ this.pushStmt(ctx, StmtContextType.CREATE_VIEW_STMT);
56
+ }
57
+ exitCreateView(ctx) {
58
+ this.popStmt();
59
+ }
60
+ enterSimpleSelect(ctx) {
61
+ this.pushStmt(ctx, StmtContextType.SELECT_STMT);
62
+ }
63
+ exitSimpleSelect(ctx) {
64
+ this.popStmt();
65
+ }
66
+ enterUnionAndLateralSelect(ctx) {
67
+ this.pushStmt(ctx, StmtContextType.SELECT_STMT);
68
+ }
69
+ exitUnionAndLateralSelect(ctx) {
70
+ this.popStmt();
71
+ }
72
+ enterSelectExpression(ctx) {
73
+ this.pushStmt(ctx, StmtContextType.SELECT_STMT);
74
+ }
75
+ exitSelectExpression(ctx) {
76
+ this.popStmt();
77
+ }
78
+ enterInsertStatement(ctx) {
79
+ this.pushStmt(ctx, StmtContextType.INSERT_STMT);
80
+ }
81
+ exitInsertStatement(ctx) {
82
+ this.popStmt();
83
+ }
84
+ enterCreateDatabase(ctx) {
85
+ this.pushStmt(ctx, StmtContextType.CREATE_DATABASE_STMT);
86
+ }
87
+ exitCreateDatabase(ctx) {
88
+ this.popStmt();
89
+ }
90
+ enterCreateFunction(ctx) {
91
+ this.pushStmt(ctx, StmtContextType.CREATE_FUNCTION_STMT);
92
+ }
93
+ exitCreateFunction(ctx) {
94
+ this.popStmt();
95
+ }
96
+ }
@@ -0,0 +1,6 @@
1
+ import { SingleStatementContext } from '../../lib/mysql/MySqlParser';
2
+ import { MySqlParserListener } from '../../lib/mysql/MySqlParserListener';
3
+ import { SplitListener } from '../common/splitListener';
4
+ export declare class MysqlSplitListener extends SplitListener<SingleStatementContext> implements MySqlParserListener {
5
+ exitSingleStatement(ctx: SingleStatementContext): void;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { SplitListener } from '../common/splitListener';
2
+ export class MysqlSplitListener extends SplitListener {
3
+ exitSingleStatement(ctx) {
4
+ this._statementsContext.push(ctx);
5
+ }
6
+ }
@@ -0,0 +1,17 @@
1
+ import { CandidatesCollection } from 'antlr4-c3';
2
+ import { CharStream, CommonTokenStream, Token } from 'antlr4ng';
3
+ import { PostgreSqlLexer } from '../../lib/postgresql/PostgreSqlLexer';
4
+ import { PostgreSqlParser, ProgramContext } from '../../lib/postgresql/PostgreSqlParser';
5
+ import { Suggestions } from '../common/types';
6
+ import { BasicSQL } from '../common/basicSQL';
7
+ import { PostgreSqlEntityCollector } from './postgreEntityCollector';
8
+ import { PostgreSqlSplitListener } from './postgreSplitListener';
9
+ export { PostgreSqlEntityCollector, PostgreSqlSplitListener };
10
+ export declare class PostgreSQL extends BasicSQL<PostgreSqlLexer, ProgramContext, PostgreSqlParser> {
11
+ protected createLexerFromCharStream(charStreams: CharStream): PostgreSqlLexer;
12
+ protected createParserFromTokenStream(tokenStream: CommonTokenStream): PostgreSqlParser;
13
+ protected preferredRules: Set<number>;
14
+ protected get splitListener(): PostgreSqlSplitListener;
15
+ protected createEntityCollector(input: string, caretTokenIndex?: number): PostgreSqlEntityCollector;
16
+ protected processCandidates(candidates: CandidatesCollection, allTokens: Token[], caretTokenIndex: number, tokenIndexOffset: number): Suggestions<Token>;
17
+ }
@@ -0,0 +1,130 @@
1
+ import { PostgreSqlLexer } from '../../lib/postgresql/PostgreSqlLexer';
2
+ import { PostgreSqlParser } from '../../lib/postgresql/PostgreSqlParser';
3
+ import { EntityContextType } from '../common/types';
4
+ import { BasicSQL } from '../common/basicSQL';
5
+ import { PostgreSqlEntityCollector } from './postgreEntityCollector';
6
+ import { PostgreSqlSplitListener } from './postgreSplitListener';
7
+ export { PostgreSqlEntityCollector, PostgreSqlSplitListener };
8
+ export class PostgreSQL extends BasicSQL {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.preferredRules = new Set([
12
+ PostgreSqlParser.RULE_table_name_create,
13
+ PostgreSqlParser.RULE_table_name,
14
+ PostgreSqlParser.RULE_function_name,
15
+ PostgreSqlParser.RULE_function_name_create,
16
+ PostgreSqlParser.RULE_schema_name_create,
17
+ PostgreSqlParser.RULE_schema_name,
18
+ PostgreSqlParser.RULE_view_name_create,
19
+ PostgreSqlParser.RULE_view_name,
20
+ PostgreSqlParser.RULE_database_name_create,
21
+ PostgreSqlParser.RULE_database_name,
22
+ PostgreSqlParser.RULE_procedure_name_create,
23
+ PostgreSqlParser.RULE_procedure_name,
24
+ PostgreSqlParser.RULE_column_name_create,
25
+ PostgreSqlParser.RULE_column_name, // column name
26
+ ]);
27
+ }
28
+ createLexerFromCharStream(charStreams) {
29
+ return new PostgreSqlLexer(charStreams);
30
+ }
31
+ createParserFromTokenStream(tokenStream) {
32
+ return new PostgreSqlParser(tokenStream);
33
+ }
34
+ get splitListener() {
35
+ return new PostgreSqlSplitListener();
36
+ }
37
+ createEntityCollector(input, caretTokenIndex) {
38
+ return new PostgreSqlEntityCollector(input, caretTokenIndex);
39
+ }
40
+ processCandidates(candidates, allTokens, caretTokenIndex, tokenIndexOffset) {
41
+ const originalSyntaxSuggestions = [];
42
+ const keywords = [];
43
+ for (let candidate of candidates.rules) {
44
+ const [ruleType, candidateRule] = candidate;
45
+ const startTokenIndex = candidateRule.startTokenIndex + tokenIndexOffset;
46
+ const tokenRanges = allTokens.slice(startTokenIndex, caretTokenIndex + tokenIndexOffset + 1);
47
+ let syntaxContextType = void 0;
48
+ switch (ruleType) {
49
+ case PostgreSqlParser.RULE_table_name_create: {
50
+ syntaxContextType = EntityContextType.TABLE_CREATE;
51
+ break;
52
+ }
53
+ case PostgreSqlParser.RULE_table_name: {
54
+ syntaxContextType = EntityContextType.TABLE;
55
+ break;
56
+ }
57
+ case PostgreSqlParser.RULE_function_name_create: {
58
+ syntaxContextType = EntityContextType.FUNCTION_CREATE;
59
+ break;
60
+ }
61
+ case PostgreSqlParser.RULE_function_name: {
62
+ syntaxContextType = EntityContextType.FUNCTION;
63
+ break;
64
+ }
65
+ case PostgreSqlParser.RULE_schema_name_create: {
66
+ syntaxContextType = EntityContextType.DATABASE_CREATE;
67
+ break;
68
+ }
69
+ case PostgreSqlParser.RULE_schema_name: {
70
+ syntaxContextType = EntityContextType.DATABASE;
71
+ break;
72
+ }
73
+ case PostgreSqlParser.RULE_view_name_create: {
74
+ syntaxContextType = EntityContextType.VIEW_CREATE;
75
+ break;
76
+ }
77
+ case PostgreSqlParser.RULE_view_name: {
78
+ syntaxContextType = EntityContextType.VIEW;
79
+ break;
80
+ }
81
+ case PostgreSqlParser.RULE_database_name_create: {
82
+ syntaxContextType = EntityContextType.DATABASE_CREATE;
83
+ break;
84
+ }
85
+ case PostgreSqlParser.RULE_database_name: {
86
+ syntaxContextType = EntityContextType.DATABASE;
87
+ break;
88
+ }
89
+ case PostgreSqlParser.RULE_procedure_name_create: {
90
+ syntaxContextType = EntityContextType.PROCEDURE_CREATE;
91
+ break;
92
+ }
93
+ case PostgreSqlParser.RULE_procedure_name: {
94
+ syntaxContextType = EntityContextType.PROCEDURE;
95
+ break;
96
+ }
97
+ case PostgreSqlParser.RULE_column_name_create: {
98
+ syntaxContextType = EntityContextType.COLUMN_CREATE;
99
+ break;
100
+ }
101
+ case PostgreSqlParser.RULE_column_name: {
102
+ syntaxContextType = EntityContextType.COLUMN;
103
+ break;
104
+ }
105
+ default:
106
+ break;
107
+ }
108
+ if (syntaxContextType) {
109
+ originalSyntaxSuggestions.push({
110
+ syntaxContextType,
111
+ wordRanges: tokenRanges,
112
+ });
113
+ }
114
+ }
115
+ for (let candidate of candidates.tokens) {
116
+ const symbolicName = this._parser.vocabulary.getSymbolicName(candidate[0]);
117
+ const displayName = this._parser.vocabulary.getDisplayName(candidate[0]);
118
+ if (displayName && symbolicName && symbolicName.startsWith('KW_')) {
119
+ const keyword = displayName.startsWith("'") && displayName.endsWith("'")
120
+ ? displayName.slice(1, -1)
121
+ : displayName;
122
+ keywords.push(keyword);
123
+ }
124
+ }
125
+ return {
126
+ syntax: originalSyntaxSuggestions,
127
+ keywords,
128
+ };
129
+ }
130
+ }
@@ -0,0 +1,37 @@
1
+ import type { ColumnCreateTableContext, ColumnNameCreateContext, CreateDatabaseContext, CreateForeignTableContext, CreateMaterializedViewContext, CreatePartitionForeignTableContext, CreateViewContext, CreatefunctionstmtContext, DatabaseNameContext, DatabaseNameCreateContext, FunctionNameCreateContext, InsertStatementContext, QueryCreateTableContext, SelectStatementContext, SingleStmtContext, TableNameContext, TableNameCreateContext, ViewNameContext, ViewNameCreateContext } from '../../lib/postgresql/PostgreSqlParser';
2
+ import type { PostgreSqlParserListener } from '../../lib/postgresql/PostgreSqlParserListener';
3
+ import { EntityCollector } from '../common/entityCollector';
4
+ export declare class PostgreSqlEntityCollector extends EntityCollector implements PostgreSqlParserListener {
5
+ /** ====== Entity Begin */
6
+ exitDatabaseName(ctx: DatabaseNameContext): void;
7
+ exitDatabaseNameCreate(ctx: DatabaseNameCreateContext): void;
8
+ exitTableName(ctx: TableNameContext): void;
9
+ exitTableNameCreate(ctx: TableNameCreateContext): void;
10
+ exitViewName(ctx: ViewNameContext): void;
11
+ exitViewNameCreate(ctx: ViewNameCreateContext): void;
12
+ exitFunctionNameCreate(ctx: FunctionNameCreateContext): void;
13
+ exitColumnNameCreate(ctx: ColumnNameCreateContext): void;
14
+ /** ===== Statement begin */
15
+ enterSingleStatement(ctx: SingleStmtContext): void;
16
+ exitSingleStatement(ctx: SingleStmtContext): void;
17
+ enterCreateDatabase(ctx: CreateDatabaseContext): void;
18
+ exitCreateDatabase(ctx: CreateDatabaseContext): void;
19
+ enterQueryCreateTable(ctx: QueryCreateTableContext): void;
20
+ exitQueryCreateTable(ctx: QueryCreateTableContext): void;
21
+ enterColumnCreateTable(ctx: ColumnCreateTableContext): void;
22
+ exitColumnCreateTable(ctx: ColumnCreateTableContext): void;
23
+ enterCreateForeignTable(ctx: CreateForeignTableContext): void;
24
+ exitCreateForeignTable(ctx: CreateForeignTableContext): void;
25
+ enterCreatePartitionForeignTable(ctx: CreatePartitionForeignTableContext): void;
26
+ exitCreatePartitionForeignTable(ctx: CreatePartitionForeignTableContext): void;
27
+ enterCreateView(ctx: CreateViewContext): void;
28
+ exitCreateView(ctx: CreateViewContext): void;
29
+ enterCreateMaterializedView(ctx: CreateMaterializedViewContext): void;
30
+ exitCreateMaterializedView(ctx: CreateMaterializedViewContext): void;
31
+ enterSelectStatement(ctx: SelectStatementContext): void;
32
+ exitSelectStatement(ctx: SelectStatementContext): void;
33
+ enterInsertStatement(ctx: InsertStatementContext): void;
34
+ exitInsertStatement(ctx: InsertStatementContext): void;
35
+ enterCreatefunctionstmt(ctx: CreatefunctionstmtContext): void;
36
+ exitCreatefunctionstmt(ctx: CreatefunctionstmtContext): void;
37
+ }
@@ -0,0 +1,96 @@
1
+ import { EntityContextType } from '../common/types';
2
+ import { StmtContextType, EntityCollector } from '../common/entityCollector';
3
+ export class PostgreSqlEntityCollector extends EntityCollector {
4
+ /** ====== Entity Begin */
5
+ exitDatabaseName(ctx) {
6
+ this.pushEntity(ctx, EntityContextType.DATABASE);
7
+ }
8
+ exitDatabaseNameCreate(ctx) {
9
+ this.pushEntity(ctx, EntityContextType.DATABASE_CREATE);
10
+ }
11
+ exitTableName(ctx) {
12
+ this.pushEntity(ctx, EntityContextType.TABLE);
13
+ }
14
+ exitTableNameCreate(ctx) {
15
+ this.pushEntity(ctx, EntityContextType.TABLE_CREATE);
16
+ }
17
+ exitViewName(ctx) {
18
+ this.pushEntity(ctx, EntityContextType.VIEW);
19
+ }
20
+ exitViewNameCreate(ctx) {
21
+ this.pushEntity(ctx, EntityContextType.VIEW_CREATE);
22
+ }
23
+ exitFunctionNameCreate(ctx) {
24
+ this.pushEntity(ctx, EntityContextType.FUNCTION_CREATE);
25
+ }
26
+ exitColumnNameCreate(ctx) {
27
+ this.pushEntity(ctx, EntityContextType.COLUMN_CREATE);
28
+ }
29
+ /** ===== Statement begin */
30
+ enterSingleStatement(ctx) {
31
+ this.pushStmt(ctx, StmtContextType.COMMON_STMT);
32
+ }
33
+ exitSingleStatement(ctx) {
34
+ this.popStmt();
35
+ }
36
+ enterCreateDatabase(ctx) {
37
+ this.pushStmt(ctx, StmtContextType.CREATE_DATABASE_STMT);
38
+ }
39
+ exitCreateDatabase(ctx) {
40
+ this.popStmt();
41
+ }
42
+ enterQueryCreateTable(ctx) {
43
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
44
+ }
45
+ exitQueryCreateTable(ctx) {
46
+ this.popStmt();
47
+ }
48
+ enterColumnCreateTable(ctx) {
49
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
50
+ }
51
+ exitColumnCreateTable(ctx) {
52
+ this.popStmt();
53
+ }
54
+ enterCreateForeignTable(ctx) {
55
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
56
+ }
57
+ exitCreateForeignTable(ctx) {
58
+ this.popStmt();
59
+ }
60
+ enterCreatePartitionForeignTable(ctx) {
61
+ this.pushStmt(ctx, StmtContextType.CREATE_TABLE_STMT);
62
+ }
63
+ exitCreatePartitionForeignTable(ctx) {
64
+ this.popStmt();
65
+ }
66
+ enterCreateView(ctx) {
67
+ this.pushStmt(ctx, StmtContextType.CREATE_VIEW_STMT);
68
+ }
69
+ exitCreateView(ctx) {
70
+ this.popStmt();
71
+ }
72
+ enterCreateMaterializedView(ctx) {
73
+ this.pushStmt(ctx, StmtContextType.CREATE_VIEW_STMT);
74
+ }
75
+ exitCreateMaterializedView(ctx) {
76
+ this.popStmt();
77
+ }
78
+ enterSelectStatement(ctx) {
79
+ this.pushStmt(ctx, StmtContextType.SELECT_STMT);
80
+ }
81
+ exitSelectStatement(ctx) {
82
+ this.popStmt();
83
+ }
84
+ enterInsertStatement(ctx) {
85
+ this.pushStmt(ctx, StmtContextType.INSERT_STMT);
86
+ }
87
+ exitInsertStatement(ctx) {
88
+ this.popStmt();
89
+ }
90
+ enterCreatefunctionstmt(ctx) {
91
+ this.pushStmt(ctx, StmtContextType.CREATE_FUNCTION_STMT);
92
+ }
93
+ exitCreatefunctionstmt(ctx) {
94
+ this.popStmt();
95
+ }
96
+ }
@@ -0,0 +1,6 @@
1
+ import { SingleStmtContext } from '../../lib/postgresql/PostgreSqlParser';
2
+ import { PostgreSqlParserListener } from '../../lib/postgresql/PostgreSqlParserListener';
3
+ import { SplitListener } from '../common/splitListener';
4
+ export declare class PostgreSqlSplitListener extends SplitListener<SingleStmtContext> implements PostgreSqlParserListener {
5
+ exitSingleStmt(ctx: SingleStmtContext): void;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { SplitListener } from '../common/splitListener';
2
+ export class PostgreSqlSplitListener extends SplitListener {
3
+ exitSingleStmt(ctx) {
4
+ this._statementsContext.push(ctx);
5
+ }
6
+ }
@@ -0,0 +1,17 @@
1
+ import { CharStream, CommonTokenStream, Token } from 'antlr4ng';
2
+ import { CandidatesCollection } from 'antlr4-c3';
3
+ import { SparkSqlLexer } from '../../lib/spark/SparkSqlLexer';
4
+ import { SparkSqlParser, ProgramContext } from '../../lib/spark/SparkSqlParser';
5
+ import { BasicSQL } from '../common/basicSQL';
6
+ import { Suggestions } from '../common/types';
7
+ import { SparkSqlSplitListener } from './sparkSplitListener';
8
+ import { SparkEntityCollector } from './sparkEntityCollector';
9
+ export { SparkSqlSplitListener, SparkEntityCollector };
10
+ export declare class SparkSQL extends BasicSQL<SparkSqlLexer, ProgramContext, SparkSqlParser> {
11
+ protected createLexerFromCharStream(charStreams: CharStream): SparkSqlLexer;
12
+ protected createParserFromTokenStream(tokenStream: CommonTokenStream): SparkSqlParser;
13
+ protected preferredRules: Set<number>;
14
+ protected get splitListener(): SparkSqlSplitListener;
15
+ protected createEntityCollector(input: string, caretTokenIndex?: number): SparkEntityCollector;
16
+ protected processCandidates(candidates: CandidatesCollection, allTokens: Token[], caretTokenIndex: number, tokenIndexOffset: number): Suggestions<Token>;
17
+ }
@@ -1,13 +1,16 @@
1
- import { SparkSqlLexer } from '../lib/spark/SparkSqlLexer';
2
- import { SparkSqlParser, } from '../lib/spark/SparkSqlParser';
3
- import BasicParser from './common/basicParser';
4
- import { SyntaxContextType } from './common/basic-parser-types';
5
- export default class SparkSQL extends BasicParser {
1
+ import { SparkSqlLexer } from '../../lib/spark/SparkSqlLexer';
2
+ import { SparkSqlParser } from '../../lib/spark/SparkSqlParser';
3
+ import { BasicSQL } from '../common/basicSQL';
4
+ import { EntityContextType } from '../common/types';
5
+ import { SparkSqlSplitListener } from './sparkSplitListener';
6
+ import { SparkEntityCollector } from './sparkEntityCollector';
7
+ export { SparkSqlSplitListener, SparkEntityCollector };
8
+ export class SparkSQL extends BasicSQL {
6
9
  constructor() {
7
10
  super(...arguments);
8
11
  this.preferredRules = new Set([
9
- SparkSqlParser.RULE_dbSchemaName,
10
- SparkSqlParser.RULE_dbSchemaNameCreate,
12
+ SparkSqlParser.RULE_namespaceName,
13
+ SparkSqlParser.RULE_namespaceNameCreate,
11
14
  SparkSqlParser.RULE_tableName,
12
15
  SparkSqlParser.RULE_tableNameCreate,
13
16
  SparkSqlParser.RULE_viewName,
@@ -19,16 +22,17 @@ export default class SparkSQL extends BasicParser {
19
22
  ]);
20
23
  }
21
24
  createLexerFromCharStream(charStreams) {
22
- const lexer = new SparkSqlLexer(charStreams);
23
- return lexer;
25
+ return new SparkSqlLexer(charStreams);
24
26
  }
25
27
  createParserFromTokenStream(tokenStream) {
26
- const parser = new SparkSqlParser(tokenStream);
27
- return parser;
28
+ return new SparkSqlParser(tokenStream);
28
29
  }
29
30
  get splitListener() {
30
31
  return new SparkSqlSplitListener();
31
32
  }
33
+ createEntityCollector(input, caretTokenIndex) {
34
+ return new SparkEntityCollector(input, caretTokenIndex);
35
+ }
32
36
  processCandidates(candidates, allTokens, caretTokenIndex, tokenIndexOffset) {
33
37
  const originalSyntaxSuggestions = [];
34
38
  const keywords = [];
@@ -36,46 +40,46 @@ export default class SparkSQL extends BasicParser {
36
40
  const [ruleType, candidateRule] = candidate;
37
41
  const startTokenIndex = candidateRule.startTokenIndex + tokenIndexOffset;
38
42
  const tokenRanges = allTokens.slice(startTokenIndex, caretTokenIndex + tokenIndexOffset + 1);
39
- let syntaxContextType;
43
+ let syntaxContextType = void 0;
40
44
  switch (ruleType) {
41
- case SparkSqlParser.RULE_dbSchemaName: {
42
- syntaxContextType = SyntaxContextType.DATABASE;
45
+ case SparkSqlParser.RULE_namespaceName: {
46
+ syntaxContextType = EntityContextType.DATABASE;
43
47
  break;
44
48
  }
45
- case SparkSqlParser.RULE_dbSchemaNameCreate: {
46
- syntaxContextType = SyntaxContextType.DATABASE_CREATE;
49
+ case SparkSqlParser.RULE_namespaceNameCreate: {
50
+ syntaxContextType = EntityContextType.DATABASE_CREATE;
47
51
  break;
48
52
  }
49
53
  case SparkSqlParser.RULE_tableName: {
50
- syntaxContextType = SyntaxContextType.TABLE;
54
+ syntaxContextType = EntityContextType.TABLE;
51
55
  break;
52
56
  }
53
57
  case SparkSqlParser.RULE_tableNameCreate: {
54
- syntaxContextType = SyntaxContextType.TABLE_CREATE;
58
+ syntaxContextType = EntityContextType.TABLE_CREATE;
55
59
  break;
56
60
  }
57
61
  case SparkSqlParser.RULE_viewName: {
58
- syntaxContextType = SyntaxContextType.VIEW;
62
+ syntaxContextType = EntityContextType.VIEW;
59
63
  break;
60
64
  }
61
65
  case SparkSqlParser.RULE_viewNameCreate: {
62
- syntaxContextType = SyntaxContextType.VIEW_CREATE;
66
+ syntaxContextType = EntityContextType.VIEW_CREATE;
63
67
  break;
64
68
  }
65
69
  case SparkSqlParser.RULE_functionName: {
66
- syntaxContextType = SyntaxContextType.FUNCTION;
70
+ syntaxContextType = EntityContextType.FUNCTION;
67
71
  break;
68
72
  }
69
73
  case SparkSqlParser.RULE_functionNameCreate: {
70
- syntaxContextType = SyntaxContextType.FUNCTION_CREATE;
74
+ syntaxContextType = EntityContextType.FUNCTION_CREATE;
71
75
  break;
72
76
  }
73
77
  case SparkSqlParser.RULE_columnName: {
74
- syntaxContextType = SyntaxContextType.COLUMN;
78
+ syntaxContextType = EntityContextType.COLUMN;
75
79
  break;
76
80
  }
77
81
  case SparkSqlParser.RULE_columnNameCreate: {
78
- syntaxContextType = SyntaxContextType.COLUMN_CREATE;
82
+ syntaxContextType = EntityContextType.COLUMN_CREATE;
79
83
  break;
80
84
  }
81
85
  default:
@@ -91,7 +95,7 @@ export default class SparkSQL extends BasicParser {
91
95
  for (const candidate of candidates.tokens) {
92
96
  const symbolicName = this._parser.vocabulary.getSymbolicName(candidate[0]);
93
97
  const displayName = this._parser.vocabulary.getDisplayName(candidate[0]);
94
- if (symbolicName && symbolicName.startsWith('KW_')) {
98
+ if (displayName && symbolicName && symbolicName.startsWith('KW_')) {
95
99
  const keyword = displayName.startsWith("'") && displayName.endsWith("'")
96
100
  ? displayName.slice(1, -1)
97
101
  : displayName;
@@ -104,18 +108,3 @@ export default class SparkSQL extends BasicParser {
104
108
  };
105
109
  }
106
110
  }
107
- export class SparkSqlSplitListener {
108
- constructor() {
109
- this._statementsContext = [];
110
- this.exitSingleStatement = (ctx) => {
111
- this._statementsContext.push(ctx);
112
- };
113
- }
114
- visitTerminal() { }
115
- visitErrorNode() { }
116
- enterEveryRule() { }
117
- exitEveryRule() { }
118
- get statementsContext() {
119
- return this._statementsContext;
120
- }
121
- }
@@ -0,0 +1,37 @@
1
+ import type { NamespaceNameContext, NamespaceNameCreateContext, SingleStatementContext, TableNameContext, TableNameCreateContext, ViewNameContext, ViewNameCreateContext, FunctionNameCreateContext, ColumnNameCreateContext, CreateTableContext, CreateTableLikeContext, ReplaceTableContext, QueryStatementContext, InsertFromQueryContext, MultipleInsertContext, CreateViewContext, CreateTempViewUsingContext, CreateNamespaceContext, CreateFunctionContext } from '../../lib/spark/SparkSqlParser';
2
+ import type { SparkSqlParserListener } from '../../lib/spark/SparkSqlParserListener';
3
+ import { EntityCollector } from '../common/entityCollector';
4
+ export declare class SparkEntityCollector extends EntityCollector implements SparkSqlParserListener {
5
+ /** ====== Entity Begin */
6
+ exitNamespaceName(ctx: NamespaceNameContext): void;
7
+ exitNamespaceNameCreate(ctx: NamespaceNameCreateContext): void;
8
+ exitTableName(ctx: TableNameContext): void;
9
+ exitTableNameCreate(ctx: TableNameCreateContext): void;
10
+ exitViewName(ctx: ViewNameContext): void;
11
+ exitViewNameCreate(ctx: ViewNameCreateContext): void;
12
+ exitFunctionNameCreate(ctx: FunctionNameCreateContext): void;
13
+ exitColumnNameCreate(ctx: ColumnNameCreateContext): void;
14
+ /** ===== Statement begin */
15
+ enterSingleStatement(ctx: SingleStatementContext): void;
16
+ exitSingleStatement(ctx: SingleStatementContext): void;
17
+ enterCreateTable(ctx: CreateTableContext): void;
18
+ exitCreateTable(ctx: CreateTableContext): void;
19
+ enterCreateTableLike(ctx: CreateTableLikeContext): void;
20
+ exitCreateTableLike(ctx: CreateTableLikeContext): void;
21
+ enterReplaceTable(ctx: ReplaceTableContext): void;
22
+ exitReplaceTable(ctx: ReplaceTableContext): void;
23
+ enterCreateView(ctx: CreateViewContext): void;
24
+ exitCreateView(ctx: CreateViewContext): void;
25
+ enterCreateTempViewUsing(ctx: CreateTempViewUsingContext): void;
26
+ exitCreateTempViewUsing(ctx: CreateTempViewUsingContext): void;
27
+ enterQueryStatement(ctx: QueryStatementContext): void;
28
+ exitQueryStatement(ctx: QueryStatementContext): void;
29
+ enterInsertFromQuery(ctx: InsertFromQueryContext): void;
30
+ exitInsertFromQuery(ctx: InsertFromQueryContext): void;
31
+ enterMultipleInsert(ctx: MultipleInsertContext): void;
32
+ exitMultipleInsert(ctx: MultipleInsertContext): void;
33
+ enterCreateNamespace(ctx: CreateNamespaceContext): void;
34
+ exitCreateNamespace(ctx: CreateNamespaceContext): void;
35
+ enterCreateFunction(ctx: CreateFunctionContext): void;
36
+ exitCreateFunction(ctx: CreateFunctionContext): void;
37
+ }