Re: [HACKERS] [PATCH] Improve geometric types

Emre Hasegeli <emre@hasegeli.com>

From: Emre Hasegeli <emre@hasegeli.com>
To: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Álvaro Herrera <alvherre@alvh.no-ip.org>, Robert Haas <robertmhaas@gmail.com>, Aleksander Alekseev <a.alekseev@postgrespro.ru>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-11-29T18:28:26Z
Lists: pgsql-hackers

Attachments

> flost8_lt and its family functions are provided to unify the
> sorting order including NaN. NaN is not rejected by the usage of
> float8_lt in the case but it is what the function is expected to
> be used for. If we wanted to check if it is positive, it
> unexpectedly throws an exception.  (I suppose that NaNs should be
> silently ignored rather than stopping a query by throwng an
> exception.)

It would at least be dump-and-restore hazard if we don't let them in.
The new version allows NaNs.

> This gives a wrong result for NaN-containing objects.

I removed the NaN aware comparisons from FP macros, and carefully
reviewed the places that needs to be NaN aware.

I am sorry that it took so long for me to post the new versions.  The
more I get into this the more problems I find.  The new versions
include non-trivial changes.  I would be glad if you can look into
them.

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().