File tree Expand file tree Collapse file tree 3 files changed +18
-5
lines changed Expand file tree Collapse file tree 3 files changed +18
-5
lines changed Original file line number Diff line number Diff line change @@ -498,7 +498,7 @@ pub enum Statement {
498
498
/// index name
499
499
name : ObjectName ,
500
500
table_name : ObjectName ,
501
- columns : Vec < Ident > ,
501
+ columns : Vec < OrderByExpr > ,
502
502
unique : bool ,
503
503
if_not_exists : bool ,
504
504
} ,
Original file line number Diff line number Diff line change @@ -1142,7 +1142,9 @@ impl Parser {
1142
1142
let index_name = self . parse_object_name ( ) ?;
1143
1143
self . expect_keyword ( Keyword :: ON ) ?;
1144
1144
let table_name = self . parse_object_name ( ) ?;
1145
- let columns = self . parse_parenthesized_column_list ( Mandatory ) ?;
1145
+ self . expect_token ( & Token :: LParen ) ?;
1146
+ let columns = self . parse_comma_separated ( Parser :: parse_order_by_expr) ?;
1147
+ self . expect_token ( & Token :: RParen ) ?;
1146
1148
Ok ( Statement :: CreateIndex {
1147
1149
name : index_name,
1148
1150
table_name,
Original file line number Diff line number Diff line change @@ -3152,8 +3152,19 @@ fn ensure_multiple_dialects_are_tested() {
3152
3152
3153
3153
#[ test]
3154
3154
fn parse_create_index ( ) {
3155
- let sql = "CREATE UNIQUE INDEX IF NOT EXISTS idx_name ON test(name,age)" ;
3156
- let ident_vec = vec ! [ Ident :: new( "name" ) , Ident :: new( "age" ) ] ;
3155
+ let sql = "CREATE UNIQUE INDEX IF NOT EXISTS idx_name ON test(name,age DESC)" ;
3156
+ let indexed_columns = vec ! [
3157
+ OrderByExpr {
3158
+ expr: Expr :: Identifier ( Ident :: new( "name" ) ) ,
3159
+ asc: None ,
3160
+ nulls_first: None ,
3161
+ } ,
3162
+ OrderByExpr {
3163
+ expr: Expr :: Identifier ( Ident :: new( "age" ) ) ,
3164
+ asc: Some ( false ) ,
3165
+ nulls_first: None ,
3166
+ } ,
3167
+ ] ;
3157
3168
match verified_stmt ( sql) {
3158
3169
Statement :: CreateIndex {
3159
3170
name,
@@ -3164,7 +3175,7 @@ fn parse_create_index() {
3164
3175
} => {
3165
3176
assert_eq ! ( "idx_name" , name. to_string( ) ) ;
3166
3177
assert_eq ! ( "test" , table_name. to_string( ) ) ;
3167
- assert_eq ! ( ident_vec , columns) ;
3178
+ assert_eq ! ( indexed_columns , columns) ;
3168
3179
assert_eq ! ( true , unique) ;
3169
3180
assert_eq ! ( true , if_not_exists)
3170
3181
}
You can’t perform that action at this time.
0 commit comments