@@ -8765,16 +8765,10 @@ impl<'a> Parser<'a> {
87658765 }
87668766 } else if self.parse_keywords(&[Keyword::DROP, Keyword::DEFAULT]) {
87678767 AlterColumnOperation::DropDefault {}
8768- } else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE])
8769- || (is_postgresql && self.parse_keyword(Keyword::TYPE))
8770- {
8771- let data_type = self.parse_data_type()?;
8772- let using = if is_postgresql && self.parse_keyword(Keyword::USING) {
8773- Some(self.parse_expr()?)
8774- } else {
8775- None
8776- };
8777- AlterColumnOperation::SetDataType { data_type, using }
8768+ } else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE]) {
8769+ self.parse_set_data_type(true)?
8770+ } else if self.parse_keyword(Keyword::TYPE) {
8771+ self.parse_set_data_type(false)?
87788772 } else if self.parse_keywords(&[Keyword::ADD, Keyword::GENERATED]) {
87798773 let generated_as = if self.parse_keyword(Keyword::ALWAYS) {
87808774 Some(GeneratedAs::Always)
@@ -8940,6 +8934,22 @@ impl<'a> Parser<'a> {
89408934 Ok(operation)
89418935 }
89428936
8937+ fn parse_set_data_type(&mut self, had_set: bool) -> Result<AlterColumnOperation, ParserError> {
8938+ let data_type = self.parse_data_type()?;
8939+ let using = if self.dialect.supports_alter_column_type_using()
8940+ && self.parse_keyword(Keyword::USING)
8941+ {
8942+ Some(self.parse_expr()?)
8943+ } else {
8944+ None
8945+ };
8946+ Ok(AlterColumnOperation::SetDataType {
8947+ data_type,
8948+ using,
8949+ had_set,
8950+ })
8951+ }
8952+
89438953 fn parse_part_or_partition(&mut self) -> Result<Partition, ParserError> {
89448954 let keyword = self.expect_one_of_keywords(&[Keyword::PART, Keyword::PARTITION])?;
89458955 match keyword {
0 commit comments