larrybr
9e488a5a40
In CLI, fix .read inability to open 2GB+ files on WIN32.
...
FossilOrigin-Name: 56c80a62d2e033d64ba5d545ae9cbe3ed7c9d046c0a3fafb6cfa2f0b562d1ef0
2023-12-13 20:37:20 +00:00
drh
3e4195c60d
Avoid invoking sqlite3ExprColUsage() on an unresolve column reference.
...
dbsqlfuzz fc34aa62df4de103705d11b807074687ffafbda5.
FossilOrigin-Name: ac9314c0e335694b48c613145f5397247bb88c51806cd0dc3ed4ec306db4bbad
2023-12-13 16:45:18 +00:00
drh
f7c78a2408
Bug fix in the JSONB validator.
...
dbsqlfuzz ac6fa521a08609a642198e7decf64180e750b3c4
FossilOrigin-Name: 3e940a6a08b0a0434650cd3d8dd286e09ad8ab805b0a4d515e57bba5d3608577
2023-12-13 15:27:03 +00:00
drh
001d1e795c
Improvements to UTF8 handling, and especially the handling of invalid UTF8,
...
in the JSON routines.
FossilOrigin-Name: 1b229c1101d6c384a30f343c5e47b471ab084b2d8e81170eb8f642afc1c67e3b
2023-12-13 14:31:15 +00:00
drh
891f1dc054
Fix the JSON object label comparison object so that it works correctly even
...
if the label ends with escaped whitespace.
FossilOrigin-Name: 4d5353cadd7b7c5f105bc197f3ec739e2d041472d6b3e939654c9f9cfc2749ae
2023-12-12 18:38:53 +00:00
drh
78e636bba6
Add NEVER to two unreachable branches in JSON.
...
FossilOrigin-Name: c96ebb086feb89341565cc52b970ae7799ce1327fe1ad4fc790f1b0dcaa6e229
2023-12-12 17:13:10 +00:00
drh
87399a56db
Improvements to JSONB validation - catch more cases where the input does
...
not conform to spec.
FossilOrigin-Name: be1864eac4eb75cc30bf98f73092c8608467f4bd956240df6a0cbea9f1e09e85
2023-12-12 14:33:52 +00:00
drh
cc1a39fd24
Validity checking of text nodes in JSONB.
...
FossilOrigin-Name: fa5160687c2f970d407e8af73c246f7cd806bb4ce35f29a79ac534a8646a6c8e
2023-12-12 02:31:12 +00:00
drh
ad6bc61804
The json_error_position() function now reports an approximate byte offset
...
to the problem in a JSONB if there is a problem.
FossilOrigin-Name: 80d5d94dff6a2d2557039be3d7d47c1a6003c4b98defe0bd411acfeb963ad5dd
2023-12-11 21:00:55 +00:00
drh
5a890b4ed2
json_error_position() now uses jsonValidityCheck() to find the approximate
...
position of an error in a JSONB blob.
FossilOrigin-Name: c3d60cf7028a333b825d5b89516945a73e0c158ac81d8bcc117d21bfd98602c8
2023-12-11 20:44:21 +00:00
drh
001caa714f
json_valid(*,8) allows minus-signs on hexadecimal literals.
...
FossilOrigin-Name: c0d7f4520d839a268b3fd2474d0897a9832aa608bd6238b3e287fabecf07a350
2023-12-11 20:19:10 +00:00
drh
ba5505657f
Rename the new test-control to SQLITE_TESTCTRL_JSON_SELFCHECK. Make it so
...
that the current value of the setting can be interrogated.
FossilOrigin-Name: 7aff1d9a4cb17ecd5abab21ab032f35a78741dd641ddd8cbcc85fc4a81a0707d
2023-12-11 19:00:44 +00:00
drh
7d2eaae83e
Add SQLITE_TESTCTRL_VALIDATE_JSONB, which if enabled under SQLITE_DEBUG causes
...
cross-checking of generate JSONB.
FossilOrigin-Name: b410a4db74a650003539ffaaea18519d5159b504daac47db6a4874b730f40ac8
2023-12-11 17:03:12 +00:00
drh
ce46e0eb11
Work toward enhanced functionality for json_valid() with deep checking
...
of the JSONB (second argument has bit 0x08).
FossilOrigin-Name: c370d573198b151767f04e91bf8baa4ae0076751ae468c5709742a0b0ed16770
2023-12-11 14:01:38 +00:00
drh
b89e64d822
Fix a potential use of uninitialized value in json_valid() with 2nd
...
argument of 8.
FossilOrigin-Name: fa102036fe46eeb71b7df3e265be1935ae5c78e0b939b08841bcfb8abadbc77a
2023-12-11 02:39:11 +00:00
drh
bfa0de86e6
Fix a harmless UBSAN warning.
...
FossilOrigin-Name: 1503cba6d17e9bade7a5c103ddd23241ff4741f9a2e3032ffe2987af243dae65
2023-12-08 16:56:50 +00:00
drh
2a27be2107
Fix a potential problem RCStr access on a JsonString object that is not
...
really and RCStr. Fuzzer/UBSAN find.
FossilOrigin-Name: d2f2174ce2cc89606034e158149a2d05fc3627ec4d5cdb772add7a2250f29d78
2023-12-08 14:54:22 +00:00
drh
9d2446dc13
Fix a harmless compiler warning about "confusing indentation".
...
FossilOrigin-Name: 34f9e9a8c4bea13f60f43062e25cd7d9422f2e7f5b371ed0ddadc9abeb3ca256
2023-12-08 12:58:41 +00:00
drh
5a238ffcae
Rework the jsonEachPathLength() routine in json_tree() so that it is
...
less susceptible to problems due to goofy object labels.
FossilOrigin-Name: 858b76a00e8ff55215f7a2e6a4cd77fc4d4f98dea7224cd90488744f5ce246a4
2023-12-07 14:09:25 +00:00
drh
f86a07b0c4
Add ALWAYS() on branches added in [ec0ae4030968c782] that are always true.
...
FossilOrigin-Name: 451cef8609e96dd9244818adc5c6f240544694bcb4ae620e88f90e403e59d70f
2023-12-07 13:14:34 +00:00
drh
5b6b703461
Improved detection of corrupt JSONB in the jsonReturnFromBlob() function.
...
FossilOrigin-Name: b014736c1f80ccc46fb4b24ac04310a6ce5cb5b6653665efff366cb3bc742257
2023-12-07 12:55:39 +00:00
drh
82fc1b63f6
Work around LLVM's newfound hatred of function pointer casts.
...
[forum:/forumpost/1a7d257346636292|Forum post 1a7d257346636292].
FossilOrigin-Name: ec0ae4030968c782af48d1c776351c14b2ada21d40aeb97915f33df30706e18f
2023-12-06 18:25:41 +00:00
drh
a9c8469d03
Do correct comparisons between object labels in JSON even when the two labels
...
contain different JSON escapes.
FossilOrigin-Name: bda2e30cc22e180b19a7a05824dd345880eb402ae5450b2d2dd954946c3ae135
2023-12-06 17:50:16 +00:00
drh
b597fea894
Correctly handle 8-byte sizes in the JSONB format.
...
[forum:/forumpost/283daf08e91183fc|Forum post 283daf08e91183fc].
FossilOrigin-Name: 73d390f39c0bbbc017e01544e4d43c76761f2599bd57f900131c706270dfd202
2023-12-06 17:39:31 +00:00
drh
9df01b5ccf
Fix the routine that determines the json_tree.path value for the first row
...
so that it correctly takes into account escape sequences in the path
argument.
FossilOrigin-Name: b9243ee8a37c62eb8848e765bd4af83bc1b3d3eb24fb4268a1357ad1f8b2e1fb
2023-12-06 16:57:18 +00:00
larrybr
3207199c98
In CLI, move -interactive flag handling back to arg-loop pass 2.
...
FossilOrigin-Name: 63cb05a862532d2d56e9e81fe32ced09bf58f03146587a118f11c2a84e195e69
2023-12-06 16:27:29 +00:00
drh
6a8581d828
The rule for the RHS of the ->> and -> operators when the RHS does not begin
...
with $ is that it must be (1) all digits, or (2) all alphanumerics, or
(3) contained within [..] or else it will become a quoted label.
FossilOrigin-Name: 0e059a546ec11fa5c6d007bd65c249ee2422f1facbdb2792c53e0bc0ccc97e14
2023-12-06 15:35:38 +00:00
drh
91ec00c25a
Increased rigor in comparisons between object labels in JSON.
...
FossilOrigin-Name: 2bc86d145fccc07107b7753cb1a69122676d4096fe59c454497bd81a6142d45e
2023-12-06 14:50:48 +00:00
drh
88208296c2
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
2023-12-05 19:45:09 +00:00
drh
5afd67b3c3
Use extra assert() statement to silence harmless static analyzer warnings.
...
FossilOrigin-Name: 174c2b2eef5fecd96a5fc89b81032fe81f7801f12097cea10e7e7f0a02114813
2023-12-05 19:24:07 +00:00
drh
a0de45459e
Miscellaneous comment cleanup and typo fixes.
...
FossilOrigin-Name: 59446dc0bd0091572122a3c8b4653d7a2dc867d16c4a5919f79b81bc3a673ce3
2023-12-05 18:28:15 +00:00
drh
8eac91fab7
Use strspn() to accelerate whitespace bypass in the JSON parser.
...
FossilOrigin-Name: 843197df08352bdff4b87be91d160e574572aded0d0c66142fd960000c0b4701
2023-12-05 12:52:13 +00:00
drh
590aaff992
Small performance gain by unwinding the string literal delimiter search
...
loop in the JSON parser by one more level.
FossilOrigin-Name: 4c587feac153e8ebe526559ec3d254f545f81e8d1ed3126f91a5ff25ec4aa72e
2023-12-05 12:22:05 +00:00
drh
fa43e21711
Use an assert() to fix a harmless static analyzer warning.
...
FossilOrigin-Name: a249ca657e624028bc6b3d2c2bcedd7162d118addb7d62ce519920cecebf1860
2023-12-05 01:44:15 +00:00
drh
ae2e972802
Fix OOM and corrupt JSONB handling in json_patch().
...
FossilOrigin-Name: 1910feb0b7d5cc2b810c3322f6cca281d8730182d30d162bd7bb56800979ea91
2023-12-05 00:17:17 +00:00
drh
3cdb079476
Rename the internal routine jsonMergePatchBlob() to just jsonMergePatch().
...
FossilOrigin-Name: ebf667b616235bb64b83832008342ba5e7b10b2c170d7cebc431f040fef7ecfb
2023-12-04 23:12:57 +00:00
drh
f26e26afc5
Fixes to error handling in json_array_length().
...
FossilOrigin-Name: aa85df2d26b74c171c55bde19ef17c4f11f40b8af7181bbf7162f87cdea7e88b
2023-12-04 19:32:17 +00:00
drh
0b8b1c309d
Do not make the input JSONB editable in json_remove() if there are no PATH
...
argument.
FossilOrigin-Name: 66594544f3ba9977475a3e3f74404eb2b2fb845053b28bd24c2b52c7df94e9d7
2023-12-04 19:14:13 +00:00
drh
3fedb7e59e
Fix errors in rendering JSON5 escape sequences embedded in JSONB.
...
FossilOrigin-Name: f1a51ae3863557526a51c6e98e71fcdf4f1ed14a36212b3c90f7408f926345e4
2023-12-04 18:53:10 +00:00
drh
9c794b9bff
Continuing simplifications and code cleanup.
...
FossilOrigin-Name: ddf92b5059a9106753fd18b82ba8daa269a62af947561c460790107b83416f0b
2023-12-04 17:40:28 +00:00
drh
99c41692f1
Remove reachable ALWAYS and NEVER macros.
...
FossilOrigin-Name: f601de3eeabd85993c1f5ee96b62de6fdabbeae2fe8950e00d08feb48d42c498
2023-12-04 16:01:39 +00:00
drh
732fb64ad3
Two new NEVER macros.
...
FossilOrigin-Name: 52632c92cb06faf0e804654b3490fd6c199521107bd30c8fcbc3a2a5a488098f
2023-12-04 15:22:42 +00:00
drh
dc138cb186
Repair issues and inefficiencies found during testing.
...
FossilOrigin-Name: ae973cb1515f9d76409c92a2ca2ffd6b71f32b0b490a4886770e7c1b90f12611
2023-12-04 13:12:45 +00:00
drh
2ff73a5f3e
Better pre-scan size estimations for objects in the JSON parser resulting
...
in fewer reallocations and memmove operations.
FossilOrigin-Name: 526b27f90897f5e35dfff7257daf6c4ce4798d649b09b8aecfb02df0449e3c51
2023-12-04 01:14:23 +00:00
drh
b7fd951be4
Back off on the use of strlen() for situations where sqlite3_value_bytes()
...
will work as well, for performance.
FossilOrigin-Name: 79fb54fbb8b9c30f47cdbd437d24a21542716241e822749e5e28c9fbc449bfa8
2023-12-04 00:31:58 +00:00
drh
9af45dc482
Remove dead code. Improved reporting of errors in JSON inputs.
...
FossilOrigin-Name: 2eaa738e6b5c1b67b3e57c868d9c3a30eea38a0b3b8b02482f06d57a45b10921
2023-12-03 23:38:24 +00:00
drh
16e8a5b2f3
Avoid problems when the path argument to json_tree() contains embedded U+0000
...
characters.
FossilOrigin-Name: 9f055091af01a5dddba1a7e9868ad030c8f206237e1569215cb161e53e54aa71
2023-12-03 23:30:59 +00:00
drh
a3bf077b60
Ensure that OOM conditions in the generation of the "bad JSON path" error
...
message result in an SQLITE_NOMEM error.
FossilOrigin-Name: aa0e02b5c26a2ef3d6216a0ed8bc01382be43173485f898cb63f2a8c559f2e74
2023-12-03 20:11:35 +00:00
drh
0a18a5807a
Enable incorrect JSONB to be rendered into text without hitting an
...
assertion for a bad whitespace escape in a string.
FossilOrigin-Name: 4d6a9a217df6792b41766b774fb0c0553b45f9104c26a0955bf4a30862d7d7bf
2023-12-03 19:59:45 +00:00
drh
78fa0186b8
Do not let bad hexadecimal digits in malformed JSONB cause an assertion fault.
...
FossilOrigin-Name: 8dec1ba1e5076ff596756e00c1e2ada0245f168a503dd1cadadf848331acfac3
2023-12-03 11:54:39 +00:00