pub struct TruncateTableExecutor;Expand description
Executor for TRUNCATE TABLE statements
Implementations§
Source§impl TruncateTableExecutor
impl TruncateTableExecutor
Sourcepub fn execute(
stmt: &TruncateTableStmt,
database: &mut Database,
) -> Result<usize, ExecutorError>
pub fn execute( stmt: &TruncateTableStmt, database: &mut Database, ) -> Result<usize, ExecutorError>
Execute a TRUNCATE TABLE statement
§Arguments
stmt- The TRUNCATE TABLE statement AST nodedatabase- The database to truncate the table(s) in
§Returns
Total number of rows deleted from all tables or error
§Behavior
Supports truncating multiple tables in a single statement with all-or-nothing semantics:
- Validates all tables first (existence, privileges, constraints)
- Only truncates if all validations pass
- IF EXISTS: skips non-existent tables, continues with existing ones
§Examples
use vibesql_ast::{ColumnDef, CreateTableStmt, TruncateTableStmt};
use vibesql_executor::{CreateTableExecutor, TruncateTableExecutor};
use vibesql_storage::{Database, Row};
use vibesql_types::{DataType, SqlValue};
let mut db = Database::new();
let create_stmt = CreateTableStmt {
if_not_exists: false,
temporary: false,
table_name: "users".to_string(),
columns: vec![ColumnDef {
name: "id".to_string(),
data_type: DataType::Integer,
nullable: false,
constraints: vec![],
default_value: None,
comment: None,
generated_expr: None, is_exact_integer_type: false,
}],
table_constraints: vec![],
table_options: vec![],
quoted: false,
as_query: None, without_rowid: false,
};
CreateTableExecutor::execute(&create_stmt, &mut db).unwrap();
// Insert some rows
db.insert_row("users", Row::new(vec![SqlValue::Integer(1)])).unwrap();
db.insert_row("users", Row::new(vec![SqlValue::Integer(2)])).unwrap();
let stmt = TruncateTableStmt {
table_names: vec!["users".to_string()],
if_exists: false,
cascade: None,
};
let result = TruncateTableExecutor::execute(&stmt, &mut db);
assert_eq!(result.unwrap(), 2); // 2 rows deleted
assert_eq!(db.get_table("users").unwrap().row_count(), 0);Auto Trait Implementations§
impl Freeze for TruncateTableExecutor
impl RefUnwindSafe for TruncateTableExecutor
impl Send for TruncateTableExecutor
impl Sync for TruncateTableExecutor
impl Unpin for TruncateTableExecutor
impl UnwindSafe for TruncateTableExecutor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more