aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/json.c
diff options
context:
space:
mode:
authorAndrew Dunstan <andrew@dunslane.net>2014-09-25 15:08:42 -0400
committerAndrew Dunstan <andrew@dunslane.net>2014-09-25 15:08:42 -0400
commit9111d46351e8c3d82452a7454e43ccbf1991b3dc (patch)
tree09d22003d23615138309d783e8cc9092889dd236 /src/backend/utils/adt/json.c
parent5d7962c6797c0baae9ffb3b5b9ac0aec7b598bc3 (diff)
downloadpostgresql-9111d46351e8c3d82452a7454e43ccbf1991b3dc.tar.gz
postgresql-9111d46351e8c3d82452a7454e43ccbf1991b3dc.zip
Remove ill-conceived ban on zero length json object keys.
We removed a similar ban on this in json_object recently, but the ban in datum_to_json was left, which generate4d sprutious errors in othee json generators, notable json_build_object. Along the way, add an assertion that datum_to_json is not passed a null key. All current callers comply with this rule, but the assertion will catch any possible future misbehaviour.
Diffstat (limited to 'src/backend/utils/adt/json.c')
-rw-r--r--src/backend/utils/adt/json.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c
index c52f6732b05..6f678eb8b22 100644
--- a/src/backend/utils/adt/json.c
+++ b/src/backend/utils/adt/json.c
@@ -1342,6 +1342,9 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
bool numeric_error;
JsonLexContext dummy_lex;
+ /* callers are expected to ensure that null keys are not passed in */
+ Assert( ! (key_scalar && is_null));
+
if (is_null)
{
appendStringInfoString(result, "null");
@@ -1487,10 +1490,6 @@ datum_to_json(Datum val, bool is_null, StringInfo result,
break;
default:
outputstr = OidOutputFunctionCall(outfuncoid, val);
- if (key_scalar && *outputstr == '\0')
- ereport(ERROR,
- (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
- errmsg("key value must not be empty")));
escape_json(result, outputstr);
pfree(outputstr);
break;