storesafe/cordova-sqlite-storage

Major release with possible enhancements & breaking changes

brodycj opened this issue ยท 5 comments

Major

Under consideration, as of February 2019:

  • browser platform support using kripken / sql.js as discussed in #576
  • combine this plugin version together with cordova-sqlite-ext, no more separate version to get pre-populated databases and other extra/extended features (#529)
  • will likely be moved to a new organization name due to personal rebranding (#770)

Highly desired (not promised):

  • Include typings from DefinitelyTyped (#768)
  • use UTF-8 internal encoding format on Windows in addition to Android, iOS, and macOS (#652, #687 (comment))
  • link to recommended starting point for Ionic 3
  • Arbitrary database location, especially for Android & Windows ref: #681

Breaking changes

  • SQLITE_DBCONFIG_DEFENSIVE database option (#838) - to be part of a special major release in January or February 2019
  • drop support for old Android versions as discussed in #771:
    • definite: Android pre-4.0
    • extremely likely: Android 4.0
    • very likely: Android 4.1-4.3
    • planned (open for feedback and discussion): Android 4.4, old armeabi CPU (seems to be replaced by armeabi and arm64-v8a, does not seem to be supported by Android 5.0 and greater)
  • error code going away, will be set to 0 in the coming major release (#821)
  • drop support for iOS 8.x (was already dropped by cordova-ios@4.4.0)
  • drop Android NDK build for x86_64 (#772, open for discussion; x86 NDK build will also work on x86_64 device, if no other plugins have NDK build for x86_64)
  • legacy location: 0-2 values will no longer be supported; please use location: 'default' or iosDatabaseLocation setting in openDatabase as documented

Possibly breaking changes

  • Use of databases with multi-byte UTF-8 characters, control characters, and other special characters may be broken by changes for UTF-8 internal encoding (#652) on Windows (already NOT RECOMMENDED in the existing documentation)
  • iOS/macOS remove workaround for missing objc_arc feature & remove extra @synchronized blocks no longer needed (#769; risk of actual breakage is expected to be very low)
  • iOS/macOS signal error result in case of attempt to open database with no name in internal JSON interface (internal plugin error) - already done
  • Update default page size ref: #781

Other

Time permitting:

  • SQL result rows with array index access ([...]) in addition to .item(...) member function (brodycj/cordova-sqlite-ext#71)
  • more sensical androidDatabaseImplementation value such as 'system' to select use of system builtin android.database.sqlite access implementation instead of default NDK sqlite-native-driver implementation
  • resolve crash issue on Android in case of SELECT X'FFD1FFD2'
  • remove internal qid from JavaScript (no longer needed)
  • use coffeescript@2 to compile SQLitePlugin.coffee.md
  • clarify use of SQLite3 NDK build on Android in documentation
  • fix git repo URL in package.json ref: #701
  • non-static db runner map on Android ref: #763 (comment)
  • Fix CoffeeScript/JavaScript to handle backgroundExecuteSqlBatch error callback as an internal error ref: #763
  • Fix Android implementation to block attempts to open database after onDestroy is called ref: #697
  • try to fix Travis CI / Circle CI
  • check U+0000 behavior on iOS vs Android, Windows, Web SQL, ...
  • consistent whole number bindings on all platforms
  • other major release changes listed in #687

I just added the bug-data-loss-risk label since this release will include #838 (SQLITE_DBCONFIG_DEFENSIVE flag) which is a defense against a potential data loss issue.

@brodybits Hi Brody. Im a little confused about the versioning, and the breaking changes. is v3 the version with the changes?

Im currently on v2.4, and want to update the plugin, should I currently use v2.6 or do the transition to v3?

@sithwarrior I see a tag for 3.2.0 already.
@brodybits For these breaking changes, the new version would be 4 onwards?

I am planning on integrating this plugin, but I am not sure if I should wait for the new release!

I suggest you guys use the updated version since it has the defense against the possible data loss issue.

I suggest you guys use the updated version since it has the defence against the possible data loss issue.

Hi Chris,
Could you please let us know which is the correct 'updated version'?
Thank you in advance!