]>
git.ipfire.org Git - thirdparty/sqlite.git/log
stephan [Mon, 7 Aug 2023 00:29:38 +0000 (00:29 +0000)]
Minor internal cleanups and additional test metrics.
FossilOrigin-Name:
fa0a6b6e8e6c711585bca30357e465f7a2f08a1c7159ecf23031af1e5158b89d
stephan [Mon, 7 Aug 2023 00:06:31 +0000 (00:06 +0000)]
stephan [Sun, 6 Aug 2023 22:09:09 +0000 (22:09 +0000)]
Rework the sqlite3_open(_v2)() order of operations so that pending auto-extension support can get ahold of the open-time Java state despite the Java/C (sqlite3*) binding not having yet been established.
FossilOrigin-Name:
34da294ab558880e81eebd7d261bc590551d5a7d2855e844695cef6394647ea7
stephan [Sun, 6 Aug 2023 21:29:13 +0000 (21:29 +0000)]
Completely rework how the JNI sqlite3_open(_v2) and sqlite3_prepare(_vN)() bindings deal with output pointers to give the JNI side full control over the origin of db and stmt handles (necessary for solving chicken/egg situations in auto-extensions and prepare-time trace). Lots of adjacent internal API renaming.
FossilOrigin-Name:
644999caff9db79562d45520d94aaa24ee88c65e397b6fb9c20a4f0e7f84e1a5
stephan [Sun, 6 Aug 2023 20:01:30 +0000 (20:01 +0000)]
Start adding JNI-side support for auto extensions, but hit a brick wall which requires slightly awkward semantics changes in the JNI bindings for sqlite3_open(_v2)() to resolve, so stash this #if'd out for the time being.
FossilOrigin-Name:
77a32d238e80fe1d237768d88780043a7bd2b3543e6672536254782cbea0039c
stephan [Sun, 6 Aug 2023 15:01:38 +0000 (15:01 +0000)]
stephan [Sun, 6 Aug 2023 14:19:09 +0000 (14:19 +0000)]
Bind sqlite3_config() to JNI for call variants taking (int,int*) and (int,const char *) variadic arguments.
FossilOrigin-Name:
6119289da85ac0c83e2a7236d24bbfff22334d6cf1d852756dc658ad6a75dfec
stephan [Sun, 6 Aug 2023 13:02:43 +0000 (13:02 +0000)]
JNI-internal cleanups and API renaming. Add a C-side java-string-to-utf8 conversion.
FossilOrigin-Name:
672d85795d04131135b1dc6a02d64eceb8b5084217c17766afeca4af23c07ec4
stephan [Sun, 6 Aug 2023 11:05:17 +0000 (11:05 +0000)]
Remove doc outdated warning about sqlite3_trace_v2() JNI binding being incompatible with MUTF-8. Use new to-string capability to simplify Fts5ExtensionApi::xColumnText() JNI binding.
FossilOrigin-Name:
ebcfc2379be12f76a96f3605b734f406b3354d4c985062cdbfca0cf7e3f31379
stephan [Sun, 6 Aug 2023 10:49:47 +0000 (10:49 +0000)]
Add a way to convert from standard UTF-8 to a Java string (JNI lacks this capability).
FossilOrigin-Name:
07dd082c9e371829a18aeb574f842891e545e1fc125760238ede7e7e2b6a4262
stephan [Sun, 6 Aug 2023 10:14:53 +0000 (10:14 +0000)]
Bind sqlite3_db_filename() and (closely related) (A) add many more docs about the UTF-8/MUTF-8 discrepancy (B) start adding internals to enable us to perform the standard-UTF-8-to-Java conversion from C.
FossilOrigin-Name:
586720fa714ac74491cd85d0c6645242e55e5989ad312ef6e15e0b0acc6906ff
stephan [Sat, 5 Aug 2023 22:41:36 +0000 (22:41 +0000)]
stephan [Sat, 5 Aug 2023 21:35:58 +0000 (21:35 +0000)]
Refactor the per-JNIEnv cache from a fixed-size static array to a linked list of dynamically-allocated entries. Uncache all per-db state (which is necessarily JNIEnv-specific) when the corresponding JNIEnv is uncached.
FossilOrigin-Name:
9dd8b78419e19e88bc3fbff9bf200390b146b2461af2bb6b93d8467036619e33
stephan [Sat, 5 Aug 2023 20:19:45 +0000 (20:19 +0000)]
Add SQLite3Jni.uncacheJniEnv(), a way for Java threads to clear their thread-specific cached state from the JNI bindings when they're about to terminate (or are otherwise done using the library).
FossilOrigin-Name:
7468f8761bece58f7ced3d112bbe2fb454432d9c54c9b96cedb5a15bc2926d0f
stephan [Sat, 5 Aug 2023 19:20:15 +0000 (19:20 +0000)]
In the JNI docs, note that the sizeof SQLITE_TRANSIENT and SQLITE_STATIC should ideally be the same as the platform's pointer size.
FossilOrigin-Name:
7d4ac44ec419ed0474bdb9d237b97660cf0d8faba8fe686f6a914d7bc04dfa3b
stephan [Sat, 5 Aug 2023 12:48:33 +0000 (12:48 +0000)]
stephan [Sat, 5 Aug 2023 11:16:54 +0000 (11:16 +0000)]
Bind Fts5ExtensionApi::xUserData() to JNI and extend xCreateFunction() to accept that argument. In test code, use assert() instead of exceptions if assert() is enabled so that test failures (exceptions) thrown via callbacks do not get suppressed (which they otherwise necessarily are to avoid crashing the host app).
FossilOrigin-Name:
e43837377696e468cd31cf71585fe235ffe67a9f4d3b036c5f9d0cb7141d0f57
stephan [Sat, 5 Aug 2023 04:30:31 +0000 (04:30 +0000)]
Add missing Fts5PhraseIter.java to the build.
FossilOrigin-Name:
96281ad0d5b2f020622c4f85f8694886e6a29fb43e1fbeb2a346ed2e94f109fb
stephan [Sat, 5 Aug 2023 04:23:27 +0000 (04:23 +0000)]
Bind fts5_api::xCreateFunction() to JNI and demonstrate it with a test.
FossilOrigin-Name:
c653bf16cbdccae05ab14059b140191afd5c17740fb78d756d8822986e54b17c
stephan [Sat, 5 Aug 2023 01:28:30 +0000 (01:28 +0000)]
stephan [Sat, 5 Aug 2023 00:40:28 +0000 (00:40 +0000)]
Bind the remaining Fts5ExtensionApi methods to JNI, noting that all are completely untested because the higher-level bits needed to do so are still missing.
FossilOrigin-Name:
23383c1dfd240ce47f504dd5c3402c9a31f166fbde5bb72d91309a5655074b33
stephan [Fri, 4 Aug 2023 15:38:59 +0000 (15:38 +0000)]
More work on the JNI binding of fts5 customization (still a long ways to go).
FossilOrigin-Name:
1a246fd21657f5bb13eeacc4059894ab787ea9a3c45bd9bdd3030a66643d2fef
stephan [Fri, 4 Aug 2023 13:27:45 +0000 (13:27 +0000)]
Eliminate code duplication in the two JNI tester classes.
FossilOrigin-Name:
63e7bbe3d5fcfb531f9d7fa88398c1191570e69b5d11adcb9c5e64b8345b4e6c
stephan [Fri, 4 Aug 2023 13:03:31 +0000 (13:03 +0000)]
FTS-related JNI refactoring. Move FTS-specific tests into their own class and dynamically load it, if possible, from the main test app.
FossilOrigin-Name:
b7a8428fcd969e7a29a23c2dae61883f69501094f2de0f79bbee3c02c672cbf5
stephan [Fri, 4 Aug 2023 12:44:06 +0000 (12:44 +0000)]
More work towards binding FTS5 customization to JNI. Add Fts*.java files missing from previous checkin.
FossilOrigin-Name:
91263178f463ca4623dd0203696eff6bcfd68abde5d2471be3f5a3edd791c52a
stephan [Fri, 4 Aug 2023 11:08:25 +0000 (11:08 +0000)]
Start including fts5 customization bits into JNI, but it's far from functional.
FossilOrigin-Name:
abaf5edd0430e3301a11bd0acb9ce4b81b310237e1799701411db56ef7605e01
stephan [Fri, 4 Aug 2023 09:53:13 +0000 (09:53 +0000)]
Improve internal error handling in the JNI create_function() impl.
FossilOrigin-Name:
2c88390faa108a60c8fb1eb7aad05d90f3daf4cfef14ca73987597aaf7be83c9
stephan [Wed, 2 Aug 2023 17:29:18 +0000 (17:29 +0000)]
More JNI-internal docs. Correct handling of a Java exception if a trace callback throws.
FossilOrigin-Name:
306b269a01037bc5c98276276fdb17b37027d1ee0d603183f42a65966245bdff
stephan [Wed, 2 Aug 2023 17:20:52 +0000 (17:20 +0000)]
stephan [Tue, 1 Aug 2023 10:19:05 +0000 (10:19 +0000)]
More docs for the Java side of the JNI bindings.
FossilOrigin-Name:
d8e9bcee96b90d56701f7907a8bd48853211caf757e1aa8decc7ed25eece6770
stephan [Tue, 1 Aug 2023 09:44:26 +0000 (09:44 +0000)]
Internal exception-handling cleanups in the JNI bindings.
FossilOrigin-Name:
057b1d4f6ffff73c120566895f61ea3fd8118968464d67ec9262096a7aa03f39
stephan [Tue, 1 Aug 2023 08:48:13 +0000 (08:48 +0000)]
Minor JNI-related doc tweaks and code re-ordering.
FossilOrigin-Name:
b663b27e425966f34fb62482a18048f0e2934380e5c411ae3627f1fe6a765c04
stephan [Mon, 31 Jul 2023 13:52:46 +0000 (13:52 +0000)]
Experimentally change the JNI sqlite3_trace_v2() callback type to have more convenient access to the current Java-side sqlite3_stmt at the cost of some uncomfortably fiddly current-statement tracking in the JNI layer. Subject to change.
FossilOrigin-Name:
459db332af6ea358b42bac096b9d26f1045b9ec32fad8463bca06807b2396b2c
stephan [Mon, 31 Jul 2023 12:10:32 +0000 (12:10 +0000)]
Add some JNI-internal metrics, accessible via passing -v when running Tester1.java. Document an OpenJDK bug which leads to incorrect -Xlint:jni warnings.
FossilOrigin-Name:
a5d68a6b64abe3c2dfc3a32157f70fd8a4ad89feef2510b3bbb2d86b325d51ae
stephan [Mon, 31 Jul 2023 10:55:30 +0000 (10:55 +0000)]
Correct a mis-cast in the JNI wrapper which just happened to accidentally work. Update JNI binding of sqlite3_context_db_handle() to return the bound-at-open() db instance instead of a new/temp proxy object.
FossilOrigin-Name:
9faca5d9ed4a749421e08bd1da8b7672c0fd31366124fdb613c46e19dece0fc1
stephan [Mon, 31 Jul 2023 10:42:05 +0000 (10:42 +0000)]
stephan [Mon, 31 Jul 2023 10:22:34 +0000 (10:22 +0000)]
Update some internal docs for the past two checkins. Add a way to dump out some debug info about the current JNI environment.
FossilOrigin-Name:
ac9b8bb1e64450d980e2986084996549ae5c59e68c9f0c4c69539c239b64468b
stephan [Mon, 31 Jul 2023 10:08:36 +0000 (10:08 +0000)]
Refactor the busy-handler-specific JNI hook type to use the generic hook type.
FossilOrigin-Name:
d9efdc6dd20a34bfdaad5d4bf8e67cce7e35238299eb91e4459d59fda11978a6
stephan [Mon, 31 Jul 2023 09:45:49 +0000 (09:45 +0000)]
Refactor the collation-specific JNI hook type to use the generic hook type.
FossilOrigin-Name:
02c1d3b6501fedf3d6e6d1ca60699df268522182c5ba3b49ae8f4691499ef0fc
stephan [Mon, 31 Jul 2023 09:28:15 +0000 (09:28 +0000)]
stephan [Mon, 31 Jul 2023 07:15:25 +0000 (07:15 +0000)]
Consolidate triplicated xDestroy()-calling code. Remove some unnecessary casts.
FossilOrigin-Name:
24c0763d0e025187c74002ffee11fd48d3cd7b40e01469d28484bb67f701884b
stephan [Sun, 30 Jul 2023 18:41:25 +0000 (18:41 +0000)]
stephan [Sun, 30 Jul 2023 17:24:01 +0000 (17:24 +0000)]
Internal JNI refactoring towards consolidating support for callbacks with and without finalizers.
FossilOrigin-Name:
120983a570d6de055cef9d916096de3410897ea9f46d23ea6eff1f9b549e423a
stephan [Sun, 30 Jul 2023 13:47:51 +0000 (13:47 +0000)]
Mark the Java wrapper classes of the C-native types as 'final' (cannot be subclassed).
FossilOrigin-Name:
4fd3d93623d67c25fb8a490e0d4ea56d531d858067011ab1b28cce694098feff
stephan [Sun, 30 Jul 2023 13:30:52 +0000 (13:30 +0000)]
Minor tweaks and optimizations in the JNI bindings.
FossilOrigin-Name:
41fb5898f1a78d9fd85a020e28a6048a7359b54e35632e9072917cbdbcd8b07d
stephan [Sun, 30 Jul 2023 11:36:41 +0000 (11:36 +0000)]
Bind sqlite3_collation_needed() to JNI. Related adjacent cleanups and fixes.
FossilOrigin-Name:
16ff167691733350907d2d995c774a885214acd0fe8ec491c16b786f00fe85d4
stephan [Sun, 30 Jul 2023 10:47:38 +0000 (10:47 +0000)]
Internal JNI refacoring to support the pending sqlite3_collation_needed() callback. Correct a bug in the linked-list handling of PerDbStateJni which triggered an assert().
FossilOrigin-Name:
7ac6614e69b03304d09745619ed83f12c7eb775aaf4a636a79289b01642ddd14
stephan [Sun, 30 Jul 2023 09:45:54 +0000 (09:45 +0000)]
Incremental checkin to minimize the diff while narrowing in on an assertion caused by refactoring.
FossilOrigin-Name:
2d7a91b1396d87852f1153ab7af7385514a9537cb64ba3bbd0faba2d28704214
stephan [Sun, 30 Jul 2023 08:12:15 +0000 (08:12 +0000)]
Consolidate some warnings for java callbacks which must not throw but do.
FossilOrigin-Name:
5e592ed2dfc89225fff3a1c76509adc799a238282413984e0c4b32af18525d18
stephan [Sun, 30 Jul 2023 07:44:03 +0000 (07:44 +0000)]
stephan [Sun, 30 Jul 2023 06:44:21 +0000 (06:44 +0000)]
stephan [Sun, 30 Jul 2023 06:00:53 +0000 (06:00 +0000)]
stephan [Sun, 30 Jul 2023 05:50:34 +0000 (05:50 +0000)]
stephan [Sun, 30 Jul 2023 04:31:56 +0000 (04:31 +0000)]
Bind sqlite3_progress_handler() to JNI. Add some metrics to Tester1.java.
FossilOrigin-Name:
437ecfe8abf8d294d429d191d811da6148e0b2ebb74cf66998480bfc8ef58bdf
stephan [Fri, 28 Jul 2023 18:44:11 +0000 (18:44 +0000)]
stephan [Fri, 28 Jul 2023 18:02:02 +0000 (18:02 +0000)]
Fix an incorrect file path in ext/jni/README.md
FossilOrigin-Name:
bcefa2df563260933c7ab5df90872580f71010c11419f6b1de7b1e2747237ff8
drh [Fri, 28 Jul 2023 15:58:09 +0000 (15:58 +0000)]
stephan [Fri, 28 Jul 2023 10:37:17 +0000 (10:37 +0000)]
Minor java cleanups recommended by a modern IDE.
FossilOrigin-Name:
f92a9bbabebc33a771835e259b04a57d07add1eacf3d9aec5fddf929ce8a3022
stephan [Fri, 28 Jul 2023 10:01:01 +0000 (10:01 +0000)]
Add Java tests which ensure that xFinal() is called with no aggregate context when the result set is empty.
FossilOrigin-Name:
7ac8c66a6b62d6bb345e8b9957a26de463019ae7d30ff442f19482c3a6827fc7
stephan [Fri, 28 Jul 2023 09:54:39 +0000 (09:54 +0000)]
stephan [Fri, 28 Jul 2023 09:25:05 +0000 (09:25 +0000)]
More Java docs about making use of the aggregate context. Change the JNI mapping to set the sqlite3_context::aggregateContext member directly, instead of via a superflous setter, because that way is faster.
FossilOrigin-Name:
7af0cb998f7161296d5e5e50a42e9db26ec13c145c61194a999a1a0104818d45
stephan [Fri, 28 Jul 2023 01:51:14 +0000 (01:51 +0000)]
More docs and cleanups related to the aggregate UDF state. Correct the OOM check to behave properly if xFinal() is called without a matching xStep(), xValue(), or xInverse().
FossilOrigin-Name:
ff53f1ccdc1780f2d9bd5f59804a76dbdf4f6b70696d3a7dbdbd96d1f8f6fa5c
stephan [Fri, 28 Jul 2023 01:19:44 +0000 (01:19 +0000)]
Add an OOM check to the previous check-in. Minor internal API renaming.
FossilOrigin-Name:
6b56e4d62b4945e52978d00aa8e2984faa731c92a7e002e81524fcfcf8ba0cce
stephan [Fri, 28 Jul 2023 01:12:47 +0000 (01:12 +0000)]
Add support making use of sqlite3_aggregate_context() (in a roundabout way) from Java to accumulate state within aggregate and window UDFs.
FossilOrigin-Name:
640574984741c7a9472d7f8be7bce87e736d7947ce673ae4a25008d74238ad90
stephan [Thu, 27 Jul 2023 22:53:02 +0000 (22:53 +0000)]
Reformulate jni tests to not require the -ea jvm flag to enable assert().
FossilOrigin-Name:
dc356667a8f4fa31a3fef1ae35873d834d27fd6a9f0818d6fb85e4751fde9fe5
stephan [Thu, 27 Jul 2023 22:42:25 +0000 (22:42 +0000)]
Add locking test for BusyHandler and clear up new -Xlint:jni warnings introduced by the busy-handler binding.
FossilOrigin-Name:
7dcde2bfce54b18f391776fa1cb93c0ff6153634bedcab0007b374c06c4d4079
stephan [Thu, 27 Jul 2023 22:05:39 +0000 (22:05 +0000)]
Bind sqlite3_busy_handler(). Correct mapping of pointers for, and cleanup of, JNI-level per-db state.
FossilOrigin-Name:
524747796a30a5c1c6c7567b49ffb1e35e2626c73e09c335c0ab74d4ddb5f005
stephan [Thu, 27 Jul 2023 20:32:16 +0000 (20:32 +0000)]
Replace some www: interwiki references in the JNI readme with their full URLs to make the doc more portable.
FossilOrigin-Name:
63ce0c9bdde210cf2f8b6099ae5c73caac18e6debc13c2f77090b77f3de72beb
stephan [Thu, 27 Jul 2023 20:12:48 +0000 (20:12 +0000)]
Merge trunk into jni branch for compiler warning fixes.
FossilOrigin-Name:
0514fd340ae15a95760d50c747d6fb9eae5109cb5045eeabc2bc199be0a5ae35
dan [Thu, 27 Jul 2023 20:08:44 +0000 (20:08 +0000)]
Fix a couple of compiler warnings in fts5_index.c.
FossilOrigin-Name:
bf71faa2a1d29ea762c4d2485522d6f4f8a5a7166981a92d3ba9c96ccbbe1213
stephan [Thu, 27 Jul 2023 20:02:49 +0000 (20:02 +0000)]
Initial check-in of JNI (Java Native Interface) bindings for the core C API.
FossilOrigin-Name:
b5374b9ef58fa0be80aefccde0721f5599fb820464b13940b6361b9aa09a59d5
dan [Thu, 27 Jul 2023 19:13:35 +0000 (19:13 +0000)]
Add the contentless_delete=1 option to fts5. For creating contentless tables that support DELETE and REPLACE statements.
FossilOrigin-Name:
d66b182d2bc6ce0772e69401b7affe1adbc1b128c4631cb3c17f98dde72af00a
stephan [Thu, 27 Jul 2023 17:50:10 +0000 (17:50 +0000)]
Dynamically determine whether the wasm.xWrap() argc check can be applied, depending on how the wasm environment exposes its exports.
FossilOrigin-Name:
fd59226b34fffb1479fb2d7bd7c0aff982aa4a1a73e6c0d81de6eaf9c075998c
stephan [Thu, 27 Jul 2023 01:38:19 +0000 (01:38 +0000)]
Accommodate a breaking change in emcc 3.1.44.
FossilOrigin-Name:
2c5dd34199f5bcf729be814b8b46d9997821fe3a39ab12779c93df1bb2fd108d
drh [Thu, 27 Jul 2023 00:21:59 +0000 (00:21 +0000)]
Fix a performance regression in JSON associated with generating small
snippets of JSON from a larger JSON string.
FossilOrigin-Name:
837f2907e10b026f6db1ca2d44b4bf60a6f069bf534bf369ad9b5c513cb0c6e4
drh [Wed, 26 Jul 2023 23:22:32 +0000 (23:22 +0000)]
Reduce the number of memory allocations when parsing JSON.
FossilOrigin-Name:
9edd67162113df57dae21d4683f9495611e2cf4717c6d12f5b7b8e44156d5fe3
drh [Wed, 26 Jul 2023 21:53:09 +0000 (21:53 +0000)]
Minor changes to make coverage testing easier.
FossilOrigin-Name:
ec8b43382e5402e15d9f2dda3cf21ac8be8c1589ddbe6c9433c33eef0036f764
drh [Wed, 26 Jul 2023 19:22:43 +0000 (19:22 +0000)]
Change a switch() case to default for coverage.
FossilOrigin-Name:
04f497074b9210326030f36107a43d6490a2a59c8a574e2c5429cd9bde681bf7
drh [Wed, 26 Jul 2023 19:11:47 +0000 (19:11 +0000)]
Make sure jsonReplaceNode() always leaves the JsonParse in a consistent state even if an error is encountered.
FossilOrigin-Name:
01d52232dd6fbd253e77419a17df3df83d49434792d288ef96e14739a89cef3b
dan [Wed, 26 Jul 2023 17:51:05 +0000 (17:51 +0000)]
Add the ".scanstats vm" command to the shell tool. For profiling VM code in SQLITE_ENABLE_STMT_SCANSTATUS builds.
FossilOrigin-Name:
0cbec3990d4101142bfb831f8e6527b73baabebbd30fa7f59275b217dbce6a8d
dan [Wed, 26 Jul 2023 16:41:23 +0000 (16:41 +0000)]
Improve the output when ".scanstats vm" is enabled.
FossilOrigin-Name:
7df08fd35e9d4bc471aa9fbc4c81d2ebcfd2be6c4c38143342b3d9d727c9df22
drh [Wed, 26 Jul 2023 14:18:06 +0000 (14:18 +0000)]
drh [Wed, 26 Jul 2023 13:17:43 +0000 (13:17 +0000)]
Change the debugging "json_parse(X)" function so that it shows a more
complete description of the JsonParse object on standard output and returns
the mimified JSON. Former behavior was to return the text of a decode
of the aNode array.
FossilOrigin-Name:
1bf85d4e388714a88f8940dcdec353c3e0267456697eff6963d34637912aecc9
drh [Wed, 26 Jul 2023 11:53:14 +0000 (11:53 +0000)]
More comment improvements in json.c. Do not run jsonLookup() following
an OOM error.
FossilOrigin-Name:
cd5fda8c2e354da7458b7c1a82ff18c5946f8dab16095bb0293bec57f6804f17
drh [Wed, 26 Jul 2023 11:43:39 +0000 (11:43 +0000)]
Improved comments and other cleanup for the changes on this branch.
FossilOrigin-Name:
bac953a80d1a541e7a12aef00c86c002133859237143ad670b39ea19799a8900
stephan [Wed, 26 Jul 2023 11:41:41 +0000 (11:41 +0000)]
Remove the batch SQL runner from the JS build's 'all' target, as it's long-since unused and adds noticable build time. Add makefile comments about JSPI.
FossilOrigin-Name:
b8f708e35d4fa027d12089ac7c5589c36da5f68b98cf9792bb11276bf233a860
stephan [Wed, 26 Jul 2023 11:11:39 +0000 (11:11 +0000)]
Add SAHPoolUtil.getFileNames() method, and tests for it, per [forum:
a3da1e34d8 |forum feedback]. Add a test to demonstrate that two SAH pools can coexist so long as they have different names.
FossilOrigin-Name:
72dc3f8c3255186ec412412b685b0b51ddcd08240f2353ac742fc7da8c23568e
drh [Wed, 26 Jul 2023 11:00:47 +0000 (11:00 +0000)]
Fix jsonForceRCStr() to also add the NULL terminator.
FossilOrigin-Name:
134b01f37f8f741d7f7b7eda81384695d1cbe4c39751d87f08832d5c9afdcef2
stephan [Wed, 26 Jul 2023 07:57:55 +0000 (07:57 +0000)]
Reformulate [
907dfc4a7aa1 ] using awk instead of sed for better cross-platform portability.
FossilOrigin-Name:
82ff7cc6a4b0331677be87bc069da414a56fd531bae402d0f0808b5d2b0d45da
drh [Wed, 26 Jul 2023 01:15:34 +0000 (01:15 +0000)]
Merge the latest trunk fixes into the json-opt branch.
FossilOrigin-Name:
ef4e1664d159b98854d9aa580b0bb942f1726f32a190e2ea659c171131ddce9a
drh [Wed, 26 Jul 2023 01:12:08 +0000 (01:12 +0000)]
Add the concept of an RCStr string - a "Reference Counted String". Use
these to keep track of big JSON strings that might need to be used in
multiple places at the same time with different lifetimes. Add two
different JSON string values to each parse - one with and one without
changes. The net result is a large reduction in the number of parses
that occur when doing an UPDATE of a indexed JSON field using
json_replace() or similar.
FossilOrigin-Name:
a4c1af616e672a0d4d04f2652e645617758231598fb7161b956883512303ae87
drh [Wed, 26 Jul 2023 01:05:08 +0000 (01:05 +0000)]
Extend the enhancement to json_set() and json_replace(). Clean up cruft.
FossilOrigin-Name:
2dbb22c75e86f2e3ced38ac14b4943570d5c2f86cd5e37e875bf0c863be28836
drh [Wed, 26 Jul 2023 00:48:45 +0000 (00:48 +0000)]
Add the JsonParse.zAlt field to old revised JSON text after a change.
Demonstrate that this elminates the need for reparsing after a change
by using it in the json_remove() function. This is an incremental check-in
containing lots of cruft.
FossilOrigin-Name:
f930b139d6db0ee799bc90397b225175103c4bf22923d1c9cbcd32509adc1738
drh [Tue, 25 Jul 2023 20:26:47 +0000 (20:26 +0000)]
Clarify ownership of the various objects involved in parsing JSON.
FossilOrigin-Name:
afe02a398a16d51bd7482b6fbe2fbd15d9ac4fd9cdbc9d2bf81f38b3391fc567
drh [Tue, 25 Jul 2023 18:28:03 +0000 (18:28 +0000)]
Incremental improvements to JSON parsing - trying to fold in the RCStr object.
FossilOrigin-Name:
4cb15d934a85ebc290fe6dd8cd3bd47b159561ca75d72bbffef30b9ea4623b09
dan [Tue, 25 Jul 2023 17:54:25 +0000 (17:54 +0000)]
Fix a harmless "set-but-not-used" compiler warning in sqlite3session.c.
FossilOrigin-Name:
54b3c43fdfdaca6b129a5f0ee93c34eb001663775d33c087066650f5e164d1c1
dan [Tue, 25 Jul 2023 17:11:29 +0000 (17:11 +0000)]
dan [Tue, 25 Jul 2023 16:48:54 +0000 (16:48 +0000)]
dan [Tue, 25 Jul 2023 15:48:58 +0000 (15:48 +0000)]
Change the name of the fts5 'delete-automerge' option to 'deletemerge'. And add tests for it.
FossilOrigin-Name:
1079300db2a7d1fbc86a01c215c234a3af64889c5396e6da63ff4f3c7efae4c5
drh [Tue, 25 Jul 2023 15:43:01 +0000 (15:43 +0000)]
Fix a minor problem with error reporting in JSON.
FossilOrigin-Name:
c456e4a8999066cd96246327101b3cca78294511a71a2ac07939bb702bfcb5f4