1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-11 10:01:57 +03:00

Make float exponent output on Windows look the same as elsewhere.

Windows, alone among our supported platforms, likes to emit three-digit
exponent fields even when two digits would do.  Adjust such results to
look like the way everyone else does it.  Eliminate a bunch of variant
expected-output files that were needed only because of this quirk.

Discussion: https://postgr.es/m/2934.1539122454@sss.pgh.pa.us
This commit is contained in:
Tom Lane
2018-10-12 11:14:27 -04:00
parent b34e84f160
commit f1885386f6
12 changed files with 27 additions and 10435 deletions

View File

@ -1181,6 +1181,22 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
}
if (vallen < 0)
goto fail;
/*
* Windows, alone among our supported platforms, likes to emit
* three-digit exponent fields even when two digits would do. Hack
* such results to look like the way everyone else does it.
*/
#ifdef WIN32
if (vallen >= 6 &&
convert[vallen - 5] == 'e' &&
convert[vallen - 3] == '0')
{
convert[vallen - 3] = convert[vallen - 2];
convert[vallen - 2] = convert[vallen - 1];
vallen--;
}
#endif
}
padlen = compute_padlen(minlen, vallen + zeropadlen, leftjust);
@ -1298,6 +1314,17 @@ pg_strfromd(char *str, size_t count, int precision, double value)
target.failed = true;
goto fail;
}
#ifdef WIN32
if (vallen >= 6 &&
convert[vallen - 5] == 'e' &&
convert[vallen - 3] == '0')
{
convert[vallen - 3] = convert[vallen - 2];
convert[vallen - 2] = convert[vallen - 1];
vallen--;
}
#endif
}
}