Re: [PATCH] Improve geometric types
Emre Hasegeli <emre@hasegeli.com>
From: Emre Hasegeli <emre@hasegeli.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>,
Robert Haas <robertmhaas@gmail.com>, Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>, Aleksander Alekseev <a.alekseev@postgrespro.ru>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2017-11-05T14:54:19Z
Lists: pgsql-hackers
Attachments
- 0001-geo-funcs-v05.patch (application/octet-stream) patch v5-0001
- 0002-float-header-v09.patch (application/octet-stream) patch v9-0002
- 0003-geo-float-v06.patch (application/octet-stream) patch v6-0003
- 0004-line-fixes-v05.patch (application/octet-stream) patch v5-0004
- 0005-float-zero-v01.patch (application/octet-stream) patch v1-0005
- 0006-geo-tests-v01.patch (application/octet-stream) patch v1-0006
> I am not sure how useful NaNs are in geometric types context, but we > allow them, so inconsistent hypot() would be a problem. I will change > my patches to keep pg_hypot(). New versions of the patches are attached with 2 additional ones. The new versions leave pg_hypot() in place. One of the new patches improves the test coverage. The line coverage of geo_ops.c increases from 55% to 81%. The other one fixes -0 values to 0 on float operators. I am not sure about performance implication of this, so kept it separate. It may be a better idea to check this only on the platforms that has tendency to produce -0. While working on the tests, I found some unreachable code and removed it. I also found that lseg ## lseg operator returning wrong results. It is defined as "closest point to first segment on the second segment", but: > # select '[(1,2),(3,4)]'::lseg ## '[(0,0),(6,6)]'::lseg; > ?column? > ---------- > (1,2) > (1 row) I appended the fix to the patches. This is also effecting lseg ## box operator. I also changed recently band-aided point ## lseg operator to return the point instead of NULL when it cannot find the correct result to avoid the operators depending on this one to crash.
Commits
-
Improve test coverage of geometric types
- a3d2844852dc 12.0 landed
-
Fix problems in handling the line data type
- 2e2a392de391 12.0 landed
-
Use the built-in float datatypes to implement geometric types
- c4c340088546 12.0 landed
-
Remove remaining GEODEBUG references from geo_ops.c
- a082aed0723c 12.0 landed
-
Provide separate header file for built-in float types
- 6bf0bc842bd7 12.0 landed
-
Refactor geometric functions and operators
- a7dc63d904a6 12.0 landed
-
Fix crash in close_ps() for NaN input coordinates.
- 278148907a97 9.6.0 cited
-
Fix GiST index build for NaN values in geometric types.
- 1acf75725545 9.6.0 cited
-
Enable building with Visual Studion 2013.
- cec8394b5ccd 9.4.0 cited
-
Suppress -0 in the C field of lines computed by line_construct_pts().
- 43fe90f66a0b 9.4.0 cited