File tree Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Expand file tree Collapse file tree 4 files changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -1016,6 +1016,10 @@ pub enum Statement {
1016
1016
table_name : ObjectName ,
1017
1017
filter : Option < ShowStatementFilter > ,
1018
1018
} ,
1019
+ /// USE
1020
+ ///
1021
+ /// Note: This is a MySQL-specific statement.
1022
+ Use { db_name : Ident } ,
1019
1023
/// `{ BEGIN [ TRANSACTION | WORK ] | START TRANSACTION } ...`
1020
1024
StartTransaction { modes : Vec < TransactionMode > } ,
1021
1025
/// `SET TRANSACTION ...`
@@ -1825,6 +1829,10 @@ impl fmt::Display for Statement {
1825
1829
}
1826
1830
Ok ( ( ) )
1827
1831
}
1832
+ Statement :: Use { db_name } => {
1833
+ write ! ( f, "USE {}" , db_name) ?;
1834
+ Ok ( ( ) )
1835
+ }
1828
1836
Statement :: StartTransaction { modes } => {
1829
1837
write ! ( f, "START TRANSACTION" ) ?;
1830
1838
if !modes. is_empty ( ) {
Original file line number Diff line number Diff line change @@ -535,6 +535,7 @@ define_keywords!(
535
535
UPDATE ,
536
536
UPPER ,
537
537
USAGE ,
538
+ USE ,
538
539
USER ,
539
540
USING ,
540
541
UUID ,
Original file line number Diff line number Diff line change @@ -177,6 +177,7 @@ impl<'a> Parser<'a> {
177
177
Keyword :: CLOSE => Ok ( self . parse_close ( ) ?) ,
178
178
Keyword :: SET => Ok ( self . parse_set ( ) ?) ,
179
179
Keyword :: SHOW => Ok ( self . parse_show ( ) ?) ,
180
+ Keyword :: USE => Ok ( self . parse_use ( ) ?) ,
180
181
Keyword :: GRANT => Ok ( self . parse_grant ( ) ?) ,
181
182
Keyword :: REVOKE => Ok ( self . parse_revoke ( ) ?) ,
182
183
Keyword :: START => Ok ( self . parse_start_transaction ( ) ?) ,
@@ -3776,6 +3777,11 @@ impl<'a> Parser<'a> {
3776
3777
}
3777
3778
}
3778
3779
3780
+ pub fn parse_use ( & mut self ) -> Result < Statement , ParserError > {
3781
+ let db_name = self . parse_identifier ( ) ?;
3782
+ Ok ( Statement :: Use { db_name } )
3783
+ }
3784
+
3779
3785
pub fn parse_table_and_joins ( & mut self ) -> Result < TableWithJoins , ParserError > {
3780
3786
let relation = self . parse_table_factor ( ) ?;
3781
3787
// Note that for keywords to be properly handled here, they need to be
Original file line number Diff line number Diff line change @@ -138,6 +138,16 @@ fn parse_show_create() {
138
138
}
139
139
}
140
140
141
+ #[ test]
142
+ fn parse_use ( ) {
143
+ assert_eq ! (
144
+ mysql_and_generic( ) . verified_stmt( "USE mydb" ) ,
145
+ Statement :: Use {
146
+ db_name: Ident :: new( "mydb" )
147
+ }
148
+ ) ;
149
+ }
150
+
141
151
#[ test]
142
152
fn parse_create_table_auto_increment ( ) {
143
153
let sql = "CREATE TABLE foo (bar INT PRIMARY KEY AUTO_INCREMENT)" ;
You can’t perform that action at this time.
0 commit comments