mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 16:21:20 +03:00
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.
This commit is contained in:
parent
2024ead21b
commit
d99d0e60ea
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user