mirror of
https://github.com/postgres/postgres.git
synced 2025-10-22 14:32:25 +03:00
Add optional compression method to SP-GiST
Patch allows to have different types of column and value stored in leaf tuples of SP-GiST. The main application of feature is to transform complex column type to simple indexed type or for truncating too long value, transformation could be lossy. Simple example: polygons are converted to their bounding boxes, this opclass follows. Authors: me, Heikki Linnakangas, Alexander Korotkov, Nikita Glukhov Reviewed-By: all authors + Darafei Praliaskouski Discussions: https://www.postgresql.org/message-id/5447B3FF.2080406@sigaev.ru https://www.postgresql.org/message-id/flat/54907069.1030506@sigaev.ru#54907069.1030506@sigaev.ru
This commit is contained in:
@@ -119,7 +119,8 @@ typedef struct SpGistState
|
||||
{
|
||||
spgConfigOut config; /* filled in by opclass config method */
|
||||
|
||||
SpGistTypeDesc attType; /* type of input data and leaf values */
|
||||
SpGistTypeDesc attType; /* type of values to be indexed/restored */
|
||||
SpGistTypeDesc attLeafType; /* type of leaf-tuple values */
|
||||
SpGistTypeDesc attPrefixType; /* type of inner-tuple prefix values */
|
||||
SpGistTypeDesc attLabelType; /* type of node label values */
|
||||
|
||||
@@ -178,7 +179,8 @@ typedef struct SpGistCache
|
||||
{
|
||||
spgConfigOut config; /* filled in by opclass config method */
|
||||
|
||||
SpGistTypeDesc attType; /* type of input data and leaf values */
|
||||
SpGistTypeDesc attType; /* type of values to be indexed/restored */
|
||||
SpGistTypeDesc attLeafType; /* type of leaf-tuple values */
|
||||
SpGistTypeDesc attPrefixType; /* type of inner-tuple prefix values */
|
||||
SpGistTypeDesc attLabelType; /* type of node label values */
|
||||
|
||||
@@ -300,7 +302,7 @@ typedef SpGistLeafTupleData *SpGistLeafTuple;
|
||||
|
||||
#define SGLTHDRSZ MAXALIGN(sizeof(SpGistLeafTupleData))
|
||||
#define SGLTDATAPTR(x) (((char *) (x)) + SGLTHDRSZ)
|
||||
#define SGLTDATUM(x, s) ((s)->attType.attbyval ? \
|
||||
#define SGLTDATUM(x, s) ((s)->attLeafType.attbyval ? \
|
||||
*(Datum *) SGLTDATAPTR(x) : \
|
||||
PointerGetDatum(SGLTDATAPTR(x)))
|
||||
|
||||
|
Reference in New Issue
Block a user