@@ -35,7 +35,7 @@
"CREATE" => self.parse_create_statement(),
"DROP" => self.parse_drop_statement(),
"CALL" => self.parse_call_statement().map(Statement::Call),
- "ALTER" => self.parse_alter_statement().map(Statement::AlterTable),
+ "ALTER" => self.parse_alter_statement(),
"USE" => self.parse_use_statement().map(Statement::UseSchema),
"BEGIN" => self.parse_begin_statement().map(Statement::Begin),
"COMMIT" => self.parse_commit_statement().map(Statement::Commit),
@@ -1313,6 +1313,10 @@
self.next_token();
self.parse_create_schema_statement()
.map(Statement::CreateSchema)
+ } else if self.peek_token_is_keyword("SEQUENCE") {
+ self.next_token();
+ self.parse_create_sequence_statement()
+ .map(Statement::CreateSequence)
} else if self.peek_token_is_keyword("FUNCTION") {
self.next_token();
self.parse_create_function_statement()
@@ -2537,6 +2541,10 @@
self.next_token();
self.parse_drop_schema_statement()
.map(Statement::DropSchema)
+ } else if self.peek_token_is_keyword("SEQUENCE") {
+ self.next_token();
+ self.parse_drop_sequence_statement()
+ .map(Statement::DropSequence)
} else if self.peek_token_is_keyword("FUNCTION") {
self.next_token();
self.parse_drop_function_statement()
@@ -2583,14 +2591,24 @@
}
}
- fn parse_alter_statement(&mut self) -> Option<AlterTableStatement> {
+ fn parse_alter_statement(&mut self) -> Option<Statement> {
let token = self.cur_token.clone();
+ if self.peek_token_is_keyword("SEQUENCE") {
+ self.next_token(); // CONSUME 'SEQUENCE'
+ return self.parse_alter_sequence_statement().map(Statement::AlterSequence);
+ }
+
// Expect TABLE
if !self.expect_keyword("TABLE") {
return None;
}
+ self.parse_alter_table_statement(token).map(Statement::AlterTable)
+ }
+
+ fn parse_alter_table_statement(&mut self, token: Token) -> Option<AlterTableStatement> {
// Parse table name
if !self.expect_peek(TokenType::Identifier) {
return None;