vibesql_executor/advanced_objects/
assertions.rs

1//! Executor for ASSERTION objects (SQL:1999 Feature F671/F672)
2
3use vibesql_ast::*;
4use vibesql_storage::Database;
5
6use crate::errors::ExecutorError;
7
8/// Execute CREATE ASSERTION statement (SQL:1999 Feature F671/F672)
9pub fn execute_create_assertion(
10    stmt: &CreateAssertionStmt,
11    db: &mut Database,
12) -> Result<(), ExecutorError> {
13    use vibesql_catalog::Assertion;
14
15    let assertion = Assertion::new(stmt.assertion_name.clone(), (*stmt.check_condition).clone());
16
17    db.catalog.create_assertion(assertion)?;
18    Ok(())
19}
20
21/// Execute DROP ASSERTION statement (SQL:1999 Feature F671/F672)
22pub fn execute_drop_assertion(
23    stmt: &DropAssertionStmt,
24    db: &mut Database,
25) -> Result<(), ExecutorError> {
26    db.catalog.drop_assertion(&stmt.assertion_name, stmt.cascade)?;
27    Ok(())
28}