Allow foreign table constraint without columns (#1608)

This commit is contained in:
Ramnivas Laddad 2024-12-19 01:10:53 -08:00 committed by GitHub
parent fac84d81ee
commit 6523dabcf8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 6 additions and 3 deletions

View file

@ -885,12 +885,14 @@ impl fmt::Display for TableConstraint {
} => {
write!(
f,
"{}FOREIGN KEY ({}) REFERENCES {}({})",
"{}FOREIGN KEY ({}) REFERENCES {}",
display_constraint_name(name),
display_comma_separated(columns),
foreign_table,
display_comma_separated(referred_columns),
)?;
if !referred_columns.is_empty() {
write!(f, "({})", display_comma_separated(referred_columns))?;
}
if let Some(action) = on_delete {
write!(f, " ON DELETE {action}")?;
}

View file

@ -6830,7 +6830,7 @@ impl<'a> Parser<'a> {
let columns = self.parse_parenthesized_column_list(Mandatory, false)?;
self.expect_keyword(Keyword::REFERENCES)?;
let foreign_table = self.parse_object_name(false)?;
let referred_columns = self.parse_parenthesized_column_list(Mandatory, false)?;
let referred_columns = self.parse_parenthesized_column_list(Optional, false)?;
let mut on_delete = None;
let mut on_update = None;
loop {

View file

@ -4167,6 +4167,7 @@ fn parse_alter_table_constraints() {
check_one("UNIQUE (id)");
check_one("FOREIGN KEY (foo, bar) REFERENCES AnotherTable(foo, bar)");
check_one("CHECK (end_date > start_date OR end_date IS NULL)");
check_one("CONSTRAINT fk FOREIGN KEY (lng) REFERENCES othertable4");
fn check_one(constraint_text: &str) {
match alter_table_op(verified_stmt(&format!(