mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-19 05:30:19 +00:00
Add support for ClickHouse DDL query syntax (on cluster
) (#527)
* Add on_cluster to Statement::CreateTable * Add printing of on_cluster * Update src/ast/mod.rs Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org> * Fix fmt + nostd * Remove unintended diff Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
This commit is contained in:
parent
f74753436a
commit
16af309c74
3 changed files with 46 additions and 0 deletions
|
@ -1826,6 +1826,7 @@ impl<'a> Parser<'a> {
|
|||
engine: None,
|
||||
collation: None,
|
||||
on_commit: None,
|
||||
on_cluster: None,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -2107,6 +2108,18 @@ impl<'a> Parser<'a> {
|
|||
) -> Result<Statement, ParserError> {
|
||||
let if_not_exists = self.parse_keywords(&[Keyword::IF, Keyword::NOT, Keyword::EXISTS]);
|
||||
let table_name = self.parse_object_name()?;
|
||||
|
||||
// Clickhouse has `ON CLUSTER 'cluster'` syntax for DDLs
|
||||
let on_cluster = if self.parse_keywords(&[Keyword::ON, Keyword::CLUSTER]) {
|
||||
match self.next_token() {
|
||||
Token::SingleQuotedString(s) => Some(s),
|
||||
Token::Word(s) => Some(s.to_string()),
|
||||
unexpected => self.expected("identifier or cluster literal", unexpected)?,
|
||||
}
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let like = if self.parse_keyword(Keyword::LIKE) || self.parse_keyword(Keyword::ILIKE) {
|
||||
self.parse_object_name().ok()
|
||||
} else {
|
||||
|
@ -2207,6 +2220,7 @@ impl<'a> Parser<'a> {
|
|||
default_charset,
|
||||
collation,
|
||||
on_commit,
|
||||
on_cluster,
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue