mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
Support INCLUDE'd columns in SP-GiST.
Not much to say here: does what it says on the tin. We steal a previously-always-zero bit from the nextOffset field of leaf index tuples in order to track whether there is a nulls bitmap. Otherwise it works about like included columns in other index types. Pavel Borisov, reviewed by Andrey Borodin and Anastasia Lubennikova, and rather heavily editorialized on by me Discussion: https://postgr.es/m/CALT9ZEFi-vMp4faht9f9Junb1nO3NOSjhpxTmbm1UGLMsLqiEQ@mail.gmail.com
This commit is contained in:
@ -409,9 +409,11 @@ CREATE INDEX test2_mm_idx ON test2 (major, minor);
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Currently, only the B-tree, GiST, GIN, and BRIN
|
||||
index types support multicolumn
|
||||
indexes. Up to 32 columns can be specified. (This limit can be
|
||||
Currently, only the B-tree, GiST, GIN, and BRIN index types support
|
||||
multiple-key-column indexes. Whether there can be multiple key
|
||||
columns is independent of whether <literal>INCLUDE</literal> columns
|
||||
can be added to the index. Indexes can have up to 32 columns,
|
||||
including <literal>INCLUDE</literal> columns. (This limit can be
|
||||
altered when building <productname>PostgreSQL</productname>; see the
|
||||
file <filename>pg_config_manual.h</filename>.)
|
||||
</para>
|
||||
@ -1208,8 +1210,8 @@ CREATE UNIQUE INDEX tab_x_y ON tab(x) INCLUDE (y);
|
||||
likely to not need to access the heap. If the heap tuple must be visited
|
||||
anyway, it costs nothing more to get the column's value from there.
|
||||
Other restrictions are that expressions are not currently supported as
|
||||
included columns, and that only B-tree and GiST indexes currently support
|
||||
included columns.
|
||||
included columns, and that only B-tree, GiST and SP-GiST indexes currently
|
||||
support included columns.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -187,8 +187,8 @@ CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] [ [ IF NOT EXISTS ] <replaceable class=
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Currently, the B-tree and the GiST index access methods support this
|
||||
feature. In B-tree and the GiST indexes, the values of columns listed
|
||||
Currently, the B-tree, GiST and SP-GiST index access methods support
|
||||
this feature. In these indexes, the values of columns listed
|
||||
in the <literal>INCLUDE</literal> clause are included in leaf tuples
|
||||
which correspond to heap tuples, but are not included in upper-level
|
||||
index entries used for tree navigation.
|
||||
@ -695,7 +695,10 @@ Indexes:
|
||||
|
||||
<para>
|
||||
Currently, only the B-tree, GiST, GIN, and BRIN index methods support
|
||||
multicolumn indexes. Up to 32 fields can be specified by default.
|
||||
multiple-key-column indexes. Whether there can be multiple key
|
||||
columns is independent of whether <literal>INCLUDE</literal> columns
|
||||
can be added to the index. Indexes can have up to 32 columns,
|
||||
including <literal>INCLUDE</literal> columns.
|
||||
(This limit can be altered when building
|
||||
<productname>PostgreSQL</productname>.) Only B-tree currently
|
||||
supports unique indexes.
|
||||
|
@ -216,6 +216,14 @@
|
||||
inner tuples that are passed through to reach the leaf level.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When an <acronym>SP-GiST</acronym> index is created with
|
||||
<literal>INCLUDE</literal> columns, the values of those columns are also
|
||||
stored in leaf tuples. The <literal>INCLUDE</literal> columns are of no
|
||||
concern to the <acronym>SP-GiST</acronym> operator class, so they are
|
||||
not discussed further here.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Inner tuples are more complex, since they are branching points in the
|
||||
search tree. Each inner tuple contains a set of one or more
|
||||
|
@ -1426,11 +1426,15 @@ CREATE OPERATOR CLASS polygon_ops
|
||||
STORAGE box;
|
||||
</programlisting>
|
||||
|
||||
At present, only the GiST, GIN and BRIN index methods support a
|
||||
At present, only the GiST, SP-GiST, GIN and BRIN index methods support a
|
||||
<literal>STORAGE</literal> type that's different from the column data type.
|
||||
The GiST <function>compress</function> and <function>decompress</function> support
|
||||
routines must deal with data-type conversion when <literal>STORAGE</literal>
|
||||
is used. In GIN, the <literal>STORAGE</literal> type identifies the type of
|
||||
is used. SP-GiST likewise requires a <function>compress</function>
|
||||
support function to convert to the storage type, when that is different;
|
||||
if an SP-GiST opclass also supports retrieving data, the reverse
|
||||
conversion must be handled by the <function>consistent</function> function.
|
||||
In GIN, the <literal>STORAGE</literal> type identifies the type of
|
||||
the <quote>key</quote> values, which normally is different from the type
|
||||
of the indexed column — for example, an operator class for
|
||||
integer-array columns might have keys that are just integers. The
|
||||
|
Reference in New Issue
Block a user