mirror of
https://github.com/tursodatabase/limbo.git
synced 2025-12-23 08:21:09 +00:00
Avoid allocation when no triggers exist
This commit is contained in:
parent
d33c294380
commit
2674145937
1 changed files with 13 additions and 13 deletions
|
|
@ -320,19 +320,6 @@ pub fn translate_insert(
|
|||
}
|
||||
|
||||
// Fire BEFORE INSERT triggers
|
||||
// Build NEW registers: for rowid alias columns, use the rowid register; otherwise use column register
|
||||
let new_registers: Vec<usize> = insertion
|
||||
.col_mappings
|
||||
.iter()
|
||||
.map(|col_mapping| {
|
||||
if col_mapping.column.is_rowid_alias() {
|
||||
insertion.key_register()
|
||||
} else {
|
||||
col_mapping.register
|
||||
}
|
||||
})
|
||||
.chain(std::iter::once(insertion.key_register()))
|
||||
.collect();
|
||||
|
||||
let relevant_before_triggers = get_relevant_triggers_type_and_time(
|
||||
resolver.schema,
|
||||
|
|
@ -343,6 +330,19 @@ pub fn translate_insert(
|
|||
);
|
||||
let has_relevant_before_triggers = relevant_before_triggers.clone().count() > 0;
|
||||
if has_relevant_before_triggers {
|
||||
// Build NEW registers: for rowid alias columns, use the rowid register; otherwise use column register
|
||||
let new_registers: Vec<usize> = insertion
|
||||
.col_mappings
|
||||
.iter()
|
||||
.map(|col_mapping| {
|
||||
if col_mapping.column.is_rowid_alias() {
|
||||
insertion.key_register()
|
||||
} else {
|
||||
col_mapping.register
|
||||
}
|
||||
})
|
||||
.chain(std::iter::once(insertion.key_register()))
|
||||
.collect();
|
||||
let trigger_ctx = TriggerContext::new(
|
||||
btree_table.clone(),
|
||||
Some(new_registers),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue