aboutsummaryrefslogtreecommitdiff
path: root/test/json101.test
diff options
context:
space:
mode:
authordrh <>2023-05-02 11:12:01 +0000
committerdrh <>2023-05-02 11:12:01 +0000
commit8c79ea844793a7ad30acc991da39b22af25c300d (patch)
tree8896ac6b5b633bda43d5ebaaa5ee68f12b829628 /test/json101.test
parent67a17779cb876f3e3978cdecaf1d6662cf0e4f64 (diff)
downloadsqlite-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.test93
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