@@ -12231,9 +12231,13 @@ impl<'a> Parser<'a> {
1223112231 let _ = self.parse_keyword(Keyword::BY);
1223212232 let _ = self.consume_token(&Token::Eq);
1223312233 AlterSequenceOperation::SetIncrement(self.parse_number()?)
12234+ } else if self.parse_keyword(Keyword::ORDER) {
12235+ AlterSequenceOperation::SetOrder(true)
12236+ } else if self.parse_keyword(Keyword::NOORDER) {
12237+ AlterSequenceOperation::SetOrder(false)
1223412238 } else {
1223512239 return self.expected(
12236- "RENAME TO, INCREMENT, SET COMMENT, or UNSET COMMENT after ALTER SEQUENCE",
12240+ "RENAME TO, INCREMENT, ORDER, NOORDER, SET COMMENT, or UNSET COMMENT after ALTER SEQUENCE",
1223712241 self.peek_token(),
1223812242 );
1223912243 }
@@ -21288,10 +21292,14 @@ impl<'a> Parser<'a> {
2128821292
2128921293 fn parse_create_sequence_options(&mut self) -> Result<Vec<SequenceOptions>, ParserError> {
2129021294 // Options may appear in any order (Snowflake) and each keyword may use an
21291- // optional `=` assignment form (`START = 1`, `INCREMENT = 1`). Snowflake's
21292- // `ORDER`/`NOORDER` ordering guarantee is accepted and ignored .
21295+ // optional `=` assignment form (`START = 1`, `INCREMENT = 1`). A leading
21296+ // `WITH` and comma separators between options are both accepted .
2129321297 let mut sequence_options = vec![];
21298+ let _ = self.parse_keyword(Keyword::WITH);
2129421299 loop {
21300+ if !sequence_options.is_empty() {
21301+ let _ = self.consume_token(&Token::Comma);
21302+ }
2129521303 if self.parse_keyword(Keyword::INCREMENT) {
2129621304 //[ INCREMENT [ BY ] [ = ] increment ]
2129721305 let by = self.parse_keyword(Keyword::BY);
@@ -21322,8 +21330,10 @@ impl<'a> Parser<'a> {
2132221330 sequence_options.push(SequenceOptions::Cycle(true));
2132321331 } else if self.parse_keyword(Keyword::CYCLE) {
2132421332 sequence_options.push(SequenceOptions::Cycle(false));
21325- } else if self.parse_keyword(Keyword::ORDER) || self.parse_keyword(Keyword::NOORDER) {
21326- // Snowflake ordering guarantee — accepted, no effect on emulation.
21333+ } else if self.parse_keyword(Keyword::ORDER) {
21334+ sequence_options.push(SequenceOptions::Order(true));
21335+ } else if self.parse_keyword(Keyword::NOORDER) {
21336+ sequence_options.push(SequenceOptions::Order(false));
2132721337 } else {
2132821338 break;
2132921339 }
0 commit comments