git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: d7cdf6e)
Allow empty string object keys in json_object().
2014年7月22日 15:22:47 +0000 (11:22 -0400)
2014年7月22日 15:27:31 +0000 (11:27 -0400)
This makes the behaviour consistent with the json parser, other
json-generating functions, and the JSON standards.


diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index 299b2a25ddbc905428f1588e0e29063eccedcf2b..2f99908fd3fce5e2ae33b7770b7e2115cc227a97 100644 (file)
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -2184,10 +2184,6 @@ json_object(PG_FUNCTION_ARGS)
errmsg("null value not allowed for object key")));
v = TextDatumGetCString(in_datums[i * 2]);
- if (v[0] == '0円')
- ereport(ERROR,
- (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("empty value not allowed for object key")));
if (i > 0)
appendStringInfoString(&result, ", ");
escape_json(&result, v);
@@ -2272,10 +2268,6 @@ json_object_two_arg(PG_FUNCTION_ARGS)
errmsg("null value not allowed for object key")));
v = TextDatumGetCString(key_datums[i]);
- if (v[0] == '0円')
- ereport(ERROR,
- (errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
- errmsg("empty value not allowed for object key")));
if (i > 0)
appendStringInfoString(&result, ", ");
escape_json(&result, v);
diff --git a/src/test/regress/expected/json.out b/src/test/regress/expected/json.out
index cd6ea5b12d542cf697a33e7fe3dc0a35c2f5fafd..de4d49d5b2d267145394ee8f37d589ff74ebce2b 100644 (file)
--- a/src/test/regress/expected/json.out
+++ b/src/test/regress/expected/json.out
@@ -1213,9 +1213,13 @@ ERROR: mismatched array dimensions
-- null key error
select json_object('{a,b,NULL,"d e f"}','{1,2,3,"a b c"}');
ERROR: null value not allowed for object key
--- empty key error
+-- empty key is allowed
select json_object('{a,b,"","d e f"}','{1,2,3,"a b c"}');
-ERROR: empty value not allowed for object key
+ json_object
+-----------------------------------------------------
+ {"a" : "1", "b" : "2", "" : "3", "d e f" : "a b c"}
+(1 row)
+
-- json_to_record and json_to_recordset
select * from json_to_record('{"a":1,"b":"foo","c":"bar"}')
as x(a int, b text, d text);
diff --git a/src/test/regress/expected/json_1.out b/src/test/regress/expected/json_1.out
index 51657a8d70fb7a49c07f403bf045610b82427325..2f8e8b0a9cbbb677e5d6afd220b827eb399e2ea4 100644 (file)
--- a/src/test/regress/expected/json_1.out
+++ b/src/test/regress/expected/json_1.out
@@ -1209,9 +1209,13 @@ ERROR: mismatched array dimensions
-- null key error
select json_object('{a,b,NULL,"d e f"}','{1,2,3,"a b c"}');
ERROR: null value not allowed for object key
--- empty key error
+-- empty key is allowed
select json_object('{a,b,"","d e f"}','{1,2,3,"a b c"}');
-ERROR: empty value not allowed for object key
+ json_object
+-----------------------------------------------------
+ {"a" : "1", "b" : "2", "" : "3", "d e f" : "a b c"}
+(1 row)
+
-- json_to_record and json_to_recordset
select * from json_to_record('{"a":1,"b":"foo","c":"bar"}')
as x(a int, b text, d text);
diff --git a/src/test/regress/sql/json.sql b/src/test/regress/sql/json.sql
index 3215b61a5a81100546ed415f15ddebfb8020b3db..ae65ef6921ebec9d1839f4f07eae42d2412bc4e6 100644 (file)
--- a/src/test/regress/sql/json.sql
+++ b/src/test/regress/sql/json.sql
@@ -435,7 +435,7 @@ select json_object('{a,b,c,"d e f"}','{1,2,3,"a b c",g}');
select json_object('{a,b,NULL,"d e f"}','{1,2,3,"a b c"}');
--- empty key error
+-- empty key is allowed
select json_object('{a,b,"","d e f"}','{1,2,3,"a b c"}');
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /