]> granicus.if.org Git - postgresql/commit
Introduce extensible node types.
authorRobert Haas <rhaas@postgresql.org>
Fri, 12 Feb 2016 14:31:16 +0000 (09:31 -0500)
committerRobert Haas <rhaas@postgresql.org>
Fri, 12 Feb 2016 14:38:11 +0000 (09:38 -0500)
commitbcac23de73b89b001fbc628d84471a392e928d1c
tree91e5ec8553f54fbeef109eff48f86f8d47dfcf2a
parent63461a63f94a333eae272be3d44ae1602cda75cb
Introduce extensible node types.

An extensible node is always tagged T_Extensible, but the extnodename
field identifies it more specifically; it may also include arbitrary
private data.  Extensible nodes can be copied, tested for equality,
serialized, and deserialized, but the core system doesn't know
anything about them otherwise.  Some extensions may find it useful to
include these nodes in fdw_private or custom_private lists in lieu of
arm-wrestling their data into a format that the core code can
understand.

Along the way, so as not to burden the authors of such extensible
node types too much, expose the functions for writing serialized
tokens, and for serializing and deserializing bitmapsets.

KaiGai Kohei, per a design suggested by me.  Reviewed by Andres Freund
and by me, and further edited by me.
src/backend/nodes/Makefile
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/extensible.c [new file with mode: 0644]
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/include/nodes/extensible.h [new file with mode: 0644]
src/include/nodes/nodes.h