@@ -148,6 +148,16 @@ JsonValueListNext(const JsonValueList *jvl, JsonValueListIterator *it)
148
148
return lfirst (it -> lcell );
149
149
}
150
150
151
+ static inline JsonbValue *
152
+ JsonbInitBinary (JsonbValue * jbv , Jsonb * jb )
153
+ {
154
+ jbv -> type = jbvBinary ;
155
+ jbv -> val .binary .data = & jb -> root ;
156
+ jbv -> val .binary .len = VARSIZE_ANY_EXHDR (jb );
157
+
158
+ return jbv ;
159
+ }
160
+
151
161
/********************Execute functions for JsonPath***************************/
152
162
153
163
/*
@@ -250,11 +260,7 @@ computeJsonPathVariable(JsonPathItem *variable, List *vars, JsonbValue *value)
250
260
if (JB_ROOT_IS_SCALAR (jb ))
251
261
JsonbExtractScalar (& jb -> root , value );
252
262
else
253
- {
254
- value -> type = jbvBinary ;
255
- value -> val .binary .data = & jb -> root ;
256
- value -> val .binary .len = VARSIZE_ANY_EXHDR (jb );
257
- }
263
+ JsonbInitBinary (value , jb );
258
264
}
259
265
break ;
260
266
default :
@@ -1728,8 +1734,7 @@ recursiveExecuteNoUnwrap(JsonPathExecContext *cxt, JsonPathItem *jsp,
1728
1734
1729
1735
jsonb = JsonbValueToJsonb (keyval );
1730
1736
1731
- obj .val .binary .data = & jsonb -> root ;
1732
- obj .val .binary .len = VARSIZE (jsonb ) - VARHDRSZ ;
1737
+ JsonbInitBinary (& obj , jsonb );
1733
1738
1734
1739
res = recursiveExecuteNext (cxt , jsp , & elem , & obj , found , true);
1735
1740
@@ -1855,15 +1860,11 @@ executeJsonPath(JsonPath *path, List *vars, Jsonb *json, JsonValueList *foundJso
1855
1860
JsonPathItem jsp ;
1856
1861
JsonbValue jbv ;
1857
1862
1858
- jbv .type = jbvBinary ;
1859
- jbv .val .binary .data = & json -> root ;
1860
- jbv .val .binary .len = VARSIZE_ANY_EXHDR (json );
1861
-
1862
1863
jspInit (& jsp , path );
1863
1864
1864
1865
cxt .vars = vars ;
1865
1866
cxt .lax = (path -> header & JSONPATH_LAX ) != 0 ;
1866
- cxt .root = & jbv ;
1867
+ cxt .root = JsonbInitBinary ( & jbv , json ) ;
1867
1868
cxt .innermostArraySize = -1 ;
1868
1869
1869
1870
return recursiveExecute (& cxt , & jsp , & jbv , foundJson );
0 commit comments