Skip to content

Commit 0db37d3

Browse files
authored
Merge pull request vlcn-io#3 from somtochiama/recreate-all-triggers
Recreate all triggers when commit_alter is run for non-destructive changes
2 parents b4e278d + 9cd3b4c commit 0db37d3

File tree

2 files changed

+2
-29
lines changed

2 files changed

+2
-29
lines changed

core/rs/core/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ use sqlite_nostd as sqlite;
6767
use sqlite_nostd::{Connection, Context, Value};
6868
use tableinfo::{crsql_ensure_table_infos_are_up_to_date, is_table_compatible, pull_table_info};
6969
use teardown::*;
70-
use triggers::recreate_update_triggers;
70+
use triggers::create_triggers;
7171

7272
pub extern "C" fn crsql_as_table(
7373
ctx: *mut sqlite::context,
@@ -667,7 +667,7 @@ unsafe extern "C" fn x_crsql_commit_alter(
667667
let rc = if non_destructive {
668668
match pull_table_info(db, table_name, &mut err_msg as *mut _) {
669669
Ok(table_info) => {
670-
match recreate_update_triggers(db, &table_info, &mut err_msg as *mut _) {
670+
match create_triggers(db, &table_info, &mut err_msg) {
671671
Ok(ResultCode::OK) => {
672672
// need to ensure the right table infos in ext data
673673
crsql_ensure_table_infos_are_up_to_date(

core/rs/core/src/triggers.rs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,6 @@ use sqlite_nostd as sqlite;
99

1010
use crate::tableinfo::TableInfo;
1111

12-
pub fn recreate_update_triggers(
13-
db: *mut sqlite3,
14-
table_info: &TableInfo,
15-
err: *mut *mut c_char,
16-
) -> Result<ResultCode, ResultCode> {
17-
db.exec_safe(&format!(
18-
"DROP TRIGGER IF EXISTS \"{table}__crsql_utrig\"",
19-
table = crate::util::escape_ident(&table_info.tbl_name)
20-
))?;
21-
22-
// get all columns of table
23-
// iterate pk cols
24-
// drop triggers against those pk cols
25-
let stmt = db.prepare_v2("SELECT name FROM pragma_table_info(?) WHERE pk > 0")?;
26-
stmt.bind_text(1, &table_info.tbl_name, sqlite::Destructor::STATIC)?;
27-
while stmt.step()? == ResultCode::ROW {
28-
let col_name = stmt.column_text(0)?;
29-
db.exec_safe(&format!(
30-
"DROP TRIGGER IF EXISTS \"{tbl_name}_{col_name}__crsql_utrig\"",
31-
tbl_name = crate::util::escape_ident(&table_info.tbl_name),
32-
col_name = crate::util::escape_ident(col_name),
33-
))?;
34-
}
35-
36-
create_update_trigger(db, table_info, err)
37-
}
38-
3912
pub fn create_triggers(
4013
db: *mut sqlite3,
4114
table_info: &TableInfo,

0 commit comments

Comments
 (0)