vibesql_executor/advanced_objects/
sequences.rs

1//! Executor for SEQUENCE objects (SQL:1999)
2
3use vibesql_ast::*;
4use vibesql_storage::Database;
5
6use crate::errors::ExecutorError;
7
8/// Execute CREATE SEQUENCE statement
9pub fn execute_create_sequence(
10    stmt: &CreateSequenceStmt,
11    db: &mut Database,
12) -> Result<(), ExecutorError> {
13    db.catalog.create_sequence(
14        stmt.sequence_name.clone(),
15        stmt.start_with,
16        stmt.increment_by,
17        stmt.min_value,
18        stmt.max_value,
19        stmt.cycle,
20    )?;
21    Ok(())
22}
23
24/// Execute DROP SEQUENCE statement
25pub fn execute_drop_sequence(
26    stmt: &DropSequenceStmt,
27    db: &mut Database,
28) -> Result<(), ExecutorError> {
29    // Handle CASCADE to remove sequence dependencies from columns
30    db.catalog.drop_sequence(&stmt.sequence_name, stmt.cascade)?;
31    Ok(())
32}
33
34/// Execute ALTER SEQUENCE statement
35pub fn execute_alter_sequence(
36    stmt: &AlterSequenceStmt,
37    db: &mut Database,
38) -> Result<(), ExecutorError> {
39    db.catalog.alter_sequence(
40        &stmt.sequence_name,
41        stmt.restart_with,
42        stmt.increment_by,
43        stmt.min_value,
44        stmt.max_value,
45        stmt.cycle,
46    )?;
47    Ok(())
48}