Skip to content

Commit 32384f7

Browse files
authored
Merge pull request #72 from powersync-ja/fix-schema-duplicate-change
Fix unecessary schema changes
2 parents 410cd77 + b1ff8b8 commit 32384f7

File tree

9 files changed

+359
-14
lines changed

9 files changed

+359
-14
lines changed

Cargo.lock

+4-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ inherits = "release"
2929
inherits = "wasm"
3030

3131
[workspace.package]
32-
version = "0.3.13"
32+
version = "0.3.14"
3333
edition = "2021"
3434
authors = ["JourneyApps"]
3535
keywords = ["sqlite", "powersync"]

android/build.gradle.kts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = "co.powersync"
9-
version = "0.3.13"
9+
version = "0.3.14"
1010
description = "PowerSync Core SQLite Extension"
1111

1212
repositories {

android/src/prefab/prefab.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
"name": "powersync_sqlite_core",
33
"schema_version": 2,
44
"dependencies": [],
5-
"version": "0.3.13"
5+
"version": "0.3.14"
66
}

crates/core/src/view_admin.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ fn setup_internal_views(db: *mut sqlite::sqlite3) -> Result<(), ResultCode> {
213213
AS SELECT
214214
view.name name,
215215
view.sql sql,
216-
ifnull(trigger1.sql, '') delete_trigger_sql,
216+
ifnull(group_concat(trigger1.sql, ';\n' ORDER BY trigger1.name DESC), '') delete_trigger_sql,
217217
ifnull(trigger2.sql, '') insert_trigger_sql,
218218
ifnull(trigger3.sql, '') update_trigger_sql
219219
FROM sqlite_master view
@@ -223,7 +223,8 @@ fn setup_internal_views(db: *mut sqlite::sqlite3) -> Result<(), ResultCode> {
223223
ON trigger2.tbl_name = view.name AND trigger2.type = 'trigger' AND trigger2.name GLOB 'ps_view_insert*'
224224
LEFT JOIN sqlite_master trigger3
225225
ON trigger3.tbl_name = view.name AND trigger3.type = 'trigger' AND trigger3.name GLOB 'ps_view_update*'
226-
WHERE view.type = 'view' AND view.sql GLOB '*-- powersync-auto-generated';
226+
WHERE view.type = 'view' AND view.sql GLOB '*-- powersync-auto-generated'
227+
GROUP BY view.name;
227228
228229
CREATE TRIGGER IF NOT EXISTS powersync_views_insert
229230
INSTEAD OF INSERT ON powersync_views

crates/core/src/views.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -129,14 +129,15 @@ DELETE FROM {internal_name} WHERE id = OLD.id;
129129
INSERT INTO powersync_crud_(data) VALUES(json_object('op', 'DELETE', 'type', {type_string}, 'id', OLD.id{old_fragment}));
130130
INSERT OR IGNORE INTO ps_updated_rows(row_type, row_id) VALUES({type_string}, OLD.id);
131131
INSERT OR REPLACE INTO ps_buckets(name, last_op, target_op) VALUES('$local', 0, {MAX_OP_ID});
132-
END;"
132+
END"
133133
);
134134

135135
// The DELETE statement can't include metadata for the delete operation, so we create
136136
// another trigger to delete with a fake UPDATE syntax.
137137
if table_info.flags.include_metadata() {
138138
let trigger_name = quote_identifier_prefixed("ps_view_delete2_", view_name);
139139
write!(&mut trigger, "\
140+
;
140141
CREATE TRIGGER {trigger_name}
141142
INSTEAD OF UPDATE ON {quoted_name}
142143
FOR EACH ROW
@@ -146,7 +147,7 @@ DELETE FROM {internal_name} WHERE id = NEW.id;
146147
INSERT INTO powersync_crud_(data) VALUES(json_object('op', 'DELETE', 'type', {type_string}, 'id', NEW.id{old_fragment}, 'metadata', NEW._metadata));
147148
INSERT OR IGNORE INTO ps_updated_rows(row_type, row_id) VALUES({type_string}, NEW.id);
148149
INSERT OR REPLACE INTO ps_buckets(name, last_op, target_op) VALUES('$local', 0, {MAX_OP_ID});
149-
END;"
150+
END"
150151
).expect("writing to string should be infallible");
151152
}
152153

0 commit comments

Comments
 (0)