printf("%lf") is not portable, so omit the "l".
authorTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 May 2018 15:40:54 +0000 (11:40 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Sun, 20 May 2018 15:40:54 +0000 (11:40 -0400)
The "l" (ell) width spec means something in the corresponding scanf usage,
but not here.  While modern POSIX says that applying "l" to "f" and other
floating format specs is a no-op, SUSv2 says it's undefined.  Buildfarm
experience says that some old compilers emit warnings about it, and at
least one old stdio implementation (mingw's "ANSI" option) actually
produces wrong answers and/or crashes.

Discussion: https://postgr.es/m/21670.1526769114@sss.pgh.pa.us
Discussion: https://postgr.es/m/c085e1da-0d64-1c15-242d-c921f32e0d5c@dunslane.net

contrib/pageinspect/btreefuncs.c
doc/src/sgml/ecpg.sgml
src/backend/access/rmgrdesc/nbtdesc.c
src/interfaces/ecpg/test/compat_informix/sqlda.pgc
src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
src/interfaces/ecpg/test/expected/preproc-outofscope.c
src/interfaces/ecpg/test/expected/sql-sqlda.c
src/interfaces/ecpg/test/preproc/outofscope.pgc
src/interfaces/ecpg/test/sql/sqlda.pgc

index 558a8c41f49c63e33e83f9e831168859fc1f84d0..90acf6a4b6db98f60893d894ab7099edd62b2fcf 100644 (file)
@@ -563,7 +563,7 @@ bt_metap(PG_FUNCTION_ARGS)
    if (metad->btm_version == BTREE_VERSION)
    {
        values[j++] = psprintf("%u", metad->btm_oldest_btpo_xact);
-       values[j++] = psprintf("%lf", metad->btm_last_cleanup_num_heap_tuples);
+       values[j++] = psprintf("%f", metad->btm_last_cleanup_num_heap_tuples);
    }
    else
    {
index 98b68405207ba9f625769570f2b6ed3b331b0ad1..f0654773f7ce8fe022143d19281dcb67e01a75a5 100644 (file)
@@ -1678,7 +1678,7 @@ while (1)
     <para>
      Here is an example using the data type <type>complex</type> from
      the example in <xref linkend="xtypes"/>.  The external string
-     representation of that type is <literal>(%lf,%lf)</literal>,
+     representation of that type is <literal>(%f,%f)</literal>,
      which is defined in the
      functions <function>complex_in()</function>
      and <function>complex_out()</function> functions
index 1590d676fb09792a18e7515ef722b82bd89b94a9..5c4457179de77359f077ebd4a8df5f64c06ab575 100644 (file)
@@ -100,7 +100,7 @@ btree_desc(StringInfo buf, XLogReaderState *record)
            {
                xl_btree_metadata *xlrec = (xl_btree_metadata *) rec;
 
-               appendStringInfo(buf, "oldest_btpo_xact %u; last_cleanup_num_heap_tuples: %lf",
+               appendStringInfo(buf, "oldest_btpo_xact %u; last_cleanup_num_heap_tuples: %f",
                                 xlrec->oldest_btpo_xact,
                                 xlrec->last_cleanup_num_heap_tuples);
                break;
index 423ce41089010c8a356d1f264367c8ace45134b7..87e0110aeda1c5c95bf7e9b57bd6b18984275b5d 100644 (file)
@@ -37,7 +37,7 @@ dump_sqlda(sqlda_t *sqlda)
            printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
            break;
        case SQLFLOAT:
-           printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
+           printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
            break;
        case SQLDECIMAL:
            {
index fa2e569bbd477344583c72385e8ef457c05f6a00..ad3188d1e6369906c4fd10d6e7f15c1682763246 100644 (file)
@@ -142,7 +142,7 @@ dump_sqlda(sqlda_t *sqlda)
            printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
            break;
        case SQLFLOAT:
-           printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
+           printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
            break;
        case SQLDECIMAL:
            {
index f4676a083a18336e4f2a7095e44b26f8fc4b9ff2..ef4dadaf9d20877de556b051c26450a10210ed62 100644 (file)
@@ -337,7 +337,7 @@ if (sqlca.sqlcode < 0) exit (1);}
        get_record1();
        if (sqlca.sqlcode == ECPG_NOT_FOUND)
            break;
-       printf("id=%d%s t='%s'%s d1=%lf%s d2=%lf%s c = '%s'%s\n",
+       printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n",
            myvar->id, mynullvar->id ? " (NULL)" : "",
            myvar->t, mynullvar->t ? " (NULL)" : "",
            myvar->d1, mynullvar->d1 ? " (NULL)" : "",
index 81d26b3a9724cf6ae070567e6a6c6b24e048dc8a..090aaf1a45ddc3ce95d6beb8bf3a578ac9be0797 100644 (file)
@@ -158,7 +158,7 @@ dump_sqlda(sqlda_t *sqlda)
            break;
 #endif
        case ECPGt_double:
-           printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
+           printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
            break;
        case ECPGt_numeric:
            {
index aae53250a54409256732d33a09fa5e9e16ba33e2..b03743c991f9d97653a2de5c17620ed6b2c0ba98 100644 (file)
@@ -101,7 +101,7 @@ main (void)
        get_record1();
        if (sqlca.sqlcode == ECPG_NOT_FOUND)
            break;
-       printf("id=%d%s t='%s'%s d1=%lf%s d2=%lf%s c = '%s'%s\n",
+       printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n",
            myvar->id, mynullvar->id ? " (NULL)" : "",
            myvar->t, mynullvar->t ? " (NULL)" : "",
            myvar->d1, mynullvar->d1 ? " (NULL)" : "",
index 0f2059f670c55d51194b9b9bd783061d1d869803..2ea5121ac564fd48e9a4f74b69e82f555f8a3006 100644 (file)
@@ -45,7 +45,7 @@ dump_sqlda(sqlda_t *sqlda)
            break;
 #endif
        case ECPGt_double:
-           printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
+           printf("name sqlda descriptor: '%s' value %f\n", sqlda->sqlvar[i].sqlname.data, *(double *)sqlda->sqlvar[i].sqldata);
            break;
        case ECPGt_numeric:
            {