mirror of
https://github.com/postgres/postgres.git
synced 2025-08-09 17:03:00 +03:00
Add support of multirange matching to the existing range GiST indexes
6df7a9698b
has introduced a set of operators between ranges and multiranges.
Existing GiST indexes for ranges could easily support majority of them.
This commit adds support for new operators to the existing range GiST indexes.
New operators resides the same strategy numbers as existing ones. Appropriate
check function is determined using the subtype.
Catversion is bumped.
This commit is contained in:
@@ -116,6 +116,29 @@
|
||||
<row><entry><literal>>= (inet,inet)</literal></entry></row>
|
||||
<row><entry><literal>&& (inet,inet)</literal></entry></row>
|
||||
|
||||
<row>
|
||||
<entry valign="middle" morerows="17"><literal>multirange_ops</literal></entry>
|
||||
<entry><literal>= (anymultirange,anymultirange)</literal></entry>
|
||||
<entry valign="middle" morerows="17"></entry>
|
||||
</row>
|
||||
<row><entry><literal>&& (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>&& (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>@> (anymultirange,anyelement)</literal></entry></row>
|
||||
<row><entry><literal>@> (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>@> (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal><@ (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal><@ (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal><< (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal><< (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>>> (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>>> (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>&< (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>&< (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>&> (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>&> (anymultirange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>-|- (anymultirange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>-|- (anymultirange,anyrange)</literal></entry></row>
|
||||
|
||||
<row>
|
||||
<entry valign="middle" morerows="7"><literal>point_ops</literal></entry>
|
||||
<entry><literal>|>> (point,point)</literal></entry>
|
||||
@@ -149,19 +172,27 @@
|
||||
<row><entry><literal>~ (polygon,polygon)</literal></entry></row>
|
||||
|
||||
<row>
|
||||
<entry valign="middle" morerows="9"><literal>range_ops</literal></entry>
|
||||
<entry valign="middle" morerows="17"><literal>range_ops</literal></entry>
|
||||
<entry><literal>= (anyrange,anyrange)</literal></entry>
|
||||
<entry valign="middle" morerows="9"></entry>
|
||||
<entry valign="middle" morerows="17"></entry>
|
||||
</row>
|
||||
<row><entry><literal>&& (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>&& (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>@> (anyrange,anyelement)</literal></entry></row>
|
||||
<row><entry><literal>@> (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>@> (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal><@ (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal><@ (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal><< (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal><< (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>>> (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>>> (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>&< (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>&< (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>&> (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>&> (anyrange,anymultirange)</literal></entry></row>
|
||||
<row><entry><literal>-|- (anyrange,anyrange)</literal></entry></row>
|
||||
<row><entry><literal>-|- (anyrange,anymultirange)</literal></entry></row>
|
||||
|
||||
<row>
|
||||
<entry valign="middle" morerows="1"><literal>tsquery_ops</literal></entry>
|
||||
|
@@ -469,11 +469,13 @@ SELECT '[11:10, 23:00]'::timerange;
|
||||
|
||||
<para>
|
||||
GiST and SP-GiST indexes can be created for table columns of range types.
|
||||
GiST indexes can be also created for table columns of multirange types.
|
||||
For instance, to create a GiST index:
|
||||
<programlisting>
|
||||
CREATE INDEX reservation_idx ON reservation USING GIST (during);
|
||||
</programlisting>
|
||||
A GiST or SP-GiST index can accelerate queries involving these range operators:
|
||||
A GiST or SP-GiST index on ranges can accelerate queries involving these
|
||||
range operators:
|
||||
<literal>=</literal>,
|
||||
<literal>&&</literal>,
|
||||
<literal><@</literal>,
|
||||
@@ -482,8 +484,21 @@ CREATE INDEX reservation_idx ON reservation USING GIST (during);
|
||||
<literal>>></literal>,
|
||||
<literal>-|-</literal>,
|
||||
<literal>&<</literal>, and
|
||||
<literal>&></literal>
|
||||
(see <xref linkend="range-operators-table"/> for more information).
|
||||
<literal>&></literal>.
|
||||
A GiST index on multiranges can accelerate queries involving the same
|
||||
set of multirange operators.
|
||||
A GiST index on ranges and GiST index on multiranges can also accelerate
|
||||
queries involving these cross-type range to multirange and multirange to
|
||||
range operators correspondingly:
|
||||
<literal>&&</literal>,
|
||||
<literal><@</literal>,
|
||||
<literal>@></literal>,
|
||||
<literal><<</literal>,
|
||||
<literal>>></literal>,
|
||||
<literal>-|-</literal>,
|
||||
<literal>&<</literal>, and
|
||||
<literal>&></literal>.
|
||||
See <xref linkend="range-operators-table"/> for more information.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
Reference in New Issue
Block a user