]> git.ipfire.org Git - thirdparty/sqlite.git/log
thirdparty/sqlite.git
2 years agoMerge trunk changes into this branch. fts5-token-data
dan [Wed, 6 Dec 2023 14:30:34 +0000 (14:30 +0000)] 
Merge trunk changes into this branch.

FossilOrigin-Name: 8f46eace86e7b2e556913575aa3cd6f7987ac0efcc880f0af649d42c253aeb81

2 years agoREADME.md typo fix reported in the forum and update all links from http: to https:.
stephan [Wed, 6 Dec 2023 12:30:28 +0000 (12:30 +0000)] 
README.md typo fix reported in the forum and update all links from http: to https:.

FossilOrigin-Name: 5c48acdbb44185b352b54911a57a6986d6c7e624bdeba2af48b985d29f0292bf

2 years agoRework the JSON functions so that they use the JSONB format internally.
drh [Tue, 5 Dec 2023 19:45:09 +0000 (19:45 +0000)] 
Rework the JSON functions so that they use the JSONB format internally.
The original JsonNode parse tree design is removed.  All JSON functions
that accept text JSON also accept JSONB.  New functions generate JSONB.

FossilOrigin-Name: 7f0c79b94e8f55e5013e52ba64ba8b32dad1dc4e2224d2099733cbc561de1810

2 years agoUse extra assert() statement to silence harmless static analyzer warnings. jsonb
drh [Tue, 5 Dec 2023 19:24:07 +0000 (19:24 +0000)] 
Use extra assert() statement to silence harmless static analyzer warnings.

FossilOrigin-Name: 174c2b2eef5fecd96a5fc89b81032fe81f7801f12097cea10e7e7f0a02114813

2 years agoFurther tests for the new code on this branch.
dan [Tue, 5 Dec 2023 18:36:23 +0000 (18:36 +0000)] 
Further tests for the new code on this branch.

FossilOrigin-Name: 59d008b6c23ab900377bc696ee19381feb7614bac80546eae361e401c3620c4e

2 years agoMiscellaneous comment cleanup and typo fixes.
drh [Tue, 5 Dec 2023 18:28:15 +0000 (18:28 +0000)] 
Miscellaneous comment cleanup and typo fixes.

FossilOrigin-Name: 59446dc0bd0091572122a3c8b4653d7a2dc867d16c4a5919f79b81bc3a673ce3

2 years agoUse strspn() to accelerate whitespace bypass in the JSON parser.
drh [Tue, 5 Dec 2023 12:52:13 +0000 (12:52 +0000)] 
Use strspn() to accelerate whitespace bypass in the JSON parser.

FossilOrigin-Name: 843197df08352bdff4b87be91d160e574572aded0d0c66142fd960000c0b4701

2 years agoSmall performance gain by unwinding the string literal delimiter search
drh [Tue, 5 Dec 2023 12:22:05 +0000 (12:22 +0000)] 
Small performance gain by unwinding the string literal delimiter search
loop in the JSON parser by one more level.

FossilOrigin-Name: 4c587feac153e8ebe526559ec3d254f545f81e8d1ed3126f91a5ff25ec4aa72e

2 years agoClean up the JSONB performance test script.
drh [Tue, 5 Dec 2023 12:20:58 +0000 (12:20 +0000)] 
Clean up the JSONB performance test script.

FossilOrigin-Name: 905301075a7fc1010ee7e754867b1b698c9b8576d50e98125def32a5dfb7ee9d

2 years agoUse an assert() to fix a harmless static analyzer warning.
drh [Tue, 5 Dec 2023 01:44:15 +0000 (01:44 +0000)] 
Use an assert() to fix a harmless static analyzer warning.

FossilOrigin-Name: a249ca657e624028bc6b3d2c2bcedd7162d118addb7d62ce519920cecebf1860

2 years agoFix OOM and corrupt JSONB handling in json_patch().
drh [Tue, 5 Dec 2023 00:17:17 +0000 (00:17 +0000)] 
Fix OOM and corrupt JSONB handling in json_patch().

FossilOrigin-Name: 1910feb0b7d5cc2b810c3322f6cca281d8730182d30d162bd7bb56800979ea91

2 years agoRename the internal routine jsonMergePatchBlob() to just jsonMergePatch().
drh [Mon, 4 Dec 2023 23:12:57 +0000 (23:12 +0000)] 
Rename the internal routine jsonMergePatchBlob() to just jsonMergePatch().

FossilOrigin-Name: ebf667b616235bb64b83832008342ba5e7b10b2c170d7cebc431f040fef7ecfb

2 years agoAdd further tests for xInstToken().
dan [Mon, 4 Dec 2023 19:48:08 +0000 (19:48 +0000)] 
Add further tests for xInstToken().

FossilOrigin-Name: 8582707f16133f003a6687f68cbea03d4eb6c2a0e2e07746b7cace0c44e84fa4

2 years agoFixes to error handling in json_array_length().
drh [Mon, 4 Dec 2023 19:32:17 +0000 (19:32 +0000)] 
Fixes to error handling in json_array_length().

FossilOrigin-Name: aa85df2d26b74c171c55bde19ef17c4f11f40b8af7181bbf7162f87cdea7e88b

2 years agoDo not make the input JSONB editable in json_remove() if there are no PATH
drh [Mon, 4 Dec 2023 19:14:13 +0000 (19:14 +0000)] 
Do not make the input JSONB editable in json_remove() if there are no PATH
argument.

FossilOrigin-Name: 66594544f3ba9977475a3e3f74404eb2b2fb845053b28bd24c2b52c7df94e9d7

2 years agoFix errors in rendering JSON5 escape sequences embedded in JSONB.
drh [Mon, 4 Dec 2023 18:53:10 +0000 (18:53 +0000)] 
Fix errors in rendering JSON5 escape sequences embedded in JSONB.

FossilOrigin-Name: f1a51ae3863557526a51c6e98e71fcdf4f1ed14a36212b3c90f7408f926345e4

2 years agoFixes for xInstToken() with tokendata=0 tables. And with prefix queries.
dan [Mon, 4 Dec 2023 18:45:14 +0000 (18:45 +0000)] 
Fixes for xInstToken() with tokendata=0 tables. And with prefix queries.

FossilOrigin-Name: 78fbb71598b1ca756acc078253880a1d0f7983a5a26b9efc683e6488122505a1

2 years agoFix memory leak in new code on this branch.
dan [Mon, 4 Dec 2023 17:58:56 +0000 (17:58 +0000)] 
Fix memory leak in new code on this branch.

FossilOrigin-Name: ebc160b9a05568df66f86e30804399ee29d34b44a60c57e062f98cb92826353f

2 years agoFix a problem with the xInstCount() API and "ORDER BY rank" queries.
dan [Mon, 4 Dec 2023 17:45:33 +0000 (17:45 +0000)] 
Fix a problem with the xInstCount() API and "ORDER BY rank" queries.

FossilOrigin-Name: 317a50563d9e8586fda136e513727241b414e7267d50a06571c8ebd0eae710bc

2 years agoContinuing simplifications and code cleanup.
drh [Mon, 4 Dec 2023 17:40:28 +0000 (17:40 +0000)] 
Continuing simplifications and code cleanup.

FossilOrigin-Name: ddf92b5059a9106753fd18b82ba8daa269a62af947561c460790107b83416f0b

2 years agoFix bug in xInstToken() causing the wrong token to be returned.
dan [Mon, 4 Dec 2023 17:05:37 +0000 (17:05 +0000)] 
Fix bug in xInstToken() causing the wrong token to be returned.

FossilOrigin-Name: da78d07e77cbc783fbc725758911c230fd6a1c1885d9576125de955dcc2bd37f

2 years agoRemove reachable ALWAYS and NEVER macros.
drh [Mon, 4 Dec 2023 16:01:39 +0000 (16:01 +0000)] 
Remove reachable ALWAYS and NEVER macros.

FossilOrigin-Name: f601de3eeabd85993c1f5ee96b62de6fdabbeae2fe8950e00d08feb48d42c498

2 years agoTwo new NEVER macros.
drh [Mon, 4 Dec 2023 15:22:42 +0000 (15:22 +0000)] 
Two new NEVER macros.

FossilOrigin-Name: 52632c92cb06faf0e804654b3490fd6c199521107bd30c8fcbc3a2a5a488098f

2 years agoAdd tests for using tokendata=1 and contentless_delete=1 together.
dan [Mon, 4 Dec 2023 15:08:21 +0000 (15:08 +0000)] 
Add tests for using tokendata=1 and contentless_delete=1 together.

FossilOrigin-Name: a2506b8c9718054912270055638204753c4156bbc115e55194e6df9d7e76cb10

2 years agoRepair issues and inefficiencies found during testing.
drh [Mon, 4 Dec 2023 13:12:45 +0000 (13:12 +0000)] 
Repair issues and inefficiencies found during testing.

FossilOrigin-Name: ae973cb1515f9d76409c92a2ca2ffd6b71f32b0b490a4886770e7c1b90f12611

2 years agoBetter pre-scan size estimations for objects in the JSON parser resulting
drh [Mon, 4 Dec 2023 01:14:23 +0000 (01:14 +0000)] 
Better pre-scan size estimations for objects in the JSON parser resulting
in fewer reallocations and memmove operations.

FossilOrigin-Name: 526b27f90897f5e35dfff7257daf6c4ce4798d649b09b8aecfb02df0449e3c51

2 years agoBack off on the use of strlen() for situations where sqlite3_value_bytes()
drh [Mon, 4 Dec 2023 00:31:58 +0000 (00:31 +0000)] 
Back off on the use of strlen() for situations where sqlite3_value_bytes()
will work as well, for performance.

FossilOrigin-Name: 79fb54fbb8b9c30f47cdbd437d24a21542716241e822749e5e28c9fbc449bfa8

2 years agoRemove dead code. Improved reporting of errors in JSON inputs.
drh [Sun, 3 Dec 2023 23:38:24 +0000 (23:38 +0000)] 
Remove dead code.  Improved reporting of errors in JSON inputs.

FossilOrigin-Name: 2eaa738e6b5c1b67b3e57c868d9c3a30eea38a0b3b8b02482f06d57a45b10921

2 years agoAvoid problems when the path argument to json_tree() contains embedded U+0000
drh [Sun, 3 Dec 2023 23:30:59 +0000 (23:30 +0000)] 
Avoid problems when the path argument to json_tree() contains embedded U+0000
characters.

FossilOrigin-Name: 9f055091af01a5dddba1a7e9868ad030c8f206237e1569215cb161e53e54aa71

2 years agoEnsure that OOM conditions in the generation of the "bad JSON path" error
drh [Sun, 3 Dec 2023 20:11:35 +0000 (20:11 +0000)] 
Ensure that OOM conditions in the generation of the "bad JSON path" error
message result in an SQLITE_NOMEM error.

FossilOrigin-Name: aa0e02b5c26a2ef3d6216a0ed8bc01382be43173485f898cb63f2a8c559f2e74

2 years agoEnable incorrect JSONB to be rendered into text without hitting an
drh [Sun, 3 Dec 2023 19:59:45 +0000 (19:59 +0000)] 
Enable incorrect JSONB to be rendered into text without hitting an
assertion for a bad whitespace escape in a string.

FossilOrigin-Name: 4d6a9a217df6792b41766b774fb0c0553b45f9104c26a0955bf4a30862d7d7bf

2 years agoDo not let bad hexadecimal digits in malformed JSONB cause an assertion fault.
drh [Sun, 3 Dec 2023 11:54:39 +0000 (11:54 +0000)] 
Do not let bad hexadecimal digits in malformed JSONB cause an assertion fault.

FossilOrigin-Name: 8dec1ba1e5076ff596756e00c1e2ada0245f168a503dd1cadadf848331acfac3

2 years agoMinor code changes for consistency and to simplify testing.
drh [Sun, 3 Dec 2023 00:51:30 +0000 (00:51 +0000)] 
Minor code changes for consistency and to simplify testing.

FossilOrigin-Name: df272bd837910ad9e03e222716a1201a601399664365f1dcf73d5932372518ed

2 years agoImplement strict JSONB checking in the json_valid() function.
drh [Sat, 2 Dec 2023 21:39:34 +0000 (21:39 +0000)] 
Implement strict JSONB checking in the json_valid() function.

FossilOrigin-Name: 0f26d38880fcbc207abcc94dbc170a7428bab1b4f0b7731aaf5bee0224000994

2 years agoFix harmless compiler warnings reported by MSVC.
drh [Sat, 2 Dec 2023 20:37:45 +0000 (20:37 +0000)] 
Fix harmless compiler warnings reported by MSVC.

FossilOrigin-Name: 419652c0c82980bd043584dcd2976f91dfff7b926b216d597698299850b855c0

2 years agoFix various compiler warnings and other problems with the new code on this branch.
dan [Sat, 2 Dec 2023 20:35:04 +0000 (20:35 +0000)] 
Fix various compiler warnings and other problems with the new code on this branch.

FossilOrigin-Name: 3a623cfa173b4035c759cb84985d11d8727053beb383648503987d6ab15c0ef0

2 years agoCode and comment cleanup. Everything should work the same.
drh [Sat, 2 Dec 2023 20:25:36 +0000 (20:25 +0000)] 
Code and comment cleanup.  Everything should work the same.

FossilOrigin-Name: c640754df0d3ffdad994745f0d0e10c8f19f424b87f6a6e6e269491a0350b950

2 years agoFix harmless compiler warnings. Refactor some identifier names for
drh [Sat, 2 Dec 2023 18:17:38 +0000 (18:17 +0000)] 
Fix harmless compiler warnings.  Refactor some identifier names for
clearer presentation.

FossilOrigin-Name: 7e3941502789c5afaf19b08112f464abf5e3cba7f92fc9290af2a0f96127ad9a

2 years agoWhen tokendata=1 queries require multiple segment-cursors, allow those cursors to...
dan [Sat, 2 Dec 2023 18:14:07 +0000 (18:14 +0000)] 
When tokendata=1 queries require multiple segment-cursors, allow those cursors to share a single array of in-memory tombstone pages.

FossilOrigin-Name: e0175d07e4094db5ea4b0378a5ff480dafb6ba9da86a113fa767c4c89c3c866f

2 years agoTake extra care to ensure that JSONB values that are in cache are actually
drh [Sat, 2 Dec 2023 18:04:27 +0000 (18:04 +0000)] 
Take extra care to ensure that JSONB values that are in cache are actually
owned by the JSON subsystem, and that ownership of such values is not handed
back to the bytecode engine.

FossilOrigin-Name: 1304534001e9ef66c6b12752b69d790bfa3427cc803f87cc48ca22ae12df0fdf

2 years agoEnsure that tokendata=1 queries avoid loading large doclists for queries like "common...
dan [Sat, 2 Dec 2023 17:32:16 +0000 (17:32 +0000)] 
Ensure that tokendata=1 queries avoid loading large doclists for queries like "common AND uncommon", just as tokendata=0 queries do.

FossilOrigin-Name: 7bda09ab404a110d57449e149a3281fca8dc4cacf7bd9832ea2a1356ad20fe8e

2 years agoProtect a memcpy() against OOM conditions.
drh [Sat, 2 Dec 2023 16:11:22 +0000 (16:11 +0000)] 
Protect a memcpy() against OOM conditions.

FossilOrigin-Name: 26144d1c25ae0435db568009ba05e485d23d146f2b1f29f3a426c87860316aed

2 years agoDo not allow a JsonParse object to be considered "editable" after an OOM.
drh [Sat, 2 Dec 2023 15:59:48 +0000 (15:59 +0000)] 
Do not allow a JsonParse object to be considered "editable" after an OOM.

FossilOrigin-Name: c6bacf57bd6fe0fee00c9d41163a270b60997c20659949971bbf5c6c62622bfe

2 years agoFix potential unsigned integer underflow in jsonAppendString().
drh [Sat, 2 Dec 2023 15:06:43 +0000 (15:06 +0000)] 
Fix potential unsigned integer underflow in jsonAppendString().

FossilOrigin-Name: d2fba2cbdc3870d34228c1a9446eced884325acc183900d7dd0b96132570fb4a

2 years agoMinor fix to the header comment on jsonXlateTextToBlob().
drh [Sat, 2 Dec 2023 14:55:46 +0000 (14:55 +0000)] 
Minor fix to the header comment on jsonXlateTextToBlob().

FossilOrigin-Name: c3677ba410208c07b711f5f526eb5cf039a8eee49f632c7ae04fa55cdfbb9058

2 years agoPerformance optimization in jsonAppendString().
drh [Sat, 2 Dec 2023 14:16:47 +0000 (14:16 +0000)] 
Performance optimization in jsonAppendString().

FossilOrigin-Name: fdf00e96239c73fb67e2acecc5b95f55a1fc51c3deed4512613c0d6070ce5805

2 years agoSimplification and optimization of the JSON parser.
drh [Sat, 2 Dec 2023 13:36:52 +0000 (13:36 +0000)] 
Simplification and optimization of the JSON parser.

FossilOrigin-Name: f5ec9485119a2a6cb33eb864c7ca9b41d4a2ed08ab6ad9a6b0dd9358ab253576

2 years agoRemove a NEVER that can be true if a virtual table column is declared to have
drh [Sat, 2 Dec 2023 12:23:34 +0000 (12:23 +0000)] 
Remove a NEVER that can be true if a virtual table column is declared to have
a DEFAULT.  See
[forum:/forumpost/3d4de8917627d058|forum post 3d4de8917627d058].

FossilOrigin-Name: 8abc2ccaf8106f20243568cd7fa74174386eb85d7ea381201e97e2fd527033e0

2 years agoUnroll a loop in the parser for a performance increase.
drh [Sat, 2 Dec 2023 01:38:53 +0000 (01:38 +0000)] 
Unroll a loop in the parser for a performance increase.

FossilOrigin-Name: a6dc29e4d5e13949e0fcd9d5dde575c2670eb10a230ab9df3806fc8c3016c540

2 years agoFix harmless compiler warnings and enhance performance the parser.
drh [Sat, 2 Dec 2023 01:06:33 +0000 (01:06 +0000)] 
Fix harmless compiler warnings and enhance performance the parser.

FossilOrigin-Name: 285633da6d188547e52f07779e209c9e5f3dc33ce0668e14858f3337889ef4b8

2 years agoPerformance optimization in the JSON parser.
drh [Fri, 1 Dec 2023 22:01:26 +0000 (22:01 +0000)] 
Performance optimization in the JSON parser.

FossilOrigin-Name: 68d191f40e708962ec88e0c245b4496bc4a671300484b1cc0f3fc7e6d199a6e6

2 years agoRemove old code for tokendata=1 queries.
dan [Fri, 1 Dec 2023 20:37:11 +0000 (20:37 +0000)] 
Remove old code for tokendata=1 queries.

FossilOrigin-Name: b0a489e8e1bf0290c2117ab32d78b1cc7d67bcb226b55ec044c8367ebde3815b

2 years agoMerge latest trunk with this branch.
dan [Fri, 1 Dec 2023 20:10:20 +0000 (20:10 +0000)] 
Merge latest trunk with this branch.

FossilOrigin-Name: 8258967411d3ff212424b25fec79ded0d8ae83e773cd35a0bbf300c94923f25b

2 years agoDifferent approach to querying a tokendata=1 table. Saves cpu and memory.
dan [Fri, 1 Dec 2023 20:09:59 +0000 (20:09 +0000)] 
Different approach to querying a tokendata=1 table. Saves cpu and memory.

FossilOrigin-Name: c523f40895866e6fc979a26483dbea8206126b4bbdf4b73b77263c09e13c855e

2 years agoJSON cache is now more effective.
drh [Fri, 1 Dec 2023 18:49:02 +0000 (18:49 +0000)] 
JSON cache is now more effective.

FossilOrigin-Name: 443a3f3a8e64d81cad8300a30e2cc57c4e39f69b5669ac8b550c590ae9f1134a

2 years agoFix up the JSON cache to work better. jsonb-cache
drh [Fri, 1 Dec 2023 18:46:14 +0000 (18:46 +0000)] 
Fix up the JSON cache to work better.

FossilOrigin-Name: 1fdbc39521f63aedc6f08ecaafa54ea467b8c6316a692a18ad01eecbf22a0977

2 years agoCache is working better, but does not preserve the hasJson5 flag.
drh [Fri, 1 Dec 2023 13:28:13 +0000 (13:28 +0000)] 
Cache is working better, but does not preserve the hasJson5 flag.

FossilOrigin-Name: a12add7ab9f5aee5bb2ede0c4d22e599dd28f7a107dce72b2ea48ef92d233e8a

2 years agoFirst attempt to get the JSON text-to-binary cache working. All test cases
drh [Fri, 1 Dec 2023 12:57:12 +0000 (12:57 +0000)] 
First attempt to get the JSON text-to-binary cache working.  All test cases
pass, but the cache seems not to help much.

FossilOrigin-Name: 25ed295f300fea6185104a73721076bccd2b2a6e411c78564266fa6dca4ff70c

2 years agoRemove all trace of JsonNode from the JSON implementation. The JSONB format
drh [Thu, 30 Nov 2023 23:36:14 +0000 (23:36 +0000)] 
Remove all trace of JsonNode from the JSON implementation.  The JSONB format
is used as the internal binary encoding for searching and editing.

FossilOrigin-Name: 11ebb5f712cc7a515e2e0f2be8c1d71de20c97fe5b74c4f4d72c84fd21182d35

2 years agoConvert json_valid() over to using only JSONB as its internal format.
drh [Thu, 30 Nov 2023 20:57:48 +0000 (20:57 +0000)] 
Convert json_valid() over to using only JSONB as its internal format.

FossilOrigin-Name: 7b5756fa6d00b093bf083a8d7a5ef5485f7a09e4eac473785c8380688f861a1b

2 years agoAdd a basic batch-mode SQL runner for the SAH Pool VFS, for use in comparing it again...
stephan [Thu, 30 Nov 2023 20:34:24 +0000 (20:34 +0000)] 
Add a basic batch-mode SQL runner for the SAH Pool VFS, for use in comparing it against WebSQL. Bring the WebSQL batch runner up to date, noting that it cannot run without addition of an "origin trial" activation key from Google because that's now the only way to enable WebSQL in Chrome (that part is not checked in because that key is private). Minor code-adjacent cleanups.

FossilOrigin-Name: 883990e7938c1f63906300a6113f0fadce143913b7c384e8aeb5f886f0be7c62

2 years agoConvert json_type() to use JSONB internally.
drh [Thu, 30 Nov 2023 19:29:56 +0000 (19:29 +0000)] 
Convert json_type() to use JSONB internally.

FossilOrigin-Name: 83074835b900ce85cf67059e674ce959801505c37592671af25ca0af7ed483f1

2 years agoConvert json_insert(), json_replace(), and json_set() over to using only
drh [Thu, 30 Nov 2023 19:11:14 +0000 (19:11 +0000)] 
Convert json_insert(), json_replace(), and json_set() over to using only
JSONB internally.

FossilOrigin-Name: 4e2083e86f19ef7634f0b253fb924e52014b43ed0ce8acc51c36f3c5682180a6

2 years agoEnhance json_set() and json_insert() so that they create missing jsonb-insert
drh [Thu, 30 Nov 2023 19:06:27 +0000 (19:06 +0000)] 
Enhance json_set() and json_insert() so that they create missing
substructure.

FossilOrigin-Name: cc7a641ab5ae739d31c24f0ad0caeb15a481a63fa8f13720718ea922c25862ff

2 years agoSimplification of the new JSON insert/set test cases.
drh [Thu, 30 Nov 2023 16:17:09 +0000 (16:17 +0000)] 
Simplification of the new JSON insert/set test cases.

FossilOrigin-Name: 04c0d5644372446c924a2e31a26edf51ddc563a1990d170b0ed4739e3e8b239b

2 years agoNew JSON test cases showing insert or set with missing substructure.
drh [Thu, 30 Nov 2023 16:16:10 +0000 (16:16 +0000)] 
New JSON test cases showing insert or set with missing substructure.

FossilOrigin-Name: 6802b6459d0d16c961ff41d240a6c88287f197d8f609090f79308707490a49c2

2 years agoNew test cases for insert/set/replace with paths that indicate substructure
drh [Thu, 30 Nov 2023 12:04:14 +0000 (12:04 +0000)] 
New test cases for insert/set/replace with paths that indicate substructure
that does not yet exist.

FossilOrigin-Name: 146c717c51940b2139befc45ac74e7a1c36ef3c32fd3cfe35b334488eebe6298

2 years agoUpdate some OPFS-related help text in WASM tests. Minor cleanups in speedtest1-worker.js.
stephan [Thu, 30 Nov 2023 10:00:25 +0000 (10:00 +0000)] 
Update some OPFS-related help text in WASM tests. Minor cleanups in speedtest1-worker.js.

FossilOrigin-Name: 263f6d3a7784ef7d032dbf7a3265aca8dd70bf50797f28f6b2e8ddb6a301f83a

2 years agoConvert json_insert(), json_replace(), json_set() to use JSONB internally.
drh [Thu, 30 Nov 2023 00:52:33 +0000 (00:52 +0000)] 
Convert json_insert(), json_replace(), json_set() to use JSONB internally.
Mostly working, but some corner cases are still not quite right.

FossilOrigin-Name: 99c8f6bd5c9a31b6d00f92e383bec8a8235ed553916ad59adbb1b7663f6ebff1

2 years agoConvert the json_error_position() routine to use only JSONB internally.
drh [Wed, 29 Nov 2023 20:06:49 +0000 (20:06 +0000)] 
Convert the json_error_position() routine to use only JSONB internally.

FossilOrigin-Name: e7a8ba35bff6fde55827f978de5b343b6c134c7fa53827f5c63915a9dc2598ad

2 years agoThe json_patch() function now operates exclusively on JSONB. This patch
drh [Wed, 29 Nov 2023 17:36:54 +0000 (17:36 +0000)] 
The json_patch() function now operates exclusively on JSONB.  This patch
also includes improvements to JSONB debug printing routines.

FossilOrigin-Name: fee19d0098242110d2c44ec7b9620c1210ef3f87913305f66ec85d277dd96ab6

2 years agoFix signed integer overflow in fts5.
dan [Wed, 29 Nov 2023 16:22:39 +0000 (16:22 +0000)] 
Fix signed integer overflow in fts5.

FossilOrigin-Name: 60e46c7ec68fd8caaed960ca06d98fb06855b2d0bb860dd2fb7b5e89a5e9c7b4

2 years agoIn the recovery extension, if a payload size is unreasonably large, it is
drh [Wed, 29 Nov 2023 13:47:46 +0000 (13:47 +0000)] 
In the recovery extension, if a payload size is unreasonably large, it is
probably corrupt, so truncate it.

FossilOrigin-Name: 988c3179e978a3a6d42541e9c7a2ab98150383671810926503376ed808f150ff

2 years agoMerge all the latest trunk enhancements into the jsonb branch.
drh [Wed, 29 Nov 2023 12:18:02 +0000 (12:18 +0000)] 
Merge all the latest trunk enhancements into the jsonb branch.

FossilOrigin-Name: 1a59fcab2179cc3b52ecd3de7d2018db96ac149aaff521959773a517b8d9ac3e

2 years agoThe assertion change at check-in [7946c79567b0ccd3] is insufficient to fix
drh [Wed, 29 Nov 2023 02:45:09 +0000 (02:45 +0000)] 
The assertion change at check-in [7946c79567b0ccd3] is insufficient to fix
the problem of a Table object being deleted out from under the OP_VCheck
opcode.  We need to reference count the Table, which is accomplished here.

FossilOrigin-Name: cad269d5e274443c39203a56603b991accc0399135d436996fc039d1d28ec9db

2 years agoConvert the json_array_length() function to use JSONB instead of JsonNodes.
drh [Wed, 29 Nov 2023 01:38:15 +0000 (01:38 +0000)] 
Convert the json_array_length() function to use JSONB instead of JsonNodes.

FossilOrigin-Name: 5ab790736d943e08f097efcee5cfbf0d83c65b0a53f273060330ba719affa5e5

2 years agoFix all known problems with JSONB json_extract().
drh [Tue, 28 Nov 2023 23:26:55 +0000 (23:26 +0000)] 
Fix all known problems with JSONB json_extract().

FossilOrigin-Name: d5f48c57e975ac468cf29a43a5d0b56ef6d06cf35a8b0bddf87ec1c0fc7ae028

2 years agoDo not set the J subtype when the output is JSONB. jsonb-extract
drh [Tue, 28 Nov 2023 23:18:04 +0000 (23:18 +0000)] 
Do not set the J subtype when the output is JSONB.

FossilOrigin-Name: 4f106b64fe8988435872806bd0a6c223b61f53af0dd1c47c847bb4eec4e03e27

2 years agoPreserve flexibility in the format of the RHS of -> and ->> operators found
drh [Tue, 28 Nov 2023 20:33:20 +0000 (20:33 +0000)] 
Preserve flexibility in the format of the RHS of -> and ->> operators found
in legacy.

FossilOrigin-Name: 6231ec43adb7436195eb1497de39a6c13c6b4f1c5032e6ea52515d214e61fdbc

2 years agoAttempt to get json_extract() working with pure JSONB only, and without
drh [Tue, 28 Nov 2023 20:25:23 +0000 (20:25 +0000)] 
Attempt to get json_extract() working with pure JSONB only, and without
the use of JsonNode.  Mostly working, but there are some differences from
legacy in corner cases.

FossilOrigin-Name: 8c324af1eca27e86adc45622af4f3b06a67a3f968596ac58aa7434b1f6f05f3c

2 years agoMerge latest trunk updates into this branch.
dan [Tue, 28 Nov 2023 19:43:08 +0000 (19:43 +0000)] 
Merge latest trunk updates into this branch.

FossilOrigin-Name: 554fc13f2ca5f2ebd9ad0206034c25b556ff40db3106051c5e539f2e142e88ea

2 years agoThe json_remove() function now uses only JSONB, never JsonNodes, internally.
drh [Tue, 28 Nov 2023 18:16:02 +0000 (18:16 +0000)] 
The json_remove() function now uses only JSONB, never JsonNodes, internally.

FossilOrigin-Name: b69786e746ae2b927b64d9871fd120b7f8f06cc53739fd46a4da51aa16cf8576

2 years agoIn SQLITE_ENABLE_SETLK_TIMEOUT builds, use blocking locks in place of sleep() calls...
dan [Tue, 28 Nov 2023 17:12:42 +0000 (17:12 +0000)] 
In SQLITE_ENABLE_SETLK_TIMEOUT builds, use blocking locks in place of sleep() calls when opening a read-transaction.

FossilOrigin-Name: 4c055b7a6e4533e1e571773456226ca7038ce372df3eedbbbcd9a81e8652a6cf

2 years agoHandle an SQLITE_BUSY_TIMEOUT error if one occurs while attempting a shared lock... blocking-dms-lock
dan [Tue, 28 Nov 2023 15:29:04 +0000 (15:29 +0000)] 
Handle an SQLITE_BUSY_TIMEOUT error if one occurs while attempting a shared lock on a read-lock slot.

FossilOrigin-Name: 5fbf3906d272df3eb981f67455eb35f649ad2774cba9fc3f077b28d9bef3f0cb

2 years agoActivate the ability of json_patch() to work on JSONB.
drh [Tue, 28 Nov 2023 13:38:22 +0000 (13:38 +0000)] 
Activate the ability of json_patch() to work on JSONB.

FossilOrigin-Name: 11aba347ff7c639500eec904e212eabe889b077351b946cfeac2b74b9703672a

2 years agoAll legacy tests are passing. jsonb-patch
drh [Tue, 28 Nov 2023 13:35:53 +0000 (13:35 +0000)] 
All legacy tests are passing.

FossilOrigin-Name: 2c436806b8d5f57de99c00f6154b038454fb9ae427d00d7b4a46ab9c7c69bcb9

2 years agoThe json_patch() code for JSONB compiles and works sometimes, but there are
drh [Tue, 28 Nov 2023 12:28:28 +0000 (12:28 +0000)] 
The json_patch() code for JSONB compiles and works sometimes, but there are
still issues.  Incremental check-in.

FossilOrigin-Name: e0099464a0045a04f4ccf29bc2b8325fc8c7f39ccf4847e74818f928c9153588

2 years agoMore aggressive use of jsonBlobEdit(). Improvements to the MergePatch
drh [Tue, 28 Nov 2023 00:27:58 +0000 (00:27 +0000)] 
More aggressive use of jsonBlobEdit().  Improvements to the MergePatch
implementation sketch.

FossilOrigin-Name: fbca9570fd2e1465739e4d3a8d9bb40fad594fd78ab49b2cb34efa27ebdd8361

2 years agoAdd untested (#ifdefed-out) code for the MergePatch algorithm against JSONB.
drh [Mon, 27 Nov 2023 23:46:12 +0000 (23:46 +0000)] 
Add untested (#ifdefed-out) code for the MergePatch algorithm against JSONB.
Add (and test) the jsonBlobEdit() routine that is needed by the new MergePatch.

FossilOrigin-Name: 4d353387fc10e1038cfdd86e66007bf728c231a928e588897bbee0fbfe76f225

2 years agoHave SQLITE_ENABLE_SETLK_TIMEOUT builds block when locking a read-lock slot.
dan [Mon, 27 Nov 2023 20:37:03 +0000 (20:37 +0000)] 
Have SQLITE_ENABLE_SETLK_TIMEOUT builds block when locking a read-lock slot.

FossilOrigin-Name: f797baf47cf7859cfd8ce248f4f3087af4551a7040af990333426e5a7c269504

2 years agoIn SQLITE_ENABLE_SETLK_TIMEOUT builds, use blocking locks in place of sleep() when...
dan [Mon, 27 Nov 2023 19:22:50 +0000 (19:22 +0000)] 
In SQLITE_ENABLE_SETLK_TIMEOUT builds, use blocking locks in place of sleep() when opening a read-transaction.

FossilOrigin-Name: a51ef39998e25e86bd0600e71d15011b12e05f4319608018293bdaecb09e8c97

2 years agoEnhance the (SQLITE_DEBUG-only) json_parse() routine so that it shows a
drh [Mon, 27 Nov 2023 17:13:18 +0000 (17:13 +0000)] 
Enhance the (SQLITE_DEBUG-only) json_parse() routine so that it shows a
decoding of JSONB when given a BLOB argument.

FossilOrigin-Name: af267868562e0799ad691dccad05f17afbc34d609eede8c55f57d209290246ef

2 years agoGive the json_valid() function an optional second argument that determines
drh [Mon, 27 Nov 2023 15:57:11 +0000 (15:57 +0000)] 
Give the json_valid() function an optional second argument that determines
what is meant by "valid".

FossilOrigin-Name: a4e19ad43dac81e7655ec03ff69bb99d1d02b0c227034c90fb41415fd4793fe3

2 years agoConvert the json_tree() and json_each() virtual tables over to use JSONB has
drh [Mon, 27 Nov 2023 12:36:29 +0000 (12:36 +0000)] 
Convert the json_tree() and json_each() virtual tables over to use JSONB has
their internal representation.

FossilOrigin-Name: ec18caa3f7790b780dde66c1ccbb6eb09d2f1507629cc45955fc1b08380b4017

2 years agoAll tests passing. jsonb-tree
drh [Mon, 27 Nov 2023 12:30:55 +0000 (12:30 +0000)] 
All tests passing.

FossilOrigin-Name: b5a5660ca22437640c9bf32c44d92c76a7293dafcbaf4fa6a4c171128d64871d

2 years agoFix corner-case error conditions.
drh [Sun, 26 Nov 2023 00:56:40 +0000 (00:56 +0000)] 
Fix corner-case error conditions.

FossilOrigin-Name: ec23d34ab75e1d7e9366e59c633e0d30def8759f6d4717583ebeb4c90aeccf0d

2 years agoSame results as the legacy JsonNode implementation on a small set of test cases.
drh [Sun, 26 Nov 2023 00:48:37 +0000 (00:48 +0000)] 
Same results as the legacy JsonNode implementation on a small set of test cases.

FossilOrigin-Name: c3da4b079a1a15a4c0b1a6e71f876648b1d9eb32eddc67b9946c2475c7b6d085

2 years agoRemove unused elements from the json_tree() cursor.
drh [Sat, 25 Nov 2023 23:00:50 +0000 (23:00 +0000)] 
Remove unused elements from the json_tree() cursor.

FossilOrigin-Name: 914a50117d477b2cd30d58388fb8d1b71ff7ff6842ba025f38efc6e9647d06d0

2 years agoRemove the vestigal JsonNode logic from json_tree() and json_each().
drh [Sat, 25 Nov 2023 20:59:03 +0000 (20:59 +0000)] 
Remove the vestigal JsonNode logic from json_tree() and json_each().

FossilOrigin-Name: 66c2ab9ebbf90477742e6be0d30e061d827c409de038f2a5b73479ed9448c4a6

2 years agoAlmost working. Path is still not exactly right when Root is defined on
drh [Sat, 25 Nov 2023 19:28:44 +0000 (19:28 +0000)] 
Almost working.  Path is still not exactly right when Root is defined on
json_tree().

FossilOrigin-Name: 92258246916a9c0d72785964513113848a850dec78bdade8b3f274e410df4e7e