Fix assorted compiler warnings seen in the buildfarm.
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 May 2018 19:52:54 +0000 (15:52 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 2 May 2018 19:52:54 +0000 (15:52 -0400)
Failure to use DatumGetFoo/FooGetDatum macros correctly, or at all,
causes some warnings about sign conversion.  This is just cosmetic
at the moment but in principle it's a type violation, so clean up
the instances I could find.

autoprewarm.c and sharedfileset.c contained code that unportably
assumed that pid_t is the same size as int.  We've variously dealt
with this by casting pid_t to int or to unsigned long for printing
purposes; I went with the latter.

Fix uninitialized-variable warning in RestoreGUCState.  This is
a live bug in some sense, but of no great significance given that
nobody is very likely to care what "line number" is associated with
a GUC that hasn't got a source file recorded.

contrib/hstore/hstore_io.c
contrib/jsonb_plpython/jsonb_plpython.c
contrib/pg_prewarm/autoprewarm.c
src/backend/storage/file/sharedfileset.c
src/backend/utils/adt/jsonb.c
src/backend/utils/adt/numeric.c
src/backend/utils/adt/pgstatfuncs.c
src/backend/utils/misc/guc.c

index 7a741a779c839c1eb01bf433c5ea12aff10c7db1..745497c76f07746416a3c6341b76929527ddb9d6 100644 (file)
@@ -1462,10 +1462,14 @@ hstore_to_jsonb_loose(PG_FUNCTION_ARGS)
                                                                   HSTORE_VALLEN(entries, i));
                        if (IsValidJsonNumber(tmp.data, tmp.len))
                        {
+                               Datum           numd;
+
                                val.type = jbvNumeric;
-                               val.val.numeric = DatumGetNumeric(
-                                                                                                 DirectFunctionCall3(numeric_in,
-                                                                                                                                         CStringGetDatum(tmp.data), 0, -1));
+                               numd = DirectFunctionCall3(numeric_in,
+                                                                                  CStringGetDatum(tmp.data),
+                                                                                  ObjectIdGetDatum(InvalidOid),
+                                                                                  Int32GetDatum(-1));
+                               val.val.numeric = DatumGetNumeric(numd);
                        }
                        else
                        {
index 08a7598aae31c6d38cbe75e7f3da7026328637e4..645238f15b363af897e38b44e7219014f5b182bd 100644 (file)
@@ -325,8 +325,13 @@ PLyNumber_ToJsonbValue(PyObject *obj, JsonbValue *jbvNum)
 
        PG_TRY();
        {
-               num = DatumGetNumeric(DirectFunctionCall3(numeric_in,
-                                                                                                 CStringGetDatum(str), 0, -1));
+               Datum           numd;
+
+               numd = DirectFunctionCall3(numeric_in,
+                                                                  CStringGetDatum(str),
+                                                                  ObjectIdGetDatum(InvalidOid),
+                                                                  Int32GetDatum(-1));
+               num = DatumGetNumeric(numd);
        }
        PG_CATCH();
        {
index bb28e237d173441c5c01a3cbe5e259e3bada854f..9faabe576dd87fadb0480ef81d5a230f9cda54de 100644 (file)
@@ -180,8 +180,8 @@ autoprewarm_main(Datum main_arg)
        {
                LWLockRelease(&apw_state->lock);
                ereport(LOG,
-                               (errmsg("autoprewarm worker is already running under PID %d",
-                                               apw_state->bgworker_pid)));
+                               (errmsg("autoprewarm worker is already running under PID %lu",
+                                               (unsigned long) apw_state->bgworker_pid)));
                return;
        }
        apw_state->bgworker_pid = MyProcPid;
@@ -290,8 +290,8 @@ apw_load_buffers(void)
        {
                LWLockRelease(&apw_state->lock);
                ereport(LOG,
-                               (errmsg("skipping prewarm because block dump file is being written by PID %d",
-                                               apw_state->pid_using_dumpfile)));
+                               (errmsg("skipping prewarm because block dump file is being written by PID %lu",
+                                               (unsigned long) apw_state->pid_using_dumpfile)));
                return;
        }
        LWLockRelease(&apw_state->lock);
@@ -580,12 +580,12 @@ apw_dump_now(bool is_bgworker, bool dump_unlogged)
        {
                if (!is_bgworker)
                        ereport(ERROR,
-                                       (errmsg("could not perform block dump because dump file is being used by PID %d",
-                                                       apw_state->pid_using_dumpfile)));
+                                       (errmsg("could not perform block dump because dump file is being used by PID %lu",
+                                                       (unsigned long) apw_state->pid_using_dumpfile)));
 
                ereport(LOG,
-                               (errmsg("skipping block dump because it is already being performed by PID %d",
-                                               apw_state->pid_using_dumpfile)));
+                               (errmsg("skipping block dump because it is already being performed by PID %lu",
+                                               (unsigned long) apw_state->pid_using_dumpfile)));
                return 0;
        }
 
@@ -717,8 +717,8 @@ autoprewarm_start_worker(PG_FUNCTION_ARGS)
        if (pid != InvalidPid)
                ereport(ERROR,
                                (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
-                                errmsg("autoprewarm worker is already running under PID %d",
-                                               pid)));
+                                errmsg("autoprewarm worker is already running under PID %lu",
+                                               (unsigned long) pid)));
 
        apw_start_master_worker();
 
index 0ac869653666fe6100a361ddea78891ddb38d0fb..d41b39a1771470afd7d2e6e50898c7a933742b83 100644 (file)
@@ -214,9 +214,9 @@ SharedFileSetPath(char *path, SharedFileSet *fileset, Oid tablespace)
        char            tempdirpath[MAXPGPATH];
 
        TempTablespacePath(tempdirpath, tablespace);
-       snprintf(path, MAXPGPATH, "%s/%s%d.%u.sharedfileset",
+       snprintf(path, MAXPGPATH, "%s/%s%lu.%u.sharedfileset",
                         tempdirpath, PG_TEMP_FILE_PREFIX,
-                        fileset->creator_pid, fileset->number);
+                        (unsigned long) fileset->creator_pid, fileset->number);
 }
 
 /*
index e99bbc482a9c5bb3aa64ad586969cdedd7db94ae..9d2b89f90cf1abd5f7ac5f69704ad06a82dc4962 100644 (file)
@@ -343,6 +343,7 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
 {
        JsonbInState *_state = (JsonbInState *) pstate;
        JsonbValue      v;
+       Datum           numd;
 
        switch (tokentype)
        {
@@ -361,18 +362,19 @@ jsonb_in_scalar(void *pstate, char *token, JsonTokenType tokentype)
                         */
                        Assert(token != NULL);
                        v.type = jbvNumeric;
-                       v.val.numeric = DatumGetNumeric(DirectFunctionCall3(numeric_in, CStringGetDatum(token), 0, -1));
-
+                       numd = DirectFunctionCall3(numeric_in,
+                                                                          CStringGetDatum(token),
+                                                                          ObjectIdGetDatum(InvalidOid),
+                                                                          Int32GetDatum(-1));
+                       v.val.numeric = DatumGetNumeric(numd);
                        break;
                case JSON_TOKEN_TRUE:
                        v.type = jbvBool;
                        v.val.boolean = true;
-
                        break;
                case JSON_TOKEN_FALSE:
                        v.type = jbvBool;
                        v.val.boolean = false;
-
                        break;
                case JSON_TOKEN_NULL:
                        v.type = jbvNull;
@@ -772,9 +774,14 @@ datum_to_jsonb(Datum val, bool is_null, JsonbInState *result,
                                                                         strchr(outputstr, 'n') != NULL);
                                        if (!numeric_error)
                                        {
-                                               jb.type = jbvNumeric;
-                                               jb.val.numeric = DatumGetNumeric(DirectFunctionCall3(numeric_in, CStringGetDatum(outputstr), 0, -1));
+                                               Datum           numd;
 
+                                               jb.type = jbvNumeric;
+                                               numd = DirectFunctionCall3(numeric_in,
+                                                                                                  CStringGetDatum(outputstr),
+                                                                                                  ObjectIdGetDatum(InvalidOid),
+                                                                                                  Int32GetDatum(-1));
+                                               jb.val.numeric = DatumGetNumeric(numd);
                                                pfree(outputstr);
                                        }
                                        else
index c56d5afcb3bf921619c8456b6c8a6147840e52b9..dcf31e340c15dc3fdcca79cf4f999e069fa83cba 100644 (file)
@@ -3818,8 +3818,8 @@ numeric_avg_deserialize(PG_FUNCTION_ARGS)
        /* sumX */
        temp = DirectFunctionCall3(numeric_recv,
                                                           PointerGetDatum(&buf),
-                                                          InvalidOid,
-                                                          -1);
+                                                          ObjectIdGetDatum(InvalidOid),
+                                                          Int32GetDatum(-1));
        init_var_from_num(DatumGetNumeric(temp), &tmp_var);
        accum_sum_add(&(result->sumX), &tmp_var);
 
@@ -3941,16 +3941,16 @@ numeric_deserialize(PG_FUNCTION_ARGS)
        /* sumX */
        temp = DirectFunctionCall3(numeric_recv,
                                                           PointerGetDatum(&buf),
-                                                          InvalidOid,
-                                                          -1);
+                                                          ObjectIdGetDatum(InvalidOid),
+                                                          Int32GetDatum(-1));
        init_var_from_num(DatumGetNumeric(temp), &sumX_var);
        accum_sum_add(&(result->sumX), &sumX_var);
 
        /* sumX2 */
        temp = DirectFunctionCall3(numeric_recv,
                                                           PointerGetDatum(&buf),
-                                                          InvalidOid,
-                                                          -1);
+                                                          ObjectIdGetDatum(InvalidOid),
+                                                          Int32GetDatum(-1));
        init_var_from_num(DatumGetNumeric(temp), &sumX2_var);
        accum_sum_add(&(result->sumX2), &sumX2_var);
 
@@ -4340,14 +4340,14 @@ numeric_poly_deserialize(PG_FUNCTION_ARGS)
        /* sumX */
        sumX = DirectFunctionCall3(numeric_recv,
                                                           PointerGetDatum(&buf),
-                                                          InvalidOid,
-                                                          -1);
+                                                          ObjectIdGetDatum(InvalidOid),
+                                                          Int32GetDatum(-1));
 
        /* sumX2 */
        sumX2 = DirectFunctionCall3(numeric_recv,
                                                                PointerGetDatum(&buf),
-                                                               InvalidOid,
-                                                               -1);
+                                                               ObjectIdGetDatum(InvalidOid),
+                                                               Int32GetDatum(-1));
 
        init_var_from_num(DatumGetNumeric(sumX), &sumX_var);
 #ifdef HAVE_INT128
@@ -4550,8 +4550,8 @@ int8_avg_deserialize(PG_FUNCTION_ARGS)
        /* sumX */
        temp = DirectFunctionCall3(numeric_recv,
                                                           PointerGetDatum(&buf),
-                                                          InvalidOid,
-                                                          -1);
+                                                          ObjectIdGetDatum(InvalidOid),
+                                                          Int32GetDatum(-1));
        init_var_from_num(DatumGetNumeric(temp), &num);
 #ifdef HAVE_INT128
        numericvar_to_int128(&num, &result->sumX);
index 6110e40d3e14dccacf65bc2ac15de3503d1bc822..e95e3471846b999836065be368f23059d25d1b2c 100644 (file)
@@ -813,7 +813,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
                                         */
                                        nulls[12] = true;
                                        nulls[13] = true;
-                                       values[14] = DatumGetInt32(-1);
+                                       values[14] = Int32GetDatum(-1);
                                }
                                else
                                {
index e1c51c54812e337563ba43c534869a0be557bc8d..f496ad628152ae70d2e5008df5e0c01b02419731 100644 (file)
@@ -9610,6 +9610,8 @@ RestoreGUCState(void *gucstate)
                if (varsourcefile[0])
                        read_gucstate_binary(&srcptr, srcend,
                                                                 &varsourceline, sizeof(varsourceline));
+               else
+                       varsourceline = 0;
                read_gucstate_binary(&srcptr, srcend,
                                                         &varsource, sizeof(varsource));
                read_gucstate_binary(&srcptr, srcend,