Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3700981

Browse files
committed
Add new make_oidjoin_check utility and template1_check.sql. Fix some
pg_operator problems.
1 parentf1bcb17 commit3700981

File tree

6 files changed

+223
-7
lines changed

6 files changed

+223
-7
lines changed

‎contrib/findoidjoins/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Makefile, requires pgsql/contrib/pginterface
33
#
44
#
5-
PGINTERFACE = pginterface.o halt.o# these have to be in your library search path
5+
PGINTERFACE =../pginterface/pginterface.o../pginterface/halt.o# these have to be in your library search path
66
TARGET = findoidjoins
77
CFLAGS = -g -Wall -I. -I../../src/interfaces/libpq -I/usr/local/pgsql/include
88
LDFLAGS = -L/usr/local/pgsql/lib -lpq

‎contrib/findoidjoins/README

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ Join pg_am.ambuild => pg_proc.oid
3535
Join pg_amop.amopid => pg_am.oid
3636
Join pg_amop.amopclaid => pg_opclass.oid
3737
Join pg_amop.amopopr => pg_operator.oid
38+
Join pg_amop.amopopr => pg_proc.oid
3839
Join pg_amop.amopselect => pg_proc.oid
3940
Join pg_amop.amopnpages => pg_proc.oid
4041
Join pg_amproc.amid => pg_am.oid
@@ -51,7 +52,6 @@ Join pg_description.objoid => pg_proc.oid
5152
Join pg_description.objoid => pg_type.oid
5253
Join pg_index.indexrelid => pg_class.oid
5354
Join pg_index.indrelid => pg_class.oid
54-
Join pg_index.indproc => pg_proc.oid
5555
Join pg_opclass.opcdeftype => pg_type.oid
5656
Join pg_operator.oprleft => pg_type.oid
5757
Join pg_operator.oprright => pg_type.oid

‎contrib/findoidjoins/findoidjoins.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ main(int argc, char **argv)
3535
FROM pg_class c, pg_attribute a, pg_type t \
3636
WHERE a.attnum > 0 AND \
3737
relkind = 'r' AND \
38+
relhasrules = 'f' AND \
3839
(typname = 'oid' OR \
3940
typname = 'regproc') AND \
4041
a.attrelid = c.oid AND \
@@ -49,6 +50,7 @@ main(int argc, char **argv)
4950
SELECT relname \
5051
FROM pg_class c \
5152
WHERE relkind = 'r' AND \
53+
relhasrules = 'f' AND \
5254
relname != 'pg_user' \
5355
ORDER BY 1; \
5456
");
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
:
2+
# You first run findoidjoins on the template1 database, and send that
3+
# output into this file to generate a list of SQL statements.
4+
trap "rm -f /tmp/$$ /tmp/$$a /tmp/$$b" 0 1 2 3 15
5+
6+
cat "$@" >/tmp/$$
7+
cat /tmp/$$ | cut -d' ' -f2 | sort | uniq -d >/tmp/$$a
8+
cat /tmp/$$ | while read LINE
9+
do
10+
set -- $LINE
11+
grep "$2" /tmp/$$a >/dev/null 2>&1 || echo $LINE
12+
done >/tmp/$$b
13+
cat /tmp/$$b |
14+
awk -F'[ \.]' '\
15+
BEGIN \
16+
{
17+
printf "\
18+
--\n\
19+
-- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check\n\
20+
--\n";
21+
}
22+
{
23+
printf "\
24+
SELECToid, %s.%s \n\
25+
FROM%s \n\
26+
WHERE%s%s.%s%s NOT IN (SELECT oid FROM %s) AND \n\
27+
%s%s.%s%s != 0;\n", $2, $3, $2,
28+
($5 == "pg_proc") ? "RegprocToOid(" : "",
29+
$2, $3,
30+
($5 == "pg_proc") ? ")" : "",
31+
$5,
32+
($5 == "pg_proc") ? "RegprocToOid(" : "",
33+
$2, $3,
34+
($5 == "pg_proc") ? ")" : "";
35+
}'

‎src/include/catalog/pg_operator.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
*
88
* Copyright (c) 1994, Regents of the University of California
99
*
10-
* $Id: pg_operator.h,v 1.37 1998/09/1314:29:06 thomas Exp $
10+
* $Id: pg_operator.h,v 1.38 1998/09/14 01:14:48 momjian Exp $
1111
*
1212
* NOTES
1313
* 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
200200
DATA(insertOID=526 ("*"PGUID0btf212121526000int2mulintltselintltjoinsel ));
201201
DATA(insertOID=527 ("/"PGUID0btf2121210000int2divintltselintltjoinsel ));
202202
DATA(insertOID=528 ("/"PGUID0btf2323230000int4divintltselintltjoinsel ));
203-
DATA(insertOID=529 ("%"PGUID0btf2121216000int2modintltselintltjoinsel ));
204-
DATA(insertOID=530 ("%"PGUID0btf2323236000int4modintltselintltjoinsel ));
203+
DATA(insertOID=529 ("%"PGUID0btf2121210000int2modintltselintltjoinsel ));
204+
DATA(insertOID=530 ("%"PGUID0btf2323230000int4modintltselintltjoinsel ));
205205
DATA(insertOID=531 ("<>"PGUID0btf2525165319800textneneqselneqjoinsel ));
206206
DATA(insertOID=532 ("="PGUID0btt2123165335389597int24eqeqseleqjoinsel ));
207207
DATA(insertOID=533 ("="PGUID0btt2321165325399795int42eqeqseleqjoinsel ));
@@ -219,8 +219,8 @@ DATA(insert OID = 544 ( "*" PGUID 0 b t f 21 23 23 545 0 0 0 int24mul
219219
DATA(insertOID=545 ("*"PGUID0btf232123544000int42mulintltselintltjoinsel ));
220220
DATA(insertOID=546 ("/"PGUID0btf2123230000int24divintltselintltjoinsel ));
221221
DATA(insertOID=547 ("/"PGUID0btf2321230000int42divintltselintltjoinsel ));
222-
DATA(insertOID=548 ("%"PGUID0btf2123236000int24modintltselintltjoinsel ));
223-
DATA(insertOID=549 ("%"PGUID0btf2321236000int42modintltselintltjoinsel ));
222+
DATA(insertOID=548 ("%"PGUID0btf2123230000int24modintltselintltjoinsel ));
223+
DATA(insertOID=549 ("%"PGUID0btf2321230000int42modintltselintltjoinsel ));
224224
DATA(insertOID=550 ("+"PGUID0btf212121550000int2plintltselintltjoinsel ));
225225
DATA(insertOID=551 ("+"PGUID0btf232323551000int4plintltselintltjoinsel ));
226226
DATA(insertOID=552 ("+"PGUID0btf212323553000int24plintltselintltjoinsel ));
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
--
2+
-- This is created by pgsql/contrib/findoidjoins/make_oidjoin_check
3+
--
4+
SELECToid,pg_aggregate.aggtransfn1
5+
FROMpg_aggregate
6+
WHERERegprocToOid(pg_aggregate.aggtransfn1) NOTIN (SELECToidFROM pg_proc)AND
7+
RegprocToOid(pg_aggregate.aggtransfn1)!=0;
8+
SELECToid,pg_aggregate.aggtransfn2
9+
FROMpg_aggregate
10+
WHERERegprocToOid(pg_aggregate.aggtransfn2) NOTIN (SELECToidFROM pg_proc)AND
11+
RegprocToOid(pg_aggregate.aggtransfn2)!=0;
12+
SELECToid,pg_aggregate.aggfinalfn
13+
FROMpg_aggregate
14+
WHERERegprocToOid(pg_aggregate.aggfinalfn) NOTIN (SELECToidFROM pg_proc)AND
15+
RegprocToOid(pg_aggregate.aggfinalfn)!=0;
16+
SELECToid,pg_aggregate.aggtranstype2
17+
FROMpg_aggregate
18+
WHEREpg_aggregate.aggtranstype2 NOTIN (SELECToidFROM pg_type)AND
19+
pg_aggregate.aggtranstype2!=0;
20+
SELECToid,pg_am.amgettuple
21+
FROMpg_am
22+
WHERERegprocToOid(pg_am.amgettuple) NOTIN (SELECToidFROM pg_proc)AND
23+
RegprocToOid(pg_am.amgettuple)!=0;
24+
SELECToid,pg_am.aminsert
25+
FROMpg_am
26+
WHERERegprocToOid(pg_am.aminsert) NOTIN (SELECToidFROM pg_proc)AND
27+
RegprocToOid(pg_am.aminsert)!=0;
28+
SELECToid,pg_am.amdelete
29+
FROMpg_am
30+
WHERERegprocToOid(pg_am.amdelete) NOTIN (SELECToidFROM pg_proc)AND
31+
RegprocToOid(pg_am.amdelete)!=0;
32+
SELECToid,pg_am.ambeginscan
33+
FROMpg_am
34+
WHERERegprocToOid(pg_am.ambeginscan) NOTIN (SELECToidFROM pg_proc)AND
35+
RegprocToOid(pg_am.ambeginscan)!=0;
36+
SELECToid,pg_am.amrescan
37+
FROMpg_am
38+
WHERERegprocToOid(pg_am.amrescan) NOTIN (SELECToidFROM pg_proc)AND
39+
RegprocToOid(pg_am.amrescan)!=0;
40+
SELECToid,pg_am.amendscan
41+
FROMpg_am
42+
WHERERegprocToOid(pg_am.amendscan) NOTIN (SELECToidFROM pg_proc)AND
43+
RegprocToOid(pg_am.amendscan)!=0;
44+
SELECToid,pg_am.ammarkpos
45+
FROMpg_am
46+
WHERERegprocToOid(pg_am.ammarkpos) NOTIN (SELECToidFROM pg_proc)AND
47+
RegprocToOid(pg_am.ammarkpos)!=0;
48+
SELECToid,pg_am.amrestrpos
49+
FROMpg_am
50+
WHERERegprocToOid(pg_am.amrestrpos) NOTIN (SELECToidFROM pg_proc)AND
51+
RegprocToOid(pg_am.amrestrpos)!=0;
52+
SELECToid,pg_am.ambuild
53+
FROMpg_am
54+
WHERERegprocToOid(pg_am.ambuild) NOTIN (SELECToidFROM pg_proc)AND
55+
RegprocToOid(pg_am.ambuild)!=0;
56+
SELECToid,pg_amop.amopid
57+
FROMpg_amop
58+
WHEREpg_amop.amopid NOTIN (SELECToidFROM pg_am)AND
59+
pg_amop.amopid!=0;
60+
SELECToid,pg_amop.amopclaid
61+
FROMpg_amop
62+
WHEREpg_amop.amopclaid NOTIN (SELECToidFROM pg_opclass)AND
63+
pg_amop.amopclaid!=0;
64+
SELECToid,pg_amop.amopselect
65+
FROMpg_amop
66+
WHERERegprocToOid(pg_amop.amopselect) NOTIN (SELECToidFROM pg_proc)AND
67+
RegprocToOid(pg_amop.amopselect)!=0;
68+
SELECToid,pg_amop.amopnpages
69+
FROMpg_amop
70+
WHERERegprocToOid(pg_amop.amopnpages) NOTIN (SELECToidFROM pg_proc)AND
71+
RegprocToOid(pg_amop.amopnpages)!=0;
72+
SELECToid,pg_amproc.amid
73+
FROMpg_amproc
74+
WHEREpg_amproc.amid NOTIN (SELECToidFROM pg_am)AND
75+
pg_amproc.amid!=0;
76+
SELECToid,pg_attribute.attrelid
77+
FROMpg_attribute
78+
WHEREpg_attribute.attrelid NOTIN (SELECToidFROM pg_class)AND
79+
pg_attribute.attrelid!=0;
80+
SELECToid,pg_attribute.atttypid
81+
FROMpg_attribute
82+
WHEREpg_attribute.atttypid NOTIN (SELECToidFROM pg_type)AND
83+
pg_attribute.atttypid!=0;
84+
SELECToid,pg_class.reltype
85+
FROMpg_class
86+
WHEREpg_class.reltype NOTIN (SELECToidFROM pg_type)AND
87+
pg_class.reltype!=0;
88+
SELECToid,pg_class.relam
89+
FROMpg_class
90+
WHEREpg_class.relam NOTIN (SELECToidFROM pg_am)AND
91+
pg_class.relam!=0;
92+
SELECToid,pg_index.indexrelid
93+
FROMpg_index
94+
WHEREpg_index.indexrelid NOTIN (SELECToidFROM pg_class)AND
95+
pg_index.indexrelid!=0;
96+
SELECToid,pg_index.indrelid
97+
FROMpg_index
98+
WHEREpg_index.indrelid NOTIN (SELECToidFROM pg_class)AND
99+
pg_index.indrelid!=0;
100+
SELECToid,pg_opclass.opcdeftype
101+
FROMpg_opclass
102+
WHEREpg_opclass.opcdeftype NOTIN (SELECToidFROM pg_type)AND
103+
pg_opclass.opcdeftype!=0;
104+
SELECToid,pg_operator.oprleft
105+
FROMpg_operator
106+
WHEREpg_operator.oprleft NOTIN (SELECToidFROM pg_type)AND
107+
pg_operator.oprleft!=0;
108+
SELECToid,pg_operator.oprright
109+
FROMpg_operator
110+
WHEREpg_operator.oprright NOTIN (SELECToidFROM pg_type)AND
111+
pg_operator.oprright!=0;
112+
SELECToid,pg_operator.oprresult
113+
FROMpg_operator
114+
WHEREpg_operator.oprresult NOTIN (SELECToidFROM pg_type)AND
115+
pg_operator.oprresult!=0;
116+
SELECToid,pg_operator.oprcom
117+
FROMpg_operator
118+
WHEREpg_operator.oprcom NOTIN (SELECToidFROM pg_operator)AND
119+
pg_operator.oprcom!=0;
120+
SELECToid,pg_operator.oprnegate
121+
FROMpg_operator
122+
WHEREpg_operator.oprnegate NOTIN (SELECToidFROM pg_operator)AND
123+
pg_operator.oprnegate!=0;
124+
SELECToid,pg_operator.oprlsortop
125+
FROMpg_operator
126+
WHEREpg_operator.oprlsortop NOTIN (SELECToidFROM pg_operator)AND
127+
pg_operator.oprlsortop!=0;
128+
SELECToid,pg_operator.oprrsortop
129+
FROMpg_operator
130+
WHEREpg_operator.oprrsortop NOTIN (SELECToidFROM pg_operator)AND
131+
pg_operator.oprrsortop!=0;
132+
SELECToid,pg_operator.oprcode
133+
FROMpg_operator
134+
WHERERegprocToOid(pg_operator.oprcode) NOTIN (SELECToidFROM pg_proc)AND
135+
RegprocToOid(pg_operator.oprcode)!=0;
136+
SELECToid,pg_operator.oprrest
137+
FROMpg_operator
138+
WHERERegprocToOid(pg_operator.oprrest) NOTIN (SELECToidFROM pg_proc)AND
139+
RegprocToOid(pg_operator.oprrest)!=0;
140+
SELECToid,pg_operator.oprjoin
141+
FROMpg_operator
142+
WHERERegprocToOid(pg_operator.oprjoin) NOTIN (SELECToidFROM pg_proc)AND
143+
RegprocToOid(pg_operator.oprjoin)!=0;
144+
SELECToid,pg_parg.partype
145+
FROMpg_parg
146+
WHEREpg_parg.partype NOTIN (SELECToidFROM pg_type)AND
147+
pg_parg.partype!=0;
148+
SELECToid,pg_proc.prolang
149+
FROMpg_proc
150+
WHEREpg_proc.prolang NOTIN (SELECToidFROM pg_language)AND
151+
pg_proc.prolang!=0;
152+
SELECToid,pg_proc.prorettype
153+
FROMpg_proc
154+
WHEREpg_proc.prorettype NOTIN (SELECToidFROM pg_type)AND
155+
pg_proc.prorettype!=0;
156+
SELECToid,pg_rewrite.ev_class
157+
FROMpg_rewrite
158+
WHEREpg_rewrite.ev_class NOTIN (SELECToidFROM pg_class)AND
159+
pg_rewrite.ev_class!=0;
160+
SELECToid,pg_type.typrelid
161+
FROMpg_type
162+
WHEREpg_type.typrelid NOTIN (SELECToidFROM pg_class)AND
163+
pg_type.typrelid!=0;
164+
SELECToid,pg_type.typinput
165+
FROMpg_type
166+
WHERERegprocToOid(pg_type.typinput) NOTIN (SELECToidFROM pg_proc)AND
167+
RegprocToOid(pg_type.typinput)!=0;
168+
SELECToid,pg_type.typoutput
169+
FROMpg_type
170+
WHERERegprocToOid(pg_type.typoutput) NOTIN (SELECToidFROM pg_proc)AND
171+
RegprocToOid(pg_type.typoutput)!=0;
172+
SELECToid,pg_type.typreceive
173+
FROMpg_type
174+
WHERERegprocToOid(pg_type.typreceive) NOTIN (SELECToidFROM pg_proc)AND
175+
RegprocToOid(pg_type.typreceive)!=0;
176+
SELECToid,pg_type.typsend
177+
FROMpg_type
178+
WHERERegprocToOid(pg_type.typsend) NOTIN (SELECToidFROM pg_proc)AND
179+
RegprocToOid(pg_type.typsend)!=0;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp