@@ -126,6 +126,8 @@ typedef struct JsonLikeRegexContext
126126 int cflags ;
127127} JsonLikeRegexContext ;
128128
129+ #define EmptyJsonLikeRegexContext {NULL, 0}
130+
129131/* Result of jsonpath predicate evaluation */
130132typedef enum JsonPathBool
131133{
@@ -153,6 +155,8 @@ typedef struct JsonValueList
153155 List * list ;
154156} JsonValueList ;
155157
158+ #define EmptyJsonValueList {NULL, NIL}
159+
156160typedef struct JsonValueListIterator
157161{
158162 JsonbValue * value ;
@@ -321,7 +325,7 @@ jsonb_path_match(PG_FUNCTION_ARGS)
321325 Jsonb * jb = PG_GETARG_JSONB_P (0 );
322326 JsonPath * jp = PG_GETARG_JSONPATH_P (1 );
323327 JsonbValue * jbv ;
324- JsonValueList found = { 0 } ;
328+ JsonValueList found = EmptyJsonValueList ;
325329 Jsonb * vars = NULL ;
326330 bool silent = true;
327331
@@ -379,7 +383,7 @@ jsonb_path_query(PG_FUNCTION_ARGS)
379383 MemoryContext oldcontext ;
380384 Jsonb * vars ;
381385 bool silent ;
382- JsonValueList found = { 0 } ;
386+ JsonValueList found = EmptyJsonValueList ;
383387
384388 funcctx = SRF_FIRSTCALL_INIT ();
385389 oldcontext = MemoryContextSwitchTo (funcctx -> multi_call_memory_ctx );
@@ -420,7 +424,7 @@ jsonb_path_query_array(FunctionCallInfo fcinfo)
420424{
421425 Jsonb * jb = PG_GETARG_JSONB_P (0 );
422426 JsonPath * jp = PG_GETARG_JSONPATH_P (1 );
423- JsonValueList found = { 0 } ;
427+ JsonValueList found = EmptyJsonValueList ;
424428 Jsonb * vars = PG_GETARG_JSONB_P (2 );
425429 bool silent = PG_GETARG_BOOL (3 );
426430
@@ -439,7 +443,7 @@ jsonb_path_query_first(FunctionCallInfo fcinfo)
439443{
440444 Jsonb * jb = PG_GETARG_JSONB_P (0 );
441445 JsonPath * jp = PG_GETARG_JSONPATH_P (1 );
442- JsonValueList found = { 0 } ;
446+ JsonValueList found = EmptyJsonValueList ;
443447 Jsonb * vars = PG_GETARG_JSONB_P (2 );
444448 bool silent = PG_GETARG_BOOL (3 );
445449
@@ -510,7 +514,7 @@ executeJsonPath(JsonPath *path, Jsonb *vars, Jsonb *json, bool throwErrors,
510514 * In strict mode we must get a complete list of values to check that
511515 * there are no errors at all.
512516 */
513- JsonValueList vals = { 0 } ;
517+ JsonValueList vals = EmptyJsonValueList ;
514518
515519 res = executeItem (& cxt , & jsp , & jbv , & vals );
516520
@@ -1134,7 +1138,7 @@ executeItemOptUnwrapResult(JsonPathExecContext *cxt, JsonPathItem *jsp,
11341138{
11351139 if (unwrap && jspAutoUnwrap (cxt ))
11361140 {
1137- JsonValueList seq = { 0 } ;
1141+ JsonValueList seq = EmptyJsonValueList ;
11381142 JsonValueListIterator it ;
11391143 JsonPathExecResult res = executeItem (cxt , jsp , jb , & seq );
11401144 JsonbValue * item ;
@@ -1262,7 +1266,7 @@ executeBoolItem(JsonPathExecContext *cxt, JsonPathItem *jsp,
12621266 * regexes, but we use Postgres regexes here. 'flags' is a
12631267 * string literal converted to integer flags at compile-time.
12641268 */
1265- JsonLikeRegexContext lrcxt = { 0 } ;
1269+ JsonLikeRegexContext lrcxt = EmptyJsonLikeRegexContext ;
12661270
12671271 jspInitByBuffer (& larg , jsp -> base ,
12681272 jsp -> content .like_regex .expr );
@@ -1280,7 +1284,7 @@ executeBoolItem(JsonPathExecContext *cxt, JsonPathItem *jsp,
12801284 * In strict mode we must get a complete list of values to
12811285 * check that there are no errors at all.
12821286 */
1283- JsonValueList vals = { 0 } ;
1287+ JsonValueList vals = EmptyJsonValueList ;
12841288 JsonPathExecResult res =
12851289 executeItemOptUnwrapResultNoThrow (cxt , & larg , jb ,
12861290 false, & vals );
@@ -1432,8 +1436,8 @@ executePredicate(JsonPathExecContext *cxt, JsonPathItem *pred,
14321436{
14331437 JsonPathExecResult res ;
14341438 JsonValueListIterator lseqit ;
1435- JsonValueList lseq = { 0 } ;
1436- JsonValueList rseq = { 0 } ;
1439+ JsonValueList lseq = EmptyJsonValueList ;
1440+ JsonValueList rseq = EmptyJsonValueList ;
14371441 JsonbValue * lval ;
14381442 bool error = false;
14391443 bool found = false;
@@ -1511,8 +1515,8 @@ executeBinaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
15111515{
15121516 JsonPathExecResult jper ;
15131517 JsonPathItem elem ;
1514- JsonValueList lseq = { 0 } ;
1515- JsonValueList rseq = { 0 } ;
1518+ JsonValueList lseq = EmptyJsonValueList ;
1519+ JsonValueList rseq = EmptyJsonValueList ;
15161520 JsonbValue * lval ;
15171521 JsonbValue * rval ;
15181522 Numeric res ;
@@ -1586,7 +1590,7 @@ executeUnaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
15861590 JsonPathExecResult jper ;
15871591 JsonPathExecResult jper2 ;
15881592 JsonPathItem elem ;
1589- JsonValueList seq = { 0 } ;
1593+ JsonValueList seq = EmptyJsonValueList ;
15901594 JsonValueListIterator it ;
15911595 JsonbValue * val ;
15921596 bool hasNext ;
@@ -2124,7 +2128,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
21242128 int32 * index )
21252129{
21262130 JsonbValue * jbv ;
2127- JsonValueList found = { 0 } ;
2131+ JsonValueList found = EmptyJsonValueList ;
21282132 JsonPathExecResult res = executeItem (cxt , jsp , jb , & found );
21292133 Datum numeric_index ;
21302134 bool have_error = false;
0 commit comments