@@ -878,10 +878,7 @@ impl Parser {
878
878
} else {
879
879
SourceSchema :: Raw ( self . parse_literal_string ( ) ?)
880
880
} ;
881
- let mut with_options = vec ! [ ] ;
882
- if self . parse_keyword ( "WITH" ) {
883
- with_options = self . parse_with_options ( ) ?;
884
- }
881
+ let with_options = self . parse_with_options ( ) ?;
885
882
Ok ( Statement :: CreateSource {
886
883
name,
887
884
url,
@@ -896,10 +893,7 @@ impl Parser {
896
893
let from = self . parse_object_name ( ) ?;
897
894
self . expect_keyword ( "INTO" ) ?;
898
895
let url = self . parse_literal_string ( ) ?;
899
- let mut with_options = vec ! [ ] ;
900
- if self . parse_keyword ( "WITH" ) {
901
- with_options = self . parse_with_options ( ) ?;
902
- }
896
+ let with_options = self . parse_with_options ( ) ?;
903
897
Ok ( Statement :: CreateSink {
904
898
name,
905
899
from,
@@ -937,11 +931,7 @@ impl Parser {
937
931
// ANSI SQL and Postgres support RECURSIVE here, but we don't support it either.
938
932
let name = self . parse_object_name ( ) ?;
939
933
let columns = self . parse_parenthesized_column_list ( Optional ) ?;
940
- let with_options = if self . parse_keyword ( "WITH" ) {
941
- self . parse_with_options ( ) ?
942
- } else {
943
- vec ! [ ]
944
- } ;
934
+ let with_options = self . parse_with_options ( ) ?;
945
935
self . expect_keyword ( "AS" ) ?;
946
936
let query = Box :: new ( self . parse_query ( ) ?) ;
947
937
// Optional `WITH [ CASCADED | LOCAL ] CHECK OPTION` is widely supported here.
@@ -992,11 +982,7 @@ impl Parser {
992
982
// parse optional column list (schema)
993
983
let ( columns, constraints) = self . parse_columns ( ) ?;
994
984
995
- let with_options = if self . parse_keyword ( "WITH" ) {
996
- self . parse_with_options ( ) ?
997
- } else {
998
- vec ! [ ]
999
- } ;
985
+ let with_options = self . parse_with_options ( ) ?;
1000
986
1001
987
Ok ( Statement :: CreateTable {
1002
988
name : table_name,
@@ -1144,19 +1130,23 @@ impl Parser {
1144
1130
}
1145
1131
1146
1132
pub fn parse_with_options ( & mut self ) -> Result < Vec < SqlOption > , ParserError > {
1147
- self . expect_token ( & Token :: LParen ) ?;
1148
- let mut options = vec ! [ ] ;
1149
- loop {
1150
- let name = self . parse_identifier ( ) ?;
1151
- self . expect_token ( & Token :: Eq ) ?;
1152
- let value = self . parse_value ( ) ?;
1153
- options. push ( SqlOption { name, value } ) ;
1154
- if !self . consume_token ( & Token :: Comma ) {
1155
- break ;
1133
+ if self . parse_keyword ( "WITH" ) {
1134
+ self . expect_token ( & Token :: LParen ) ?;
1135
+ let mut options = vec ! [ ] ;
1136
+ loop {
1137
+ let name = self . parse_identifier ( ) ?;
1138
+ self . expect_token ( & Token :: Eq ) ?;
1139
+ let value = self . parse_value ( ) ?;
1140
+ options. push ( SqlOption { name, value } ) ;
1141
+ if !self . consume_token ( & Token :: Comma ) {
1142
+ break ;
1143
+ }
1156
1144
}
1145
+ self . expect_token ( & Token :: RParen ) ?;
1146
+ Ok ( options)
1147
+ } else {
1148
+ Ok ( vec ! [ ] )
1157
1149
}
1158
- self . expect_token ( & Token :: RParen ) ?;
1159
- Ok ( options)
1160
1150
}
1161
1151
1162
1152
pub fn parse_alter ( & mut self ) -> Result < Statement , ParserError > {
0 commit comments