Skip to content

Commit 1edd785

Browse files
author
Nikita Glukhov
committed
Extract pushSingleScalarJsonbValue()
1 parent a7de1c7 commit 1edd785

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
@@ -334,6 +334,21 @@ jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)
334334
}
335335
}
336336

337+
static JsonbValue *
338+
pushSingleScalarJsonbValue(JsonbParseState **pstate, JsonbValue *jbval)
339+
{
340+
/* single root scalar */
341+
JsonbValue va;
342+
343+
va.type = jbvArray;
344+
va.val.array.rawScalar = true;
345+
va.val.array.nElems = 1;
346+
347+
pushJsonbValue(pstate, WJB_BEGIN_ARRAY, &va);
348+
pushJsonbValue(pstate, WJB_ELEM, jbval);
349+
return pushJsonbValue(pstate, WJB_END_ARRAY, NULL);
350+
}
351+
337352
/*
338353
* For jsonb we always want the de-escaped value - that's what's in token
339354
*/
@@ -384,16 +399,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
384399

385400
if (_state->parseState == NULL)
386401
{
387-
/* single scalar */
388-
JsonbValue va;
389-
390-
va.type = jbvArray;
391-
va.val.array.rawScalar = true;
392-
va.val.array.nElems = 1;
393-
394-
_state->res = pushJsonbValue(&_state->parseState, WJB_BEGIN_ARRAY, &va);
395-
_state->res = pushJsonbValue(&_state->parseState, WJB_ELEM, &v);
396-
_state->res = pushJsonbValue(&_state->parseState, WJB_END_ARRAY, NULL);
402+
_state->res = pushSingleScalarJsonbValue(&_state->parseState, &v);
397403
}
398404
else
399405
{
@@ -926,16 +932,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
926932
}
927933
else if (result->parseState == NULL)
928934
{
929-
/* single root scalar */
930-
JsonbValue va;
931-
932-
va.type = jbvArray;
933-
va.val.array.rawScalar = true;
934-
va.val.array.nElems = 1;
935-
936-
result->res = pushJsonbValue(&result->parseState, WJB_BEGIN_ARRAY, &va);
937-
result->res = pushJsonbValue(&result->parseState, WJB_ELEM, &jb);
938-
result->res = pushJsonbValue(&result->parseState, WJB_END_ARRAY, NULL);
935+
result->res = pushSingleScalarJsonbValue(&result->parseState, &jb);
939936
}
940937
else
941938
{

0 commit comments

Comments
 (0)