Postgresql: Add REPLICA IDENTITY operation for ALTER TABLE (#1844)

This commit is contained in:
Mohamed Abdeen 2025-05-14 08:40:44 +01:00 committed by GitHub
parent 74a95fdbd1
commit c6e897dc12
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 80 additions and 2 deletions

View file

@ -8774,6 +8774,23 @@ impl<'a> Parser<'a> {
let equals = self.consume_token(&Token::Eq);
let value = self.parse_number_value()?;
AlterTableOperation::AutoIncrement { equals, value }
} else if self.parse_keywords(&[Keyword::REPLICA, Keyword::IDENTITY]) {
let identity = if self.parse_keyword(Keyword::NONE) {
ReplicaIdentity::None
} else if self.parse_keyword(Keyword::FULL) {
ReplicaIdentity::Full
} else if self.parse_keyword(Keyword::DEFAULT) {
ReplicaIdentity::Default
} else if self.parse_keywords(&[Keyword::USING, Keyword::INDEX]) {
ReplicaIdentity::Index(self.parse_identifier()?)
} else {
return self.expected(
"NONE, FULL, DEFAULT, or USING INDEX index_name after REPLICA IDENTITY",
self.peek_token(),
);
};
AlterTableOperation::ReplicaIdentity { identity }
} else {
let options: Vec<SqlOption> =
self.parse_options_with_keywords(&[Keyword::SET, Keyword::TBLPROPERTIES])?;
@ -8783,7 +8800,7 @@ impl<'a> Parser<'a> {
}
} else {
return self.expected(
"ADD, RENAME, PARTITION, SWAP, DROP, or SET TBLPROPERTIES after ALTER TABLE",
"ADD, RENAME, PARTITION, SWAP, DROP, REPLICA IDENTITY, or SET TBLPROPERTIES after ALTER TABLE",
self.peek_token(),
);
}