- Add cursor optional functions:
getStringOptional,getLongOptional,getDoubleOptional,getBooleanOptionalandgetBytesOptionalwhen using the column name which allow for optional return types - Throw errors for invalid column on all cursor functions
getString,getLong,getBytes,getDoubleandgetBooleanused with the column name will now throw an error for non-null values and expect a non optional return type
-
Allow cursor to get values by column name e.g.
getStringOptional("id") -
BREAKING CHANGE: If you were using
SqlCursorfrom SqlDelight previously for your own custom mapper then you must now change toSqlCursorexported by the PowerSync module.Previously you would import it like this:
import app.cash.sqldelight.db.SqlCursor
now it has been changed to:
import com.powersync.db.SqlCursor
- BREAKING CHANGE: Move from async sqldelight calls to synchronous calls. This will only affect
readTransactionandwriteTransactionwhere the callback function is no longer asynchronous.
- Add fix for Windows using JVM build
- Add
closemethod to database methods - Throw when error is a
CancellationErrorand remove invalidation for all errors instreamingSynccatch.
- Update powersync-sqlite-core to 0.3.8
- Increase maximum amount of columns from 63 to 1999
- Add JVM compatibility
- Revert previous iOS changes as they resulted in further issues.
- Move iOS database driver to use IO dispatcher which should avoid race conditions and improve performance.
- Use transaction context in
writeTransactioninBucketStorageImpl.
- Update version to fix deployment issue of previous release
- Change Swift package name from
PowerSynctoPowerSyncKotlin
- Re-enable SKIE
SuspendInterop - Move transaction functions out of
PowerSyncTransactionFactoryto avoid threading issues in Swift SDK
- Disable SKIE
SuspendInteropplugin to fix overridingsuspendfunctions in Swift
- Update supabase connector to use supabase-kt version 3
- Handle Postgres error codes in supabase connector
- Fix Custom Write Checkpoint application logic
- Fix
hasSyncednot updating afterdisconnectAndClear - Fix error being thrown in iOS app launch
- Fix sync status being reset when
updatefunction is run
- Add
waitForFirstSyncfunction - which resolves after the initial sync is completed - Upgrade to Kotlin 2.0.20 - should not cause any issues with users who are still on Kotlin 1.9
- Upgrade
powersync-sqlite-coreto 0.3.0 - improves incremental sync performance - Add client sync parameters - which allows you specify sync parameters from the client https://docs.powersync.com/usage/sync-rules/advanced-topics/client-parameters-beta
val params = JsonParam.Map(
mapOf(
"name" to JsonParam.String("John Doe"),
"age" to JsonParam.Number(30),
"isStudent" to JsonParam.Boolean(false)
)
)
connect(
...
params = params
)- Add schema validation when schema is generated
- Add warning message if there is a crudItem in the queue that has not yet been synced and after a delay rerun the upload
- Publish persistence package
- Improve API by changing from Builder pattern to simply instantiating the database
PowerSyncDatabaseE.g.val db = PowerSyncDatabase(factory, schema) - Use callback context in transactions
E.g.
db.writeTransaction{ ctx -> ctx.execute(...) } - Removed unnecessary expiredAt field
- Added table max column validation as there is a hard limit of 63 columns
- Moved SQLDelight models to a separate module to reduce export size
- Replaced default Logger with Kermit Logger which allows users to more easily use and/or change Logger settings
- Add
retryDelayandcrudThrottleoptions when setting up database connection - Changed
_viewNameOverridetoviewNameOverride