diff options
author | drh <> | 2023-05-02 11:12:01 +0000 |
---|---|---|
committer | drh <> | 2023-05-02 11:12:01 +0000 |
commit | 8c79ea844793a7ad30acc991da39b22af25c300d (patch) | |
tree | 8896ac6b5b633bda43d5ebaaa5ee68f12b829628 /test/json101.test | |
parent | 67a17779cb876f3e3978cdecaf1d6662cf0e4f64 (diff) | |
download | sqlite-8c79ea844793a7ad30acc991da39b22af25c300d.tar.gz sqlite-8c79ea844793a7ad30acc991da39b22af25c300d.zip |
Improved handling of NULL arguments to json_valid() and
json_error_position(). [forum:/forumpost/06c6334412|Forum post 06c6334412].
FossilOrigin-Name: ab78e6946ba8125a83ff155561adf9c8df4d1c09a645fce08c8245ddb08bfa3b
Diffstat (limited to 'test/json101.test')
-rw-r--r-- | test/json101.test | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/test/json101.test b/test/json101.test index 298dc3bdb..e17c8cd6a 100644 --- a/test/json101.test +++ b/test/json101.test @@ -918,4 +918,97 @@ do_execsql_test json-20.3 { SELECT json_object('a',2e370,'b',-3e380)->>'b'; } {-Inf} +# 2023-05-02 https://sqlite.org/forum/forumpost/06c6334412 +# JSON functions should normally return NULL when given +# a NULL value as the JSON input. +# +db null NULL +do_execsql_test json-21.1 { + SELECT json_valid(NULL); +} NULL +do_execsql_test json-21.2 { + SELECT json_error_position(NULL); +} NULL +do_execsql_test json-21.3 { + SELECT json(NULL); +} NULL +do_execsql_test json-21.4 { + SELECT json_array(NULL); +} {[null]} +do_execsql_test json-21.5 { + SELECT json_extract(NULL); +} NULL +do_execsql_test json-21.6 { + SELECT json_insert(NULL,'$',123); +} NULL +do_execsql_test json-21.7 { + SELECT NULL->0; +} NULL +do_execsql_test json-21.8 { + SELECT NULL->>0; +} NULL +do_execsql_test json-21.9 { + SELECT '{a:5}'->NULL; +} NULL +do_execsql_test json-21.10 { + SELECT '{a:5}'->>NULL; +} NULL +do_catchsql_test json-21.11 { + SELECT json_object(NULL,5); +} {1 {json_object() labels must be TEXT}} +do_execsql_test json-21.12 { + SELECT json_patch(NULL,'{a:5}'); +} NULL +do_execsql_test json-21.13 { + SELECT json_patch('{a:5}',NULL); +} NULL +do_execsql_test json-21.14 { + SELECT json_patch(NULL,NULL); +} NULL +do_execsql_test json-21.15 { + SELECT json_remove(NULL,'$'); +} NULL +do_execsql_test json-21.16 { + SELECT json_remove('{a:5,b:7}',NULL); +} NULL +do_execsql_test json-21.17 { + SELECT json_replace(NULL,'$.a',123); +} NULL +do_execsql_test json-21.18 { + SELECT json_replace('{a:5,b:7}',NULL,NULL); +} {{{"a":5,"b":7}}} +do_execsql_test json-21.19 { + SELECT json_set(NULL,'$.a',123); +} NULL +do_execsql_test json-21.20 { + SELECT json_set('{a:5,b:7}',NULL,NULL); +} {{{"a":5,"b":7}}} +do_execsql_test json-21.21 { + SELECT json_type(NULL); +} NULL +do_execsql_test json-21.22 { + SELECT json_type('{a:5,b:7}',NULL); +} NULL +do_execsql_test json-21.23 { + SELECT json_quote(NULL); +} null +do_execsql_test json-21.24 { + SELECT count(*) FROM json_each(NULL); +} 0 +do_execsql_test json-21.25 { + SELECT count(*) FROM json_tree(NULL); +} 0 +do_execsql_test json-21.26 { + WITH c(x) AS (VALUES(1),(2.0),(NULL),('three')) + SELECT json_group_array(x) FROM c; +} {[1,2.0,null,"three"]} +do_execsql_test json-21.27 { + WITH c(x,y) AS (VALUES('a',1),('b',2.0),('c',NULL),(NULL,'three'),('e','four')) + SELECT json_group_object(x,y) FROM c; +} {{{"a":1,"b":2.0,"c":null,:"three","e":"four"}}} + + + + + finish_test |