Commit Graph

26388 Commits

Author SHA1 Message Date
stephan
069029011e Add Java tests which ensure that xFinal() is called with no aggregate context when the result set is empty.
FossilOrigin-Name: 7ac8c66a6b62d6bb345e8b9957a26de463019ae7d30ff442f19482c3a6827fc7
2023-07-28 10:01:01 +00:00
stephan
f326577619 Tweaks to the Java-side UDF docs.
FossilOrigin-Name: 48e0079d8db675a8761f27348bc6795aa6b6e49a3f76bd4adece83309dcf2aff
2023-07-28 09:54:39 +00:00
stephan
09c2640fe3 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
2023-07-28 09:25:05 +00:00
stephan
75d3b1b5a2 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
2023-07-28 01:51:14 +00:00
stephan
7d207bf483 Add an OOM check to the previous check-in. Minor internal API renaming.
FossilOrigin-Name: 6b56e4d62b4945e52978d00aa8e2984faa731c92a7e002e81524fcfcf8ba0cce
2023-07-28 01:19:44 +00:00
stephan
48a8352a39 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
2023-07-28 01:12:47 +00:00
stephan
8ba5d79c35 Reformulate jni tests to not require the -ea jvm flag to enable assert().
FossilOrigin-Name: dc356667a8f4fa31a3fef1ae35873d834d27fd6a9f0818d6fb85e4751fde9fe5
2023-07-27 22:53:02 +00:00
stephan
fd022a23a5 Add locking test for BusyHandler and clear up new -Xlint:jni warnings introduced by the busy-handler binding.
FossilOrigin-Name: 7dcde2bfce54b18f391776fa1cb93c0ff6153634bedcab0007b374c06c4d4079
2023-07-27 22:42:25 +00:00
stephan
1a95091b49 Bind sqlite3_busy_handler(). Correct mapping of pointers for, and cleanup of, JNI-level per-db state.
FossilOrigin-Name: 524747796a30a5c1c6c7567b49ffb1e35e2626c73e09c335c0ab74d4ddb5f005
2023-07-27 22:05:39 +00:00
stephan
fd250c2cb5 Replace some www: interwiki references in the JNI readme with their full URLs to make the doc more portable.
FossilOrigin-Name: 63ce0c9bdde210cf2f8b6099ae5c73caac18e6debc13c2f77090b77f3de72beb
2023-07-27 20:32:16 +00:00
stephan
eead0ffef8 Merge trunk into jni branch for compiler warning fixes.
FossilOrigin-Name: 0514fd340ae15a95760d50c747d6fb9eae5109cb5045eeabc2bc199be0a5ae35
2023-07-27 20:12:48 +00:00
dan
ea6bccaa44 Fix a couple of compiler warnings in fts5_index.c.
FossilOrigin-Name: bf71faa2a1d29ea762c4d2485522d6f4f8a5a7166981a92d3ba9c96ccbbe1213
2023-07-27 20:08:44 +00:00
stephan
dff3443939 Initial check-in of JNI (Java Native Interface) bindings for the core C API.
FossilOrigin-Name: b5374b9ef58fa0be80aefccde0721f5599fb820464b13940b6361b9aa09a59d5
2023-07-27 20:02:49 +00:00
dan
9cf8961557 Add the contentless_delete=1 option to fts5. For creating contentless tables that support DELETE and REPLACE statements.
FossilOrigin-Name: d66b182d2bc6ce0772e69401b7affe1adbc1b128c4631cb3c17f98dde72af00a
2023-07-27 19:13:35 +00:00
stephan
9fcca3d27c Dynamically determine whether the wasm.xWrap() argc check can be applied, depending on how the wasm environment exposes its exports.
FossilOrigin-Name: fd59226b34fffb1479fb2d7bd7c0aff982aa4a1a73e6c0d81de6eaf9c075998c
2023-07-27 17:50:10 +00:00
stephan
4cfd54256d Accommodate a breaking change in emcc 3.1.44.
FossilOrigin-Name: 2c5dd34199f5bcf729be814b8b46d9997821fe3a39ab12779c93df1bb2fd108d
2023-07-27 01:38:19 +00:00
drh
93853a4846 Fix a performance regression in JSON associated with generating small
snippets of JSON from a larger JSON string.

FossilOrigin-Name: 837f2907e10b026f6db1ca2d44b4bf60a6f069bf534bf369ad9b5c513cb0c6e4
2023-07-27 00:21:59 +00:00
drh
e94e132994 Reduce the number of memory allocations when parsing JSON.
FossilOrigin-Name: 9edd67162113df57dae21d4683f9495611e2cf4717c6d12f5b7b8e44156d5fe3
2023-07-26 23:22:32 +00:00
drh
f7a164f345 Minor changes to make coverage testing easier.
FossilOrigin-Name: ec8b43382e5402e15d9f2dda3cf21ac8be8c1589ddbe6c9433c33eef0036f764
2023-07-26 21:53:09 +00:00
drh
3f3dc2f5d8 Change a switch() case to default for coverage.
FossilOrigin-Name: 04f497074b9210326030f36107a43d6490a2a59c8a574e2c5429cd9bde681bf7
2023-07-26 19:22:43 +00:00
drh
beb3fb6904 Make sure jsonReplaceNode() always leaves the JsonParse in a consistent state even if an error is encountered.
FossilOrigin-Name: 01d52232dd6fbd253e77419a17df3df83d49434792d288ef96e14739a89cef3b
2023-07-26 19:11:47 +00:00
dan
5028dd89ab Add the ".scanstats vm" command to the shell tool. For profiling VM code in SQLITE_ENABLE_STMT_SCANSTATUS builds.
FossilOrigin-Name: 0cbec3990d4101142bfb831f8e6527b73baabebbd30fa7f59275b217dbce6a8d
2023-07-26 17:51:05 +00:00
dan
a1016b4275 Improve the output when ".scanstats vm" is enabled.
FossilOrigin-Name: 7df08fd35e9d4bc471aa9fbc4c81d2ebcfd2be6c4c38143342b3d9d727c9df22
2023-07-26 16:41:23 +00:00
drh
9095063e14 Improved caching and reuse of JSON parses.
FossilOrigin-Name: df099ad713011b67b09cb1e5f0fa2e6b45f9cee0ce9d3c118c5dbca3563d20a5
2023-07-26 14:18:06 +00:00
drh
7286c59896 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
2023-07-26 13:17:43 +00:00
drh
2b57197066 More comment improvements in json.c. Do not run jsonLookup() following
an OOM error.

FossilOrigin-Name: cd5fda8c2e354da7458b7c1a82ff18c5946f8dab16095bb0293bec57f6804f17
2023-07-26 11:53:14 +00:00
drh
7725370ff4 Improved comments and other cleanup for the changes on this branch.
FossilOrigin-Name: bac953a80d1a541e7a12aef00c86c002133859237143ad670b39ea19799a8900
2023-07-26 11:43:39 +00:00
stephan
8c7ee455ff 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
2023-07-26 11:41:41 +00:00
stephan
aef4fbf203 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
2023-07-26 11:11:39 +00:00
drh
9a184daad3 Fix jsonForceRCStr() to also add the NULL terminator.
FossilOrigin-Name: 134b01f37f8f741d7f7b7eda81384695d1cbe4c39751d87f08832d5c9afdcef2
2023-07-26 11:00:47 +00:00
stephan
3ba6914121 Reformulate [907dfc4a7aa1] using awk instead of sed for better cross-platform portability.
FossilOrigin-Name: 82ff7cc6a4b0331677be87bc069da414a56fd531bae402d0f0808b5d2b0d45da
2023-07-26 07:57:55 +00:00
drh
a757026c5e Merge the latest trunk fixes into the json-opt branch.
FossilOrigin-Name: ef4e1664d159b98854d9aa580b0bb942f1726f32a190e2ea659c171131ddce9a
2023-07-26 01:15:34 +00:00
drh
02e683e467 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
2023-07-26 01:12:08 +00:00
drh
44f53b9647 Extend the enhancement to json_set() and json_replace(). Clean up cruft.
FossilOrigin-Name: 2dbb22c75e86f2e3ced38ac14b4943570d5c2f86cd5e37e875bf0c863be28836
2023-07-26 01:05:08 +00:00
drh
0f200bc580 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
2023-07-26 00:48:45 +00:00
drh
59b8e666f6 Clarify ownership of the various objects involved in parsing JSON.
FossilOrigin-Name: afe02a398a16d51bd7482b6fbe2fbd15d9ac4fd9cdbc9d2bf81f38b3391fc567
2023-07-25 20:26:47 +00:00
drh
440e696d5e Incremental improvements to JSON parsing - trying to fold in the RCStr object.
FossilOrigin-Name: 4cb15d934a85ebc290fe6dd8cd3bd47b159561ca75d72bbffef30b9ea4623b09
2023-07-25 18:28:03 +00:00
dan
0c39b13e46 Fix a harmless "set-but-not-used" compiler warning in sqlite3session.c.
FossilOrigin-Name: 54b3c43fdfdaca6b129a5f0ee93c34eb001663775d33c087066650f5e164d1c1
2023-07-25 17:54:25 +00:00
dan
cbf4a0fa8e Merge trunk changes into this branch.
FossilOrigin-Name: 719973d7f5a47b110e9919fcb96d21feab1e41356dbb3ec674c1116c17bbb778
2023-07-25 17:11:29 +00:00
dan
5326953e57 Add extra test for 'deletemerge'.
FossilOrigin-Name: bc33cff4203cef12518e0f43d380a06d53d67c725fb96cfe6e934b7dc97a7efd
2023-07-25 16:48:54 +00:00
dan
3f874b58fb Change the name of the fts5 'delete-automerge' option to 'deletemerge'. And add tests for it.
FossilOrigin-Name: 1079300db2a7d1fbc86a01c215c234a3af64889c5396e6da63ff4f3c7efae4c5
2023-07-25 15:48:58 +00:00
drh
4bca124845 Fix a minor problem with error reporting in JSON.
FossilOrigin-Name: c456e4a8999066cd96246327101b3cca78294511a71a2ac07939bb702bfcb5f4
2023-07-25 15:43:01 +00:00
drh
f02cc9a324 Create the new RCStr class of strings and try to use them for JSON storage.
FossilOrigin-Name: c1b8725089bb3d006ec69add28f4fcb3f4e79412c7f438b5b1067c2227e77b9c
2023-07-25 15:08:18 +00:00
dan
039d494d5f Further tests for 'delete-automerge'.
FossilOrigin-Name: ca26c7a37a7e680be633f43be28f8877bdf9917448ea51c3bedc9b2352a00601
2023-07-25 13:53:42 +00:00
stephan
322a325703 Reformulate a (sed -i) construct in ext/wasm/GNUmakefile to account for Mac's sed -i being different than GNU's.
FossilOrigin-Name: 907dfc4a7aa129cdcedeb3ba2d75e1b68a8f22c2545ee1c8cf7d705041644e5c
2023-07-25 12:26:05 +00:00
drh
b715fe9d80 It is an error to try to insert a BLOB value into JSON.
FossilOrigin-Name: 28c6e964b1e2257527df02b352f02e135f7c4b764b8b41eda6461f9538f5d042
2023-07-24 23:27:05 +00:00
drh
3d2a559ecb Clean up some #defines in json.
FossilOrigin-Name: 327fff501e36f75d4901c520123c5ca45e0e0da1d9cc8fa8fa877ceb68c686d2
2023-07-24 22:45:59 +00:00
drh
27553579c0 Rework the JSON parse structure to facilitate better caching. Passes all
tests.

FossilOrigin-Name: ecdcb1ded76e9a0591bf7a2009679f49fc3aa639d3cc12406c6d29243ed8e1c5
2023-07-24 22:34:26 +00:00
dan
24730de8d1 Add the fts5 'delete-automerge' integer option. A level is eligible for auto-merging if it has a greater than or equal percentage of its entries deleted by tombstones than the 'delete-automerge' option. Default value is 10.
FossilOrigin-Name: b314be66b9ac0190b5373b3b6baec012382bc588c2d86c2edab796669a4303c3
2023-07-24 19:13:06 +00:00
drh
9125d5ab6c Incremental progress toward improved caching of parsed JSON.
FossilOrigin-Name: f2c063884685a79d5a787590447c292f51e898a98c9508159c788f505227ba85
2023-07-24 17:59:25 +00:00