From 239bdd35b1252cb3fbc71a3cacbeb284c87dabcb Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 6 Jan 2025 15:26:23 +0200 Subject: [PATCH 1/3] Avoid deleting $local when connecting. --- packages/common/src/client/sync/bucket/SqliteBucketStorage.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts b/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts index 6c48ac21f..9b89b0117 100644 --- a/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts +++ b/packages/common/src/client/sync/bucket/SqliteBucketStorage.ts @@ -85,7 +85,7 @@ export class SqliteBucketStorage extends BaseObserver imp async getBucketStates(): Promise { const result = await this.db.getAll( - 'SELECT name as bucket, cast(last_op as TEXT) as op_id FROM ps_buckets WHERE pending_delete = 0' + "SELECT name as bucket, cast(last_op as TEXT) as op_id FROM ps_buckets WHERE pending_delete = 0 AND name != '$local'" ); return result; } From b3ee1c9b2c59a3734b70cc4c73e0379b2e5d323c Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 6 Jan 2025 15:32:38 +0200 Subject: [PATCH 2/3] Cast target_op to make type explicit. --- packages/common/src/client/AbstractPowerSyncDatabase.ts | 4 ++-- .../common/src/client/sync/bucket/SqliteBucketStorage.ts | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/common/src/client/AbstractPowerSyncDatabase.ts b/packages/common/src/client/AbstractPowerSyncDatabase.ts index d9927c5bf..8dc50477a 100644 --- a/packages/common/src/client/AbstractPowerSyncDatabase.ts +++ b/packages/common/src/client/AbstractPowerSyncDatabase.ts @@ -582,12 +582,12 @@ export abstract class AbstractPowerSyncDatabase extends BaseObserver imp } async updateLocalTarget(cb: () => Promise): Promise { - const rs1 = await this.db.getAll("SELECT target_op FROM ps_buckets WHERE name = '$local' AND target_op = ?", [ - MAX_OP_ID - ]); + const rs1 = await this.db.getAll( + "SELECT target_op FROM ps_buckets WHERE name = '$local' AND target_op = CAST(? as INTEGER)", + [MAX_OP_ID] + ); if (!rs1.length) { // Nothing to update return false; From 7a47778aa8de8e511ea50efc98955dd8e9ba4504 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 6 Jan 2025 15:34:26 +0200 Subject: [PATCH 3/3] Add changeset. --- .changeset/moody-shoes-remain.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/moody-shoes-remain.md diff --git a/.changeset/moody-shoes-remain.md b/.changeset/moody-shoes-remain.md new file mode 100644 index 000000000..124533949 --- /dev/null +++ b/.changeset/moody-shoes-remain.md @@ -0,0 +1,5 @@ +--- +'@powersync/common': patch +--- + +Fix issue where local changes could be reverted when a replication delay is present.