cordova-sqlite-evmax-build-free 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGES.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changes
2
2
 
3
+ # cordova-sqlite-evmax-build-free 0.0.8
4
+
5
+ ## cordova-sqlite-evmax-common-free 0.0.6-dev
6
+
7
+ - fix workaround for slash characters with Capacitor
8
+
9
+ # cordova-sqlite-evmax-build-free 0.0.7
10
+
11
+ ## cordova-sqlite-evmax-common-free 0.0.5-dev
12
+
13
+ - use android-sqlite-evmax-ndk-driver-free with workaround for slash characters with Capacitor (with SQLite 3.40.0)
14
+
3
15
  # cordova-sqlite-evmax-build-free 0.0.6
4
16
 
5
17
  - remove useless Windows project references
package/README.md CHANGED
@@ -52,7 +52,7 @@ under consideration:
52
52
 
53
53
  ## About this plugin version
54
54
 
55
- Super-premium enterprise version with additional performance and stability improvements for Android, iOS, and macOS, including workarounds for super-large INSERT transactions and SELECT results on Android - with limited extra features (missing pre-populated database support), using the `before_plugin_install` hook to fetch the sqlite3 component dependencies from `cordova-sqlite-evplus-ext-free-dependencies` on GitHub.
55
+ Super-premium enterprise version with additional performance and stability improvements for Android, iOS, and macOS, including workarounds for super-large INSERT transactions and SELECT results on Android - with limited extra features (missing pre-populated database support), using the `before_plugin_install` hook to fetch the sqlite3 component dependencies from <https://github.com/brodybits/cordova-sqlite-evmax-free-dependencies-dev>.
56
56
 
57
57
  <!-- FUTURE TBD critical bug notices for this plugin version -->
58
58
 
@@ -62,7 +62,7 @@ Super-premium enterprise version with additional performance and stability impro
62
62
 
63
63
  ### Multiple SQLite problem on Android
64
64
 
65
- __This plugin uses non-standard [`storesafe/android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) sqlite database access implementation on Android. In case an application access the SAME database file using multiple plugins there is a risk of data corruption ref: [`storesafe/cordova-sqlite-storage#626`](https://github.com/storesafe/cordova-sqlite-storage/issues/626) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>.__
65
+ __This plugin uses non-standard [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) sqlite database access implementation on Android. In case an application access the SAME database file using multiple plugins there is a risk of data corruption ref: [`storesafe/cordova-sqlite-storage#626`](https://github.com/storesafe/cordova-sqlite-storage/issues/626) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>.__
66
66
 
67
67
  The workaround is to use the `androidDatabaseProvider: 'system'` setting as described in the [Android database provider](#android-database-provider) section below:
68
68
 
@@ -201,7 +201,7 @@ See the [Sample section](#sample) for a sample with a more detailed explanation
201
201
  - This plugin version includes the following extra (non-standard) features:
202
202
  - BASE64 and BLOBFROMBASE64 integrated from [brodybits / sqlite3-base64](https://github.com/brodybits/sqlite3-base64), using [brodybits / libb64-core](https://github.com/brodybits/libb64-core) (based on <http://libb64.sourceforge.net/> by Chris Venter, public domain)
203
203
  - REGEXP for Android (default Android-sqlite-connector database implementation), iOS, and macOS using [brodybits / sqlite3-regexp-cached](https://github.com/brodybits/sqlite3-regexp-cached) (based on <http://git.altlinux.org/people/at/packages/?p=sqlite3-pcre.git> by Alexey Tourbin, public domain)
204
- - SQLite __(`3.38.5` for Android, `3.40.0` for other platforms)__ included when building (all platforms), with the following compile-time definitions:
204
+ - SQLite __`3.40.0`__ included when building (all platforms), with the following compile-time definitions:
205
205
  - `SQLITE_THREADSAFE=1`
206
206
  - `SQLITE_DEFAULT_SYNCHRONOUS=3` (EXTRA DURABLE build setting) ref: [xpbrew/cordova-sqlite-storage#736](https://github.com/xpbrew/cordova-sqlite-storage/issues/736)
207
207
  - `SQLITE_LOCKING_STYLE=1` on iOS/macOS ONLY
@@ -229,9 +229,9 @@ See the [Sample section](#sample) for a sample with a more detailed explanation
229
229
  - <https://www.sqlite.org/releaselog/3_26_0.html>
230
230
  - The iOS database location is now mandatory, as documented below.
231
231
  - This version branch supports the use of two (2) possible Android sqlite database implementations:
232
- - default: high-performance, lightweight [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) NDK library (C-language implementation)
232
+ - default: high-performance, lightweight [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) NDK library (C-language implementation)
233
233
  - optional: Android system database implementation, using the `androidDatabaseProvider: 'system'` setting in `sqlitePlugin.openDatabase()` call as described in the [Android database provider](#android-database-provider) section below.
234
- - The following feature is available in [brodybits/cordova-sqlite-ext](https://github.com/brodybits/cordova-sqlite-ext) (with permissive license terms, missing performance and stability enhancements from [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free)), MISSING in this plugin version:
234
+ - The following feature is available in [brodybits/cordova-sqlite-ext](https://github.com/brodybits/cordova-sqlite-ext) (with permissive license terms, missing performance and stability enhancements from [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free)), MISSING in this plugin version:
235
235
  - Pre-populated database (Android/iOS/macOS/Windows)
236
236
  - Windows platform version using a customized version of the performant [doo / SQLite3-WinRT](https://github.com/doo/SQLite3-WinRT) C++ component based on the [brodybits/SQLite3-WinRT sync-api-fix branch](https://github.com/brodybits/SQLite3-WinRT/tree/sync-api-fix), with the following known limitations:
237
237
  - This plugin version branch has dependency on platform toolset libraries included by Visual Studio 2017 ref: [xpbrew/cordova-sqlite-storage#580](https://github.com/xpbrew/cordova-sqlite-storage/issues/580). Visual Studio 2015 is now supported by [`brodybits/cordova-sqlite-legacy`](https://github.com/brodybits/cordova-sqlite-legacy) (permissive license terms, no performance enhancements for Android) and [`brodybits/cordova-sqlite-evcore-legacy-ext-common-free`](https://github.com/brodybits/cordova-sqlite-evcore-legacy-ext-common-free) (GPL or commercial license terms, with performance enhancements for Android). UNTESTED workaround for Visual Studio 2015: it *may* be possible to support this plugin version on Visual Studio 2015 Update 3 by installing platform toolset v141.)
@@ -261,7 +261,7 @@ See the [Sample section](#sample) for a sample with a more detailed explanation
261
261
 
262
262
  ## Announcements
263
263
 
264
- - This plugin version includes a super-premium workaround to support super-large INSERT transactions on Android. It also includes premium improvements to the internal JSON interface between Javascript and native parts on Android, iOS, and macOS which improves the performance and resolves memory issues in case of some very large SQL batches and large SELECT results, with help from [`android-sqlite-evplus-ext-native-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ext-native-driver-free) on Android.
264
+ - This plugin version includes super-premium workarounds to support super-large INSERT transactions on Android and resolve an issue with `/` character in Capacitor. It also includes premium improvements to the internal JSON interface between Javascript and native parts on Android, iOS, and macOS which improves the performance and resolves memory issues in case of some very large SQL batches and large SELECT results, with help from [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) on Android.
265
265
  - This plugin version includes additional JavaScript performance enhancements with special benefit for Android.
266
266
  - This plugin version includes the following extra (non-standard) features: BASE 64 (all platforms Android/iOS/macOS/Windows), REGEXP (Android/iOS/macOS)
267
267
  - Using `SQLITE_DEFAULT_SYNCHRONOUS=3` (EXTRA DURABLE) build setting to be extra robust against possible database corruption ref: [xpbrew/cordova-sqlite-storage#736](https://github.com/xpbrew/cordova-sqlite-storage/issues/736)
@@ -575,7 +575,7 @@ See **Security of sensitive data** in the [Security](#security) section above.
575
575
  - In case of ignored INSERT OR IGNORE statement WebKit Web SQL (Android/iOS) reports insertId with an old INSERT row id value while the plugin reports insertId: undefined.
576
576
  - In case of a SQL error handler that does not recover the transaction, WebKit Web SQL (Android/iOS) would incorrectly report error code 0 while the plugin would report the same error code as in the SQL error handler. (In case of an error with no SQL error handler then Android/iOS WebKit Web SQL would report the same error code that would have been reported in the SQL error hander.)
577
577
  - In case a transaction function throws an exception, the message and code if present are reported by the plugin but *not* by (WebKit) Web SQL.
578
- - SQL error messages are inconsistent on Windows and less descriptive on Android in case of the default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) implementation.
578
+ - SQL error messages are inconsistent on Windows and less descriptive on Android in case of the default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) implementation.
579
579
  - There are some other differences in the SQL error messages reported by WebKit Web SQL and this plugin.
580
580
 
581
581
  <!-- END Deviations -->
@@ -584,16 +584,16 @@ See **Security of sensitive data** in the [Security](#security) section above.
584
584
 
585
585
  - Possible crashes with certain cases of invalid binary string data on Android
586
586
  - The iOS/macOS platform versions do not support certain rapidly repeated open-and-close or open-and-delete test scenarios due to how the implementation handles background processing
587
- - The default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation does not currently handle control characters such as vertical tab, form feed, or backspace characters properly ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#28`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/28)
587
+ - The default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation does not currently handle control characters such as vertical tab, form feed, or backspace characters properly ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#28`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/28)
588
588
  - It is possible to request a SQL statement list such as "SELECT 1; SELECT 2" within a single SQL statement string, however the plugin will only execute the first statement and silently ignore the others ref: [xpbrew/cordova-sqlite-storage#551](https://github.com/xpbrew/cordova-sqlite-storage/issues/551)
589
589
  - Execution of INSERT statement that affects multiple rows (due to SELECT cause or using TRIGGER(s), for example) reports incorrect rowsAffected on Android with use of the `androidDatabaseProvider: 'system'` setting.
590
590
  - FIXED in this plugin version: ~~Memory issue observed when adding a large number of records due to the JSON implementation which is improved in [storesafe / cordova-sqlite-evcore-extbuild-free](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free) (GPL or commercial license terms)~~
591
591
  - Infinity (positive or negative) values are not supported on Android/iOS/macOS due to issues described above including a possible crash on iOS/macOS ref: [xpbrew/cordova-sqlite-storage#405](https://github.com/xpbrew/cordova-sqlite-storage/issues/405)
592
592
  - A stability issue was reported on the iOS platform version when in use together with [SockJS](http://sockjs.org/) client such as [pusher-js](https://github.com/pusher/pusher-js) at the same time (see [xpbrew/cordova-sqlite-storage#196](https://github.com/xpbrew/cordova-sqlite-storage/issues/196)). The workaround is to call sqlite functions and [SockJS](http://sockjs.org/) client functions in separate ticks (using setTimeout with 0 timeout).
593
- - Hanging transactions in case of special JSON characters in result columns default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#51`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/51)
593
+ - Hanging transactions in case of special JSON characters in result columns default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#51`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/51)
594
594
  - SQL errors are reported with incorrect & inconsistent error message on Windows - error message info not always correct, see also [storesafe/cordova-sqlite-storage#539](https://github.com/storesafe/cordova-sqlite-storage/issues/539)
595
- - Issue on default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation in case of database file name with multi-byte UTF-8 characters ref: [litehelpers/Cordova-sqlite-evcore-extbuild-free#25](https://github.com/litehelpers/Cordova-sqlite-evcore-extbuild-free/issues/25)
596
- - Incorrect handling of NULL characters (`'\0\` or `'\u0000'`) on Android (default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation) and Windows ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#27`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/27)
595
+ - Issue on default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation in case of database file name with multi-byte UTF-8 characters ref: [litehelpers/Cordova-sqlite-evcore-extbuild-free#25](https://github.com/litehelpers/Cordova-sqlite-evcore-extbuild-free/issues/25)
596
+ - Incorrect handling of NULL characters (`'\0\` or `'\u0000'`) on Android (default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation) and Windows ref: [`storesafe/cordova-sqlite-evcore-extbuild-free#27`](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/27)
597
597
  - Close/delete database bugs described below.
598
598
  - When a database is opened and deleted without closing, the iOS/macOS platform version is known to leak resources.
599
599
  - It is NOT possible to open multiple databases with the same name but in different locations.
@@ -614,7 +614,7 @@ Some additional issues are tracked in [open cordova-sqlite-storage bug-general i
614
614
  - SQL error messages reported by Windows platform version are not consistent with Android/iOS/macOS platform versions.
615
615
  - UNICODE `\u2028` (line separator) and `\u2029` (paragraph separator) characters are currently not supported and known to be broken on iOS, macOS, and Android platform versions due to JSON issues reported in [Cordova bug CB-9435](https://issues.apache.org/jira/browse/CB-9435) and [cordova/cordova-discuss#57](https://github.com/cordova/cordova-discuss/issues/57). This is fixed with a workaround for iOS/macOS in: [litehelpers / Cordova-sqlite-evplus-legacy-free](https://github.com/litehelpers/Cordova-sqlite-evplus-legacy-free) and [litehelpers / Cordova-sqlite-evplus-legacy-attach-detach-free](https://github.com/litehelpers/Cordova-sqlite-evplus-legacy-attach-detach-free) (GPL or special commercial license terms) as well as [litehelpers / cordova-sqlite-evmax-ext-workers-legacy-build-free](https://github.com/litehelpers/cordova-sqlite-evmax-ext-workers-legacy-build-free) (GPL or premium commercial license terms).
616
616
  - SELECT BLOB column value type is not supported consistently across all platforms (not supported on Windows). It is recommended to use the built-in HEX function to SELECT BLOB column data in hexadecimal format, working consistently across all platforms. As an alternative: SELECT BLOB in Base64 format using BASE64 function (described elsewhere in this document) is supported by this plugin version (GPL or premium commercial license options, as documented above) as well as [`brodybits/cordova-sqlite-ext`](https://github.com/brodybits/cordova-sqlite-ext) (permissive license terms). INLINE BLOB values such as `X'010203'` are supported by the SQLite syntax on all platforms. FUTURE TBD equivalent to UNHEX (supported in MySQL) or conversion of Base-64 string to BLOB is desired.
617
- - Database files with certain multi-byte UTF-8 characters are not tested and not expected to work consistently across all platform implementations. The default [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation may not function properly on certain Android versions in case of database file names with emoji and other 4-byte UTF-8 characters ref: [storesafe/cordova-sqlite-evcore-extbuild-free#26](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/26)
617
+ - Database files with certain multi-byte UTF-8 characters are not tested and not expected to work consistently across all platform implementations. The default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation may not function properly on certain Android versions in case of database file names with emoji and other 4-byte UTF-8 characters ref: [storesafe/cordova-sqlite-evcore-extbuild-free#26](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/26)
618
618
  - Issues with UNICODE `\u0000` character (same as `\0`):
619
619
  - Truncation in case of argument value with UNICODE `\u0000` character reproduced on (WebKit) Web SQL; known issues with this plugin version as referenced above on Android (default `android-sqlite-evcore-native-driver-free` database access implementation) and Windows ([storesafe/cordova-sqlite-evcore-extbuild-free#27](https://github.com/storesafe/cordova-sqlite-evcore-extbuild-free/issues/27))
620
620
  - SQL error reported in case of inline value string with with UNICODE `\u0000` character on (WebKit) Web SQL, plugin on Android with use of the `androidDatabaseProvider: 'system'` setting, and plugin on _some_ other platforms
@@ -842,7 +842,7 @@ var db = window.sqlitePlugin.openDatabase({name: 'my.db', location: 'default'},
842
842
 
843
843
  **WARNING:** The new "default" location value is different from the old default location used until March 2016 and would break an upgrade for an app that was using the old default setting (`location: 0`, same as using `iosDatabaseLocation: 'Documents'`) on iOS. The recommended solution is to continue to open the database from the same location, using `iosDatabaseLocation: 'Documents'`.
844
844
 
845
- **WARNING 2:** As described above: by default this plugin uses a non-standard [android-sqlite-evplus-ndk-driver-free](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) sqlite database access implementation on Android. In case an application access the **same** database using multiple plugins there is a risk of data corruption (ref: [xpbrew/cordova-sqlite-storage#626](https://github.com/xpbrew/cordova-sqlite-storage/issues/626)) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>. The workaround is to use the `androidDatabaseProvider: 'system'` setting as described in the **Android sqlite implementation** section below.
845
+ **WARNING 2:** As described above: by default this plugin uses a non-standard [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) sqlite database access implementation on Android. In case an application access the **same** database using multiple plugins there is a risk of data corruption (ref: [xpbrew/cordova-sqlite-storage#626](https://github.com/xpbrew/cordova-sqlite-storage/issues/626)) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>. The workaround is to use the `androidDatabaseProvider: 'system'` setting as described in the **Android sqlite implementation** section below.
846
846
 
847
847
  To specify a different location (affects iOS/macOS *only*):
848
848
 
@@ -950,7 +950,7 @@ Use the `location` or `iosDatabaseLocation` option in `sqlitePlugin.openDatabase
950
950
 
951
951
  ### Android database provider
952
952
 
953
- By default, this plugin uses [android-sqlite-evplus-ndk-driver-free](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) with the performance and memory usage enhancements. To use the built-in Android system database provider implementation instead:
953
+ By default, this plugin uses [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) with the performance and memory usage enhancements. To use the built-in Android system database provider implementation instead:
954
954
 
955
955
  ```js
956
956
  var db = window.sqlitePlugin.openDatabase({
@@ -963,7 +963,7 @@ var db = window.sqlitePlugin.openDatabase({
963
963
  (Use of the `androidDatabaseImplementation: 2` setting which is now replaced by `androidDatabaseProvider: 'system'` is now deprecated and may be removed in the near future.)
964
964
 
965
965
  **IMPORTANT:**
966
- - As described above: by default this plugin uses a non-standard [`android-sqlite-evplus-ndk-driver-free`](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database access implementation on Android. In case an application access the **same** database using multiple plugins there is a risk of data corruption (ref: [storesafe/cordova-sqlite-storage#626](https://github.com/storesafe/cordova-sqlite-storage/issues/626)) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>. The workaround is to use the `androidDatabaseProvider: 'system'` setting as described here.
966
+ - As described above: by default this plugin uses a non-standard [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database access implementation on Android. In case an application access the **same** database using multiple plugins there is a risk of data corruption (ref: [storesafe/cordova-sqlite-storage#626](https://github.com/storesafe/cordova-sqlite-storage/issues/626)) as described in <http://ericsink.com/entries/multiple_sqlite_problem.html> and <https://www.sqlite.org/howtocorrupt.html>. The workaround is to use the `androidDatabaseProvider: 'system'` setting as described here.
967
967
  - In case of the `androidDatabaseProvider: 'system'` setting, [xpbrew/cordova-sqlite-storage#193](https://github.com/xpbrew/cordova-sqlite-storage/issues/193) reported (as observed by a number of app developers in the past) that in certain Android versions, if the app is stopped or aborted without closing the database then there is an unexpected database lock and the data that was inserted is lost. The workaround is described below.
968
968
 
969
969
  <!-- END Android database provider -->
@@ -976,7 +976,7 @@ var db = window.sqlitePlugin.openDatabase({
976
976
 
977
977
  The cause of this issue remains unknown. Of interest: [android / platform_external_sqlite commit d4f30d0d15](https://github.com/android/platform_external_sqlite/commit/d4f30d0d1544f8967ee5763c4a1680cb0553039f) which references and includes the sqlite commit at: http://www.sqlite.org/src/info/6c4c2b7dba
978
978
 
979
- This is *not* an issue when the default [android-sqlite-evplus-ndk-driver-free](https://github.com/storesafe/android-sqlite-evplus-ndk-driver-free) database implementation is used, which is the case when no `androidDatabaseProvider` or `androidDatabaseImplementation` setting is used.
979
+ This is *not* an issue when the default [`android-sqlite-evmax-ndk-driver-free`](https://github.com/brodybits/android-sqlite-evmax-ndk-driver-free) database implementation is used, which is the case when no `androidDatabaseProvider` or `androidDatabaseImplementation` setting is used.
980
980
 
981
981
  There is an optional workaround that simply closes and reopens the database file at the end of every transaction that is committed. The workaround is enabled by opening the database with options as follows:
982
982
 
@@ -23,6 +23,9 @@
23
23
 
24
24
  EE_SIZE_LIMIT = 16 * 1024 * 1024
25
25
 
26
+ REPLACE_BANG_REGEXP = /!/g
27
+ REPLACE_SLASH_REGEXP = /\//g
28
+
26
29
  ## global(s):
27
30
 
28
31
  # per-db map of locking and queueing
@@ -706,7 +709,11 @@
706
709
 
707
710
  flatlist = [mydbid, flen]
708
711
 
709
- flatlist = flatlist.concat flatBatchExecutesEntries[index]
712
+ flatlist = flatlist.concat flatBatchExecutesEntries[index].map (v) ->
713
+ if typeof v == 'string'
714
+ v.replace(REPLACE_BANG_REGEXP, '!1').replace(REPLACE_SLASH_REGEXP, '!2')
715
+ else
716
+ v
710
717
 
711
718
  flatlist.push 'extra'
712
719
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cordova-sqlite-evmax-build-free",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "description": "Cordova/PhoneGap sqlite storage - free evmax enterprise version with premium stability and performance improvements including workaround for super-large INSERT transactions & SELECT results on Android (version with external sqlite3 dependencies)",
5
5
  "cordova": {
6
6
  "id": "cordova-sqlite-evmax-common-free",
package/plugin.xml CHANGED
@@ -2,7 +2,7 @@
2
2
  <plugin xmlns="http://www.phonegap.com/ns/plugins/1.0"
3
3
  xmlns:android="http://schemas.android.com/apk/res/android"
4
4
  id="cordova-sqlite-evmax-build-free"
5
- version="0.0.6">
5
+ version="0.0.8">
6
6
 
7
7
  <name>Cordova sqlite storage - free evmax common version branch with premium stability performance improvements including workaround for super-large INSERT transactions and SELECT results on Android (with external sqlite3 dependencies)</name>
8
8
 
@@ -35,7 +35,7 @@
35
35
  -->
36
36
 
37
37
  <!-- JAR with NDK libs & Java JNI class -->
38
- <lib-file src="src/deps/android/sqlc-evplus-ndk-driver.jar" />
38
+ <lib-file src="src/deps/android/sqlc-evmax-ndk-driver.jar" />
39
39
  </platform>
40
40
 
41
41
  <!-- iOS -->
@@ -1876,6 +1876,24 @@ var mytests = function() {
1876
1876
 
1877
1877
  });
1878
1878
 
1879
+ it(suiteName + "SELECT UPPER(?) with ['/ab!cd'] parameter argument", function(done) {
1880
+ var db = openDatabase('SELECT-UPPER-with-slash-ab-bang-cd-TEXT-string-argument.db');
1881
+ expect(db).toBeDefined();
1882
+ db.transaction(function(tx) {
1883
+ tx.executeSql('SELECT UPPER(?) as myresult', ['/ab!cd!!ef!123/456'], function(ignored, rs) {
1884
+ expect(rs).toBeDefined();
1885
+ expect(rs.rows).toBeDefined();
1886
+ expect(rs.rows.length).toBe(1);
1887
+ expect(rs.rows.item(0).myresult).toBe('/AB!CD!!EF!123/456');
1888
+ done();
1889
+ });
1890
+ }, function(error) {
1891
+ expect(false).toBe(true);
1892
+ expect(error.message).toBe('--');
1893
+ done();
1894
+ });
1895
+ }, MYTIMEOUT);
1896
+
1879
1897
  });
1880
1898
 
1881
1899
  }
@@ -104,10 +104,7 @@ var mytests = function() {
104
104
  expect(rs).toBeDefined();
105
105
  expect(rs.rows).toBeDefined();
106
106
  expect(rs.rows.length).toBe(1);
107
- if (isAndroid)
108
- expect(rs.rows.item(0).myResult).toBe('3.38.5');
109
- else
110
- expect(rs.rows.item(0).myResult).toBe('3.40.0');
107
+ expect(rs.rows.item(0).myResult).toBe('3.40.0');
111
108
 
112
109
  // Close (plugin only) & finish:
113
110
  (isWebSql) ? done() : db.close(done, done);
@@ -391,7 +391,7 @@ public class SQLitePlugin extends CordovaPlugin {
391
391
  @Override
392
392
  void open(File dbFile) throws Exception {
393
393
  if (!isNativeLibLoaded) {
394
- System.loadLibrary("sqlc-evplus-ndk-driver");
394
+ System.loadLibrary("sqlc-evmax-ndk-driver");
395
395
  isNativeLibLoaded = true;
396
396
  }
397
397
 
@@ -4,7 +4,7 @@ Contact for commercial license: sales@litehelpers.net
4
4
  */
5
5
 
6
6
  (function() {
7
- var DB_STATE_INIT, DB_STATE_OPEN, EE_SIZE_LIMIT, READ_ONLY_REGEX, SQLiteFactory, SQLitePlugin, SQLitePluginTransaction, SelfTest, argsArray, dblocations, iosLocationMap, newSQLError, nextTick, root, txLocks;
7
+ var DB_STATE_INIT, DB_STATE_OPEN, EE_SIZE_LIMIT, READ_ONLY_REGEX, REPLACE_BANG_REGEXP, REPLACE_SLASH_REGEXP, SQLiteFactory, SQLitePlugin, SQLitePluginTransaction, SelfTest, argsArray, dblocations, iosLocationMap, newSQLError, nextTick, root, txLocks;
8
8
 
9
9
  root = this;
10
10
 
@@ -16,6 +16,10 @@ Contact for commercial license: sales@litehelpers.net
16
16
 
17
17
  EE_SIZE_LIMIT = 16 * 1024 * 1024;
18
18
 
19
+ REPLACE_BANG_REGEXP = /!/g;
20
+
21
+ REPLACE_SLASH_REGEXP = /\//g;
22
+
19
23
  txLocks = {};
20
24
 
21
25
  newSQLError = function(error, code) {
@@ -615,7 +619,13 @@ Contact for commercial license: sales@litehelpers.net
615
619
  var cb1, ch1, flatlist, flen;
616
620
  flen = flatBatchExecutesEntries[index].flen;
617
621
  flatlist = [mydbid, flen];
618
- flatlist = flatlist.concat(flatBatchExecutesEntries[index]);
622
+ flatlist = flatlist.concat(flatBatchExecutesEntries[index].map(function(v) {
623
+ if (typeof v === 'string') {
624
+ return v.replace(REPLACE_BANG_REGEXP, '!1').replace(REPLACE_SLASH_REGEXP, '!2');
625
+ } else {
626
+ return v;
627
+ }
628
+ }));
619
629
  flatlist.push('extra');
620
630
  ch1 = false;
621
631
  cb1 = function(result) {