pub struct TriggerFirer;Expand description
Helper struct for trigger firing (execution during DML operations)
Implementations§
Source§impl TriggerFirer
impl TriggerFirer
Sourcepub fn find_triggers(
db: &Database,
table_name: &str,
timing: TriggerTiming,
event: TriggerEvent,
) -> Vec<TriggerDefinition>
pub fn find_triggers( db: &Database, table_name: &str, timing: TriggerTiming, event: TriggerEvent, ) -> Vec<TriggerDefinition>
Find triggers for a table and event
§Arguments
db- Database referencetable_name- Name of the table to find triggers fortiming- Trigger timing (BEFORE, AFTER, INSTEAD OF)event- Trigger event (INSERT, UPDATE, DELETE)
§Returns
Vector of trigger definitions matching the criteria, sorted by creation order
Sourcepub fn find_triggers_in_schema(
db: &Database,
table_name: &str,
timing: TriggerTiming,
event: TriggerEvent,
dml_schema: Option<&str>,
) -> Vec<TriggerDefinition>
pub fn find_triggers_in_schema( db: &Database, table_name: &str, timing: TriggerTiming, event: TriggerEvent, dml_schema: Option<&str>, ) -> Vec<TriggerDefinition>
Find triggers for a table and event, restricted to the schema the DML target table resolved to.
dml_schema is the internal schema name (main or temp_<id>) the target
table resolved to for the current statement (see
[Catalog::resolve_table_schema_name]). When None, no schema filtering
is applied (legacy schema-unaware behavior). Schema-aware firing keeps a
main trigger from firing on a same-named temp table and vice versa
(triggerD-3.1/3.2).
Sourcepub fn execute_trigger(
db: &mut Database,
trigger: &TriggerDefinition,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_trigger( db: &mut Database, trigger: &TriggerDefinition, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<TriggerOutcome, ExecutorError>
Execute a single trigger
§Arguments
db- Mutable database referencetrigger- Trigger definition to executeold_row- OLD row for UPDATE/DELETE (None for INSERT)new_row- NEW row for INSERT/UPDATE (None for DELETE)
§Returns
Ok(()) if trigger executed successfully, Err if execution failed
§Notes
- For ROW-level triggers, this is called once per affected row
- For STATEMENT-level triggers, this is called once per statement
- WHEN conditions are evaluated here
Sourcepub fn parse_trigger_sql(sql: &str) -> Result<Vec<Statement>, ExecutorError>
pub fn parse_trigger_sql(sql: &str) -> Result<Vec<Statement>, ExecutorError>
Parse trigger SQL into statements
Public so that validation layers (e.g. the Raft replication
freeze pass in vibesql-consensus::freeze, #5381) can inspect a
trigger body with exactly the parsing this executor will use
when the trigger fires — validating against a different parse
would silently let nondeterminism through.
§Arguments
sql- Raw SQL string from trigger action
§Returns
Vector of parsed statements
Sourcepub fn execute_before_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_before_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<TriggerOutcome, ExecutorError>
Execute all BEFORE ROW-level triggers for an operation
§Arguments
db- Mutable database referencetable_name- Name of the tableevent- Trigger event (INSERT, UPDATE, DELETE)old_row- OLD row (for UPDATE/DELETE)new_row- NEW row (for INSERT/UPDATE)
§Returns
Ok(()) if all triggers executed successfully
Sourcepub fn execute_before_triggers_in_schema(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
dml_schema: Option<&str>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_before_triggers_in_schema( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, dml_schema: Option<&str>, ) -> Result<TriggerOutcome, ExecutorError>
Schema-aware variant of Self::execute_before_triggers.
dml_schema is the internal schema name the DML target resolved to; only
triggers bound to that schema fire (triggerD-3.1/3.2). None preserves the
legacy schema-unaware behavior.
Sourcepub fn execute_before_statement_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_before_statement_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, ) -> Result<TriggerOutcome, ExecutorError>
Sourcepub fn execute_before_statement_triggers_in_schema(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
dml_schema: Option<&str>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_before_statement_triggers_in_schema( db: &mut Database, table_name: &str, event: TriggerEvent, dml_schema: Option<&str>, ) -> Result<TriggerOutcome, ExecutorError>
Schema-aware variant of Self::execute_before_statement_triggers.
Sourcepub fn execute_after_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_after_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, ) -> Result<TriggerOutcome, ExecutorError>
Execute all AFTER ROW-level triggers for an operation
§Arguments
db- Mutable database referencetable_name- Name of the tableevent- Trigger event (INSERT, UPDATE, DELETE)old_row- OLD row (for UPDATE/DELETE)new_row- NEW row (for INSERT/UPDATE)
§Returns
Ok(()) if all triggers executed successfully
Sourcepub fn execute_after_triggers_in_schema(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
old_row: Option<&Row>,
new_row: Option<&Row>,
dml_schema: Option<&str>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_after_triggers_in_schema( db: &mut Database, table_name: &str, event: TriggerEvent, old_row: Option<&Row>, new_row: Option<&Row>, dml_schema: Option<&str>, ) -> Result<TriggerOutcome, ExecutorError>
Schema-aware variant of Self::execute_after_triggers.
Sourcepub fn execute_after_statement_triggers(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_after_statement_triggers( db: &mut Database, table_name: &str, event: TriggerEvent, ) -> Result<TriggerOutcome, ExecutorError>
Sourcepub fn execute_after_statement_triggers_in_schema(
db: &mut Database,
table_name: &str,
event: TriggerEvent,
dml_schema: Option<&str>,
) -> Result<TriggerOutcome, ExecutorError>
pub fn execute_after_statement_triggers_in_schema( db: &mut Database, table_name: &str, event: TriggerEvent, dml_schema: Option<&str>, ) -> Result<TriggerOutcome, ExecutorError>
Schema-aware variant of Self::execute_after_statement_triggers.
Auto Trait Implementations§
impl Freeze for TriggerFirer
impl RefUnwindSafe for TriggerFirer
impl Send for TriggerFirer
impl Sync for TriggerFirer
impl Unpin for TriggerFirer
impl UnsafeUnpin for TriggerFirer
impl UnwindSafe for TriggerFirer
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> ⓘ
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> ⓘ
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