diff options
author | Andrew Dunstan <andrew@dunslane.net> | 2014-09-25 15:08:42 -0400 |
---|---|---|
committer | Andrew Dunstan <andrew@dunslane.net> | 2014-09-25 15:12:44 -0400 |
commit | d99d0e60eaa8334b698a070cb919202607660a65 (patch) | |
tree | a74415f1c229649b4b5eeabb7e5f4c16281e9001 /src/backend/utils/adt/json.c | |
parent | 2024ead21b8ac64f0d6cd13d0c1c2cb8d596238e (diff) | |
download | postgresql-d99d0e60eaa8334b698a070cb919202607660a65.tar.gz postgresql-d99d0e60eaa8334b698a070cb919202607660a65.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.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/backend/utils/adt/json.c b/src/backend/utils/adt/json.c index 1820029fe95..d2bf640e54e 100644 --- a/src/backend/utils/adt/json.c +++ b/src/backend/utils/adt/json.c @@ -1341,6 +1341,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"); @@ -1486,10 +1489,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; |