mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-10-12 15:02:07 +00:00
Support for Postgres CREATE SERVER
(#1914)
Some checks failed
license / Release Audit Tool (RAT) (push) Has been cancelled
Rust / codestyle (push) Has been cancelled
Rust / lint (push) Has been cancelled
Rust / benchmark-lint (push) Has been cancelled
Rust / compile (push) Has been cancelled
Rust / docs (push) Has been cancelled
Rust / compile-no-std (push) Has been cancelled
Rust / test (beta) (push) Has been cancelled
Rust / test (nightly) (push) Has been cancelled
Rust / test (stable) (push) Has been cancelled
Some checks failed
license / Release Audit Tool (RAT) (push) Has been cancelled
Rust / codestyle (push) Has been cancelled
Rust / lint (push) Has been cancelled
Rust / benchmark-lint (push) Has been cancelled
Rust / compile (push) Has been cancelled
Rust / docs (push) Has been cancelled
Rust / compile-no-std (push) Has been cancelled
Rust / test (beta) (push) Has been cancelled
Rust / test (nightly) (push) Has been cancelled
Rust / test (stable) (push) Has been cancelled
Co-authored-by: Ifeanyi Ubah <ify1992@yahoo.com>
This commit is contained in:
parent
9020385c02
commit
239e30a97c
5 changed files with 196 additions and 0 deletions
|
@ -3318,6 +3318,8 @@ pub enum Statement {
|
|||
secret_type: Ident,
|
||||
options: Vec<SecretOption>,
|
||||
},
|
||||
/// A `CREATE SERVER` statement.
|
||||
CreateServer(CreateServerStatement),
|
||||
/// ```sql
|
||||
/// CREATE POLICY
|
||||
/// ```
|
||||
|
@ -5178,6 +5180,9 @@ impl fmt::Display for Statement {
|
|||
write!(f, " )")?;
|
||||
Ok(())
|
||||
}
|
||||
Statement::CreateServer(stmt) => {
|
||||
write!(f, "{stmt}")
|
||||
}
|
||||
Statement::CreatePolicy {
|
||||
name,
|
||||
table_name,
|
||||
|
@ -7976,6 +7981,70 @@ impl fmt::Display for SecretOption {
|
|||
}
|
||||
}
|
||||
|
||||
/// A `CREATE SERVER` statement.
|
||||
///
|
||||
/// [PostgreSQL Documentation](https://www.postgresql.org/docs/current/sql-createserver.html)
|
||||
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
|
||||
pub struct CreateServerStatement {
|
||||
pub name: ObjectName,
|
||||
pub if_not_exists: bool,
|
||||
pub server_type: Option<Ident>,
|
||||
pub version: Option<Ident>,
|
||||
pub foreign_data_wrapper: ObjectName,
|
||||
pub options: Option<Vec<CreateServerOption>>,
|
||||
}
|
||||
|
||||
impl fmt::Display for CreateServerStatement {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
let CreateServerStatement {
|
||||
name,
|
||||
if_not_exists,
|
||||
server_type,
|
||||
version,
|
||||
foreign_data_wrapper,
|
||||
options,
|
||||
} = self;
|
||||
|
||||
write!(
|
||||
f,
|
||||
"CREATE SERVER {if_not_exists}{name} ",
|
||||
if_not_exists = if *if_not_exists { "IF NOT EXISTS " } else { "" },
|
||||
)?;
|
||||
|
||||
if let Some(st) = server_type {
|
||||
write!(f, "TYPE {st} ")?;
|
||||
}
|
||||
|
||||
if let Some(v) = version {
|
||||
write!(f, "VERSION {v} ")?;
|
||||
}
|
||||
|
||||
write!(f, "FOREIGN DATA WRAPPER {foreign_data_wrapper}")?;
|
||||
|
||||
if let Some(o) = options {
|
||||
write!(f, " OPTIONS ({o})", o = display_comma_separated(o))?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
|
||||
pub struct CreateServerOption {
|
||||
pub key: Ident,
|
||||
pub value: Ident,
|
||||
}
|
||||
|
||||
impl fmt::Display for CreateServerOption {
|
||||
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
write!(f, "{} {}", self.key, self.value)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
|
||||
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
|
||||
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue