@@ -786,20 +786,37 @@ pub fn statement_body(i: Input) -> IResult<Statement> {
786
786
} )
787
787
} ,
788
788
) ;
789
+
790
+ pub fn from_tables ( i : Input ) -> IResult < ( Option < Identifier > , Option < Identifier > , Identifier ) > {
791
+ let from_dot_table = map (
792
+ rule ! {
793
+ ( FROM | IN ) ~ ^#dot_separated_idents_1_to_3
794
+ } ,
795
+ |( _, ( catalog, database, table) ) | ( catalog, database, table) ,
796
+ ) ;
797
+
798
+ let from_table = map (
799
+ rule ! {
800
+ ( FROM | IN ) ~ #ident
801
+ ~ ( FROM | IN ) ~ ^#dot_separated_idents_1_to_2
802
+ } ,
803
+ |( _, table, _, ( catalog, database) ) | ( catalog, Some ( database) , table) ,
804
+ ) ;
805
+
806
+ rule ! (
807
+ #from_table
808
+ | #from_dot_table
809
+ ) ( i)
810
+ }
811
+
789
812
let show_columns = map (
790
813
rule ! {
791
814
SHOW
792
815
~ FULL ? ~ COLUMNS
793
- ~ ( FROM | IN ) ~ #ident
794
- ~ ( ( FROM | IN ) ~ ^#dot_separated_idents_1_to_2) ?
816
+ ~ #from_tables
795
817
~ #show_limit?
796
818
} ,
797
- |( _, opt_full, _, _, table, ctl_db, limit) | {
798
- let ( catalog, database) = match ctl_db {
799
- Some ( ( _, ( Some ( c) , d) ) ) => ( Some ( c) , Some ( d) ) ,
800
- Some ( ( _, ( None , d) ) ) => ( None , Some ( d) ) ,
801
- _ => ( None , None ) ,
802
- } ;
819
+ |( _, opt_full, _, ( catalog, database, table) , limit) | {
803
820
Statement :: ShowColumns ( ShowColumnsStmt {
804
821
catalog,
805
822
database,
0 commit comments