postgresql/contrib
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
..
adminpack
auth_delay
auto_explain pgindent run for 9.6 2016-06-09 18:02:36 -04:00
bloom Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
btree_gin Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00
btree_gist Handle contrib's GIN/GIST support function signature changes honestly. 2016-06-09 16:44:25 -04:00
chkpass
citext Support the new regexp_match() function for citext. 2016-08-18 10:52:31 -04:00
cube Improve contrib/cube's handling of zero-D cubes, infinities, and NaNs. 2016-09-27 11:38:33 -04:00
dblink Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
dict_int
dict_xsyn
earthdistance Message style improvements 2016-07-25 22:07:44 -04:00
file_fdw Add location field to DefElem 2016-09-06 12:00:00 -04:00
fuzzystrmatch Update fuzzystrmatch extension for parallel query. 2016-06-07 11:26:41 -04:00
hstore Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
hstore_plperl Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
hstore_plpython Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
intagg Schema-qualify some references to regprocedure. 2016-06-10 10:41:58 -04:00
intarray Fix -e option in contrib/intarray/bench/bench.pl. 2016-08-17 15:51:10 -04:00
isn pgindent run for 9.6 2016-06-09 18:02:36 -04:00
lo Update lo extension for parallel query. 2016-06-07 11:26:42 -04:00
ltree Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
ltree_plpython Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
oid2name Simplify correct use of simple_prompt(). 2016-08-30 17:02:02 -04:00
pageinspect pgindent run for 9.6 2016-06-09 18:02:36 -04:00
passwordcheck Move code shared between libpq and backend from backend/libpq/ to common/. 2016-09-02 13:49:59 +03:00
pg_buffercache pg_buffercache: Allow huge allocations. 2016-09-15 09:30:38 -04:00
pg_freespacemap Update pg_freespacemap extension for parallel query. 2016-06-09 17:18:16 -04:00
pg_prewarm Update pg_prewarm extension for parallel query. 2016-06-09 17:18:18 -04:00
pg_standby Fix a bunch of places that called malloc and friends with no NULL check. 2016-08-30 18:22:43 -04:00
pg_stat_statements Improve parsetree representation of special functions such as CURRENT_DATE. 2016-08-16 20:33:01 -04:00
pg_trgm Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
pg_visibility pg_visibility: Add pg_truncate_visibility_map function. 2016-06-17 17:37:30 -04:00
pgcrypto Fix building with LibreSSL. 2016-09-15 22:52:51 +03:00
pgrowlocks Fix handling of multixacts predating pg_upgrade 2016-06-24 18:29:28 -04:00
pgstattuple Minor fixes in contrib installation scripts. 2016-06-14 10:47:06 -04:00
postgres_fdw Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
seg Update extensions with GIN/GIST support for parallel query. 2016-06-14 13:34:37 -04:00
sepgsql Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
spi
sslinfo Support OpenSSL 1.1.0. 2016-09-15 14:42:29 +03:00
start-scripts
tablefunc
tcn Revert CREATE INDEX ... INCLUDING ... 2016-04-08 21:52:13 +03:00
test_decoding Add macros to make AllocSetContextCreate() calls simpler and safer. 2016-08-27 17:50:38 -04:00
tsearch2 Make contrib regression tests safe for Danish locale. 2016-07-21 16:52:35 -04:00
tsm_system_rows
tsm_system_time
unaccent Update unaccent extension for parallel query. 2016-06-14 14:55:49 -04:00
uuid-ossp Update uuid-ossp extension for parallel query. 2016-06-14 14:56:21 -04:00
vacuumlo Fix a bunch of places that called malloc and friends with no NULL check. 2016-08-30 18:22:43 -04:00
xml2 Update xml2 extension for parallel query. 2016-06-14 15:49:32 -04:00
contrib-global.mk
Makefile Bloom index contrib module 2016-04-01 16:42:24 +03:00
README

The PostgreSQL contrib tree
---------------------------

This subtree contains porting tools, analysis utilities, and plug-in
features that are not part of the core PostgreSQL system, mainly
because they address a limited audience or are too experimental to be
part of the main source tree.  This does not preclude their
usefulness.

User documentation for each module appears in the main SGML
documentation.

When building from the source distribution, these modules are not
built automatically, unless you build the "world" target.  You can
also build and install them all by running "make all" and "make
install" in this directory; or to build and install just one selected
module, do the same in that module's subdirectory.

Some directories supply new user-defined functions, operators, or
types.  To make use of one of these modules, after you have installed
the code you need to register the new SQL objects in the database
system by executing a CREATE EXTENSION command.  In a fresh database,
you can simply do

    CREATE EXTENSION module_name;

See the PostgreSQL documentation for more information about this
procedure.