postgresql/contrib/cube
Tom Lane f31a931fad Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs.
It's always been possible to create a zero-dimensional cube by converting
from a zero-length float8 array, but cube_in failed to accept the '()'
representation that cube_out produced for that case, resulting in a
dump/reload hazard.  Make it accept the case.  Also fix a couple of
other places that didn't behave sanely for zero-dimensional cubes:
cube_size would produce 1.0 when surely the answer should be 0.0,
and g_cube_distance risked a divide-by-zero failure.

Likewise, it's always been possible to create cubes containing float8
infinity or NaN coordinate values, but cube_in couldn't parse such input,
and cube_out produced platform-dependent spellings of the values.  Convert
them to use float8in_internal and float8out_internal so that the behavior
will be the same as for float8, as we recently did for the core geometric
types (cf commit 50861cd68).  As in that commit, I don't pretend that this
patch fixes all insane corner-case behaviors that may exist for NaNs, but
it's a step forward.

(This change allows removal of the separate cube_1.out and cube_3.out
expected-files, as the platform dependency that previously required them
is now gone: an underflowing coordinate value will now produce an error
not plus or minus zero.)

Make errors from cube_in follow project conventions as to spelling
("invalid input syntax for cube" not "bad cube representation")
and errcode (INVALID_TEXT_REPRESENTATION not SYNTAX_ERROR).

Also a few marginal code cleanups and comment improvements.

Tom Lane, reviewed by Amul Sul

Discussion: <15085.1472494782@sss.pgh.pa.us>
2016-09-27 11:38:33 -04:00
..
data
expected Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
sql Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
.gitignore
CHANGES
cube--1.0--1.1.sql Fix whitespace 2015-12-19 11:46:38 -05:00
cube--1.1--1.2.sql Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
cube--1.2.sql Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
cube--unpackaged--1.0.sql Fix typos in some error messages thrown by extension scripts when fed to psql. 2014-08-25 18:30:37 +02:00
cube.c Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
cube.control Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
cubedata.h Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
cubeparse.y Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
cubescan.l Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
Makefile Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00