Skip to content

Commit 6e665da

Browse files
authored
Merge pull request #9 from qidi1/format_bug_fix
fix error when sql select from more than one table
2 parents 939e17f + acfab5a commit 6e665da

File tree

12 files changed

+3976
-3930
lines changed

12 files changed

+3976
-3930
lines changed

sqlgpt_parser/parser/mysql_parser/parser.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1042,7 +1042,7 @@ def p_table_primary(p):
10421042
r"""table_primary : aliased_relation
10431043
| derived_table
10441044
| LPAREN relations RPAREN"""
1045-
if len(p) == 3:
1045+
if len(p) == 4:
10461046
p[0] = p[2]
10471047
else:
10481048
p[0] = p[1]
@@ -2950,6 +2950,7 @@ def p_non_reserved(p):
29502950
| CELIING
29512951
| CEIL
29522952
| CEILING
2953+
| CHARACTER
29532954
| CHARACTER_LENGTH
29542955
| CHAR_LENGTH
29552956
| COERCIBILITY
@@ -3061,12 +3062,14 @@ def p_non_reserved(p):
30613062
| LOG
30623063
| LOG10
30633064
| LOG2
3065+
| LONG
30643066
| LOWER
30653067
| LPAD
30663068
| LTRIM
30673069
| MAKEDATE
30683070
| MAKE_SET
30693071
| MASTER_POS_WAIT
3072+
| MATCH
30703073
| MD5
30713074
| MID
30723075
| MONTHNAME
@@ -3088,6 +3091,7 @@ def p_non_reserved(p):
30883091
| POWER
30893092
| QUOTE
30903093
| RANDOM_BYTES
3094+
| RANGE
30913095
| RANK
30923096
| READS
30933097
| REDOFILE
@@ -3380,6 +3384,7 @@ def p_not_keyword_token(p):
33803384
| SERIALIZABLE
33813385
| SESSION
33823386
| SHARE
3387+
| SHOW
33833388
| SHUTDOWN
33843389
| SIGN
33853390
| SIGNED

sqlgpt_parser/parser/mysql_parser/parser_table.py

Lines changed: 1071 additions & 1066 deletions
Large diffs are not rendered by default.

sqlgpt_parser/parser/mysql_parser/reserved.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,6 @@
747747
'CAST',
748748
'CHANGE',
749749
'CHAR',
750-
'CHARACTER',
751750
'CHECK',
752751
'COLLATE',
753752
'CONCAT',
@@ -851,11 +850,9 @@
851850
'LOCALTIME',
852851
'LOCALTIMESTAMP',
853852
'LOCK',
854-
'LONG',
855853
'LONGBLOB',
856854
'LONGTEXT',
857855
'LOW_PRIORITY',
858-
'MATCH',
859856
'MAXVALUE',
860857
'MEDIUMBLOB',
861858
'MEDIUMINT',
@@ -886,7 +883,6 @@
886883
'PROCEDURE',
887884
'RADIANS',
888885
'RAND',
889-
'RANGE',
890886
'READ',
891887
'REAL',
892888
'RECURSIVE',
@@ -906,7 +902,6 @@
906902
'SECOND_MICROSECOND',
907903
'SELECT',
908904
'SET',
909-
'SHOW',
910905
'SIGNAL',
911906
'SIN',
912907
'SMALLINT',
@@ -990,6 +985,7 @@
990985
'CELIING',
991986
'CEIL',
992987
'CEILING',
988+
'CHARACTER',
993989
'CHARACTER_LENGTH',
994990
'CHAR_LENGTH',
995991
'COERCIBILITY',
@@ -1102,6 +1098,7 @@
11021098
'LOG',
11031099
'LOG10',
11041100
'LOG2',
1101+
'LONG',
11051102
'LOWER',
11061103
'LPAD',
11071104
'LTRIM',
@@ -1131,6 +1128,7 @@
11311128
'POWER',
11321129
'QUOTE',
11331130
'RANDOM_BYTES',
1131+
'RANGE',
11341132
'RANK',
11351133
'READS',
11361134
'REDOFILE',
@@ -1341,6 +1339,7 @@
13411339
"LOCKED",
13421340
"LOGS",
13431341
"MASTER",
1342+
'MATCH',
13441343
'MAX',
13451344
"MAX_ROWS",
13461345
"MB",
@@ -1420,6 +1419,7 @@
14201419
"SERIALIZABLE",
14211420
"SESSION",
14221421
"SHARE",
1422+
'SHOW',
14231423
"SHUTDOWN",
14241424
'SIGN',
14251425
"SIGNED",

sqlgpt_parser/parser/oceanbase_parser/parser.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1041,7 +1041,7 @@ def p_table_primary(p):
10411041
r"""table_primary : aliased_relation
10421042
| derived_table
10431043
| LPAREN relations RPAREN"""
1044-
if len(p) == 3:
1044+
if len(p) == 4:
10451045
p[0] = p[2]
10461046
else:
10471047
p[0] = p[1]
@@ -3082,6 +3082,7 @@ def p_non_reserved(p):
30823082
| CEILING
30833083
| CHAIN
30843084
| CHANGED
3085+
| CHARACTER
30853086
| CHARACTER_LENGT
30863087
| CHARACTER_LENGTH
30873088
| CHARSET
@@ -3393,6 +3394,7 @@ def p_non_reserved(p):
33933394
| LOGFILE
33943395
| LOGONLY_REPLICA_NUM
33953396
| LOGS
3397+
| LONG
33963398
| LONGB
33973399
| LOOP
33983400
| LOWER
@@ -3427,6 +3429,7 @@ def p_non_reserved(p):
34273429
| MASTER_SSL_KEY
34283430
| MASTER_SSL_VERIFY_SERVER_CERT
34293431
| MASTER_USER
3432+
| MATCH
34303433
| MATCHED
34313434
| MATERIALIZED
34323435
| MAX
@@ -3575,6 +3578,7 @@ def p_non_reserved(p):
35753578
| R32
35763579
| RANDOM
35773580
| RANDOM_BYTES
3581+
| RANGE
35783582
| RANK
35793583
| READS
35803584
| READ_ONLY
@@ -3675,6 +3679,7 @@ def p_non_reserved(p):
36753679
| SHA1
36763680
| SHA2
36773681
| SHARE
3682+
| SHOW
36783683
| SHUTDOWN
36793684
| SKIP
36803685
| SIGN

sqlgpt_parser/parser/oceanbase_parser/parser_table.py

Lines changed: 1421 additions & 1416 deletions
Large diffs are not rendered by default.

sqlgpt_parser/parser/oceanbase_parser/reserved.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -742,7 +742,6 @@
742742
'CASE',
743743
'CHANGE',
744744
'CHAR',
745-
'CHARACTER',
746745
'CHECK',
747746
'COLLATE',
748747
'CONCAT',
@@ -846,11 +845,9 @@
846845
'LOCALTIME',
847846
'LOCALTIMESTAMP',
848847
'LOCK',
849-
'LONG',
850848
'LONGBLOB',
851849
'LONGTEXT',
852850
'LOW_PRIORITY',
853-
'MATCH',
854851
'MAXVALUE',
855852
'MEDIUMBLOB',
856853
'MEDIUMINT',
@@ -881,7 +878,6 @@
881878
'PROCEDURE',
882879
'RADIANS',
883880
'RAND',
884-
'RANGE',
885881
'READ',
886882
'REAL',
887883
'RECURSIVE',
@@ -901,7 +897,6 @@
901897
'SECOND_MICROSECOND',
902898
'SELECT',
903899
'SET',
904-
'SHOW',
905900
'SIGNAL',
906901
'SIN',
907902
'SMALLINT',
@@ -1041,6 +1036,7 @@
10411036
'CEILING',
10421037
'CHAIN',
10431038
'CHANGED',
1039+
'CHARACTER',
10441040
'CHARACTER_LENGT',
10451041
'CHARACTER_LENGTH',
10461042
'CHARSET',
@@ -1354,6 +1350,7 @@
13541350
'LOGFILE',
13551351
'LOGONLY_REPLICA_NUM',
13561352
'LOGS',
1353+
'LONG',
13571354
'LONGB',
13581355
'LOOP',
13591356
'LOWER',
@@ -1388,6 +1385,7 @@
13881385
'MASTER_SSL_KEY',
13891386
'MASTER_SSL_VERIFY_SERVER_CERT',
13901387
'MASTER_USER',
1388+
'MATCH',
13911389
'MATCHED',
13921390
'MATERIALIZED',
13931391
'MAX',
@@ -1538,6 +1536,7 @@
15381536
'R32',
15391537
'RANDOM',
15401538
'RANDOM_BYTES',
1539+
'RANGE',
15411540
'RANK',
15421541
'RAWTOHEX',
15431542
'READS',
@@ -1641,6 +1640,7 @@
16411640
'SHA1',
16421641
'SHA2',
16431642
'SHARE',
1643+
'SHOW',
16441644
'SHUTDOWN',
16451645
'SKIP',
16461646
'SIGN',

sqlgpt_parser/parser/odps_parser/parser.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1043,7 +1043,7 @@ def p_table_primary(p):
10431043
r"""table_primary : aliased_relation
10441044
| derived_table
10451045
| LPAREN relations RPAREN"""
1046-
if len(p) == 3:
1046+
if len(p) == 4:
10471047
p[0] = p[2]
10481048
else:
10491049
p[0] = p[1]
@@ -3088,6 +3088,7 @@ def p_non_reserved(p):
30883088
| CEILING
30893089
| CHAIN
30903090
| CHANGED
3091+
| CHARACTER
30913092
| CHARACTER_LENGT
30923093
| CHARACTER_LENGTH
30933094
| CHARSET
@@ -3399,6 +3400,7 @@ def p_non_reserved(p):
33993400
| LOGFILE
34003401
| LOGONLY_REPLICA_NUM
34013402
| LOGS
3403+
| LONG
34023404
| LONGB
34033405
| LOOP
34043406
| LOWER
@@ -3433,6 +3435,7 @@ def p_non_reserved(p):
34333435
| MASTER_SSL_KEY
34343436
| MASTER_SSL_VERIFY_SERVER_CERT
34353437
| MASTER_USER
3438+
| MATCH
34363439
| MATCHED
34373440
| MATERIALIZED
34383441
| MAX
@@ -3583,6 +3586,7 @@ def p_non_reserved(p):
35833586
| RANDOM
35843587
| RANDOM_BYTES
35853588
| RANK
3589+
| RANGE
35863590
| READS
35873591
| READ_ONLY
35883592
| READ_WRITE
@@ -3682,6 +3686,7 @@ def p_non_reserved(p):
36823686
| SHA1
36833687
| SHA2
36843688
| SHARE
3689+
| SHOW
36853690
| SHUTDOWN
36863691
| SKIP
36873692
| SIGN

sqlgpt_parser/parser/odps_parser/parser_table.py

Lines changed: 1422 additions & 1417 deletions
Large diffs are not rendered by default.

sqlgpt_parser/parser/odps_parser/reserved.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,6 @@
633633
'PREPARE',
634634
'PRIMARY',
635635
'PROCEDURE',
636-
'RANGE',
637636
'READS',
638637
'REAL',
639638
'RECURSIVE',
@@ -742,7 +741,6 @@
742741
'CASE',
743742
'CHANGE',
744743
'CHAR',
745-
'CHARACTER',
746744
'CHECK',
747745
'COLLATE',
748746
'CONCAT',
@@ -846,11 +844,9 @@
846844
'LOCALTIME',
847845
'LOCALTIMESTAMP',
848846
'LOCK',
849-
'LONG',
850847
'LONGBLOB',
851848
'LONGTEXT',
852849
'LOW_PRIORITY',
853-
'MATCH',
854850
'MAXVALUE',
855851
'MEDIUMBLOB',
856852
'MEDIUMINT',
@@ -901,7 +897,6 @@
901897
'SECOND_MICROSECOND',
902898
'SELECT',
903899
'SET',
904-
'SHOW',
905900
'SIGNAL',
906901
'SIN',
907902
'SMALLINT',
@@ -1041,6 +1036,7 @@
10411036
'CEILING',
10421037
'CHAIN',
10431038
'CHANGED',
1039+
'CHARACTER',
10441040
'CHARACTER_LENGT',
10451041
'CHARACTER_LENGTH',
10461042
'CHARSET',
@@ -1354,6 +1350,7 @@
13541350
'LOGFILE',
13551351
'LOGONLY_REPLICA_NUM',
13561352
'LOGS',
1353+
'LONG',
13571354
'LONGB',
13581355
'LOOP',
13591356
'LOWER',
@@ -1388,6 +1385,7 @@
13881385
'MASTER_SSL_KEY',
13891386
'MASTER_SSL_VERIFY_SERVER_CERT',
13901387
'MASTER_USER',
1388+
'MATCH',
13911389
'MATCHED',
13921390
'MATERIALIZED',
13931391
'MAX',
@@ -1539,6 +1537,7 @@
15391537
'R32',
15401538
'RANDOM',
15411539
'RANDOM_BYTES',
1540+
'RANGE',
15421541
'RANK',
15431542
'RAWTOHEX',
15441543
'READS',
@@ -1642,6 +1641,7 @@
16421641
'SHA1',
16431642
'SHA2',
16441643
'SHARE',
1644+
'SHOW',
16451645
'SHUTDOWN',
16461646
'SKIP',
16471647
'SIGN',

sqlgpt_parser/parser/parser_utils.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,16 @@ def visit_query_specification(self, node, context):
218218
| ParserUtils.CollectInfo.COLLECT_MIN_MAX_EXPRESSION_COLUMN
219219
)
220220
self.process(node.select, context)
221-
context = ParserUtils.CollectInfo.COLLECT_TABLE
221+
context = (
222+
ParserUtils.CollectInfo.COLLECT_TABLE
223+
| ParserUtils.CollectInfo.COLLECT_FILTER_COLUMN
224+
)
222225
if node.from_:
223-
self.process(node.from_, context)
226+
if isinstance(node.from_, list):
227+
for item in node.from_:
228+
self.process(item, context)
229+
else:
230+
self.process(node.from_, context)
224231
context = (
225232
ParserUtils.CollectInfo.COLLECT_IN_EXPRESSION_COLUMN
226233
| ParserUtils.CollectInfo.COLLECT_FILTER_COLUMN

0 commit comments

Comments
 (0)