~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to contrib/findoidjoins/README.findoidjoins

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
                              findoidjoins
 
3
 
 
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.
 
8
 
 
9
Run on an empty database, it returns the system join relationships (shown
 
10
below for 8.0).  Note that unexpected matches may indicate bogus entries
 
11
in system tables --- don't accept a peculiar match without question.
 
12
In particular, a field shown as joining to more than one target table is
 
13
probably messed up.  In 8.0, 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.)
 
17
 
 
18
The shell script make_oidjoins_check converts findoidjoins' output
 
19
into an SQL script that checks for dangling links (entries in an
 
20
OID or REG* column that don't match any row in the expected table).
 
21
Note that fields joining to more than one table are NOT processed.
 
22
 
 
23
The result of make_oidjoins_check should be installed as the "oidjoins"
 
24
regression test.  The oidjoins test should be updated after any
 
25
revision in the patterns of cross-links between system tables.
 
26
(Ideally we'd just regenerate the script as part of the regression
 
27
tests themselves, but that seems too slow...)
 
28
 
 
29
NOTE: in 8.0, make_oidjoins_check produces one bogus join check:
 
30
Join pg_catalog.pg_class.relfilenode => pg_catalog.pg_class.oid
 
31
This is an artifact and should not be added to the oidjoins regress test.
 
32
Also beware of any claim that pg_database.datlastsysoid joins to anything;
 
33
this does not actually happen in 8.0, but it did happen before and might
 
34
happen again in future, depending on what operation initdb does last.
 
35
 
 
36
---------------------------------------------------------------------------
 
37
 
 
38
Join pg_catalog.pg_aggregate.aggfnoid => pg_catalog.pg_proc.oid
 
39
Join pg_catalog.pg_aggregate.aggtransfn => pg_catalog.pg_proc.oid
 
40
Join pg_catalog.pg_aggregate.aggfinalfn => pg_catalog.pg_proc.oid
 
41
Join pg_catalog.pg_aggregate.aggtranstype => pg_catalog.pg_type.oid
 
42
Join pg_catalog.pg_am.amgettuple => pg_catalog.pg_proc.oid
 
43
Join pg_catalog.pg_am.aminsert => pg_catalog.pg_proc.oid
 
44
Join pg_catalog.pg_am.ambeginscan => pg_catalog.pg_proc.oid
 
45
Join pg_catalog.pg_am.amrescan => pg_catalog.pg_proc.oid
 
46
Join pg_catalog.pg_am.amendscan => pg_catalog.pg_proc.oid
 
47
Join pg_catalog.pg_am.ammarkpos => pg_catalog.pg_proc.oid
 
48
Join pg_catalog.pg_am.amrestrpos => pg_catalog.pg_proc.oid
 
49
Join pg_catalog.pg_am.ambuild => pg_catalog.pg_proc.oid
 
50
Join pg_catalog.pg_am.ambulkdelete => pg_catalog.pg_proc.oid
 
51
Join pg_catalog.pg_am.amvacuumcleanup => pg_catalog.pg_proc.oid
 
52
Join pg_catalog.pg_am.amcostestimate => pg_catalog.pg_proc.oid
 
53
Join pg_catalog.pg_amop.amopclaid => pg_catalog.pg_opclass.oid
 
54
Join pg_catalog.pg_amop.amopsubtype => pg_catalog.pg_type.oid
 
55
Join pg_catalog.pg_amop.amopopr => pg_catalog.pg_operator.oid
 
56
Join pg_catalog.pg_amproc.amopclaid => pg_catalog.pg_opclass.oid
 
57
Join pg_catalog.pg_amproc.amprocsubtype => pg_catalog.pg_type.oid
 
58
Join pg_catalog.pg_amproc.amproc => pg_catalog.pg_proc.oid
 
59
Join pg_catalog.pg_attribute.attrelid => pg_catalog.pg_class.oid
 
60
Join pg_catalog.pg_attribute.atttypid => pg_catalog.pg_type.oid
 
61
Join pg_catalog.pg_cast.castsource => pg_catalog.pg_type.oid
 
62
Join pg_catalog.pg_cast.casttarget => pg_catalog.pg_type.oid
 
63
Join pg_catalog.pg_cast.castfunc => pg_catalog.pg_proc.oid
 
64
Join pg_catalog.pg_class.relnamespace => pg_catalog.pg_namespace.oid
 
65
Join pg_catalog.pg_class.reltype => pg_catalog.pg_type.oid
 
66
Join pg_catalog.pg_class.relam => pg_catalog.pg_am.oid
 
67
Join pg_catalog.pg_class.reltablespace => pg_catalog.pg_tablespace.oid
 
68
Join pg_catalog.pg_class.reltoastrelid => pg_catalog.pg_class.oid
 
69
Join pg_catalog.pg_class.reltoastidxid => pg_catalog.pg_class.oid
 
70
Join pg_catalog.pg_constraint.connamespace => pg_catalog.pg_namespace.oid
 
71
Join pg_catalog.pg_constraint.contypid => pg_catalog.pg_type.oid
 
72
Join pg_catalog.pg_conversion.connamespace => pg_catalog.pg_namespace.oid
 
73
Join pg_catalog.pg_conversion.conproc => pg_catalog.pg_proc.oid
 
74
Join pg_catalog.pg_database.dattablespace => pg_catalog.pg_tablespace.oid
 
75
Join pg_catalog.pg_depend.classid => pg_catalog.pg_class.oid
 
76
Join pg_catalog.pg_depend.refclassid => pg_catalog.pg_class.oid
 
77
Join pg_catalog.pg_description.classoid => pg_catalog.pg_class.oid
 
78
Join pg_catalog.pg_index.indexrelid => pg_catalog.pg_class.oid
 
79
Join pg_catalog.pg_index.indrelid => pg_catalog.pg_class.oid
 
80
Join pg_catalog.pg_language.lanvalidator => pg_catalog.pg_proc.oid
 
81
Join pg_catalog.pg_opclass.opcamid => pg_catalog.pg_am.oid
 
82
Join pg_catalog.pg_opclass.opcnamespace => pg_catalog.pg_namespace.oid
 
83
Join pg_catalog.pg_opclass.opcintype => pg_catalog.pg_type.oid
 
84
Join pg_catalog.pg_operator.oprnamespace => pg_catalog.pg_namespace.oid
 
85
Join pg_catalog.pg_operator.oprleft => pg_catalog.pg_type.oid
 
86
Join pg_catalog.pg_operator.oprright => pg_catalog.pg_type.oid
 
87
Join pg_catalog.pg_operator.oprresult => pg_catalog.pg_type.oid
 
88
Join pg_catalog.pg_operator.oprcom => pg_catalog.pg_operator.oid
 
89
Join pg_catalog.pg_operator.oprnegate => pg_catalog.pg_operator.oid
 
90
Join pg_catalog.pg_operator.oprlsortop => pg_catalog.pg_operator.oid
 
91
Join pg_catalog.pg_operator.oprrsortop => pg_catalog.pg_operator.oid
 
92
Join pg_catalog.pg_operator.oprltcmpop => pg_catalog.pg_operator.oid
 
93
Join pg_catalog.pg_operator.oprgtcmpop => pg_catalog.pg_operator.oid
 
94
Join pg_catalog.pg_operator.oprcode => pg_catalog.pg_proc.oid
 
95
Join pg_catalog.pg_operator.oprrest => pg_catalog.pg_proc.oid
 
96
Join pg_catalog.pg_operator.oprjoin => pg_catalog.pg_proc.oid
 
97
Join pg_catalog.pg_proc.pronamespace => pg_catalog.pg_namespace.oid
 
98
Join pg_catalog.pg_proc.prolang => pg_catalog.pg_language.oid
 
99
Join pg_catalog.pg_proc.prorettype => pg_catalog.pg_type.oid
 
100
Join pg_catalog.pg_rewrite.ev_class => pg_catalog.pg_class.oid
 
101
Join pg_catalog.pg_statistic.starelid => pg_catalog.pg_class.oid
 
102
Join pg_catalog.pg_statistic.staop1 => pg_catalog.pg_operator.oid
 
103
Join pg_catalog.pg_statistic.staop2 => pg_catalog.pg_operator.oid
 
104
Join pg_catalog.pg_statistic.staop3 => pg_catalog.pg_operator.oid
 
105
Join pg_catalog.pg_trigger.tgrelid => pg_catalog.pg_class.oid
 
106
Join pg_catalog.pg_trigger.tgfoid => pg_catalog.pg_proc.oid
 
107
Join pg_catalog.pg_type.typnamespace => pg_catalog.pg_namespace.oid
 
108
Join pg_catalog.pg_type.typrelid => pg_catalog.pg_class.oid
 
109
Join pg_catalog.pg_type.typelem => pg_catalog.pg_type.oid
 
110
Join pg_catalog.pg_type.typinput => pg_catalog.pg_proc.oid
 
111
Join pg_catalog.pg_type.typoutput => pg_catalog.pg_proc.oid
 
112
Join pg_catalog.pg_type.typreceive => pg_catalog.pg_proc.oid
 
113
Join pg_catalog.pg_type.typsend => pg_catalog.pg_proc.oid
 
114
Join pg_catalog.pg_type.typbasetype => pg_catalog.pg_type.oid
 
115
 
 
116
---------------------------------------------------------------------------
 
117
 
 
118
Bruce Momjian (root@candle.pha.pa.us)
 
119
Updated for 7.3 by Joe Conway (mail@joeconway.com)