mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Finish repairing 6.5's problems with r-tree indexes: create appropriate
selectivity functions and make the r-tree operators use them. The estimation functions themselves are just stubs, unfortunately, but perhaps someday someone will make them compute realistic estimates. Change pg_am so that the optimizer can reliably tell the difference between ordered and unordered indexes --- before it would think that an r-tree index can be scanned in '<<' order, which is not right AFAIK. Repair broken negator links for network_sup and related ops. Initdb forced. This might be my last initdb force for 7.0 ... hope so anyway ...
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
.\" This is -*-nroff-*-
|
||||
.\" XXX standard disclaimer belongs here....
|
||||
.\" $Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.4 2000/02/06 05:09:31 momjian Exp $
|
||||
.\" $Header: /cvsroot/pgsql/doc/src/sgml/catalogs.sgml,v 2.5 2000/02/17 03:39:39 tgl Exp $
|
||||
.TH "SYSTEM CATALOGS" INTRO 03/13/94 PostgreSQL PostgreSQL
|
||||
.SH "Section 7 - System Catalogs"
|
||||
.de LS
|
||||
@ -108,38 +108,37 @@ pg_aggregate
|
||||
.fi
|
||||
.nf M
|
||||
pg_am
|
||||
NameData amname /* access method name */
|
||||
oid amowner /* usesysid of creator */
|
||||
char amkind /* - deprecated */
|
||||
/* originally:
|
||||
h=hashed
|
||||
o=ordered
|
||||
s=special */
|
||||
int2 amstrategies /* total NUMBER of strategies by which
|
||||
we can traverse/search this AM */
|
||||
int2 amsupport /* total NUMBER of support functions
|
||||
that this AM uses */
|
||||
regproc amgettuple /* "next valid tuple" function */
|
||||
regproc aminsert /* "insert this tuple" function */
|
||||
regproc amdelete /* "delete this tuple" function */
|
||||
regproc amgetattr /* - deprecated */
|
||||
regproc amsetlock /* - deprecated */
|
||||
regproc amsettid /* - deprecated */
|
||||
regproc amfreetuple /* - deprecated */
|
||||
regproc ambeginscan /* "start new scan" function */
|
||||
regproc amrescan /* "restart this scan" function */
|
||||
regproc amendscan /* "end this scan" function */
|
||||
regproc ammarkpos /* "mark current scan position"
|
||||
function */
|
||||
regproc amrestrpos /* "restore marked scan position"
|
||||
function */
|
||||
regproc amopen /* - deprecated */
|
||||
regproc amclose /* - deprecated */
|
||||
regproc ambuild /* "build new index" function */
|
||||
regproc amcreate /* - deprecated */
|
||||
regproc amdestroy /* - deprecated */
|
||||
regproc amcostestimate /* estimate cost of an indexscan */
|
||||
|
||||
NameData amname /* access method name */
|
||||
oid amowner /* usesysid of creator */
|
||||
int2 amstrategies /* total NUMBER of strategies by which
|
||||
we can traverse/search this AM */
|
||||
int2 amsupport /* total NUMBER of support functions
|
||||
that this AM uses */
|
||||
int2 amorderstrategy /* if this AM has a sort order, the
|
||||
* strategy number of the sort operator.
|
||||
* Zero if AM is not ordered.
|
||||
*/
|
||||
regproc amgettuple /* "next valid tuple" function */
|
||||
regproc aminsert /* "insert this tuple" function */
|
||||
regproc amdelete /* "delete this tuple" function */
|
||||
regproc amgetattr /* - deprecated */
|
||||
regproc amsetlock /* - deprecated */
|
||||
regproc amsettid /* - deprecated */
|
||||
regproc amfreetuple /* - deprecated */
|
||||
regproc ambeginscan /* "start new scan" function */
|
||||
regproc amrescan /* "restart this scan" function */
|
||||
regproc amendscan /* "end this scan" function */
|
||||
regproc ammarkpos /* "mark current scan position"
|
||||
function */
|
||||
regproc amrestrpos /* "restore marked scan position"
|
||||
function */
|
||||
regproc amopen /* - deprecated */
|
||||
regproc amclose /* - deprecated */
|
||||
regproc ambuild /* "build new index" function */
|
||||
regproc amcreate /* - deprecated */
|
||||
regproc amdestroy /* - deprecated */
|
||||
regproc amcostestimate /* estimate cost of an indexscan */
|
||||
|
||||
.fi
|
||||
.nf M
|
||||
pg_amop
|
||||
|
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/xindex.sgml,v 1.7 2000/01/24 07:16:49 tgl Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/xindex.sgml,v 1.8 2000/02/17 03:39:39 tgl Exp $
|
||||
Postgres documentation
|
||||
-->
|
||||
|
||||
@ -51,10 +51,6 @@ Postgres documentation
|
||||
<entry>amowner</entry>
|
||||
<entry>object id of the owner's instance in pg_user</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>amkind</entry>
|
||||
<entry>not used at present, but set to 'o' as a place holder</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>amstrategies</entry>
|
||||
<entry>number of strategies for this access method (see below)</entry>
|
||||
@ -63,6 +59,11 @@ Postgres documentation
|
||||
<entry>amsupport</entry>
|
||||
<entry>number of support routines for this access method (see below)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>amorderstrategy</entry>
|
||||
<entry>zero if the index offers no sort order, otherwise the strategy
|
||||
number of the strategy operator that describes the sort order</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>amgettuple</entry>
|
||||
</row>
|
||||
@ -217,6 +218,15 @@ SELECT oid FROM pg_am WHERE amname = 'btree';
|
||||
method. The actual routines are listed elsewhere.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
By the way, the <filename>amorderstrategy</filename> entry tells whether
|
||||
the access method supports ordered scan. Zero means it doesn't; if it
|
||||
does, <filename>amorderstrategy</filename> is the number of the strategy
|
||||
routine that corresponds to the ordering operator. For example, btree
|
||||
has <filename>amorderstrategy</filename> = 1 which is its
|
||||
"less than" strategy number.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
The next class of interest is pg_opclass. This class exists only to
|
||||
associate a name and default type with an oid. In pg_amop, every
|
||||
|
@ -265,6 +265,13 @@ SELECT (a + b) AS c FROM test_complex;
|
||||
yet.) If you do not do this, things will still work, but the optimizer's
|
||||
estimates won't be as good as they could be.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
There are additional selectivity functions designed for geometric
|
||||
operators in src/backend/utils/adt/geo_selfuncs.c: areasel, positionsel,
|
||||
and contsel. At this writing these are just stubs, but you may want
|
||||
to use them (or even better, improve them) anyway.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
<sect2>
|
||||
@ -294,6 +301,9 @@ SELECT (a + b) AS c FROM test_complex;
|
||||
neqjoinsel for <>
|
||||
scalarltjoinsel for < or <=
|
||||
scalargtjoinsel for > or >=
|
||||
areajoinsel for 2D area-based comparisons
|
||||
positionjoinsel for 2D position-based comparisons
|
||||
contjoinsel for 2D containment-based comparisons
|
||||
</ProgramListing>
|
||||
</para>
|
||||
</sect2>
|
||||
|
Reference in New Issue
Block a user