Major release items
brodybits opened this issue · 3 comments
General
IMPORANT NOTICE: FEATURES SCHEDULED FOR REMOVAL FROM NEXT MAJOR RELEASE:
Deprecated "standard" transaction API ref: #720 (will continue to be supported by other plugin versions such as cordova-sqlite-ext and cordova-sqlite-evcore-extbuild-free)Windows platform support (also will continue to be supported by other plugin versions such as cordova-sqlite-ext and cordova-sqlite-evcore-extbuild-free)
NOTE: As discussed here and in #720 it would be problematic to remove the deprecated "standard" transaction API and Windows platform support. I hope to deliver a new express plugin version using internal sqlite3 libraries on Android/iOS/macOS, with Windows platform support, external sqlite3 dependencies, and likely "standard" transaction API removed (#740) within the next couple months or so.
Other general items:
- Test & document date/time handling along with pitfalls ref: #546
- Verify that all items in #685 (upcoming minor release items) including "highly desired" items are done
Documentation
Should be documented in #685 (upcoming minor release items):
- Pitfalls of using WAL ref: storesafe/cordova-sqlite-storage-help#10
- Use with https://github.com/dpa99c/cordova-sqlite-porter ref: storesafe/cordova-sqlite-storage-help#26
- Other prepopulated database documentation items ref: storesafe/cordova-sqlite-storage-help#26
Possible carryover from #685:
- Document why Windows AnyCPU target is not possible ref: storesafe/cordova-sqlite-storage-help#19
- Documentation of single-statement API ref: storesafe/cordova-sqlite-storage-help#17
- Statement of compliance to Web SQL Database DRAFT API ref: #553
Major release items:
Testing
Possible carryover from #685 (upcoming minor release items):
- Extremely large/small values ref: #627
Fixes & features
Should be fixed in #685 (upcoming minor release items):
- Function to get database directory path ref: #680 (may be affected by #681: Database storage in arbitrary path Android/iOS/macOS/Windows)
Possible carryover from #685:
- CREATE database if it does not exist should be optional ref: #212
- Database storage in arbitrary path (Android/iOS/macOS/Windows) ref: #681
- Deprecate other iOS database locations ref: #682
- Use UTF-8 encoding for Windows ref: #652
Major release items:
- Bind all numbers as REAL numbers ref: #684
- Browser platform support ref: #297
- auto-vacuum option ref: #646
- Safer Android defaults ref: #671
- Workaround for possible Android data loss (193) should be after every write ref: #672
- Secure delete by default ref: #645
- Drop support for deprecated Android pre-4.0 calls to resolve Deprecated API build warning ref: #611
- Silently stops after first SQL statement in statement list (minor data loss risk), should report error instead ref: #551
- Fix Windows 10 (UWP) platform version to run in background using web workers ref: #686
ADDED ITEMS:
- Deprecate standard transaction mechanism ref: #690 (This may go along with the possible redesign discussed in #548.)
- Plugin should reject attempts to execute BEGIN, COMMIT, or ROLLBACK.
- Drop support for Android pre-4.0
- Drop support for iOS pre-9.0 in testing & doc (iOS pre-9.0 is not supported by Cordova 7)
ChangeWILL NOT BE CHANGED: PRAGMA journal_mode is known to report delete in case of default android.database implementation (same as other platform implementations) on Android 8.1PRAGMA journal_mode
setting topersist
on all platform implementations ref: https://sqlite.org/pragma.html#pragma_journal_mode to minimize possible differences and possible ambiguities ref: storesafe/cordova-sqlite-storage-help#10 (comment)- Revisit
@synchronized
locks in iOS/macOS platform version - HIGHLY DESIRED to update SQLite version in new version of cordova-sqlite-storage/cordova-sqlite-ext/...; desired to match sqlite version used by SQLCipher
ADDED ITEMS FOR THIS PLUGIN VERSION ONLY:
Use built-in sqlite library on Android/iOS/macOS(planning to do this in a new express plugin version, at some point in the future)Drop support for(close
anddelete
calls in this plugin version (support forclose
anddelete
calls will be maintained in other versions such as cordova-sqlite-ext and cordova-sqlite-evcore-extbuild-free)close
&delete
calls are needed to support selfTest)- Drop iOS database location option (again this would continue to be supported in versions such as cordova-sqlite-ext and cordova-sqlite-evcore-extbuild-free)
ADDED FOR OTHER PLUGIN VERSIONS:
- Review compile time options ref: https://sqlite.org/compile.html
OTHER ADDED ITEMS FOR CONSIDERATION:
- database.dispose() to dispose a single database handle, close database once all handle objects have been disposed
- Drop Apache 2.0 license option for Android and Windows platforms, MIT only for all platforms
- SQLITE_LOCKING_STYLE=1 seems to be automatically defined for Apple Darwin platforms (iOS/macOS), see if this would also work on Android/Windows
- result set with Array [] access but must keep item() function for compatibility ref: #755
GENERAL ADDED DOCUMENTATION ITEM: MAJOR DOCUMENTATION CLEANUP NEEDED ref: storesafe/cordova-sqlite-storage-help#33 & #596 (comment)
TEST and DOCUMENT maximum record size ref: #474, #766
Timeline
At least 2-3 months, possibly longer due to existing backlog and other priority items. Hopefully in January or February 2018. GENERAL COMMENT: Priority goes to paid users. For more information please contact: sales@litehelpers.net
@brodybits Whats the reason to drop Windows platform support? Moving this out of this mainstream repo will greatly diminish this lib's usefulness as true cross-platform database. The windows version is working fine - so in general no need to change this (now)?
Moving this out of this mainstream repo will greatly diminish this lib's usefulness as true cross-platform database.
Thanks @mobidev111 for the feedback. I think I have to agree with you, despite the pain of maintaining support (additional system needed, dealing with VS issues, etc.) I also want to ensure that the common plugin JavaScript will work on all supported platforms, including Windows, without having to test on multiple plugin versions before releasing. So Windows support will stay in this plugin version, new express version will be delivered with Windows support and external sqlite3 library dependencies dropped when I get a chance (#740).
An additional item is that I may merge this plugin version together with cordova-sqlite-ext, as the basis for all other current plugin versions. This should simplify maintenance and support for most plugin users.