]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
23 months agoWhen converting a Java exception to a db error message, use Throwable.toString()...
stephan [Mon, 7 Aug 2023 11:18:44 +0000 (11:18 +0000)] 
When converting a Java exception to a db error message, use Throwable.toString() instead of getMessage() so that the exception type's name is included. More internal API renaming for consistency.

FossilOrigin-Name: 2d44720d06d9e50cb037e92981d2473a3ad0b7560f2f5923d428f59de6fd6aaa

23 months agoLots of JNI internal API renaming, for consistency, and moving-around of utility...
stephan [Mon, 7 Aug 2023 10:59:27 +0000 (10:59 +0000)] 
Lots of JNI internal API renaming, for consistency, and moving-around of utility functions. Make it safe for more callback types to throw.

FossilOrigin-Name: 9a494394b9eb28cf88dc5e7075a4b8c682c8e14fdd6837b595bec8011d7e9e72

23 months agoJNI API renaming to better match the C API.
stephan [Mon, 7 Aug 2023 10:01:59 +0000 (10:01 +0000)] 
JNI API renaming to better match the C API.

FossilOrigin-Name: 6e0bd03d0ba9ee8422853241ba1c4e963d158d1f042855c0cb0026701907896e

23 months agoMake sqlite3_stmt() Java ctor private - it's only constructed from JNI code.
stephan [Mon, 7 Aug 2023 01:06:27 +0000 (01:06 +0000)] 
Make sqlite3_stmt() Java ctor private - it's only constructed from JNI code.

FossilOrigin-Name: ce82c42f151e38b23945e6f5dd99cb6a77b3c6440508f41abc35e9f6c29cd440

23 months agoMinor internal cleanups and additional test metrics.
stephan [Mon, 7 Aug 2023 00:29:38 +0000 (00:29 +0000)] 
Minor internal cleanups and additional test metrics.

FossilOrigin-Name: fa0a6b6e8e6c711585bca30357e465f7a2f08a1c7159ecf23031af1e5158b89d

23 months agoBind the auto-extension APIs to JNI.
stephan [Mon, 7 Aug 2023 00:06:31 +0000 (00:06 +0000)] 
Bind the auto-extension APIs to JNI.

FossilOrigin-Name: 746a5fa079ad80b3c59411202ee601e0b5c50e79e5994d5e464fa06d3c276324

23 months agoRework the sqlite3_open(_v2)() order of operations so that pending auto-extension...
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

23 months agoCompletely rework how the JNI sqlite3_open(_v2) and sqlite3_prepare(_vN)() bindings...
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

23 months agoStart adding JNI-side support for auto extensions, but hit a brick wall which require...
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

23 months agoDoc cleanups.
stephan [Sun, 6 Aug 2023 15:01:38 +0000 (15:01 +0000)] 
Doc cleanups.

FossilOrigin-Name: 5f56b007704f2aad4cbc6f0ccd1e1f1c974865971f99451352714ee7e077c284

23 months agoBind sqlite3_config() to JNI for call variants taking (int,int*) and (int,const char...
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

23 months agoJNI-internal cleanups and API renaming. Add a C-side java-string-to-utf8 conversion.
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

23 months agoRemove doc outdated warning about sqlite3_trace_v2() JNI binding being incompatible...
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

23 months agoAdd a way to convert from standard UTF-8 to a Java string (JNI lacks this capability).
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

23 months agoBind sqlite3_db_filename() and (closely related) (A) add many more docs about the...
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

23 months agoBind sqlite3_set_authorizer() to JNI.
stephan [Sat, 5 Aug 2023 22:41:36 +0000 (22:41 +0000)] 
Bind sqlite3_set_authorizer() to JNI.

FossilOrigin-Name: e0fa03135942cd2fe732a74510d380ba78ab230c452168e638f32b4aee04b3f7

23 months agoRefactor the per-JNIEnv cache from a fixed-size static array to a linked list of...
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

23 months agoAdd SQLite3Jni.uncacheJniEnv(), a way for Java threads to clear their thread-specific...
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

23 months agoIn the JNI docs, note that the sizeof SQLITE_TRANSIENT and SQLITE_STATIC should ideal...
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

23 months agoJNI internal refactoring and cleanups.
stephan [Sat, 5 Aug 2023 12:48:33 +0000 (12:48 +0000)] 
JNI internal refactoring and cleanups.

FossilOrigin-Name: 7397973a2f191d75b149cf73a6d7ee1798820c1cd37d83af14e565067ede1b04

23 months agoBind Fts5ExtensionApi::xUserData() to JNI and extend xCreateFunction() to accept...
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

23 months agoAdd missing Fts5PhraseIter.java to the build.
stephan [Sat, 5 Aug 2023 04:30:31 +0000 (04:30 +0000)] 
Add missing Fts5PhraseIter.java to the build.

FossilOrigin-Name: 96281ad0d5b2f020622c4f85f8694886e6a29fb43e1fbeb2a346ed2e94f109fb

23 months agoBind fts5_api::xCreateFunction() to JNI and demonstrate it with a test.
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

23 months agoStart adding fts5_api to JNI.
stephan [Sat, 5 Aug 2023 01:28:30 +0000 (01:28 +0000)] 
Start adding fts5_api to JNI.

FossilOrigin-Name: 14d18fe983c83412d72fd2005a45a2b8c48d347b7bbf8ef9630ae460cff85c32

23 months agoBind the remaining Fts5ExtensionApi methods to JNI, noting that all are completely...
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

23 months agoMore work on the JNI binding of fts5 customization (still a long ways to go).
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

23 months agoEliminate code duplication in the two JNI tester classes.
stephan [Fri, 4 Aug 2023 13:27:45 +0000 (13:27 +0000)] 
Eliminate code duplication in the two JNI tester classes.

FossilOrigin-Name: 63e7bbe3d5fcfb531f9d7fa88398c1191570e69b5d11adcb9c5e64b8345b4e6c

23 months agoFTS-related JNI refactoring. Move FTS-specific tests into their own class and dynamic...
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

23 months agoMore work towards binding FTS5 customization to JNI. Add Fts*.java files missing...
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

23 months agoStart including fts5 customization bits into JNI, but it's far from functional.
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

23 months agoImprove internal error handling in the JNI create_function() impl.
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

23 months agoMore JNI-internal docs. Correct handling of a Java exception if a trace callback...
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

23 months agoInternal doc additions in the JNI bits.
stephan [Wed, 2 Aug 2023 17:20:52 +0000 (17:20 +0000)] 
Internal doc additions in the JNI bits.

FossilOrigin-Name: b56643644e065b03fe2c3545e02ed3b2f6fd9f77c39aa84a02a00d695e9a12dc

2 years agoMore docs for the Java side of the JNI bindings.
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

2 years agoInternal exception-handling cleanups in the JNI bindings.
stephan [Tue, 1 Aug 2023 09:44:26 +0000 (09:44 +0000)] 
Internal exception-handling cleanups in the JNI bindings.

FossilOrigin-Name: 057b1d4f6ffff73c120566895f61ea3fd8118968464d67ec9262096a7aa03f39

2 years agoMinor JNI-related doc tweaks and code re-ordering.
stephan [Tue, 1 Aug 2023 08:48:13 +0000 (08:48 +0000)] 
Minor JNI-related doc tweaks and code re-ordering.

FossilOrigin-Name: b663b27e425966f34fb62482a18048f0e2934380e5c411ae3627f1fe6a765c04

2 years agoExperimentally change the JNI sqlite3_trace_v2() callback type to have more convenien...
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

2 years agoAdd some JNI-internal metrics, accessible via passing -v when running Tester1.java...
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

2 years agoCorrect a mis-cast in the JNI wrapper which just happened to accidentally work. Updat...
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

2 years agoAdd another test for JNI-bound scalar UDFs.
stephan [Mon, 31 Jul 2023 10:42:05 +0000 (10:42 +0000)] 
Add another test for JNI-bound scalar UDFs.

FossilOrigin-Name: 8b322d92e247be606f83977767dc361ee4f7bc819122a630bdaa1110177db9b8

2 years agoUpdate some internal docs for the past two checkins. Add a way to dump out some debug...
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

2 years agoRefactor the busy-handler-specific JNI hook type to use the generic hook type.
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

2 years agoRefactor the collation-specific JNI hook type to use the generic hook type.
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

2 years agoInternal JNI doc tweaks.
stephan [Mon, 31 Jul 2023 09:28:15 +0000 (09:28 +0000)] 
Internal JNI doc tweaks.

FossilOrigin-Name: f4aa2c82882cb6be1fd52977de19fd03c2e38abb857b520f951b32d610972ab6

2 years agoConsolidate triplicated xDestroy()-calling code. Remove some unnecessary casts.
stephan [Mon, 31 Jul 2023 07:15:25 +0000 (07:15 +0000)] 
Consolidate triplicated xDestroy()-calling code. Remove some unnecessary casts.

FossilOrigin-Name: 24c0763d0e025187c74002ffee11fd48d3cd7b40e01469d28484bb67f701884b

2 years agoInternal JNI API renaming.
stephan [Sun, 30 Jul 2023 18:41:25 +0000 (18:41 +0000)] 
Internal JNI API renaming.

FossilOrigin-Name: fcfc070673cef2f657f4737f096678439ed7c011fb2e5391e0721f82f5d8af51

2 years agoInternal JNI refactoring towards consolidating support for callbacks with and without...
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

2 years agoMark the Java wrapper classes of the C-native types as 'final' (cannot be subclassed).
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

2 years agoMinor tweaks and optimizations in the JNI bindings.
stephan [Sun, 30 Jul 2023 13:30:52 +0000 (13:30 +0000)] 
Minor tweaks and optimizations in the JNI bindings.

FossilOrigin-Name: 41fb5898f1a78d9fd85a020e28a6048a7359b54e35632e9072917cbdbcd8b07d

2 years agoBind sqlite3_collation_needed() to JNI. Related adjacent cleanups and fixes.
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

2 years agoInternal JNI refacoring to support the pending sqlite3_collation_needed() callback...
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

2 years agoIncremental checkin to minimize the diff while narrowing in on an assertion caused...
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

2 years agoConsolidate some warnings for java callbacks which must not throw but do.
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

2 years agoBind sqlite3_update_hook() to JNI.
stephan [Sun, 30 Jul 2023 07:44:03 +0000 (07:44 +0000)] 
Bind sqlite3_update_hook() to JNI.

FossilOrigin-Name: a5bbaa9017839f8d8b92bfb44472d4c60fa3037bfae7846dc8350262c1332cde

2 years agoBind sqlite3_rollback_hook() to JNI.
stephan [Sun, 30 Jul 2023 06:44:21 +0000 (06:44 +0000)] 
Bind sqlite3_rollback_hook() to JNI.

FossilOrigin-Name: 5f8ee44098d74ac2b98e4dd43ad80d3b919528358b3f992b425af7fa6262dcee

2 years agoAdd commit hook failure to JNI tests.
stephan [Sun, 30 Jul 2023 06:00:53 +0000 (06:00 +0000)] 
Add commit hook failure to JNI tests.

FossilOrigin-Name: be4459b495cc2555e4d8ca24dd56c3da1036d25af7cc077bbc3d93c2a3e8c40b

2 years agoBind sqlite3_commit_hook() to JNI.
stephan [Sun, 30 Jul 2023 05:50:34 +0000 (05:50 +0000)] 
Bind sqlite3_commit_hook() to JNI.

FossilOrigin-Name: c687297fcae082cbd7f9258c43f3841fd34904d8b62b0adf3cd61fcddeee483d

2 years agoBind sqlite3_progress_handler() to JNI. Add some metrics to Tester1.java.
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

2 years agoInternal JNI binding docs.
stephan [Fri, 28 Jul 2023 18:44:11 +0000 (18:44 +0000)] 
Internal JNI binding docs.

FossilOrigin-Name: 991c66197e4dc7297fce3b20a1b4846873bcd4ce8add36aac71bd2e0e73c207b

2 years agoFix an incorrect file path in ext/jni/README.md
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

2 years agoFix minor typos in the JNI README.md file.
drh [Fri, 28 Jul 2023 15:58:09 +0000 (15:58 +0000)] 
Fix minor typos in the JNI README.md file.

FossilOrigin-Name: e21cf2e8f13465dbff33f9c21580752c1d8c077d6a253f56f04dab0d47eb99b8

2 years agoMinor java cleanups recommended by a modern IDE.
stephan [Fri, 28 Jul 2023 10:37:17 +0000 (10:37 +0000)] 
Minor java cleanups recommended by a modern IDE.

FossilOrigin-Name: f92a9bbabebc33a771835e259b04a57d07add1eacf3d9aec5fddf929ce8a3022

2 years agoAdd Java tests which ensure that xFinal() is called with no aggregate context when...
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

2 years agoTweaks to the Java-side UDF docs.
stephan [Fri, 28 Jul 2023 09:54:39 +0000 (09:54 +0000)] 
Tweaks to the Java-side UDF docs.

FossilOrigin-Name: 48e0079d8db675a8761f27348bc6795aa6b6e49a3f76bd4adece83309dcf2aff

2 years agoMore Java docs about making use of the aggregate context. Change the JNI mapping...
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

2 years agoMore docs and cleanups related to the aggregate UDF state. Correct the OOM check...
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

2 years agoAdd an OOM check to the previous check-in. Minor internal API renaming.
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

2 years agoAdd support making use of sqlite3_aggregate_context() (in a roundabout way) from...
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

2 years agoReformulate jni tests to not require the -ea jvm flag to enable assert().
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

2 years agoAdd locking test for BusyHandler and clear up new -Xlint:jni warnings introduced...
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

2 years agoBind sqlite3_busy_handler(). Correct mapping of pointers for, and cleanup of, JNI...
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

2 years agoReplace some www: interwiki references in the JNI readme with their full URLs to...
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

2 years agoMerge trunk into jni branch for compiler warning fixes.
stephan [Thu, 27 Jul 2023 20:12:48 +0000 (20:12 +0000)] 
Merge trunk into jni branch for compiler warning fixes.

FossilOrigin-Name: 0514fd340ae15a95760d50c747d6fb9eae5109cb5045eeabc2bc199be0a5ae35

2 years agoFix a couple of compiler warnings in fts5_index.c.
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

2 years agoInitial check-in of JNI (Java Native Interface) bindings for the core C API.
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

2 years agoAdd the contentless_delete=1 option to fts5. For creating contentless tables that...
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

2 years agoDynamically determine whether the wasm.xWrap() argc check can be applied, depending...
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

2 years agoAccommodate a breaking change in emcc 3.1.44.
stephan [Thu, 27 Jul 2023 01:38:19 +0000 (01:38 +0000)] 
Accommodate a breaking change in emcc 3.1.44.

FossilOrigin-Name: 2c5dd34199f5bcf729be814b8b46d9997821fe3a39ab12779c93df1bb2fd108d

2 years agoFix a performance regression in JSON associated with generating small
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

2 years agoReduce the number of memory allocations when parsing JSON.
drh [Wed, 26 Jul 2023 23:22:32 +0000 (23:22 +0000)] 
Reduce the number of memory allocations when parsing JSON.

FossilOrigin-Name: 9edd67162113df57dae21d4683f9495611e2cf4717c6d12f5b7b8e44156d5fe3

2 years agoMinor changes to make coverage testing easier.
drh [Wed, 26 Jul 2023 21:53:09 +0000 (21:53 +0000)] 
Minor changes to make coverage testing easier.

FossilOrigin-Name: ec8b43382e5402e15d9f2dda3cf21ac8be8c1589ddbe6c9433c33eef0036f764

2 years agoChange a switch() case to default for coverage.
drh [Wed, 26 Jul 2023 19:22:43 +0000 (19:22 +0000)] 
Change a switch() case to default for coverage.

FossilOrigin-Name: 04f497074b9210326030f36107a43d6490a2a59c8a574e2c5429cd9bde681bf7

2 years agoMake sure jsonReplaceNode() always leaves the JsonParse in a consistent state even...
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

2 years agoAdd the ".scanstats vm" command to the shell tool. For profiling VM code in SQLITE_EN...
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

2 years agoImprove the output when ".scanstats vm" is enabled. scanstatus-exp
dan [Wed, 26 Jul 2023 16:41:23 +0000 (16:41 +0000)] 
Improve the output when ".scanstats vm" is enabled.

FossilOrigin-Name: 7df08fd35e9d4bc471aa9fbc4c81d2ebcfd2be6c4c38143342b3d9d727c9df22

2 years agoImproved caching and reuse of JSON parses.
drh [Wed, 26 Jul 2023 14:18:06 +0000 (14:18 +0000)] 
Improved caching and reuse of JSON parses.

FossilOrigin-Name: df099ad713011b67b09cb1e5f0fa2e6b45f9cee0ce9d3c118c5dbca3563d20a5

2 years agoChange the debugging "json_parse(X)" function so that it shows a more
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

2 years agoMore comment improvements in json.c. Do not run jsonLookup() following
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

2 years agoImproved comments and other cleanup for the changes on this branch.
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

2 years agoRemove the batch SQL runner from the JS build's 'all' target, as it's long-since...
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

2 years agoAdd SAHPoolUtil.getFileNames() method, and tests for it, per [forum:a3da1e34d8|forum...
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

2 years agoFix jsonForceRCStr() to also add the NULL terminator.
drh [Wed, 26 Jul 2023 11:00:47 +0000 (11:00 +0000)] 
Fix jsonForceRCStr() to also add the NULL terminator.

FossilOrigin-Name: 134b01f37f8f741d7f7b7eda81384695d1cbe4c39751d87f08832d5c9afdcef2

2 years agoReformulate [907dfc4a7aa1] using awk instead of sed for better cross-platform portabi...
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

2 years agoMerge the latest trunk fixes into the json-opt branch.
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

2 years agoAdd the concept of an RCStr string - a "Reference Counted String". Use
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

2 years agoExtend the enhancement to json_set() and json_replace(). Clean up cruft. json-opt-rcstr
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

2 years agoAdd the JsonParse.zAlt field to old revised JSON text after a change.
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

2 years agoClarify ownership of the various objects involved in parsing JSON.
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

2 years agoIncremental improvements to JSON parsing - trying to fold in the RCStr object.
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

2 years agoFix a harmless "set-but-not-used" compiler warning in sqlite3session.c.
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