mirror of
https://github.com/postgres/postgres.git
synced 2025-11-16 15:02:33 +03:00
Be clearer about when jsonapi's need_escapes is needed
Most operations beyond pure json parsing need to set need_escapes to true to get access to field names and string scalars. Document this fact more explicitly. Slightly tweaked patch from: Author: Corey Huinker <corey.huinker@gmail.com> Discussion: https://postgr.es/m/CADkLM=c49Vkfg2+A8ubSuEtaGEjuaKZXCA6SrXA8kdwHjx3uxQ@mail.gmail.com
This commit is contained in:
@@ -1297,7 +1297,10 @@ parse_scalar(JsonLexContext *lex, const JsonSemAction *sem)
|
||||
return result;
|
||||
}
|
||||
|
||||
/* invoke the callback, which may take ownership of val */
|
||||
/*
|
||||
* invoke the callback, which may take ownership of val. For string
|
||||
* values, val is NULL if need_escapes is false.
|
||||
*/
|
||||
result = (*sfunc) (sem->semstate, val, tok);
|
||||
|
||||
if (lex->flags & JSONLEX_CTX_OWNS_TOKENS)
|
||||
@@ -1326,6 +1329,7 @@ parse_object_field(JsonLexContext *lex, const JsonSemAction *sem)
|
||||
return report_parse_error(JSON_PARSE_STRING, lex);
|
||||
if ((ostart != NULL || oend != NULL) && lex->need_escapes)
|
||||
{
|
||||
/* fname is NULL if need_escapes is false */
|
||||
fname = STRDUP(lex->strval->data);
|
||||
if (fname == NULL)
|
||||
return JSON_OUT_OF_MEMORY;
|
||||
|
||||
Reference in New Issue
Block a user