diff options
| author | Tom Lane | 2015-10-15 17:46:09 +0000 |
|---|---|---|
| committer | Tom Lane | 2015-10-15 17:46:09 +0000 |
| commit | 3587cbc34fe87e1bde6c202daba791b68e44cb3a (patch) | |
| tree | f546d6b084272868e13f9af75f61b6b4004181f5 /src/test | |
| parent | 08fbad0afd62690cc82990c0504529ef238ac24d (diff) | |
Fix NULL handling in datum_to_jsonb().
The function failed to adhere to its specification that the "tcategory"
argument should not be examined when the input value is NULL. This
resulted in a crash in some cases. Per bug #13680 from Boyko Yordanov.
In passing, re-pgindent some recent changes in jsonb.c, and fix a rather
ungrammatical comment.
Diagnosis and patch by Michael Paquier, cosmetic changes by me
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/regress/expected/jsonb.out | 9 | ||||
| -rw-r--r-- | src/test/regress/sql/jsonb.sql | 4 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/test/regress/expected/jsonb.out b/src/test/regress/expected/jsonb.out index 07091a9bfb4..bee95a3a9f1 100644 --- a/src/test/regress/expected/jsonb.out +++ b/src/test/regress/expected/jsonb.out @@ -1362,6 +1362,15 @@ SELECT jsonb_build_object(json '{"a":1,"b":2}', 3); ERROR: key value must be scalar, not array, composite or json SELECT jsonb_build_object('{1,2,3}'::int[], 3); ERROR: key value must be scalar, not array, composite or json +-- handling of NULL values +SELECT jsonb_object_agg(1, NULL::jsonb); + jsonb_object_agg +------------------ + {"1": null} +(1 row) + +SELECT jsonb_object_agg(NULL, '{"a":1}'); +ERROR: field name must not be null CREATE TEMP TABLE foo (serial_num int, name text, type text); INSERT INTO foo VALUES (847001,'t15','GE1043'); INSERT INTO foo VALUES (847002,'t16','GE1043'); diff --git a/src/test/regress/sql/jsonb.sql b/src/test/regress/sql/jsonb.sql index 9700b7ca7e0..d93b8c3de88 100644 --- a/src/test/regress/sql/jsonb.sql +++ b/src/test/regress/sql/jsonb.sql @@ -330,6 +330,10 @@ SELECT jsonb_build_object(json '{"a":1,"b":2}', 3); SELECT jsonb_build_object('{1,2,3}'::int[], 3); +-- handling of NULL values +SELECT jsonb_object_agg(1, NULL::jsonb); +SELECT jsonb_object_agg(NULL, '{"a":1}'); + CREATE TEMP TABLE foo (serial_num int, name text, type text); INSERT INTO foo VALUES (847001,'t15','GE1043'); INSERT INTO foo VALUES (847002,'t16','GE1043'); |
