@@ -354,6 +354,21 @@ jsonb_put_escaped_value(StringInfo out, JsonbValue *scalarVal)
354
354
}
355
355
}
356
356
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
+
357
372
/*
358
373
* For jsonb we always want the de-escaped value - that's what's in token
359
374
*/
@@ -406,16 +421,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
406
421
407
422
if (_state -> parseState == NULL )
408
423
{
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 );
419
425
}
420
426
else
421
427
{
@@ -903,16 +909,7 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
903
909
}
904
910
else if (result -> parseState == NULL )
905
911
{
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 );
916
913
}
917
914
else
918
915
{
0 commit comments