From: drh <> Date: Fri, 7 Jan 2022 17:26:40 +0000 (+0000) Subject: Reverse the meaningn of -> and ->>. ->> raises an error on invalid JSON X-Git-Tag: version-3.38.0~119^2~10^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a3f51d7b3e7cd531e33779bcb7fec8f259c99cc6;p=thirdparty%2Fsqlite.git Reverse the meaningn of -> and ->>. ->> raises an error on invalid JSON but -> does not. This allows ->> to behave the same as PG and MySQL. FossilOrigin-Name: 85f8170555ee0d4d28cb7e120a7062e9f64c331a936fdfa29fc0e67224eea7c6 --- diff --git a/ext/misc/json1.c b/ext/misc/json1.c index e35d4ed576..86a486c21c 100644 --- a/ext/misc/json1.c +++ b/ext/misc/json1.c @@ -2691,8 +2691,8 @@ int sqlite3Json1Init(sqlite3 *db){ { "json_array_length", 2, 0, jsonArrayLengthFunc }, { "json_extract", -1, 0, jsonExtractFunc }, { "json_nextract", -1, 1, jsonExtractFunc }, - { "->", 2, 2, jsonExtractFunc }, - { "->>", 2, 3, jsonExtractFunc }, + { "->", 2, 3, jsonExtractFunc }, + { "->>", 2, 2, jsonExtractFunc }, { "json_insert", -1, 0, jsonSetFunc }, { "json_ntype", 1, 1, jsonTypeFunc }, { "json_object", -1, 0, jsonObjectFunc }, diff --git a/manifest b/manifest index 647b8c22a9..3227004e9a 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Change\sthe\s->\soperator\sto\suse\sjson_extract().\s\sThe\s->>\soperator\scontinues\nto\suse\sjson_nextract(). -D 2022-01-07T17:14:35.839 +C Reverse\sthe\smeaningn\sof\s->\sand\s->>.\s\s->>\sraises\san\serror\son\sinvalid\sJSON\nbut\s->\sdoes\snot.\s\sThis\sallows\s->>\sto\sbehave\sthe\ssame\sas\sPG\sand\sMySQL. +D 2022-01-07T17:26:40.622 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -306,7 +306,7 @@ F ext/misc/fileio.c 4e7f7cd30de8df4820c552f14af3c9ca451c5ffe1f2e7bef34d598a12ebf F ext/misc/fossildelta.c 1240b2d3e52eab1d50c160c7fe1902a9bd210e052dc209200a750bbf885402d5 F ext/misc/fuzzer.c eae560134f66333e9e1ca4c8ffea75df42056e2ce8456734565dbe1c2a92bf3d F ext/misc/ieee754.c 91a5594071143a4ab79c638fe9f059af1db09932faf2e704c3e29216a7d4f511 -F ext/misc/json1.c bec23aa378f56320246ce0bed2d841bef9d73a467f0f7a188eed1f753c61d113 +F ext/misc/json1.c bfee5581c6f8443d2b4d73939c1aaad887111b7bb5f3a8c5dbd1572f627de83c F ext/misc/memstat.c 3017a0832c645c0f8c773435620d663855f04690172316bd127270d1a7523d4d F ext/misc/memtrace.c 7c0d115d2ef716ad0ba632c91e05bd119cb16c1aedf3bec9f06196ead2d5537b F ext/misc/memvfs.c 7dffa8cc89c7f2d73da4bd4ccea1bcbd2bd283e3bb4cea398df7c372a197291b @@ -1147,7 +1147,7 @@ F test/jrnlmode.test 9b5bc01dac22223cb60ec2d5f97acf568d73820794386de5634dcadbea9 F test/jrnlmode2.test 8759a1d4657c064637f8b079592651530db738419e1d649c6df7048cd724363d F test/jrnlmode3.test 556b447a05be0e0963f4311e95ab1632b11c9eaa F test/json101.test bb71538005f2d9e18620bdd3b76839a93ca0be61903eb8d751a64e78cf99b8fb -F test/json102.test 94a91c6ba5df84397d887af8e7278d3e8344486e9fe6fba2916473d2b89819e1 +F test/json102.test a44a20b7dfa446e67f47d0c02927fe93f80d6ebf3080a5d827757e8d4921c081 F test/json103.test aff6b7a4c17d5a20b487a7bc1a274bfdc63b829413bdfb83bedac42ec7f67e3b F test/json104.test 2cb7ff2cca2c8214d3e5260eeb9ce45faec0926f68b3e40c1aaa6ca247284144 F test/json105.test 45f7d6a9a54c85f8a9589b68d3e7a1f42d02f2359911a8cdbad1f9988f571173 @@ -1937,8 +1937,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P dc00f5286d26524b149de071490320afaa203fec5777b3eb813f07963614861a -R c2278f0d888348e91e31b99a70b490f1 +P b4c8a62381755b9f1447e10ab95df7209eebda91f9a4583ef1c093a13f6b4725 +R 5e00922e334b2eca45d33167fc947357 U drh -Z e2f5d3c5e50a6c66708d727e107dbfb6 +Z ca8d93554520c6d97db646c26d2dff94 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index cb3b4bb5de..89e07a6e91 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b4c8a62381755b9f1447e10ab95df7209eebda91f9a4583ef1c093a13f6b4725 \ No newline at end of file +85f8170555ee0d4d28cb7e120a7062e9f64c331a936fdfa29fc0e67224eea7c6 \ No newline at end of file diff --git a/test/json102.test b/test/json102.test index 521373a833..7ae99353bf 100644 --- a/test/json102.test +++ b/test/json102.test @@ -99,10 +99,10 @@ do_catchsql_test json102-268 { SELECT json_nextract('[1,2,3', '$'); } {0 {{"[1,2,3"}}} do_catchsql_test json102-269a { - SELECT '[1,2,3' -> '$'; + SELECT '[1,2,3' ->> '$'; } {1 {malformed JSON}} do_catchsql_test json102-269b { - SELECT '[1,2,3' ->> '$'; + SELECT '[1,2,3' -> '$'; } {0 {{"[1,2,3"}}} do_execsql_test json102-270 {