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.
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");
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;