Re: [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: Aleksander Alekseev <a.alekseev@postgrespro.ru>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-10-02T09:46:15Z
Lists: pgsql-hackers

Attachments

> And this should be the last comment of mine on the patch set.

Thank you.  The new versions of the patches are attached addressing
your comments.

> By the way, I found that MAXDOUBLEWIDTH has two inconsistent
> definitions in formatting.c(500) and float.c(128). The definition
> in new float.h is according to float.c and it seems better to be
> untouched and it would be another issue.

The last version of the patch don't move these declarations to the header file.

> # The commit message of 0001 says that "using C11 hypot()" but it
> # is sine C99. I suppose we shold follow C99 at the time so I
> # suggest rewrite it in the next version if any.

Changed.

> close_pl got a bug fix not only refactoring. I think it is
> recommended to separate bugs and improvements, but I'm fine with
> the current patch.

I split the refactoring to the first patch.

> You added sanity check "A==0 && B==0" (in Ax + By + C) in
> line_recv. I'm not sure the necessity of the check since it has
> been checked in line_in but anyway the comparisons seem to be
> typo(or thinko) of FPzero.

Tom Lane suggested [1] this one.  I now made it use FPzero().

> dist_pl is changed to take the smaller distance of both ends of
> the segment. It seems absorbing error, so it might be better
> taking the mean of the two distances. If you have a firm reason
> for the change, it is better to be written there, or it might be
> better left alone.

I don't really, so I left that part out.

[1] https://www.postgresql.org/message-id/11053.1466362319%40sss.pgh.pa.us

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