Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit c7734c7

Browse files
author
Nikita Glukhov
committed
Extract pushSingleScalarJsonbValue()
1 parent 9373729 commit c7734c7

File tree

1 file changed

+17
-20
lines changed

1 file changed

+17
-20
lines changed

src/backend/utils/adt/jsonb.c

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,21 @@ jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)
354354
}
355355
}
356356

357+
static JsonbValue *
358+
pushSingleScalarJsonbValue(JsonbParseState **pstate, JsonbValue *jbval)
359+
{
360+
/* single root scalar */
361+
JsonbValue va;
362+
363+
va.type = jbvArray;
364+
va.val.array.rawScalar = true;
365+
va.val.array.nElems = 1;
366+
367+
pushJsonbValue(pstate, WJB_BEGIN_ARRAY, &va);
368+
pushJsonbValue(pstate, WJB_ELEM, jbval);
369+
return pushJsonbValue(pstate, WJB_END_ARRAY, NULL);
370+
}
371+
357372
/*
358373
* For jsonb we always want the de-escaped value - that's what's in token
359374
*/
@@ -406,16 +421,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
406421

407422
if (_state->parseState == NULL)
408423
{
409-
/* single scalar */
410-
JsonbValue va;
411-
412-
va.type = jbvArray;
413-
va.val.array.rawScalar = true;
414-
va.val.array.nElems = 1;
415-
416-
_state->res = pushJsonbValue(&_state->parseState, WJB_BEGIN_ARRAY, &va);
417-
_state->res = pushJsonbValue(&_state->parseState, WJB_ELEM, &v);
418-
_state->res = pushJsonbValue(&_state->parseState, WJB_END_ARRAY, NULL);
424+
_state->res = pushSingleScalarJsonbValue(&_state->parseState, &v);
419425
}
420426
else
421427
{
@@ -903,16 +909,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
903909
}
904910
else if (result->parseState == NULL)
905911
{
906-
/* single root scalar */
907-
JsonbValue va;
908-
909-
va.type = jbvArray;
910-
va.val.array.rawScalar = true;
911-
va.val.array.nElems = 1;
912-
913-
result->res = pushJsonbValue(&result->parseState, WJB_BEGIN_ARRAY, &va);
914-
result->res = pushJsonbValue(&result->parseState, WJB_ELEM, &jb);
915-
result->res = pushJsonbValue(&result->parseState, WJB_END_ARRAY, NULL);
912+
result->res = pushSingleScalarJsonbValue(&result->parseState, &jb);
916913
}
917914
else
918915
{

0 commit comments

Comments
 (0)