Skip to content

Commit 9f91761

Browse files
committed
fix: optimize entity collector and update grammar
1 parent 9e39500 commit 9f91761

16 files changed

+13134
-12931
lines changed

src/grammar/flink/FlinkSqlParser.g4

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -493,8 +493,8 @@ selectList
493493
columnProjectItem
494494
: selectWindowItemColumnName
495495
| selectLiteralColumnName (columnAlias | KW_AS? expression)?
496-
| selectExpressionColumnName (columnAlias | KW_AS? columnName)?
497496
| tableAllColumns columnAlias?
497+
| selectExpressionColumnName (columnAlias | KW_AS? columnName)?
498498
;
499499

500500
selectWindowItemColumnName

src/grammar/impala/ImpalaSqlParser.g4

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -813,15 +813,15 @@ setQuantifier
813813
selectItem
814814
: selectLiteralColumnName columnAlias?
815815
| selectExpressionColumnName columnAlias?
816-
| tableAllColumns columnAlias?
816+
| tableAllColumns
817817
;
818818

819819
columnAlias
820-
: KW_AS alias=identifier
820+
: KW_AS? alias=identifier
821821
;
822822

823823
selectLiteralColumnName
824-
: columnNamePath columnAlias?
824+
: columnNamePath
825825
;
826826

827827
selectExpressionColumnName
@@ -940,23 +940,27 @@ valueExpression
940940
| left=valueExpression CONCAT right=valueExpression # concatenation
941941
;
942942

943-
primaryExpression
944-
: KW_NULL # nullLiteral
945-
| interval # intervalLiteral
946-
| identifier stringLiteral # typeConstructor
947-
| DOUBLE_PRECISION stringLiteral # typeConstructor
948-
| number # numericLiteral
949-
| booleanValue # booleanLiteral
950-
| stringLiteral # stringLiteralValues
951-
| BINARY_LITERAL # binaryLiteral
952-
| QUESTION # parameter
953-
| KW_POSITION LPAREN valueExpression KW_IN valueExpression RPAREN # position
954-
| LPAREN expression (KW_AS type)? (COMMA expression (KW_AS type)?)*? RPAREN # rowConstructor
955-
| KW_ROW LPAREN expression (COMMA expression)* RPAREN # rowConstructor
956-
| functionNamePath LPAREN ASTERISK RPAREN filter? over? # functionCall
957-
| functionNamePath LPAREN (setQuantifier? expression (COMMA expression)*)? (
943+
functionCallExpression
944+
: functionNamePath LPAREN (setQuantifier? expression (COMMA expression)*)? (
958945
KW_ORDER KW_BY sortItem (COMMA sortItem)*
959-
)? RPAREN filter? over? # functionCall
946+
)? RPAREN filter? over?
947+
;
948+
949+
primaryExpression
950+
: KW_NULL # nullLiteral
951+
| interval # intervalLiteral
952+
| identifier stringLiteral # typeConstructor
953+
| DOUBLE_PRECISION stringLiteral # typeConstructor
954+
| number # numericLiteral
955+
| booleanValue # booleanLiteral
956+
| stringLiteral # stringLiteralValues
957+
| BINARY_LITERAL # binaryLiteral
958+
| QUESTION # parameter
959+
| KW_POSITION LPAREN valueExpression KW_IN valueExpression RPAREN # position
960+
| LPAREN expression (KW_AS type)? (COMMA expression (KW_AS type)?)*? RPAREN # rowConstructor
961+
| KW_ROW LPAREN expression (COMMA expression)* RPAREN # rowConstructor
962+
| functionNamePath LPAREN ASTERISK RPAREN filter? over? # functionCall
963+
| functionCallExpression # functionCall
960964
| identifier RIGHT_ARROW expression # lambda
961965
| LPAREN (identifier (COMMA identifier)*)? RPAREN RIGHT_ARROW expression # lambda
962966
| LPAREN queryStatement RPAREN # subqueryExpression

src/grammar/postgresql/PostgreSqlParser.g4

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2554,14 +2554,22 @@ exprList
25542554
: expression (COMMA expression)*
25552555
;
25562556

2557+
selectExpressionColumnName
2558+
: expression
2559+
;
2560+
2561+
selectLiteralColumnName
2562+
: columnName
2563+
;
2564+
25572565
columnExpr
25582566
: (OPEN_PAREN expression CLOSE_PAREN)
25592567
| columnName
25602568
;
25612569

25622570
columnExprNoParen
2563-
: expression # selectExpressionColumnName
2564-
| columnName # selectLiteralColumnName
2571+
: expression
2572+
| columnName
25652573
;
25662574

25672575
funcArgList
@@ -2625,8 +2633,8 @@ targetList
26252633
;
26262634

26272635
targetEl
2628-
: tableAllColumns # target_star
2629-
| columnExprNoParen (KW_AS? alias=identifier |) # target_label
2636+
: tableAllColumns # target_star
2637+
| (selectLiteralColumnName | selectExpressionColumnName) (KW_AS? alias=identifier |) # target_label
26302638
;
26312639

26322640
tableAllColumns

src/lib/flink/FlinkSqlParser.interp

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/lib/flink/FlinkSqlParser.ts

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5856,49 +5856,49 @@ export class FlinkSqlParser extends SQLParserBase {
58565856
this.enterOuterAlt(localContext, 3);
58575857
{
58585858
this.state = 1312;
5859-
this.selectExpressionColumnName();
5860-
this.state = 1318;
5859+
this.tableAllColumns();
5860+
this.state = 1314;
58615861
this.errorHandler.sync(this);
5862-
switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) {
5862+
switch (this.interpreter.adaptivePredict(this.tokenStream, 136, this.context) ) {
58635863
case 1:
58645864
{
58655865
this.state = 1313;
58665866
this.columnAlias();
58675867
}
58685868
break;
5869-
case 2:
5870-
{
5871-
this.state = 1315;
5872-
this.errorHandler.sync(this);
5873-
switch (this.interpreter.adaptivePredict(this.tokenStream, 136, this.context) ) {
5874-
case 1:
5875-
{
5876-
this.state = 1314;
5877-
this.match(FlinkSqlParser.KW_AS);
5878-
}
5879-
break;
5880-
}
5881-
this.state = 1317;
5882-
this.columnName();
5883-
}
5884-
break;
58855869
}
58865870
}
58875871
break;
58885872
case 4:
58895873
this.enterOuterAlt(localContext, 4);
58905874
{
5891-
this.state = 1320;
5892-
this.tableAllColumns();
5875+
this.state = 1316;
5876+
this.selectExpressionColumnName();
58935877
this.state = 1322;
58945878
this.errorHandler.sync(this);
58955879
switch (this.interpreter.adaptivePredict(this.tokenStream, 138, this.context) ) {
58965880
case 1:
58975881
{
5898-
this.state = 1321;
5882+
this.state = 1317;
58995883
this.columnAlias();
59005884
}
59015885
break;
5886+
case 2:
5887+
{
5888+
this.state = 1319;
5889+
this.errorHandler.sync(this);
5890+
switch (this.interpreter.adaptivePredict(this.tokenStream, 137, this.context) ) {
5891+
case 1:
5892+
{
5893+
this.state = 1318;
5894+
this.match(FlinkSqlParser.KW_AS);
5895+
}
5896+
break;
5897+
}
5898+
this.state = 1321;
5899+
this.columnName();
5900+
}
5901+
break;
59025902
}
59035903
}
59045904
break;
@@ -12469,8 +12469,8 @@ export class FlinkSqlParser extends SQLParserBase {
1246912469
1273,8,84,1,84,3,84,1276,8,84,1,84,3,84,1279,8,84,1,84,3,84,1282,
1247012470
8,84,1,84,1,84,1,84,1,84,3,84,1288,8,84,1,85,1,85,3,85,1292,8,85,
1247112471
1,85,1,85,1,86,1,86,1,86,5,86,1299,8,86,10,86,12,86,1302,9,86,1,
12472-
87,1,87,1,87,1,87,3,87,1308,8,87,1,87,3,87,1311,8,87,1,87,1,87,1,
12473-
87,3,87,1316,8,87,1,87,3,87,1319,8,87,1,87,1,87,3,87,1323,8,87,3,
12472+
87,1,87,1,87,1,87,3,87,1308,8,87,1,87,3,87,1311,8,87,1,87,1,87,3,
12473+
87,1315,8,87,1,87,1,87,1,87,3,87,1320,8,87,1,87,3,87,1323,8,87,3,
1247412474
87,1325,8,87,1,88,1,88,1,89,1,89,1,90,1,90,1,91,3,91,1334,8,91,1,
1247512475
91,1,91,1,92,1,92,1,92,3,92,1341,8,92,1,92,3,92,1344,8,92,1,92,1,
1247612476
92,3,92,1348,8,92,1,92,3,92,1351,8,92,3,92,1353,8,92,1,93,1,93,1,
@@ -12967,17 +12967,17 @@ export class FlinkSqlParser extends SQLParserBase {
1296712967
176,88,0,1304,1310,3,180,90,0,1305,1311,3,182,91,0,1306,1308,5,17,
1296812968
0,0,1307,1306,1,0,0,0,1307,1308,1,0,0,0,1308,1309,1,0,0,0,1309,1311,
1296912969
3,276,138,0,1310,1305,1,0,0,0,1310,1307,1,0,0,0,1310,1311,1,0,0,
12970-
0,1311,1325,1,0,0,0,1312,1318,3,178,89,0,1313,1319,3,182,91,0,1314,
12971-
1316,5,17,0,0,1315,1314,1,0,0,0,1315,1316,1,0,0,0,1316,1317,1,0,
12972-
0,0,1317,1319,3,52,26,0,1318,1313,1,0,0,0,1318,1315,1,0,0,0,1318,
12973-
1319,1,0,0,0,1319,1325,1,0,0,0,1320,1322,3,186,93,0,1321,1323,3,
12974-
182,91,0,1322,1321,1,0,0,0,1322,1323,1,0,0,0,1323,1325,1,0,0,0,1324,
12975-
1303,1,0,0,0,1324,1304,1,0,0,0,1324,1312,1,0,0,0,1324,1320,1,0,0,
12976-
0,1325,175,1,0,0,0,1326,1327,3,188,94,0,1327,177,1,0,0,0,1328,1329,
12977-
3,276,138,0,1329,179,1,0,0,0,1330,1331,3,52,26,0,1331,181,1,0,0,
12978-
0,1332,1334,5,17,0,0,1333,1332,1,0,0,0,1333,1334,1,0,0,0,1334,1335,
12979-
1,0,0,0,1335,1336,3,328,164,0,1336,183,1,0,0,0,1337,1353,3,188,94,
12980-
0,1338,1343,3,276,138,0,1339,1341,5,17,0,0,1340,1339,1,0,0,0,1340,
12970+
0,1311,1325,1,0,0,0,1312,1314,3,186,93,0,1313,1315,3,182,91,0,1314,
12971+
1313,1,0,0,0,1314,1315,1,0,0,0,1315,1325,1,0,0,0,1316,1322,3,178,
12972+
89,0,1317,1323,3,182,91,0,1318,1320,5,17,0,0,1319,1318,1,0,0,0,1319,
12973+
1320,1,0,0,0,1320,1321,1,0,0,0,1321,1323,3,52,26,0,1322,1317,1,0,
12974+
0,0,1322,1319,1,0,0,0,1322,1323,1,0,0,0,1323,1325,1,0,0,0,1324,1303,
12975+
1,0,0,0,1324,1304,1,0,0,0,1324,1312,1,0,0,0,1324,1316,1,0,0,0,1325,
12976+
175,1,0,0,0,1326,1327,3,188,94,0,1327,177,1,0,0,0,1328,1329,3,276,
12977+
138,0,1329,179,1,0,0,0,1330,1331,3,52,26,0,1331,181,1,0,0,0,1332,
12978+
1334,5,17,0,0,1333,1332,1,0,0,0,1333,1334,1,0,0,0,1334,1335,1,0,
12979+
0,0,1335,1336,3,328,164,0,1336,183,1,0,0,0,1337,1353,3,188,94,0,
12980+
1338,1343,3,276,138,0,1339,1341,5,17,0,0,1340,1339,1,0,0,0,1340,
1298112981
1341,1,0,0,0,1341,1342,1,0,0,0,1342,1344,3,52,26,0,1343,1340,1,0,
1298212982
0,0,1343,1344,1,0,0,0,1344,1353,1,0,0,0,1345,1350,3,52,26,0,1346,
1298312983
1348,5,17,0,0,1347,1346,1,0,0,0,1347,1348,1,0,0,0,1348,1349,1,0,
@@ -13356,7 +13356,7 @@ export class FlinkSqlParser extends SQLParserBase {
1335613356
1066,1071,1077,1081,1088,1092,1096,1100,1108,1112,1117,1123,1129,
1335713357
1132,1136,1147,1156,1170,1182,1197,1200,1204,1207,1209,1214,1218,
1335813358
1221,1225,1234,1243,1253,1258,1269,1272,1275,1278,1281,1287,1291,
13359-
1300,1307,1310,1315,1318,1322,1324,1333,1340,1343,1347,1350,1352,
13359+
1300,1307,1310,1314,1319,1322,1324,1333,1340,1343,1347,1350,1352,
1336013360
1359,1364,1380,1391,1396,1404,1407,1410,1415,1417,1419,1424,1427,
1336113361
1431,1435,1439,1448,1459,1486,1508,1521,1533,1546,1558,1570,1576,
1336213362
1603,1611,1615,1618,1621,1628,1631,1634,1637,1640,1643,1648,1651,
@@ -17497,15 +17497,15 @@ export class ColumnProjectItemContext extends antlr.ParserRuleContext {
1749717497
public KW_AS(): antlr.TerminalNode | null {
1749817498
return this.getToken(FlinkSqlParser.KW_AS, 0);
1749917499
}
17500+
public tableAllColumns(): TableAllColumnsContext | null {
17501+
return this.getRuleContext(0, TableAllColumnsContext);
17502+
}
1750017503
public selectExpressionColumnName(): SelectExpressionColumnNameContext | null {
1750117504
return this.getRuleContext(0, SelectExpressionColumnNameContext);
1750217505
}
1750317506
public columnName(): ColumnNameContext | null {
1750417507
return this.getRuleContext(0, ColumnNameContext);
1750517508
}
17506-
public tableAllColumns(): TableAllColumnsContext | null {
17507-
return this.getRuleContext(0, TableAllColumnsContext);
17508-
}
1750917509
public override get ruleIndex(): number {
1751017510
return FlinkSqlParser.RULE_columnProjectItem;
1751117511
}

src/lib/impala/ImpalaSqlParser.interp

Lines changed: 2 additions & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)