Re: [PATCH] Improve geometric types

Thomas Munro <thomas.munro@enterprisedb.com>

From: Thomas Munro <thomas.munro@enterprisedb.com>
To: emre@hasegeli.com
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Tomas Vondra <tomas.vondra@2ndquadrant.com>
Date: 2018-06-05T03:39:16Z
Lists: pgsql-hackers
On Sun, Jun 3, 2018 at 12:58 PM, Emre Hasegeli <emre@hasegeli.com> wrote:
> Rebased versions are attached.

Hi Emre,

This produces build errors on Windows[1][2]:

  C:\projects\postgresql\src\include\utils/float.h(136): warning
C4013: '_fpclass' undefined; assuming extern returning int
[C:\projects\postgresql\postgres.vcxproj]
  C:\projects\postgresql\src\include\utils/float.h(297): warning
C4013: '_isnan' undefined; assuming extern returning int
[C:\projects\postgresql\postgres.vcxproj]
  C:\projects\postgresql\src\include\utils/float.h(136): error C2065:
'_FPCLASS_PINF' : undeclared identifier
[C:\projects\postgresql\postgres.vcxproj]
  C:\projects\postgresql\src\include\utils/float.h(136): error C2065:
'_FPCLASS_NINF' : undeclared identifier
[C:\projects\postgresql\postgres.vcxproj]
2778

This is apparently coming from the expansion of the following macros
from src/include/port/win32_port.h:

#if (_MSC_VER < 1800)
#define isinf(x) ((_fpclass(x) == _FPCLASS_PINF) || (_fpclass(x) ==
_FPCLASS_NINF))
#define isnan(x) _isnan(x)
#endif

Those underscore-prefixed names are defined in Microsoft's
<float.h>[3][4].  So now I'm wondering if win32_port.h needs to
#include <float.h> if (_MSC_VER < 1800).

[1] http://cfbot.cputube.org/emre-hasegeli.html
[2] https://ci.appveyor.com/project/postgresql-cfbot/postgresql/build/1.0.1022
[3] https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fpclass-fpclassf
[4] https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/isnan-isnan-isnanf

-- 
Thomas Munro
http://www.enterprisedb.com


Commits

  1. Improve test coverage of geometric types

  2. Fix problems in handling the line data type

  3. Use the built-in float datatypes to implement geometric types

  4. Remove remaining GEODEBUG references from geo_ops.c

  5. Provide separate header file for built-in float types

  6. Refactor geometric functions and operators

  7. Fix crash in close_ps() for NaN input coordinates.

  8. Fix GiST index build for NaN values in geometric types.

  9. Enable building with Visual Studion 2013.

  10. Suppress -0 in the C field of lines computed by line_construct_pts().