mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-10-15 00:09:02 +00:00
ISSUE-1147: Add support for MATERIALIZED CTEs (#1148)
Co-authored-by: Andrew Repp <arepp@cloudflare.com> Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
This commit is contained in:
parent
57113a9344
commit
0c5f6fbf81
5 changed files with 65 additions and 9 deletions
|
@ -6921,6 +6921,14 @@ impl<'a> Parser<'a> {
|
|||
let name = self.parse_identifier(false)?;
|
||||
|
||||
let mut cte = if self.parse_keyword(Keyword::AS) {
|
||||
let mut is_materialized = None;
|
||||
if dialect_of!(self is PostgreSqlDialect) {
|
||||
if self.parse_keyword(Keyword::MATERIALIZED) {
|
||||
is_materialized = Some(CteAsMaterialized::Materialized);
|
||||
} else if self.parse_keywords(&[Keyword::NOT, Keyword::MATERIALIZED]) {
|
||||
is_materialized = Some(CteAsMaterialized::NotMaterialized);
|
||||
}
|
||||
}
|
||||
self.expect_token(&Token::LParen)?;
|
||||
let query = Box::new(self.parse_query()?);
|
||||
self.expect_token(&Token::RParen)?;
|
||||
|
@ -6932,10 +6940,19 @@ impl<'a> Parser<'a> {
|
|||
alias,
|
||||
query,
|
||||
from: None,
|
||||
materialized: is_materialized,
|
||||
}
|
||||
} else {
|
||||
let columns = self.parse_parenthesized_column_list(Optional, false)?;
|
||||
self.expect_keyword(Keyword::AS)?;
|
||||
let mut is_materialized = None;
|
||||
if dialect_of!(self is PostgreSqlDialect) {
|
||||
if self.parse_keyword(Keyword::MATERIALIZED) {
|
||||
is_materialized = Some(CteAsMaterialized::Materialized);
|
||||
} else if self.parse_keywords(&[Keyword::NOT, Keyword::MATERIALIZED]) {
|
||||
is_materialized = Some(CteAsMaterialized::NotMaterialized);
|
||||
}
|
||||
}
|
||||
self.expect_token(&Token::LParen)?;
|
||||
let query = Box::new(self.parse_query()?);
|
||||
self.expect_token(&Token::RParen)?;
|
||||
|
@ -6944,6 +6961,7 @@ impl<'a> Parser<'a> {
|
|||
alias,
|
||||
query,
|
||||
from: None,
|
||||
materialized: is_materialized,
|
||||
}
|
||||
};
|
||||
if self.parse_keyword(Keyword::FROM) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue