aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorAlexander Korotkov <akorotkov@postgresql.org>2020-12-29 23:36:43 +0300
committerAlexander Korotkov <akorotkov@postgresql.org>2020-12-29 23:36:43 +0300
commitdb6335b5b1d6654b0e3104f36817800d127c1c91 (patch)
tree831be345c2a6197e3264f178ffbaae25f34e546c /doc/src
parentd1d61a8b23b604faf797695eeacaa5da4fe64762 (diff)
downloadpostgresql-db6335b5b1d6654b0e3104f36817800d127c1c91.tar.gz
postgresql-db6335b5b1d6654b0e3104f36817800d127c1c91.zip
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.
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/gist.sgml35
-rw-r--r--doc/src/sgml/rangetypes.sgml21
2 files changed, 51 insertions, 5 deletions
diff --git a/doc/src/sgml/gist.sgml b/doc/src/sgml/gist.sgml
index d1b6cc9a01a..dc1f192bddf 100644
--- a/doc/src/sgml/gist.sgml
+++ b/doc/src/sgml/gist.sgml
@@ -117,6 +117,29 @@
<row><entry><literal>&amp;&amp; (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>&amp;&amp; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&amp;&amp; (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>@&gt; (anymultirange,anyelement)</literal></entry></row>
+ <row><entry><literal>@&gt; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>@&gt; (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>&lt;@ (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&lt;@ (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>&lt;&lt; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&lt;&lt; (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>&gt;&gt; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&gt;&gt; (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>&amp;&lt; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&amp;&lt; (anymultirange,anyrange)</literal></entry></row>
+ <row><entry><literal>&amp;&gt; (anymultirange,anymultirange)</literal></entry></row>
+ <row><entry><literal>&amp;&gt; (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>|&gt;&gt; (point,point)</literal></entry>
<entry valign="middle" morerows="7"><literal>&lt;-&gt; (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>&amp;&amp; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&amp;&amp; (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>@&gt; (anyrange,anyelement)</literal></entry></row>
<row><entry><literal>@&gt; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>@&gt; (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>&lt;@ (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&lt;@ (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>&lt;&lt; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&lt;&lt; (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>&gt;&gt; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&gt;&gt; (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>&amp;&lt; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&amp;&lt; (anyrange,anymultirange)</literal></entry></row>
<row><entry><literal>&amp;&gt; (anyrange,anyrange)</literal></entry></row>
+ <row><entry><literal>&amp;&gt; (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>
diff --git a/doc/src/sgml/rangetypes.sgml b/doc/src/sgml/rangetypes.sgml
index 859079c69ca..91e353d4fdb 100644
--- a/doc/src/sgml/rangetypes.sgml
+++ b/doc/src/sgml/rangetypes.sgml
@@ -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>&amp;&amp;</literal>,
<literal>&lt;@</literal>,
@@ -482,8 +484,21 @@ CREATE INDEX reservation_idx ON reservation USING GIST (during);
<literal>&gt;&gt;</literal>,
<literal>-|-</literal>,
<literal>&amp;&lt;</literal>, and
- <literal>&amp;&gt;</literal>
- (see <xref linkend="range-operators-table"/> for more information).
+ <literal>&amp;&gt;</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>&amp;&amp;</literal>,
+ <literal>&lt;@</literal>,
+ <literal>@&gt;</literal>,
+ <literal>&lt;&lt;</literal>,
+ <literal>&gt;&gt;</literal>,
+ <literal>-|-</literal>,
+ <literal>&amp;&lt;</literal>, and
+ <literal>&amp;&gt;</literal>.
+ See <xref linkend="range-operators-table"/> for more information.
</para>
<para>