From f933766ba7c5446a28d714904ae0c46d8b21b86a Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 21 Aug 2001 16:36:06 +0000 Subject: 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. --- src/test/regress/expected/oidjoins.out | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) (limited to 'src/test/regress/expected/oidjoins.out') diff --git a/src/test/regress/expected/oidjoins.out b/src/test/regress/expected/oidjoins.out index 0ee0f83c70..933e29c849 100644 --- a/src/test/regress/expected/oidjoins.out +++ b/src/test/regress/expected/oidjoins.out @@ -121,14 +121,6 @@ WHERE pg_am.amcostestimate != 0 AND ------+---------------- (0 rows) -SELECT ctid, pg_amop.amopid -FROM pg_amop -WHERE pg_amop.amopid != 0 AND - NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amop.amopid); - ctid | amopid -------+-------- -(0 rows) - SELECT ctid, pg_amop.amopclaid FROM pg_amop WHERE pg_amop.amopclaid != 0 AND @@ -145,14 +137,6 @@ WHERE pg_amop.amopopr != 0 AND ------+--------- (0 rows) -SELECT ctid, pg_amproc.amid -FROM pg_amproc -WHERE pg_amproc.amid != 0 AND - NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_amproc.amid); - ctid | amid -------+------ -(0 rows) - SELECT ctid, pg_amproc.amopclaid FROM pg_amproc WHERE pg_amproc.amopclaid != 0 AND @@ -241,12 +225,20 @@ WHERE pg_index.indrelid != 0 AND ------+---------- (0 rows) -SELECT ctid, pg_opclass.opcdeftype +SELECT ctid, pg_opclass.opcamid FROM pg_opclass -WHERE pg_opclass.opcdeftype != 0 AND - NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcdeftype); - ctid | opcdeftype -------+------------ +WHERE pg_opclass.opcamid != 0 AND + NOT EXISTS(SELECT * FROM pg_am AS t1 WHERE t1.oid = pg_opclass.opcamid); + ctid | opcamid +------+--------- +(0 rows) + +SELECT ctid, pg_opclass.opcintype +FROM pg_opclass +WHERE pg_opclass.opcintype != 0 AND + NOT EXISTS(SELECT * FROM pg_type AS t1 WHERE t1.oid = pg_opclass.opcintype); + ctid | opcintype +------+----------- (0 rows) SELECT ctid, pg_operator.oprleft -- cgit v1.2.1