From 39c99b28436dc01967d22fd71276b90d996268f5 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Thu, 17 Oct 2024 12:07:54 +0200 Subject: [PATCH 1/8] Fix crud upload triggering to only occur on ps_crud changes. --- .../native/native_powersync_database.dart | 18 +++++++++--------- .../database/web/web_powersync_database.dart | 5 ++++- packages/powersync/lib/src/streaming_sync.dart | 8 ++++---- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/packages/powersync/lib/src/database/native/native_powersync_database.dart b/packages/powersync/lib/src/database/native/native_powersync_database.dart index fdfe2979..02a11346 100644 --- a/packages/powersync/lib/src/database/native/native_powersync_database.dart +++ b/packages/powersync/lib/src/database/native/native_powersync_database.dart @@ -143,7 +143,7 @@ class PowerSyncDatabaseImpl await isInitialized; final dbRef = database.isolateConnectionFactory(); ReceivePort rPort = ReceivePort(); - StreamSubscription? updateSubscription; + StreamSubscription? crudUpdateSubscription; rPort.listen((data) async { if (data is List) { String action = data[0]; @@ -160,9 +160,9 @@ class PowerSyncDatabaseImpl }); } else if (action == 'init') { SendPort port = data[1]; - var throttled = - UpdateNotification.throttleStream(updates, crudThrottleTime); - updateSubscription = throttled.listen((event) { + var crudStream = + database.onChange(['ps_crud'], throttle: crudThrottleTime); + crudUpdateSubscription = crudStream.listen((event) { port.send(['update']); }); disconnector.onAbort.then((_) { @@ -179,7 +179,7 @@ class PowerSyncDatabaseImpl // Clear status apart from lastSyncedAt setStatus(SyncStatus(lastSyncedAt: currentStatus.lastSyncedAt)); rPort.close(); - updateSubscription?.cancel(); + crudUpdateSubscription?.cancel(); } else if (action == 'log') { LogRecord record = data[1]; logger.log( @@ -281,7 +281,7 @@ Future _powerSyncDatabaseIsolate( _PowerSyncDatabaseIsolateArgs args) async { final sPort = args.sPort; ReceivePort rPort = ReceivePort(); - StreamController updateController = StreamController.broadcast(); + StreamController crudUpdateController = StreamController.broadcast(); final upstreamDbClient = args.dbRef.upstreamPort.open(); CommonDatabase? db; @@ -292,14 +292,14 @@ Future _powerSyncDatabaseIsolate( if (message is List) { String action = message[0]; if (action == 'update') { - updateController.add('update'); + crudUpdateController.add('update'); } else if (action == 'close') { // The SyncSqliteConnection uses this mutex // It needs to be closed before killing the isolate // in order to free the mutex for other operations. await mutex.close(); db?.dispose(); - updateController.close(); + crudUpdateController.close(); upstreamDbClient.close(); // Abort any open http requests, and wait for it to be closed properly await openedStreamingSync?.abort(); @@ -349,7 +349,7 @@ Future _powerSyncDatabaseIsolate( credentialsCallback: loadCredentials, invalidCredentialsCallback: invalidateCredentials, uploadCrud: uploadCrud, - updateStream: updateController.stream, + crudUpdateTriggerStream: crudUpdateController.stream, retryDelay: args.retryDelay, client: http.Client(), syncParameters: args.parameters); diff --git a/packages/powersync/lib/src/database/web/web_powersync_database.dart b/packages/powersync/lib/src/database/web/web_powersync_database.dart index abf3305e..75809f4e 100644 --- a/packages/powersync/lib/src/database/web/web_powersync_database.dart +++ b/packages/powersync/lib/src/database/web/web_powersync_database.dart @@ -135,6 +135,9 @@ class PowerSyncDatabaseImpl await isInitialized; + final crudStream = + database.onChange(['ps_crud'], throttle: crudThrottleTime); + // TODO better multitab support final storage = BucketStorage(database); final sync = StreamingSyncImplementation( @@ -142,7 +145,7 @@ class PowerSyncDatabaseImpl credentialsCallback: connector.getCredentialsCached, invalidCredentialsCallback: connector.fetchCredentials, uploadCrud: () => connector.uploadData(this), - updateStream: updates, + crudUpdateTriggerStream: crudStream, retryDelay: Duration(seconds: 3), client: FetchClient(mode: RequestMode.cors), syncParameters: params, diff --git a/packages/powersync/lib/src/streaming_sync.dart b/packages/powersync/lib/src/streaming_sync.dart index 70760878..8f2515fa 100644 --- a/packages/powersync/lib/src/streaming_sync.dart +++ b/packages/powersync/lib/src/streaming_sync.dart @@ -27,7 +27,7 @@ class StreamingSyncImplementation { final Future Function() uploadCrud; - final Stream updateStream; + final Stream crudUpdateTriggerStream; final StreamController _statusStreamController = StreamController.broadcast(); @@ -59,7 +59,7 @@ class StreamingSyncImplementation { required this.credentialsCallback, this.invalidCredentialsCallback, required this.uploadCrud, - required this.updateStream, + required this.crudUpdateTriggerStream, required this.retryDelay, this.syncParameters, required http.Client client, @@ -155,7 +155,7 @@ class StreamingSyncImplementation { Future crudLoop() async { await uploadAllCrud(); - await for (var _ in updateStream) { + await for (var _ in crudUpdateTriggerStream) { if (_abort?.aborted == true) { break; } @@ -169,11 +169,11 @@ class StreamingSyncImplementation { CrudEntry? checkedCrudItem; while (true) { - _updateStatus(uploading: true); try { // This is the first item in the FIFO CRUD queue. CrudEntry? nextCrudItem = await adapter.nextCrudItem(); if (nextCrudItem != null) { + _updateStatus(uploading: true); if (nextCrudItem.clientId == checkedCrudItem?.clientId) { // This will force a higher log level than exceptions which are caught here. isolateLogger.warning( From 6a773d719eea2e80974345610a2ce956655efbc7 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Thu, 17 Oct 2024 14:33:13 +0200 Subject: [PATCH 2/8] Fix crud throttling issues. --- .../lib/src/database/native/native_powersync_database.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/powersync/lib/src/database/native/native_powersync_database.dart b/packages/powersync/lib/src/database/native/native_powersync_database.dart index 02a11346..e62f8ac8 100644 --- a/packages/powersync/lib/src/database/native/native_powersync_database.dart +++ b/packages/powersync/lib/src/database/native/native_powersync_database.dart @@ -363,7 +363,8 @@ Future _powerSyncDatabaseIsolate( Set updatedTables = {}; void maybeFireUpdates() { - if (updatedTables.isNotEmpty) { + // Only fire updates when we're not in a transaction + if (updatedTables.isNotEmpty && db?.autocommit == true) { upstreamDbClient.fire(UpdateNotification(updatedTables)); updatedTables.clear(); updateDebouncer?.cancel(); @@ -375,7 +376,7 @@ Future _powerSyncDatabaseIsolate( updatedTables.add(event.tableName); updateDebouncer ??= - Timer(const Duration(milliseconds: 10), maybeFireUpdates); + Timer(const Duration(milliseconds: 1), maybeFireUpdates); }); }, (error, stack) { // Properly dispose the database if an uncaught error occurs. From 1ae3c5aa434d58d368ca020e0177d1a3bc33e33b Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Thu, 17 Oct 2024 16:33:03 +0200 Subject: [PATCH 3/8] Inherit throttling behavior from sqlite_async. --- packages/powersync/lib/src/web/powersync_db.worker.dart | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/powersync/lib/src/web/powersync_db.worker.dart b/packages/powersync/lib/src/web/powersync_db.worker.dart index 28a8e11a..8ce44f4b 100644 --- a/packages/powersync/lib/src/web/powersync_db.worker.dart +++ b/packages/powersync/lib/src/web/powersync_db.worker.dart @@ -20,10 +20,9 @@ final class PowerSyncAsyncSqliteController extends AsyncSqliteController { @override Future openDatabase( WasmSqlite3 sqlite3, String path, String vfs) async { - final db = sqlite3.open(path, vfs: vfs); - setupPowerSyncDatabase(db); - - return AsyncSqliteDatabase(database: db); + final asyncDb = await super.openDatabase(sqlite3, path, vfs); + setupPowerSyncDatabase(asyncDb.database); + return asyncDb; } @override From 21f211e681654dfa7ea01458848bb9d4ed1a00b5 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 28 Oct 2024 12:45:54 +0200 Subject: [PATCH 4/8] Bump sqlite_async dependency. --- packages/powersync/pubspec.yaml | 2 +- packages/powersync_attachments_helper/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/powersync/pubspec.yaml b/packages/powersync/pubspec.yaml index f4d7de04..f614c937 100644 --- a/packages/powersync/pubspec.yaml +++ b/packages/powersync/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter - sqlite_async: ^0.9.0 + sqlite_async: ^0.9.1 # We only use sqlite3 as a transitive dependency, # but right now we need a minimum of v2.4.6. sqlite3: ^2.4.6 diff --git a/packages/powersync_attachments_helper/pubspec.yaml b/packages/powersync_attachments_helper/pubspec.yaml index f4bafc1a..49a19eb4 100644 --- a/packages/powersync_attachments_helper/pubspec.yaml +++ b/packages/powersync_attachments_helper/pubspec.yaml @@ -12,7 +12,7 @@ dependencies: powersync: ^1.8.8 logging: ^1.2.0 - sqlite_async: ^0.9.0 + sqlite_async: ^0.9.1 path_provider: ^2.0.13 dev_dependencies: From 1c8df9e7e746f8b7a830bc593c8356a35bca0db8 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 28 Oct 2024 12:48:04 +0200 Subject: [PATCH 5/8] Update demo lockfiles. --- demos/django-todolist/pubspec.lock | 16 ++++++++-------- demos/supabase-anonymous-auth/pubspec.lock | 16 ++++++++-------- demos/supabase-edge-function-auth/pubspec.lock | 16 ++++++++-------- demos/supabase-simple-chat/pubspec.lock | 16 ++++++++-------- demos/supabase-todolist-drift/pubspec.lock | 18 +++++++++--------- .../pubspec.lock | 16 ++++++++-------- demos/supabase-todolist/pubspec.lock | 18 +++++++++--------- 7 files changed, 58 insertions(+), 58 deletions(-) diff --git a/demos/django-todolist/pubspec.lock b/demos/django-todolist/pubspec.lock index 06cdf7ca..493d86c9 100644 --- a/demos/django-todolist/pubspec.lock +++ b/demos/django-todolist/pubspec.lock @@ -310,14 +310,14 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -415,10 +415,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -431,18 +431,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: diff --git a/demos/supabase-anonymous-auth/pubspec.lock b/demos/supabase-anonymous-auth/pubspec.lock index e5eac413..abf60908 100644 --- a/demos/supabase-anonymous-auth/pubspec.lock +++ b/demos/supabase-anonymous-auth/pubspec.lock @@ -366,14 +366,14 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -495,10 +495,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -511,18 +511,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: diff --git a/demos/supabase-edge-function-auth/pubspec.lock b/demos/supabase-edge-function-auth/pubspec.lock index 73fc0bd1..df4ee35d 100644 --- a/demos/supabase-edge-function-auth/pubspec.lock +++ b/demos/supabase-edge-function-auth/pubspec.lock @@ -390,14 +390,14 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -519,10 +519,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -535,18 +535,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: diff --git a/demos/supabase-simple-chat/pubspec.lock b/demos/supabase-simple-chat/pubspec.lock index fae8a8b5..c80d9f53 100644 --- a/demos/supabase-simple-chat/pubspec.lock +++ b/demos/supabase-simple-chat/pubspec.lock @@ -406,14 +406,14 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -535,10 +535,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -551,18 +551,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: transitive description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: diff --git a/demos/supabase-todolist-drift/pubspec.lock b/demos/supabase-todolist-drift/pubspec.lock index 45b9b301..b402e028 100644 --- a/demos/supabase-todolist-drift/pubspec.lock +++ b/demos/supabase-todolist-drift/pubspec.lock @@ -686,21 +686,21 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_attachments_helper: dependency: "direct main" description: path: "../../packages/powersync_attachments_helper" relative: true source: path - version: "0.6.11" + version: "0.6.12" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -854,10 +854,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -870,18 +870,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" sqlparser: dependency: transitive description: diff --git a/demos/supabase-todolist-optional-sync/pubspec.lock b/demos/supabase-todolist-optional-sync/pubspec.lock index 483abbf6..87a21435 100644 --- a/demos/supabase-todolist-optional-sync/pubspec.lock +++ b/demos/supabase-todolist-optional-sync/pubspec.lock @@ -470,14 +470,14 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -599,10 +599,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -615,18 +615,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: diff --git a/demos/supabase-todolist/pubspec.lock b/demos/supabase-todolist/pubspec.lock index 3fb2f99a..0cd417e9 100644 --- a/demos/supabase-todolist/pubspec.lock +++ b/demos/supabase-todolist/pubspec.lock @@ -470,21 +470,21 @@ packages: path: "../../packages/powersync" relative: true source: path - version: "1.8.7" + version: "1.8.8" powersync_attachments_helper: dependency: "direct main" description: path: "../../packages/powersync_attachments_helper" relative: true source: path - version: "0.6.11" + version: "0.6.12" powersync_flutter_libs: dependency: "direct overridden" description: path: "../../packages/powersync_flutter_libs" relative: true source: path - version: "0.4.0" + version: "0.4.1" pub_semver: dependency: transitive description: @@ -606,10 +606,10 @@ packages: dependency: transitive description: name: sqlite3 - sha256: "45f168ae2213201b54e09429ed0c593dc2c88c924a1488d6f9c523a255d567cb" + sha256: bb174b3ec2527f9c5f680f73a89af8149dd99782fbb56ea88ad0807c5638f2ed url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" sqlite3_flutter_libs: dependency: transitive description: @@ -622,18 +622,18 @@ packages: dependency: transitive description: name: sqlite3_web - sha256: b4043336e74cac54d3ca44c90434a3c310550b9a80851b09ad1af282af0df6d4 + sha256: f22d1dda7a40be0867984f55cdf5c2d599e5f05d3be4a642d78f38b38983f554 url: "https://pub.dev" source: hosted - version: "0.1.3" + version: "0.2.0" sqlite_async: dependency: "direct main" description: name: sqlite_async - sha256: c5c57b025133d0869cce6a647f99b378ab42cc26488ff22ff942ae9588201af0 + sha256: "1f7b36e6b5b459bae89941ae1d3ae8151a3c14b8242c3b94e75aea4a692361e2" url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" stack_trace: dependency: transitive description: From 914b243ff915dcda1fb3630b724d86f60859b9b7 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 28 Oct 2024 12:50:57 +0200 Subject: [PATCH 6/8] Don't cancel in-progress actions. --- .github/workflows/demos.yml | 1 - .github/workflows/packages.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/.github/workflows/demos.yml b/.github/workflows/demos.yml index 0ae30733..55f6f9ce 100644 --- a/.github/workflows/demos.yml +++ b/.github/workflows/demos.yml @@ -2,7 +2,6 @@ name: Demos checks concurrency: group: demos-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true on: push: diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml index 88acf4bd..34b33195 100644 --- a/.github/workflows/packages.yml +++ b/.github/workflows/packages.yml @@ -2,7 +2,6 @@ name: Packages check concurrency: group: packages-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} - cancel-in-progress: true on: push: From 049345e118dccf018e4302565734bb98a390f664 Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 28 Oct 2024 13:03:17 +0200 Subject: [PATCH 7/8] Remove order-sensitive json tests. --- packages/powersync/test/crud_test.dart | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/packages/powersync/test/crud_test.dart b/packages/powersync/test/crud_test.dart index b01e71dc..b18309ac 100644 --- a/packages/powersync/test/crud_test.dart +++ b/packages/powersync/test/crud_test.dart @@ -151,12 +151,10 @@ void main() { [testId, 'INFO', 'test log']); expect( - await powersync.getAll('SELECT data FROM ps_crud ORDER BY id'), + await powersync + .getAll("SELECT data ->> 'id' as id FROM ps_crud ORDER BY id"), equals([ - { - 'data': - '{"op":"PUT","type":"logs","id":"$testId","data":{"level":"INFO","content":"test log"}}' - } + {'id': testId} ])); expect(await powersync.getAll('SELECT * FROM logs'), equals([])); @@ -181,12 +179,10 @@ void main() { .get('SELECT quantity FROM assets WHERE id = ?', [testId]), equals({'quantity': bigNumber})); expect( - await powersync.getAll('SELECT data FROM ps_crud ORDER BY id'), + await powersync + .getAll('SELECT data ->> \'id\' as id FROM ps_crud ORDER BY id'), equals([ - { - 'data': - '{"op":"PUT","type":"assets","id":"$testId","data":{"quantity":$bigNumber}}' - } + {"id": testId} ])); var tx = (await powersync.getNextCrudTransaction())!; @@ -223,15 +219,14 @@ void main() { await powersync.execute('DELETE FROM ps_crud WHERE 1'); await powersync.execute( - 'UPDATE assets SET description = ?, quantity = quantity + 1 WHERE id = ?', - ['updated', testId]); + 'UPDATE assets SET quantity = quantity + 1 WHERE id = ?', [testId]); expect( await powersync.getAll('SELECT data FROM ps_crud ORDER BY id'), equals([ { 'data': - '{"op":"PATCH","type":"assets","id":"$testId","data":{"quantity":${bigNumber + 1},"description":"updated"}}' + '{"op":"PATCH","type":"assets","id":"$testId","data":{"quantity":${bigNumber + 1}}}' } ])); }); From 4d7d86861de44fc4e035b23811c29c6879ae175c Mon Sep 17 00:00:00 2001 From: Ralf Kistner Date: Mon, 28 Oct 2024 13:10:04 +0200 Subject: [PATCH 8/8] Use older json_extract syntax. --- packages/powersync/test/crud_test.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/powersync/test/crud_test.dart b/packages/powersync/test/crud_test.dart index b18309ac..ba7de5c7 100644 --- a/packages/powersync/test/crud_test.dart +++ b/packages/powersync/test/crud_test.dart @@ -151,8 +151,8 @@ void main() { [testId, 'INFO', 'test log']); expect( - await powersync - .getAll("SELECT data ->> 'id' as id FROM ps_crud ORDER BY id"), + await powersync.getAll( + "SELECT json_extract(data, '\$.id') as id FROM ps_crud ORDER BY id"), equals([ {'id': testId} ])); @@ -179,8 +179,8 @@ void main() { .get('SELECT quantity FROM assets WHERE id = ?', [testId]), equals({'quantity': bigNumber})); expect( - await powersync - .getAll('SELECT data ->> \'id\' as id FROM ps_crud ORDER BY id'), + await powersync.getAll( + "SELECT json_extract(data, '\$.id') as id FROM ps_crud ORDER BY id"), equals([ {"id": testId} ]));