Skip to content

Commit db05cb3

Browse files
authored
feat: pgsql collect column name (#216)
* feat(pgsql: collect column name): pgsql: collect column name * feat(pgsql): repair column name's unit test and sql * feat(pgsql): pgsql: collect expression's column * feat(update column's collect of some expression): pgsql: update column's collect of some expression --------- Co-authored-by: zhaoge <>
1 parent 428d851 commit db05cb3

10 files changed

Lines changed: 20521 additions & 17680 deletions

File tree

src/grammar/pgsql/PostgreSQLParser.g4

Lines changed: 86 additions & 63 deletions
Large diffs are not rendered by default.

src/lib/pgsql/PostgreSQLParser.interp

Lines changed: 13 additions & 2 deletions
Large diffs are not rendered by default.

src/lib/pgsql/PostgreSQLParser.ts

Lines changed: 19426 additions & 17589 deletions
Large diffs are not rendered by default.

src/lib/pgsql/PostgreSQLParserListener.ts

Lines changed: 144 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,11 @@ import { Var_nameContext } from "./PostgreSQLParser";
4848
import { Var_listContext } from "./PostgreSQLParser";
4949
import { Var_valueContext } from "./PostgreSQLParser";
5050
import { Iso_levelContext } from "./PostgreSQLParser";
51+
import { Opt_boolean_or_string_columnContext } from "./PostgreSQLParser";
5152
import { Opt_boolean_or_stringContext } from "./PostgreSQLParser";
5253
import { Zone_valueContext } from "./PostgreSQLParser";
5354
import { Opt_encodingContext } from "./PostgreSQLParser";
55+
import { Nonreservedword_or_sconst_columnContext } from "./PostgreSQLParser";
5456
import { Nonreservedword_or_sconstContext } from "./PostgreSQLParser";
5557
import { VariableresetstmtContext } from "./PostgreSQLParser";
5658
import { Reset_restContext } from "./PostgreSQLParser";
@@ -114,6 +116,7 @@ import { TableelementlistContext } from "./PostgreSQLParser";
114116
import { TypedtableelementlistContext } from "./PostgreSQLParser";
115117
import { TableelementContext } from "./PostgreSQLParser";
116118
import { TypedtableelementContext } from "./PostgreSQLParser";
119+
import { ColumnDefCluaseContext } from "./PostgreSQLParser";
117120
import { ColumnDefContext } from "./PostgreSQLParser";
118121
import { CompressionCluaseContext } from "./PostgreSQLParser";
119122
import { StorageCluaseContext } from "./PostgreSQLParser";
@@ -133,7 +136,6 @@ import { ConstraintelemContext } from "./PostgreSQLParser";
133136
import { Opt_no_inheritContext } from "./PostgreSQLParser";
134137
import { Opt_column_listContext } from "./PostgreSQLParser";
135138
import { ColumnlistContext } from "./PostgreSQLParser";
136-
import { ColumnElemContext } from "./PostgreSQLParser";
137139
import { Opt_c_includeContext } from "./PostgreSQLParser";
138140
import { Key_matchContext } from "./PostgreSQLParser";
139141
import { ExclusionconstraintlistContext } from "./PostgreSQLParser";
@@ -287,6 +289,9 @@ import { Object_type_any_nameContext } from "./PostgreSQLParser";
287289
import { Object_type_nameContext } from "./PostgreSQLParser";
288290
import { Object_type_name_on_any_nameContext } from "./PostgreSQLParser";
289291
import { Any_name_listContext } from "./PostgreSQLParser";
292+
import { Table_column_nameContext } from "./PostgreSQLParser";
293+
import { Relation_column_nameContext } from "./PostgreSQLParser";
294+
import { Relation_nameContext } from "./PostgreSQLParser";
290295
import { Any_nameContext } from "./PostgreSQLParser";
291296
import { AttrsContext } from "./PostgreSQLParser";
292297
import { Type_name_listContext } from "./PostgreSQLParser";
@@ -668,8 +673,10 @@ import { Qual_opContext } from "./PostgreSQLParser";
668673
import { Qual_all_opContext } from "./PostgreSQLParser";
669674
import { Subquery_OpContext } from "./PostgreSQLParser";
670675
import { Expr_listContext } from "./PostgreSQLParser";
676+
import { Column_expr_list_noparenContext } from "./PostgreSQLParser";
671677
import { Column_expr_listContext } from "./PostgreSQLParser";
672678
import { Column_exprContext } from "./PostgreSQLParser";
679+
import { Column_expr_noparenContext } from "./PostgreSQLParser";
673680
import { Func_arg_listContext } from "./PostgreSQLParser";
674681
import { Func_arg_exprContext } from "./PostgreSQLParser";
675682
import { Type_listContext } from "./PostgreSQLParser";
@@ -717,6 +724,8 @@ import { Routine_name_createContext } from "./PostgreSQLParser";
717724
import { Routine_nameContext } from "./PostgreSQLParser";
718725
import { Procedure_nameContext } from "./PostgreSQLParser";
719726
import { Procedure_name_createContext } from "./PostgreSQLParser";
727+
import { Column_nameContext } from "./PostgreSQLParser";
728+
import { Column_name_createContext } from "./PostgreSQLParser";
720729
import { NameContext } from "./PostgreSQLParser";
721730
import { Attr_nameContext } from "./PostgreSQLParser";
722731
import { File_nameContext } from "./PostgreSQLParser";
@@ -742,6 +751,7 @@ import { Exclude_elementContext } from "./PostgreSQLParser";
742751
import { Index_paramentersContext } from "./PostgreSQLParser";
743752
import { Type_function_nameContext } from "./PostgreSQLParser";
744753
import { Type_usual_nameContext } from "./PostgreSQLParser";
754+
import { Nonreservedword_columnContext } from "./PostgreSQLParser";
745755
import { NonreservedwordContext } from "./PostgreSQLParser";
746756
import { CollabelContext } from "./PostgreSQLParser";
747757
import { IdentifierContext } from "./PostgreSQLParser";
@@ -845,6 +855,7 @@ import { Join_conditionContext } from "./PostgreSQLParser";
845855
import { Merge_when_clauseContext } from "./PostgreSQLParser";
846856
import { Merge_insertContext } from "./PostgreSQLParser";
847857
import { Merge_updateContext } from "./PostgreSQLParser";
858+
import { Default_values_or_valuesContext } from "./PostgreSQLParser";
848859
import { ExprofdefaultlistContext } from "./PostgreSQLParser";
849860
import { ExprofdefaultContext } from "./PostgreSQLParser";
850861
import { Stmt_closeContext } from "./PostgreSQLParser";
@@ -1394,6 +1405,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
13941405
*/
13951406
exitIso_level?: (ctx: Iso_levelContext) => void;
13961407

1408+
/**
1409+
* Enter a parse tree produced by `PostgreSQLParser.opt_boolean_or_string_column`.
1410+
* @param ctx the parse tree
1411+
*/
1412+
enterOpt_boolean_or_string_column?: (ctx: Opt_boolean_or_string_columnContext) => void;
1413+
/**
1414+
* Exit a parse tree produced by `PostgreSQLParser.opt_boolean_or_string_column`.
1415+
* @param ctx the parse tree
1416+
*/
1417+
exitOpt_boolean_or_string_column?: (ctx: Opt_boolean_or_string_columnContext) => void;
1418+
13971419
/**
13981420
* Enter a parse tree produced by `PostgreSQLParser.opt_boolean_or_string`.
13991421
* @param ctx the parse tree
@@ -1427,6 +1449,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
14271449
*/
14281450
exitOpt_encoding?: (ctx: Opt_encodingContext) => void;
14291451

1452+
/**
1453+
* Enter a parse tree produced by `PostgreSQLParser.nonreservedword_or_sconst_column`.
1454+
* @param ctx the parse tree
1455+
*/
1456+
enterNonreservedword_or_sconst_column?: (ctx: Nonreservedword_or_sconst_columnContext) => void;
1457+
/**
1458+
* Exit a parse tree produced by `PostgreSQLParser.nonreservedword_or_sconst_column`.
1459+
* @param ctx the parse tree
1460+
*/
1461+
exitNonreservedword_or_sconst_column?: (ctx: Nonreservedword_or_sconst_columnContext) => void;
1462+
14301463
/**
14311464
* Enter a parse tree produced by `PostgreSQLParser.nonreservedword_or_sconst`.
14321465
* @param ctx the parse tree
@@ -2120,6 +2153,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
21202153
*/
21212154
exitTypedtableelement?: (ctx: TypedtableelementContext) => void;
21222155

2156+
/**
2157+
* Enter a parse tree produced by `PostgreSQLParser.columnDefCluase`.
2158+
* @param ctx the parse tree
2159+
*/
2160+
enterColumnDefCluase?: (ctx: ColumnDefCluaseContext) => void;
2161+
/**
2162+
* Exit a parse tree produced by `PostgreSQLParser.columnDefCluase`.
2163+
* @param ctx the parse tree
2164+
*/
2165+
exitColumnDefCluase?: (ctx: ColumnDefCluaseContext) => void;
2166+
21232167
/**
21242168
* Enter a parse tree produced by `PostgreSQLParser.columnDef`.
21252169
* @param ctx the parse tree
@@ -2329,17 +2373,6 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
23292373
*/
23302374
exitColumnlist?: (ctx: ColumnlistContext) => void;
23312375

2332-
/**
2333-
* Enter a parse tree produced by `PostgreSQLParser.columnElem`.
2334-
* @param ctx the parse tree
2335-
*/
2336-
enterColumnElem?: (ctx: ColumnElemContext) => void;
2337-
/**
2338-
* Exit a parse tree produced by `PostgreSQLParser.columnElem`.
2339-
* @param ctx the parse tree
2340-
*/
2341-
exitColumnElem?: (ctx: ColumnElemContext) => void;
2342-
23432376
/**
23442377
* Enter a parse tree produced by `PostgreSQLParser.opt_c_include`.
23452378
* @param ctx the parse tree
@@ -4023,6 +4056,39 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
40234056
*/
40244057
exitAny_name_list?: (ctx: Any_name_listContext) => void;
40254058

4059+
/**
4060+
* Enter a parse tree produced by `PostgreSQLParser.table_column_name`.
4061+
* @param ctx the parse tree
4062+
*/
4063+
enterTable_column_name?: (ctx: Table_column_nameContext) => void;
4064+
/**
4065+
* Exit a parse tree produced by `PostgreSQLParser.table_column_name`.
4066+
* @param ctx the parse tree
4067+
*/
4068+
exitTable_column_name?: (ctx: Table_column_nameContext) => void;
4069+
4070+
/**
4071+
* Enter a parse tree produced by `PostgreSQLParser.relation_column_name`.
4072+
* @param ctx the parse tree
4073+
*/
4074+
enterRelation_column_name?: (ctx: Relation_column_nameContext) => void;
4075+
/**
4076+
* Exit a parse tree produced by `PostgreSQLParser.relation_column_name`.
4077+
* @param ctx the parse tree
4078+
*/
4079+
exitRelation_column_name?: (ctx: Relation_column_nameContext) => void;
4080+
4081+
/**
4082+
* Enter a parse tree produced by `PostgreSQLParser.relation_name`.
4083+
* @param ctx the parse tree
4084+
*/
4085+
enterRelation_name?: (ctx: Relation_nameContext) => void;
4086+
/**
4087+
* Exit a parse tree produced by `PostgreSQLParser.relation_name`.
4088+
* @param ctx the parse tree
4089+
*/
4090+
exitRelation_name?: (ctx: Relation_nameContext) => void;
4091+
40264092
/**
40274093
* Enter a parse tree produced by `PostgreSQLParser.any_name`.
40284094
* @param ctx the parse tree
@@ -8214,6 +8280,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
82148280
*/
82158281
exitExpr_list?: (ctx: Expr_listContext) => void;
82168282

8283+
/**
8284+
* Enter a parse tree produced by `PostgreSQLParser.column_expr_list_noparen`.
8285+
* @param ctx the parse tree
8286+
*/
8287+
enterColumn_expr_list_noparen?: (ctx: Column_expr_list_noparenContext) => void;
8288+
/**
8289+
* Exit a parse tree produced by `PostgreSQLParser.column_expr_list_noparen`.
8290+
* @param ctx the parse tree
8291+
*/
8292+
exitColumn_expr_list_noparen?: (ctx: Column_expr_list_noparenContext) => void;
8293+
82178294
/**
82188295
* Enter a parse tree produced by `PostgreSQLParser.column_expr_list`.
82198296
* @param ctx the parse tree
@@ -8236,6 +8313,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
82368313
*/
82378314
exitColumn_expr?: (ctx: Column_exprContext) => void;
82388315

8316+
/**
8317+
* Enter a parse tree produced by `PostgreSQLParser.column_expr_noparen`.
8318+
* @param ctx the parse tree
8319+
*/
8320+
enterColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void;
8321+
/**
8322+
* Exit a parse tree produced by `PostgreSQLParser.column_expr_noparen`.
8323+
* @param ctx the parse tree
8324+
*/
8325+
exitColumn_expr_noparen?: (ctx: Column_expr_noparenContext) => void;
8326+
82398327
/**
82408328
* Enter a parse tree produced by `PostgreSQLParser.func_arg_list`.
82418329
* @param ctx the parse tree
@@ -8753,6 +8841,28 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
87538841
*/
87548842
exitProcedure_name_create?: (ctx: Procedure_name_createContext) => void;
87558843

8844+
/**
8845+
* Enter a parse tree produced by `PostgreSQLParser.column_name`.
8846+
* @param ctx the parse tree
8847+
*/
8848+
enterColumn_name?: (ctx: Column_nameContext) => void;
8849+
/**
8850+
* Exit a parse tree produced by `PostgreSQLParser.column_name`.
8851+
* @param ctx the parse tree
8852+
*/
8853+
exitColumn_name?: (ctx: Column_nameContext) => void;
8854+
8855+
/**
8856+
* Enter a parse tree produced by `PostgreSQLParser.column_name_create`.
8857+
* @param ctx the parse tree
8858+
*/
8859+
enterColumn_name_create?: (ctx: Column_name_createContext) => void;
8860+
/**
8861+
* Exit a parse tree produced by `PostgreSQLParser.column_name_create`.
8862+
* @param ctx the parse tree
8863+
*/
8864+
exitColumn_name_create?: (ctx: Column_name_createContext) => void;
8865+
87568866
/**
87578867
* Enter a parse tree produced by `PostgreSQLParser.name`.
87588868
* @param ctx the parse tree
@@ -9028,6 +9138,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
90289138
*/
90299139
exitType_usual_name?: (ctx: Type_usual_nameContext) => void;
90309140

9141+
/**
9142+
* Enter a parse tree produced by `PostgreSQLParser.nonreservedword_column`.
9143+
* @param ctx the parse tree
9144+
*/
9145+
enterNonreservedword_column?: (ctx: Nonreservedword_columnContext) => void;
9146+
/**
9147+
* Exit a parse tree produced by `PostgreSQLParser.nonreservedword_column`.
9148+
* @param ctx the parse tree
9149+
*/
9150+
exitNonreservedword_column?: (ctx: Nonreservedword_columnContext) => void;
9151+
90319152
/**
90329153
* Enter a parse tree produced by `PostgreSQLParser.nonreservedword`.
90339154
* @param ctx the parse tree
@@ -10161,6 +10282,17 @@ export interface PostgreSQLParserListener extends ParseTreeListener {
1016110282
*/
1016210283
exitMerge_update?: (ctx: Merge_updateContext) => void;
1016310284

10285+
/**
10286+
* Enter a parse tree produced by `PostgreSQLParser.default_values_or_values`.
10287+
* @param ctx the parse tree
10288+
*/
10289+
enterDefault_values_or_values?: (ctx: Default_values_or_valuesContext) => void;
10290+
/**
10291+
* Exit a parse tree produced by `PostgreSQLParser.default_values_or_values`.
10292+
* @param ctx the parse tree
10293+
*/
10294+
exitDefault_values_or_values?: (ctx: Default_values_or_valuesContext) => void;
10295+
1016410296
/**
1016510297
* Enter a parse tree produced by `PostgreSQLParser.exprofdefaultlist`.
1016610298
* @param ctx the parse tree

0 commit comments

Comments
 (0)