Fix assorted compiler warnings seen in the buildfarm.
authorTom Lane
Wed, 2 May 2018 19:52:54 +0000 (15:52 -0400)
committerTom Lane
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,