Support TO in CREATE VIEW clause for Clickhouse (#1313)

Co-authored-by: Ifeanyi Ubah <ify1992@yahoo.com>
Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
This commit is contained in:
Bidaya0 2024-06-23 19:13:16 +08:00 committed by GitHub
parent f16c1afed0
commit f3d2f78fb2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 51 additions and 2 deletions

View file

@ -2029,6 +2029,9 @@ pub enum Statement {
if_not_exists: bool,
/// if true, has SQLite `TEMP` or `TEMPORARY` clause <https://www.sqlite.org/lang_createview.html>
temporary: bool,
/// if not None, has Clickhouse `TO` clause, specify the table into which to insert results
/// <https://clickhouse.com/docs/en/sql-reference/statements/create/view#materialized-view>
to: Option<ObjectName>,
},
/// ```sql
/// CREATE TABLE
@ -3329,15 +3332,20 @@ impl fmt::Display for Statement {
with_no_schema_binding,
if_not_exists,
temporary,
to,
} => {
write!(
f,
"CREATE {or_replace}{materialized}{temporary}VIEW {if_not_exists}{name}",
"CREATE {or_replace}{materialized}{temporary}VIEW {if_not_exists}{name}{to}",
or_replace = if *or_replace { "OR REPLACE " } else { "" },
materialized = if *materialized { "MATERIALIZED " } else { "" },
name = name,
temporary = if *temporary { "TEMPORARY " } else { "" },
if_not_exists = if *if_not_exists { "IF NOT EXISTS " } else { "" }
if_not_exists = if *if_not_exists { "IF NOT EXISTS " } else { "" },
to = to
.as_ref()
.map(|to| format!(" TO {to}"))
.unwrap_or_default()
)?;
if let Some(comment) = comment {
write!(