@@ -8734,16 +8734,10 @@ impl<'a> Parser<'a> {
87348734 }
87358735 } else if self.parse_keywords(&[Keyword::DROP, Keyword::DEFAULT]) {
87368736 AlterColumnOperation::DropDefault {}
8737- } else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE])
8738- || (is_postgresql && self.parse_keyword(Keyword::TYPE))
8739- {
8740- let data_type = self.parse_data_type()?;
8741- let using = if is_postgresql && self.parse_keyword(Keyword::USING) {
8742- Some(self.parse_expr()?)
8743- } else {
8744- None
8745- };
8746- AlterColumnOperation::SetDataType { data_type, using }
8737+ } else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE]) {
8738+ self.parse_set_data_type(true)?
8739+ } else if self.parse_keyword(Keyword::TYPE) {
8740+ self.parse_set_data_type(false)?
87478741 } else if self.parse_keywords(&[Keyword::ADD, Keyword::GENERATED]) {
87488742 let generated_as = if self.parse_keyword(Keyword::ALWAYS) {
87498743 Some(GeneratedAs::Always)
@@ -8909,6 +8903,22 @@ impl<'a> Parser<'a> {
89098903 Ok(operation)
89108904 }
89118905
8906+ fn parse_set_data_type(&mut self, had_set: bool) -> Result<AlterColumnOperation, ParserError> {
8907+ let data_type = self.parse_data_type()?;
8908+ let using = if self.dialect.supports_alter_column_type_using()
8909+ && self.parse_keyword(Keyword::USING)
8910+ {
8911+ Some(self.parse_expr()?)
8912+ } else {
8913+ None
8914+ };
8915+ Ok(AlterColumnOperation::SetDataType {
8916+ data_type,
8917+ using,
8918+ had_set,
8919+ })
8920+ }
8921+
89128922 fn parse_part_or_partition(&mut self) -> Result<Partition, ParserError> {
89138923 let keyword = self.expect_one_of_keywords(&[Keyword::PART, Keyword::PARTITION])?;
89148924 match keyword {
0 commit comments