Improve ALTER error messages for unsupported syntax

This commit is contained in:
Nickolay Ponomarev 2019-04-27 04:01:10 +03:00
parent 787cd9a717
commit d65274bc31

View file

@ -846,20 +846,20 @@ impl Parser {
self.expect_keyword("TABLE")?; self.expect_keyword("TABLE")?;
let _ = self.parse_keyword("ONLY"); let _ = self.parse_keyword("ONLY");
let table_name = self.parse_object_name()?; let table_name = self.parse_object_name()?;
let operation: Result<AlterOperation, ParserError> = let operation = if self.parse_keyword("ADD") {
if self.parse_keywords(vec!["ADD", "CONSTRAINT"]) { if self.parse_keyword("CONSTRAINT") {
let constraint_name = self.parse_identifier()?; let constraint_name = self.parse_identifier()?;
let table_key = self.parse_table_key(constraint_name)?; let table_key = self.parse_table_key(constraint_name)?;
Ok(AlterOperation::AddConstraint(table_key)) AlterOperation::AddConstraint(table_key)
} else { } else {
return parser_err!(format!( return self.expected("CONSTRAINT after ADD", self.peek_token());
"Expecting ADD CONSTRAINT, found :{:?}", }
self.peek_token() } else {
)); return self.expected("ADD after ALTER TABLE", self.peek_token());
}; };
Ok(SQLStatement::SQLAlterTable { Ok(SQLStatement::SQLAlterTable {
name: table_name, name: table_name,
operation: operation?, operation,
}) })
} }