@@ -2263,6 +2263,116 @@
/// CREATE SCHEMA statement
#[derive(Debug, Clone, PartialEq)]
+pub struct CreateSequenceStatement {
+ pub token: Token,
+ pub name: TableName,
+ pub if_not_exists: bool,
+ pub start_with: Option<i64>,
+ pub increment_by: Option<i64>,
+ pub min_value: Option<i64>,
+ pub max_value: Option<i64>,
+ pub cycle: bool,
+}
+
+impl fmt::Display for CreateSequenceStatement {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "CREATE SEQUENCE ")?;
+ if self.if_not_exists {
+ write!(f, "IF NOT EXISTS ")?;
+ }
+ write!(f, "{}", self.name)?;
+ if let Some(v) = self.start_with {
+ write!(f, " START WITH {}", v)?;
+ }
+ if let Some(v) = self.increment_by {
+ write!(f, " INCREMENT BY {}", v)?;
+ }
+ if let Some(v) = self.min_value {
+ write!(f, " MINVALUE {}", v)?;
+ }
+ if let Some(v) = self.max_value {
+ write!(f, " MAXVALUE {}", v)?;
+ }
+ if self.cycle {
+ write!(f, " CYCLE")?;
+ }
+ Ok(())
+ }
+}
+
+impl Node for CreateSequenceStatement {
+ fn token_literal(&self) -> &str {
+ self.token.literal()
+ }
+ fn position(&self) -> Position {
+ self.token.position
+ }
+}
+
+/// ALTER SEQUENCE statement
+#[derive(Debug, Clone, PartialEq)]
+pub struct AlterSequenceStatement {
+ pub token: Token,
+ pub name: TableName,
+ pub if_exists: bool,
+ pub restart_with: Option<i64>,
+ pub increment_by: Option<i64>,
+ pub min_value: Option<i64>,
+ pub max_value: Option<i64>,
+ pub cycle: Option<bool>,
+}
+
+impl fmt::Display for AlterSequenceStatement {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "ALTER SEQUENCE ")?;
+ if self.if_exists {
+ write!(f, "IF EXISTS ")?;
+ }
+ write!(f, "{}", self.name)?;
+ if let Some(v) = self.restart_with {
+ write!(f, " RESTART WITH {}", v)?;
+ }
+ if let Some(v) = self.increment_by {
+ write!(f, " INCREMENT BY {}", v)?;
+ }
+ if let Some(v) = self.min_value {
+ write!(f, " MINVALUE {}", v)?;
+ }
+ if let Some(v) = self.max_value {
+ write!(f, " MAXVALUE {}", v)?;
+ }
+ if let Some(v) = self.cycle {
+ write!(f, " {}", if v { "CYCLE" } else { "NO CYCLE" })?;
+ }
+ Ok(())
+ }
+}
+
+impl Node for AlterSequenceStatement {
+ fn token_literal(&self) -> &str {
+ self.token.literal()
+ }
+ fn position(&self) -> Position {
+ self.token.position
+ }
+}
+
+/// DROP SEQUENCE statement
+#[derive(Debug, Clone, PartialEq)]
+pub struct DropSequenceStatement {
+ pub token: Token,
+ pub name: TableName,
+ pub if_exists: bool,
+}
+
+impl fmt::Display for DropSequenceStatement {
+ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
+ write!(f, "DROP SEQUENCE ")?;
+ if self.if_exists {
+ write!(f, "IF EXISTS ")?;
+ }
+ write!(f, "{}", self.name)
+ }
+}
+
+impl Node for DropSequenceStatement {
+ fn token_literal(&self) -> &str {
+ self.token.literal()
+ }
+ fn position(&self) -> Position {
+ self.token.position
+ }
+}
+
+/// CREATE SCHEMA statement
+#[derive(Debug, Clone, PartialEq)]
pub struct CreateSchemaStatement {