mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-10-07 04:30:24 +00:00
Redshift alter column type no set (#1912)
This commit is contained in:
parent
a3398223d7
commit
015caca611
7 changed files with 59 additions and 28 deletions
|
@ -8734,16 +8734,10 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
} else if self.parse_keywords(&[Keyword::DROP, Keyword::DEFAULT]) {
|
||||
AlterColumnOperation::DropDefault {}
|
||||
} else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE])
|
||||
|| (is_postgresql && self.parse_keyword(Keyword::TYPE))
|
||||
{
|
||||
let data_type = self.parse_data_type()?;
|
||||
let using = if is_postgresql && self.parse_keyword(Keyword::USING) {
|
||||
Some(self.parse_expr()?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
AlterColumnOperation::SetDataType { data_type, using }
|
||||
} else if self.parse_keywords(&[Keyword::SET, Keyword::DATA, Keyword::TYPE]) {
|
||||
self.parse_set_data_type(true)?
|
||||
} else if self.parse_keyword(Keyword::TYPE) {
|
||||
self.parse_set_data_type(false)?
|
||||
} else if self.parse_keywords(&[Keyword::ADD, Keyword::GENERATED]) {
|
||||
let generated_as = if self.parse_keyword(Keyword::ALWAYS) {
|
||||
Some(GeneratedAs::Always)
|
||||
|
@ -8909,6 +8903,22 @@ impl<'a> Parser<'a> {
|
|||
Ok(operation)
|
||||
}
|
||||
|
||||
fn parse_set_data_type(&mut self, had_set: bool) -> Result<AlterColumnOperation, ParserError> {
|
||||
let data_type = self.parse_data_type()?;
|
||||
let using = if self.dialect.supports_alter_column_type_using()
|
||||
&& self.parse_keyword(Keyword::USING)
|
||||
{
|
||||
Some(self.parse_expr()?)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
Ok(AlterColumnOperation::SetDataType {
|
||||
data_type,
|
||||
using,
|
||||
had_set,
|
||||
})
|
||||
}
|
||||
|
||||
fn parse_part_or_partition(&mut self) -> Result<Partition, ParserError> {
|
||||
let keyword = self.expect_one_of_keywords(&[Keyword::PART, Keyword::PARTITION])?;
|
||||
match keyword {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue