Restructure pg_opclass, pg_amop, and pg_amproc per previous discussions in

Tom Lane <tgl@sss.pgh.pa.us>

Commit: f933766ba7c5446a28d714904ae0c46d8b21b86a
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: 2001-08-21T16:36:06Z
Releases: 7.2.1
Restructure pg_opclass, pg_amop, and pg_amproc per previous discussions in
pgsql-hackers.  pg_opclass now has a row for each opclass supported by each
index AM, not a row for each opclass name.  This allows pg_opclass to show
directly whether an AM supports an opclass, and furthermore makes it possible
to store additional information about an opclass that might be AM-dependent.
pg_opclass and pg_amop now store "lossy" and "haskeytype" information that we
previously expected the user to remember to provide in CREATE INDEX commands.
Lossiness is no longer an index-level property, but is associated with the
use of a particular operator in a particular index opclass.

Along the way, IndexSupportInitialize now uses the syscaches to retrieve
pg_amop and pg_amproc entries.  I find this reduces backend launch time by
about ten percent, at the cost of a couple more special cases in catcache.c's
IndexScanOK.

Initial work by Oleg Bartunov and Teodor Sigaev, further hacking by Tom Lane.

initdb forced.

Files

PathChange+/−
contrib/cube/cube.sql.in modified +98 −65
contrib/findoidjoins/findoidjoins.c modified +7 −5
contrib/findoidjoins/README.findoidjoins modified +2 −3
contrib/intarray/bench/create_test.pl modified +1 −1
contrib/intarray/expected/_int.out modified +2 −2
contrib/intarray/_int.sql.in modified +145 −93
contrib/intarray/README.intarray modified +7 −7
contrib/intarray/sql/_int.sql modified +2 −2
contrib/rtree_gist/expected/rtree_gist.out modified +1 −1
contrib/rtree_gist/rtree_gist.sql.in modified +200 −138
contrib/rtree_gist/sql/rtree_gist.sql modified +1 −1
contrib/seg/seg.sql.in modified +98 −65
doc/src/sgml/catalogs.sgml modified +1 −8
doc/src/sgml/indices.sgml modified +5 −6
doc/src/sgml/ref/create_index.sgml modified +3 −4
doc/src/sgml/xindex.sgml modified +104 −65
src/backend/access/gist/gist.c modified +54 −43
src/backend/access/index/istrat.c modified +54 −144
src/backend/bootstrap/bootparse.y modified +3 −3
src/backend/catalog/index.c modified +5 −9
src/backend/catalog/indexing.c modified +4 −4
src/backend/commands/cluster.c modified +1 −2
src/backend/commands/command.c modified +4 −4
src/backend/commands/indexcmds.c modified +81 −109
src/backend/nodes/copyfuncs.c modified +1 −3
src/backend/nodes/equalfuncs.c modified +1 −3
src/backend/nodes/outfuncs.c modified +1 −7
src/backend/optimizer/path/costsize.c modified +8 −8
src/backend/optimizer/path/indxpath.c modified +70 −98
src/backend/optimizer/plan/createplan.c modified +102 −46
src/backend/optimizer/util/plancat.c modified +9 −15
src/backend/parser/analyze.c modified +1 −2
src/backend/parser/gram.y modified +3 −5
src/backend/tcop/utility.c modified +1 −2
src/backend/utils/adt/regproc.c modified +77 −144
src/backend/utils/cache/catcache.c modified +14 −3
src/backend/utils/cache/lsyscache.c modified +65 −7
src/backend/utils/cache/syscache.c modified +25 −14
src/backend/utils/sort/tuplesort.c modified +16 −42
src/bin/psql/describe.c modified +6 −9
src/include/access/gist.h modified +3 −3
src/include/catalog/catversion.h modified +2 −2
src/include/catalog/index.h modified +1 −2
src/include/catalog/indexing.h modified +10 −13
src/include/catalog/pg_amop.h modified +230 −241
src/include/catalog/pg_amproc.h modified +68 −66
src/include/catalog/pg_index.h modified +11 −27
src/include/catalog/pg_opclass.h modified +82 −73
src/include/commands/defrem.h modified +1 −2
src/include/nodes/parsenodes.h modified +1 −2
src/include/nodes/relation.h modified +2 −4
src/include/optimizer/paths.h modified +3 −3
src/include/utils/lsyscache.h modified +4 −2
src/include/utils/syscache.h modified +24 −23
src/test/regress/expected/oidjoins.out modified +13 −21
src/test/regress/expected/opr_sanity.out modified +61 −89
src/test/regress/sql/oidjoins.sql modified +7 −11
src/test/regress/sql/opr_sanity.sql modified +45 −73
src/tutorial/complex.source modified +59 −72
src/tutorial/syscat.source modified +3 −3