postgresql/src
Tom Lane d2ddee63b4 Improve SP-GiST opclass API to better support unlabeled nodes.
Previously, the spgSplitTuple action could only create a new upper tuple
containing a single labeled node.  This made it useless for opclasses
that prefer to work with fixed sets of nodes (labeled or otherwise),
which meant that restrictive prefixes could not be used with such
node definitions.  Change the output field set for the choose() method
to allow it to specify any valid node set for the new upper tuple,
and to specify which of these nodes to place the modified lower tuple in.

In addition to its primary use for fixed node sets, this feature could
allow existing opclasses that use variable node sets to skip a separate
spgAddNode action when splitting a tuple, by setting up the node needed
for the incoming value as part of the spgSplitTuple action.  However, care
would have to be taken to add the extra node only when it would not make
the tuple bigger than before.  (spgAddNode can enlarge the tuple,
spgSplitTuple can't.)

This is a prerequisite for an upcoming SP-GiST inet opclass, but is
being committed separately to increase the visibility of the API change.

In passing, improve the documentation about the traverse-values feature
that was added by commit ccd6eb49a.

Emre Hasegeli, with cosmetic adjustments and documentation rework by me

Discussion: <CAE2gYzxtth9qatW_OAqdOjykS0bxq7AYHLuyAQLPgT7H9ZU0Cw@mail.gmail.com>
2016-08-23 12:10:34 -04:00
..
backend Improve SP-GiST opclass API to better support unlabeled nodes. 2016-08-23 12:10:34 -04:00
bin initdb now needs submake-libpq and submake-libpgfeutils. 2016-08-22 08:01:12 -04:00
common pgindent run for 9.6 2016-06-09 18:02:36 -04:00
fe_utils Make initdb's suggested "pg_ctl start" command line more reliable. 2016-08-20 15:05:25 -04:00
include Improve SP-GiST opclass API to better support unlabeled nodes. 2016-08-23 12:10:34 -04:00
interfaces Automate the maintenance of SO_MINOR_VERSION for our shared libraries. 2016-08-16 13:58:54 -04:00
makefiles Fix typos in comments and doc 2016-01-28 16:47:36 +09:00
pl In plpgsql, don't try to convert int2vector or oidvector to expanded array. 2016-08-18 14:49:08 -04:00
port Stamp HEAD as 10devel. 2016-08-15 13:49:49 -04:00
template Remove some remains from Alpha support removal 2015-10-29 16:40:14 -04:00
test Add txid_current_ifassigned(). 2016-08-23 10:30:52 -04:00
timezone Update time zone data files to tzdata release 2016f. 2016-08-05 12:59:29 -04:00
tools initdb now needs to reference libpq include files in MSVC builds. 2016-08-20 16:53:25 -04:00
tutorial Update copyright for 2016 2016-01-02 13:33:40 -05:00
.gitignore
DEVELOPERS
Makefile Create src/fe_utils/, and move stuff into there from pg_dump's dumputils. 2016-03-24 15:55:57 -04:00
Makefile.global.in Provide and use a makefile target to build all generated headers. 2016-07-01 15:09:02 -04:00
Makefile.shlib Make the AIX case of Makefile.shlib safe for parallel make. 2016-07-23 20:30:03 -04:00
bcc32.mak
nls-global.mk nls-global.mk: search build dir for source files, too 2016-06-07 18:55:18 -04:00
win32.mak