Beautify initialization of JsonValueList and JsonLikeRegexContext
authorAlexander Korotkov <akorotkov@postgresql.org>
Sun, 17 Mar 2019 09:58:26 +0000 (12:58 +0300)
committerAlexander Korotkov <akorotkov@postgresql.org>
Sun, 17 Mar 2019 09:58:26 +0000 (12:58 +0300)
Instead of tricky assignment to {0} introduce special macros, which
explicitly initialize every field.

src/backend/utils/adt/jsonpath_exec.c

index c07225749e5620841f6345069d413cce641c320a..3f01b593d29050251f8123ec3cc1a7dd353b8951 100644 (file)
@@ -126,6 +126,8 @@ typedef struct JsonLikeRegexContext
        int                     cflags;
 } JsonLikeRegexContext;
 
+#define EmptyJsonLikeRegexContext      {NULL, 0}
+
 /* Result of jsonpath predicate evaluation */
 typedef enum JsonPathBool
 {
@@ -153,6 +155,8 @@ typedef struct JsonValueList
        List       *list;
 } JsonValueList;
 
+#define EmptyJsonValueList                     {NULL, NIL}
+
 typedef struct JsonValueListIterator
 {
        JsonbValue *value;
@@ -321,7 +325,7 @@ jsonb_path_match(PG_FUNCTION_ARGS)
        Jsonb      *jb = PG_GETARG_JSONB_P(0);
        JsonPath   *jp = PG_GETARG_JSONPATH_P(1);
        JsonbValue *jbv;
-       JsonValueList found = {0};
+       JsonValueList found = EmptyJsonValueList;
        Jsonb      *vars = NULL;
        bool            silent = true;
 
@@ -379,7 +383,7 @@ jsonb_path_query(PG_FUNCTION_ARGS)
                MemoryContext oldcontext;
                Jsonb      *vars;
                bool            silent;
-               JsonValueList found = {0};
+               JsonValueList found = EmptyJsonValueList;
 
                funcctx = SRF_FIRSTCALL_INIT();
                oldcontext = MemoryContextSwitchTo(funcctx->multi_call_memory_ctx);
@@ -420,7 +424,7 @@ jsonb_path_query_array(FunctionCallInfo fcinfo)
 {
        Jsonb      *jb = PG_GETARG_JSONB_P(0);
        JsonPath   *jp = PG_GETARG_JSONPATH_P(1);
-       JsonValueList found = {0};
+       JsonValueList found = EmptyJsonValueList;
        Jsonb      *vars = PG_GETARG_JSONB_P(2);
        bool            silent = PG_GETARG_BOOL(3);
 
@@ -439,7 +443,7 @@ jsonb_path_query_first(FunctionCallInfo fcinfo)
 {
        Jsonb      *jb = PG_GETARG_JSONB_P(0);
        JsonPath   *jp = PG_GETARG_JSONPATH_P(1);
-       JsonValueList found = {0};
+       JsonValueList found = EmptyJsonValueList;
        Jsonb      *vars = PG_GETARG_JSONB_P(2);
        bool            silent = PG_GETARG_BOOL(3);
 
@@ -510,7 +514,7 @@ executeJsonPath(JsonPath *path, Jsonb *vars, Jsonb *json, bool throwErrors,
                 * In strict mode we must get a complete list of values to check that
                 * there are no errors at all.
                 */
-               JsonValueList vals = {0};
+               JsonValueList vals = EmptyJsonValueList;
 
                res = executeItem(&cxt, &jsp, &jbv, &vals);
 
@@ -1134,7 +1138,7 @@ executeItemOptUnwrapResult(JsonPathExecContext *cxt, JsonPathItem *jsp,
 {
        if (unwrap && jspAutoUnwrap(cxt))
        {
-               JsonValueList seq = {0};
+               JsonValueList seq = EmptyJsonValueList;
                JsonValueListIterator it;
                JsonPathExecResult res = executeItem(cxt, jsp, jb, &seq);
                JsonbValue *item;
@@ -1262,7 +1266,7 @@ executeBoolItem(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                 * regexes, but we use Postgres regexes here.  'flags' is a
                                 * string literal converted to integer flags at compile-time.
                                 */
-                               JsonLikeRegexContext lrcxt = {0};
+                               JsonLikeRegexContext lrcxt = EmptyJsonLikeRegexContext;
 
                                jspInitByBuffer(&larg, jsp->base,
                                                                jsp->content.like_regex.expr);
@@ -1280,7 +1284,7 @@ executeBoolItem(JsonPathExecContext *cxt, JsonPathItem *jsp,
                                 * In strict mode we must get a complete list of values to
                                 * check that there are no errors at all.
                                 */
-                               JsonValueList vals = {0};
+                               JsonValueList vals = EmptyJsonValueList;
                                JsonPathExecResult res =
                                executeItemOptUnwrapResultNoThrow(cxt, &larg, jb,
                                                                                                  false, &vals);
@@ -1432,8 +1436,8 @@ executePredicate(JsonPathExecContext *cxt, JsonPathItem *pred,
 {
        JsonPathExecResult res;
        JsonValueListIterator lseqit;
-       JsonValueList lseq = {0};
-       JsonValueList rseq = {0};
+       JsonValueList lseq = EmptyJsonValueList;
+       JsonValueList rseq = EmptyJsonValueList;
        JsonbValue *lval;
        bool            error = false;
        bool            found = false;
@@ -1511,8 +1515,8 @@ executeBinaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
 {
        JsonPathExecResult jper;
        JsonPathItem elem;
-       JsonValueList lseq = {0};
-       JsonValueList rseq = {0};
+       JsonValueList lseq = EmptyJsonValueList;
+       JsonValueList rseq = EmptyJsonValueList;
        JsonbValue *lval;
        JsonbValue *rval;
        Numeric         res;
@@ -1586,7 +1590,7 @@ executeUnaryArithmExpr(JsonPathExecContext *cxt, JsonPathItem *jsp,
        JsonPathExecResult jper;
        JsonPathExecResult jper2;
        JsonPathItem elem;
-       JsonValueList seq = {0};
+       JsonValueList seq = EmptyJsonValueList;
        JsonValueListIterator it;
        JsonbValue *val;
        bool            hasNext;
@@ -2124,7 +2128,7 @@ getArrayIndex(JsonPathExecContext *cxt, JsonPathItem *jsp, JsonbValue *jb,
                          int32 *index)
 {
        JsonbValue *jbv;
-       JsonValueList found = {0};
+       JsonValueList found = EmptyJsonValueList;
        JsonPathExecResult res = executeItem(cxt, jsp, jb, &found);
        Datum           numeric_index;
        bool            have_error = false;