Add new make_oidjoin_check utility and template1_check.sql. Fix some

pg_operator problems.
This commit is contained in:
Bruce Momjian 1998-09-14 01:14:49 +00:00
parent f1bcb171e8
commit 3700981108
6 changed files with 223 additions and 7 deletions

View File

@ -2,7 +2,7 @@
# Makefile, requires pgsql/contrib/pginterface
#
#
PGINTERFACE = pginterface.o halt.o # these have to be in your library search path
PGINTERFACE = ../pginterface/pginterface.o ../pginterface/halt.o # these have to be in your library search path
TARGET = findoidjoins
CFLAGS = -g -Wall -I. -I../../src/interfaces/libpq -I/usr/local/pgsql/include
LDFLAGS = -L/usr/local/pgsql/lib -lpq

View File

@ -35,6 +35,7 @@ Join pg_am.ambuild => pg_proc.oid
Join pg_amop.amopid => pg_am.oid
Join pg_amop.amopclaid => pg_opclass.oid
Join pg_amop.amopopr => pg_operator.oid
Join pg_amop.amopopr => pg_proc.oid
Join pg_amop.amopselect => pg_proc.oid
Join pg_amop.amopnpages => pg_proc.oid
Join pg_amproc.amid => pg_am.oid
@ -51,7 +52,6 @@ Join pg_description.objoid => pg_proc.oid
Join pg_description.objoid => pg_type.oid
Join pg_index.indexrelid => pg_class.oid
Join pg_index.indrelid => pg_class.oid
Join pg_index.indproc => pg_proc.oid
Join pg_opclass.opcdeftype => pg_type.oid
Join pg_operator.oprleft => pg_type.oid
Join pg_operator.oprright => pg_type.oid

View File

@ -35,6 +35,7 @@ main(int argc, char **argv)
FROM pg_class c, pg_attribute a, pg_type t \
WHERE a.attnum > 0 AND \
relkind = 'r' AND \
relhasrules = 'f' AND \
(typname = 'oid' OR \
typname = 'regproc') AND \
a.attrelid = c.oid AND \
@ -49,6 +50,7 @@ main(int argc, char **argv)
SELECT relname \
FROM pg_class c \
WHERE relkind = 'r' AND \
relhasrules = 'f' AND \
relname != 'pg_user' \
ORDER BY 1; \
");

View File

@ -0,0 +1,35 @@
:
# You first run findoidjoins on the template1 database, and send that
# output into this file to generate a list of SQL statements.
trap "rm -f /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
cat "$@" >/tmp/$$
cat /tmp/$$ | cut -d' ' -f2 | sort | uniq -d >/tmp/$$a
cat /tmp/$$ | while read LINE
do
set -- $LINE
grep "$2" /tmp/$$a >/dev/null 2>&1 || echo $LINE
done >/tmp/$$b
cat /tmp/$$b |
awk -F'[ \.]' '\
BEGIN \
{
printf "\
--\n\
-- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check\n\
--\n";
}
{
printf "\
SELECT oid, %s.%s \n\
FROM %s \n\
WHERE %s%s.%s%s NOT IN (SELECT oid FROM %s) AND \n\
%s%s.%s%s != 0;\n", $2, $3, $2,
($5 == "pg_proc") ? "RegprocToOid(" : "",
$2, $3,
($5 == "pg_proc") ? ")" : "",
$5,
($5 == "pg_proc") ? "RegprocToOid(" : "",
$2, $3,
($5 == "pg_proc") ? ")" : "";
}'

View File

@ -7,7 +7,7 @@
*
* Copyright (c) 1994, Regents of the University of California
*
* $Id: pg_operator.h,v 1.37 1998/09/13 14:29:06 thomas Exp $
* $Id: pg_operator.h,v 1.38 1998/09/14 01:14:48 momjian Exp $
*
* NOTES
* the genbki.sh script reads this file and generates .bki
@ -200,8 +200,8 @@ DATA(insert OID = 525 ( ">=" PGUID 0 b t f 23 23 16 523 97 0 0 int4ge
DATA(insert OID = 526 ( "*" PGUID 0 b t f 21 21 21 526 0 0 0 int2mul intltsel intltjoinsel ));
DATA(insert OID = 527 ( "/" PGUID 0 b t f 21 21 21 0 0 0 0 int2div intltsel intltjoinsel ));
DATA(insert OID = 528 ( "/" PGUID 0 b t f 23 23 23 0 0 0 0 int4div intltsel intltjoinsel ));
DATA(insert OID = 529 ( "%" PGUID 0 b t f 21 21 21 6 0 0 0 int2mod intltsel intltjoinsel ));
DATA(insert OID = 530 ( "%" PGUID 0 b t f 23 23 23 6 0 0 0 int4mod intltsel intltjoinsel ));
DATA(insert OID = 529 ( "%" PGUID 0 b t f 21 21 21 0 0 0 0 int2mod intltsel intltjoinsel ));
DATA(insert OID = 530 ( "%" PGUID 0 b t f 23 23 23 0 0 0 0 int4mod intltsel intltjoinsel ));
DATA(insert OID = 531 ( "<>" PGUID 0 b t f 25 25 16 531 98 0 0 textne neqsel neqjoinsel ));
DATA(insert OID = 532 ( "=" PGUID 0 b t t 21 23 16 533 538 95 97 int24eq eqsel eqjoinsel ));
DATA(insert OID = 533 ( "=" PGUID 0 b t t 23 21 16 532 539 97 95 int42eq eqsel eqjoinsel ));
@ -219,8 +219,8 @@ DATA(insert OID = 544 ( "*" PGUID 0 b t f 21 23 23 545 0 0 0 int24mul
DATA(insert OID = 545 ( "*" PGUID 0 b t f 23 21 23 544 0 0 0 int42mul intltsel intltjoinsel ));
DATA(insert OID = 546 ( "/" PGUID 0 b t f 21 23 23 0 0 0 0 int24div intltsel intltjoinsel ));
DATA(insert OID = 547 ( "/" PGUID 0 b t f 23 21 23 0 0 0 0 int42div intltsel intltjoinsel ));
DATA(insert OID = 548 ( "%" PGUID 0 b t f 21 23 23 6 0 0 0 int24mod intltsel intltjoinsel ));
DATA(insert OID = 549 ( "%" PGUID 0 b t f 23 21 23 6 0 0 0 int42mod intltsel intltjoinsel ));
DATA(insert OID = 548 ( "%" PGUID 0 b t f 21 23 23 0 0 0 0 int24mod intltsel intltjoinsel ));
DATA(insert OID = 549 ( "%" PGUID 0 b t f 23 21 23 0 0 0 0 int42mod intltsel intltjoinsel ));
DATA(insert OID = 550 ( "+" PGUID 0 b t f 21 21 21 550 0 0 0 int2pl intltsel intltjoinsel ));
DATA(insert OID = 551 ( "+" PGUID 0 b t f 23 23 23 551 0 0 0 int4pl intltsel intltjoinsel ));
DATA(insert OID = 552 ( "+" PGUID 0 b t f 21 23 23 553 0 0 0 int24pl intltsel intltjoinsel ));

View File

@ -0,0 +1,179 @@
--
-- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check
--
SELECT oid, pg_aggregate.aggtransfn1
FROM pg_aggregate
WHERE RegprocToOid(pg_aggregate.aggtransfn1) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_aggregate.aggtransfn1) != 0;
SELECT oid, pg_aggregate.aggtransfn2
FROM pg_aggregate
WHERE RegprocToOid(pg_aggregate.aggtransfn2) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_aggregate.aggtransfn2) != 0;
SELECT oid, pg_aggregate.aggfinalfn
FROM pg_aggregate
WHERE RegprocToOid(pg_aggregate.aggfinalfn) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_aggregate.aggfinalfn) != 0;
SELECT oid, pg_aggregate.aggtranstype2
FROM pg_aggregate
WHERE pg_aggregate.aggtranstype2 NOT IN (SELECT oid FROM pg_type) AND
pg_aggregate.aggtranstype2 != 0;
SELECT oid, pg_am.amgettuple
FROM pg_am
WHERE RegprocToOid(pg_am.amgettuple) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.amgettuple) != 0;
SELECT oid, pg_am.aminsert
FROM pg_am
WHERE RegprocToOid(pg_am.aminsert) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.aminsert) != 0;
SELECT oid, pg_am.amdelete
FROM pg_am
WHERE RegprocToOid(pg_am.amdelete) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.amdelete) != 0;
SELECT oid, pg_am.ambeginscan
FROM pg_am
WHERE RegprocToOid(pg_am.ambeginscan) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.ambeginscan) != 0;
SELECT oid, pg_am.amrescan
FROM pg_am
WHERE RegprocToOid(pg_am.amrescan) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.amrescan) != 0;
SELECT oid, pg_am.amendscan
FROM pg_am
WHERE RegprocToOid(pg_am.amendscan) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.amendscan) != 0;
SELECT oid, pg_am.ammarkpos
FROM pg_am
WHERE RegprocToOid(pg_am.ammarkpos) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.ammarkpos) != 0;
SELECT oid, pg_am.amrestrpos
FROM pg_am
WHERE RegprocToOid(pg_am.amrestrpos) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.amrestrpos) != 0;
SELECT oid, pg_am.ambuild
FROM pg_am
WHERE RegprocToOid(pg_am.ambuild) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_am.ambuild) != 0;
SELECT oid, pg_amop.amopid
FROM pg_amop
WHERE pg_amop.amopid NOT IN (SELECT oid FROM pg_am) AND
pg_amop.amopid != 0;
SELECT oid, pg_amop.amopclaid
FROM pg_amop
WHERE pg_amop.amopclaid NOT IN (SELECT oid FROM pg_opclass) AND
pg_amop.amopclaid != 0;
SELECT oid, pg_amop.amopselect
FROM pg_amop
WHERE RegprocToOid(pg_amop.amopselect) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_amop.amopselect) != 0;
SELECT oid, pg_amop.amopnpages
FROM pg_amop
WHERE RegprocToOid(pg_amop.amopnpages) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_amop.amopnpages) != 0;
SELECT oid, pg_amproc.amid
FROM pg_amproc
WHERE pg_amproc.amid NOT IN (SELECT oid FROM pg_am) AND
pg_amproc.amid != 0;
SELECT oid, pg_attribute.attrelid
FROM pg_attribute
WHERE pg_attribute.attrelid NOT IN (SELECT oid FROM pg_class) AND
pg_attribute.attrelid != 0;
SELECT oid, pg_attribute.atttypid
FROM pg_attribute
WHERE pg_attribute.atttypid NOT IN (SELECT oid FROM pg_type) AND
pg_attribute.atttypid != 0;
SELECT oid, pg_class.reltype
FROM pg_class
WHERE pg_class.reltype NOT IN (SELECT oid FROM pg_type) AND
pg_class.reltype != 0;
SELECT oid, pg_class.relam
FROM pg_class
WHERE pg_class.relam NOT IN (SELECT oid FROM pg_am) AND
pg_class.relam != 0;
SELECT oid, pg_index.indexrelid
FROM pg_index
WHERE pg_index.indexrelid NOT IN (SELECT oid FROM pg_class) AND
pg_index.indexrelid != 0;
SELECT oid, pg_index.indrelid
FROM pg_index
WHERE pg_index.indrelid NOT IN (SELECT oid FROM pg_class) AND
pg_index.indrelid != 0;
SELECT oid, pg_opclass.opcdeftype
FROM pg_opclass
WHERE pg_opclass.opcdeftype NOT IN (SELECT oid FROM pg_type) AND
pg_opclass.opcdeftype != 0;
SELECT oid, pg_operator.oprleft
FROM pg_operator
WHERE pg_operator.oprleft NOT IN (SELECT oid FROM pg_type) AND
pg_operator.oprleft != 0;
SELECT oid, pg_operator.oprright
FROM pg_operator
WHERE pg_operator.oprright NOT IN (SELECT oid FROM pg_type) AND
pg_operator.oprright != 0;
SELECT oid, pg_operator.oprresult
FROM pg_operator
WHERE pg_operator.oprresult NOT IN (SELECT oid FROM pg_type) AND
pg_operator.oprresult != 0;
SELECT oid, pg_operator.oprcom
FROM pg_operator
WHERE pg_operator.oprcom NOT IN (SELECT oid FROM pg_operator) AND
pg_operator.oprcom != 0;
SELECT oid, pg_operator.oprnegate
FROM pg_operator
WHERE pg_operator.oprnegate NOT IN (SELECT oid FROM pg_operator) AND
pg_operator.oprnegate != 0;
SELECT oid, pg_operator.oprlsortop
FROM pg_operator
WHERE pg_operator.oprlsortop NOT IN (SELECT oid FROM pg_operator) AND
pg_operator.oprlsortop != 0;
SELECT oid, pg_operator.oprrsortop
FROM pg_operator
WHERE pg_operator.oprrsortop NOT IN (SELECT oid FROM pg_operator) AND
pg_operator.oprrsortop != 0;
SELECT oid, pg_operator.oprcode
FROM pg_operator
WHERE RegprocToOid(pg_operator.oprcode) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_operator.oprcode) != 0;
SELECT oid, pg_operator.oprrest
FROM pg_operator
WHERE RegprocToOid(pg_operator.oprrest) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_operator.oprrest) != 0;
SELECT oid, pg_operator.oprjoin
FROM pg_operator
WHERE RegprocToOid(pg_operator.oprjoin) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_operator.oprjoin) != 0;
SELECT oid, pg_parg.partype
FROM pg_parg
WHERE pg_parg.partype NOT IN (SELECT oid FROM pg_type) AND
pg_parg.partype != 0;
SELECT oid, pg_proc.prolang
FROM pg_proc
WHERE pg_proc.prolang NOT IN (SELECT oid FROM pg_language) AND
pg_proc.prolang != 0;
SELECT oid, pg_proc.prorettype
FROM pg_proc
WHERE pg_proc.prorettype NOT IN (SELECT oid FROM pg_type) AND
pg_proc.prorettype != 0;
SELECT oid, pg_rewrite.ev_class
FROM pg_rewrite
WHERE pg_rewrite.ev_class NOT IN (SELECT oid FROM pg_class) AND
pg_rewrite.ev_class != 0;
SELECT oid, pg_type.typrelid
FROM pg_type
WHERE pg_type.typrelid NOT IN (SELECT oid FROM pg_class) AND
pg_type.typrelid != 0;
SELECT oid, pg_type.typinput
FROM pg_type
WHERE RegprocToOid(pg_type.typinput) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_type.typinput) != 0;
SELECT oid, pg_type.typoutput
FROM pg_type
WHERE RegprocToOid(pg_type.typoutput) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_type.typoutput) != 0;
SELECT oid, pg_type.typreceive
FROM pg_type
WHERE RegprocToOid(pg_type.typreceive) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_type.typreceive) != 0;
SELECT oid, pg_type.typsend
FROM pg_type
WHERE RegprocToOid(pg_type.typsend) NOT IN (SELECT oid FROM pg_proc) AND
RegprocToOid(pg_type.typsend) != 0;