Skip to content

Commit d7e654f

Browse files
committed
findoidjoins is updated for schemas, does not use libpgeasy.
From Joe Conway.
1 parent 5b69f69 commit d7e654f

File tree

4 files changed

+216
-171
lines changed

4 files changed

+216
-171
lines changed

contrib/findoidjoins/Makefile

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/Makefile,v 1.13 2001/09/06 10:49:29 petere Exp $
1+
# $Header: /cvsroot/pgsql/contrib/findoidjoins/Attic/Makefile,v 1.14 2002/09/05 19:57:32 tgl Exp $
22

33
subdir = contrib/findoidjoins
44
top_builddir = ../..
@@ -7,11 +7,8 @@ include $(top_builddir)/src/Makefile.global
77
PROGRAM = findoidjoins
88
OBJS = findoidjoins.o
99

10-
libpgeasy_srcdir = $(top_srcdir)/src/interfaces/libpgeasy
11-
libpgeasy_builddir = $(top_builddir)/src/interfaces/libpgeasy
12-
13-
PG_CPPFLAGS = -I$(libpgeasy_srcdir) -I$(libpq_srcdir)
14-
PG_LIBS = -L$(libpgeasy_builddir) -lpgeasy $(libpq)
10+
PG_CPPFLAGS = -I$(libpq_srcdir)
11+
PG_LIBS = $(libpq)
1512

1613
SCRIPTS = make_oidjoins_check
1714
DOCS = README.findoidjoins
Lines changed: 82 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11

22
findoidjoins
33

4-
This program scans a database, and prints oid fields (also regproc, regclass
5-
and regtype fields) and the tables they join to. CAUTION: it is ver-r-r-y
6-
slow on a large database, or even a not-so-large one. We don't really
7-
recommend running it on anything but an empty database, such as template1.
8-
9-
Uses pgeasy library.
4+
This program scans a database and prints oid fields (also reg* fields)
5+
and the tables they join to. We don't really recommend running it on
6+
anything but an empty database, such as template1; else it's likely to
7+
be very slow.
108

119
Run on an empty database, it returns the system join relationships (shown
12-
below for 7.2). Note that unexpected matches may indicate bogus entries
10+
below for 7.3). Note that unexpected matches may indicate bogus entries
1311
in system tables --- don't accept a peculiar match without question.
1412
In particular, a field shown as joining to more than one target table is
15-
probably messed up. In 7.2, the *only* field that should join to more
16-
than one target is pg_description.objoid. (Running make_oidjoins_check
17-
is an easy way to spot fields joining to more than one table, BTW.)
13+
probably messed up. In 7.3, the *only* fields that should join to more
14+
than one target are pg_description.objoid, pg_depend.objid, and
15+
pg_depend.refobjid. (Running make_oidjoins_check is an easy way to spot
16+
fields joining to more than one table, BTW.)
1817

1918
The shell script make_oidjoins_check converts findoidjoins' output
2019
into an SQL script that checks for dangling links (entries in an
21-
OID or REGPROC column that don't match any row in the expected table).
20+
OID or REG* column that don't match any row in the expected table).
2221
Note that fields joining to more than one table are NOT processed.
2322

2423
The result of make_oidjoins_check should be installed as the "oidjoins"
@@ -27,68 +26,82 @@ revision in the patterns of cross-links between system tables.
2726
(Ideally we'd just regenerate the script as part of the regression
2827
tests themselves, but that seems too slow...)
2928

30-
NOTE: in 7.2, make_oidjoins_check produces one bogus join check, for
31-
pg_class.relfilenode => pg_class.oid. This is an artifact and should not
32-
be added to the oidjoins regress test.
29+
NOTE: in 7.3, make_oidjoins_check produces two bogus join checks:
30+
Join pg_catalog.pg_class.relfilenode => pg_catalog.pg_class.oid
31+
Join pg_catalog.pg_database.datlastsysoid => pg_catalog.pg_conversion.oid
32+
These are artifacts and should not be added to the oidjoins regress test.
3333

3434
---------------------------------------------------------------------------
3535

36-
Join pg_aggregate.aggtransfn => pg_proc.oid
37-
Join pg_aggregate.aggfinalfn => pg_proc.oid
38-
Join pg_aggregate.aggbasetype => pg_type.oid
39-
Join pg_aggregate.aggtranstype => pg_type.oid
40-
Join pg_aggregate.aggfinaltype => pg_type.oid
41-
Join pg_am.amgettuple => pg_proc.oid
42-
Join pg_am.aminsert => pg_proc.oid
43-
Join pg_am.ambeginscan => pg_proc.oid
44-
Join pg_am.amrescan => pg_proc.oid
45-
Join pg_am.amendscan => pg_proc.oid
46-
Join pg_am.ammarkpos => pg_proc.oid
47-
Join pg_am.amrestrpos => pg_proc.oid
48-
Join pg_am.ambuild => pg_proc.oid
49-
Join pg_am.ambulkdelete => pg_proc.oid
50-
Join pg_am.amcostestimate => pg_proc.oid
51-
Join pg_amop.amopclaid => pg_opclass.oid
52-
Join pg_amop.amopopr => pg_operator.oid
53-
Join pg_amproc.amopclaid => pg_opclass.oid
54-
Join pg_amproc.amproc => pg_proc.oid
55-
Join pg_attribute.attrelid => pg_class.oid
56-
Join pg_attribute.atttypid => pg_type.oid
57-
Join pg_class.reltype => pg_type.oid
58-
Join pg_class.relam => pg_am.oid
59-
Join pg_class.reltoastrelid => pg_class.oid
60-
Join pg_class.reltoastidxid => pg_class.oid
61-
Join pg_description.classoid => pg_class.oid
62-
Join pg_index.indexrelid => pg_class.oid
63-
Join pg_index.indrelid => pg_class.oid
64-
Join pg_opclass.opcamid => pg_am.oid
65-
Join pg_opclass.opcintype => pg_type.oid
66-
Join pg_operator.oprleft => pg_type.oid
67-
Join pg_operator.oprright => pg_type.oid
68-
Join pg_operator.oprresult => pg_type.oid
69-
Join pg_operator.oprcom => pg_operator.oid
70-
Join pg_operator.oprnegate => pg_operator.oid
71-
Join pg_operator.oprlsortop => pg_operator.oid
72-
Join pg_operator.oprrsortop => pg_operator.oid
73-
Join pg_operator.oprcode => pg_proc.oid
74-
Join pg_operator.oprrest => pg_proc.oid
75-
Join pg_operator.oprjoin => pg_proc.oid
76-
Join pg_proc.prolang => pg_language.oid
77-
Join pg_proc.prorettype => pg_type.oid
78-
Join pg_rewrite.ev_class => pg_class.oid
79-
Join pg_statistic.starelid => pg_class.oid
80-
Join pg_statistic.staop1 => pg_operator.oid
81-
Join pg_statistic.staop2 => pg_operator.oid
82-
Join pg_statistic.staop3 => pg_operator.oid
83-
Join pg_trigger.tgrelid => pg_class.oid
84-
Join pg_trigger.tgfoid => pg_proc.oid
85-
Join pg_type.typrelid => pg_class.oid
86-
Join pg_type.typelem => pg_type.oid
87-
Join pg_type.typinput => pg_proc.oid
88-
Join pg_type.typoutput => pg_proc.oid
89-
Join pg_type.typreceive => pg_proc.oid
90-
Join pg_type.typsend => pg_proc.oid
36+
Join pg_catalog.pg_aggregate.aggfnoid => pg_catalog.pg_proc.oid
37+
Join pg_catalog.pg_aggregate.aggtransfn => pg_catalog.pg_proc.oid
38+
Join pg_catalog.pg_aggregate.aggfinalfn => pg_catalog.pg_proc.oid
39+
Join pg_catalog.pg_aggregate.aggtranstype => pg_catalog.pg_type.oid
40+
Join pg_catalog.pg_am.amgettuple => pg_catalog.pg_proc.oid
41+
Join pg_catalog.pg_am.aminsert => pg_catalog.pg_proc.oid
42+
Join pg_catalog.pg_am.ambeginscan => pg_catalog.pg_proc.oid
43+
Join pg_catalog.pg_am.amrescan => pg_catalog.pg_proc.oid
44+
Join pg_catalog.pg_am.amendscan => pg_catalog.pg_proc.oid
45+
Join pg_catalog.pg_am.ammarkpos => pg_catalog.pg_proc.oid
46+
Join pg_catalog.pg_am.amrestrpos => pg_catalog.pg_proc.oid
47+
Join pg_catalog.pg_am.ambuild => pg_catalog.pg_proc.oid
48+
Join pg_catalog.pg_am.ambulkdelete => pg_catalog.pg_proc.oid
49+
Join pg_catalog.pg_am.amcostestimate => pg_catalog.pg_proc.oid
50+
Join pg_catalog.pg_amop.amopclaid => pg_catalog.pg_opclass.oid
51+
Join pg_catalog.pg_amop.amopopr => pg_catalog.pg_operator.oid
52+
Join pg_catalog.pg_amproc.amopclaid => pg_catalog.pg_opclass.oid
53+
Join pg_catalog.pg_amproc.amproc => pg_catalog.pg_proc.oid
54+
Join pg_catalog.pg_attribute.attrelid => pg_catalog.pg_class.oid
55+
Join pg_catalog.pg_attribute.atttypid => pg_catalog.pg_type.oid
56+
Join pg_catalog.pg_cast.castsource => pg_catalog.pg_type.oid
57+
Join pg_catalog.pg_cast.casttarget => pg_catalog.pg_type.oid
58+
Join pg_catalog.pg_cast.castfunc => pg_catalog.pg_proc.oid
59+
Join pg_catalog.pg_class.relnamespace => pg_catalog.pg_namespace.oid
60+
Join pg_catalog.pg_class.reltype => pg_catalog.pg_type.oid
61+
Join pg_catalog.pg_class.relam => pg_catalog.pg_am.oid
62+
Join pg_catalog.pg_class.reltoastrelid => pg_catalog.pg_class.oid
63+
Join pg_catalog.pg_class.reltoastidxid => pg_catalog.pg_class.oid
64+
Join pg_catalog.pg_conversion.connamespace => pg_catalog.pg_namespace.oid
65+
Join pg_catalog.pg_conversion.conproc => pg_catalog.pg_proc.oid
66+
Join pg_catalog.pg_depend.classid => pg_catalog.pg_class.oid
67+
Join pg_catalog.pg_depend.refclassid => pg_catalog.pg_class.oid
68+
Join pg_catalog.pg_description.classoid => pg_catalog.pg_class.oid
69+
Join pg_catalog.pg_index.indexrelid => pg_catalog.pg_class.oid
70+
Join pg_catalog.pg_index.indrelid => pg_catalog.pg_class.oid
71+
Join pg_catalog.pg_language.lanvalidator => pg_catalog.pg_proc.oid
72+
Join pg_catalog.pg_opclass.opcamid => pg_catalog.pg_am.oid
73+
Join pg_catalog.pg_opclass.opcnamespace => pg_catalog.pg_namespace.oid
74+
Join pg_catalog.pg_opclass.opcintype => pg_catalog.pg_type.oid
75+
Join pg_catalog.pg_operator.oprnamespace => pg_catalog.pg_namespace.oid
76+
Join pg_catalog.pg_operator.oprleft => pg_catalog.pg_type.oid
77+
Join pg_catalog.pg_operator.oprright => pg_catalog.pg_type.oid
78+
Join pg_catalog.pg_operator.oprresult => pg_catalog.pg_type.oid
79+
Join pg_catalog.pg_operator.oprcom => pg_catalog.pg_operator.oid
80+
Join pg_catalog.pg_operator.oprnegate => pg_catalog.pg_operator.oid
81+
Join pg_catalog.pg_operator.oprlsortop => pg_catalog.pg_operator.oid
82+
Join pg_catalog.pg_operator.oprrsortop => pg_catalog.pg_operator.oid
83+
Join pg_catalog.pg_operator.oprltcmpop => pg_catalog.pg_operator.oid
84+
Join pg_catalog.pg_operator.oprgtcmpop => pg_catalog.pg_operator.oid
85+
Join pg_catalog.pg_operator.oprcode => pg_catalog.pg_proc.oid
86+
Join pg_catalog.pg_operator.oprrest => pg_catalog.pg_proc.oid
87+
Join pg_catalog.pg_operator.oprjoin => pg_catalog.pg_proc.oid
88+
Join pg_catalog.pg_proc.pronamespace => pg_catalog.pg_namespace.oid
89+
Join pg_catalog.pg_proc.prolang => pg_catalog.pg_language.oid
90+
Join pg_catalog.pg_proc.prorettype => pg_catalog.pg_type.oid
91+
Join pg_catalog.pg_rewrite.ev_class => pg_catalog.pg_class.oid
92+
Join pg_catalog.pg_statistic.starelid => pg_catalog.pg_class.oid
93+
Join pg_catalog.pg_statistic.staop1 => pg_catalog.pg_operator.oid
94+
Join pg_catalog.pg_statistic.staop2 => pg_catalog.pg_operator.oid
95+
Join pg_catalog.pg_statistic.staop3 => pg_catalog.pg_operator.oid
96+
Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.oid
97+
Join pg_catalog.pg_trigger.tgfoid => pg_catalog.pg_proc.oid
98+
Join pg_catalog.pg_type.typnamespace => pg_catalog.pg_namespace.oid
99+
Join pg_catalog.pg_type.typrelid => pg_catalog.pg_class.oid
100+
Join pg_catalog.pg_type.typelem => pg_catalog.pg_type.oid
101+
Join pg_catalog.pg_type.typinput => pg_catalog.pg_proc.oid
102+
Join pg_catalog.pg_type.typoutput => pg_catalog.pg_proc.oid
91103

92104
---------------------------------------------------------------------------
93105

94106
Bruce Momjian (root@candle.pha.pa.us)
107+
Updated for 7.3 by Joe Conway (mail@joeconway.com)

0 commit comments

Comments
 (0)