Skip to content

Commit d76a28e

Browse files
author
Nikita Glukhov
committed
Extract pushSingleScalarJsonbValue()
1 parent 7179b67 commit d76a28e

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
@@ -364,6 +364,21 @@ jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)
364364
}
365365
}
366366

367+
static JsonbValue *
368+
pushSingleScalarJsonbValue(JsonbParseState **pstate, JsonbValue *jbval)
369+
{
370+
/* single root scalar */
371+
JsonbValue va;
372+
373+
va.type = jbvArray;
374+
va.val.array.rawScalar = true;
375+
va.val.array.nElems = 1;
376+
377+
pushJsonbValue(pstate, WJB_BEGIN_ARRAY, &va);
378+
pushJsonbValue(pstate, WJB_ELEM, jbval);
379+
return pushJsonbValue(pstate, WJB_END_ARRAY, NULL);
380+
}
381+
367382
/*
368383
* For jsonb we always want the de-escaped value - that's what's in token
369384
*/
@@ -416,16 +431,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
416431

417432
if (_state->parseState == NULL)
418433
{
419-
/* single scalar */
420-
JsonbValue va;
421-
422-
va.type = jbvArray;
423-
va.val.array.rawScalar = true;
424-
va.val.array.nElems = 1;
425-
426-
_state->res = pushJsonbValue(&_state->parseState, WJB_BEGIN_ARRAY, &va);
427-
_state->res = pushJsonbValue(&_state->parseState, WJB_ELEM, &v);
428-
_state->res = pushJsonbValue(&_state->parseState, WJB_END_ARRAY, NULL);
434+
_state->res = pushSingleScalarJsonbValue(&_state->parseState, &v);
429435
}
430436
else
431437
{
@@ -914,16 +920,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
914920
}
915921
else if (result->parseState == NULL)
916922
{
917-
/* single root scalar */
918-
JsonbValue va;
919-
920-
va.type = jbvArray;
921-
va.val.array.rawScalar = true;
922-
va.val.array.nElems = 1;
923-
924-
result->res = pushJsonbValue(&result->parseState, WJB_BEGIN_ARRAY, &va);
925-
result->res = pushJsonbValue(&result->parseState, WJB_ELEM, &jb);
926-
result->res = pushJsonbValue(&result->parseState, WJB_END_ARRAY, NULL);
923+
result->res = pushSingleScalarJsonbValue(&result->parseState, &jb);
927924
}
928925
else
929926
{

0 commit comments

Comments
 (0)