8000 proisstrict must be assumed FALSE when dumping from a 7.0 database, · danielcode/postgres@e6903c4 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit e6903c4

Browse files
committed
proisstrict must be assumed FALSE when dumping from a 7.0 database,
not TRUE. Otherwise we break pl call handler functions. fmgr_oldstyle will take care of making sure the semantics are the same for C functions. Clean up some slightly grotty coding in 7.0 pg_class reading, also.
1 parent 631b3e4 commit e6903c4

File tree

1 file changed

+12
-11
lines changed

1 file changed

+12
-11
lines changed

src/bin/pg_dump/pg_dump.c

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*
2323
*
2424
* IDENTIFICATION
25-
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.205.2.1 2001/05/12 01:09:47 pjw Exp $
25+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.205.2.2 2001/05/12 23:36:44 tgl Exp $
2626
*
2727
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828
*
@@ -1928,7 +1928,7 @@ getFuncs(int *numFuncs)
19281928
"SELECT pg_proc.oid, proname, prolang, pronargs, prorettype, "
19291929
"proretset, proargtypes, prosrc, probin, "
19301930
"(select usename from pg_user where proowner = usesysid) as usename, "
1931-
"proiscachable, 't'::boolean as proisstrict "
1931+
"proiscachable, 'f'::boolean as proisstrict "
19321932
"from pg_proc "
19331933
"where pg_proc.oid > '%u'::oid",
19341934
g_last_builtin_oid);
@@ -2056,7 +2056,7 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
20562056
if (g_fout->remoteVersion >= 70100)
20572057
{
20582058
appendPQExpBuffer(query,
2059-
"SELECT pg_class.oid, relname, relkind, relacl, "
2059+
"SELECT pg_class.oid, relname, relacl, relkind, "
20602060
"(select usename from pg_user where relowner = usesysid) as usename, "
20612061
"relchecks, reltriggers, relhasindex "
20622062
"from pg_class "
@@ -2066,22 +2066,23 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
20662066
RELKIND_RELATION, RELKIND_SEQUENCE, RELKIND_VIEW);
20672067
} else {
20682068
/*
2069-
* In 7.1, view relkind was not set to 'v', so we fake this by checking
2070-
* if we have a view by looking up pg_class & pg_rewrite.
2069+
* Before 7.1, view relkind was not set to 'v', so we must check
2070+
* if we have a view by looking for a rule in pg_rewrite.
20712071
*/
20722072
appendPQExpBuffer(query,
20732073
"SELECT c.oid, relname, relacl, "
20742074
"CASE WHEN relhasrules and relkind = 'r' "
2075-
" And EXISTS(SELECT r.rulename FROM pg_rewrite r WHERE "
2076-
" r.ev_class = c.oid AND r.ev_type = '1'::\"char\") "
2077-
"THEN 'v'::\"char\" "
2078-
"ELSE relkind End AS relkind,"
2079-
"relacl, (select usename from pg_user where relowner = usesysid) as usename, "
2075+
" and EXISTS(SELECT rulename FROM pg_rewrite r WHERE "
2076+
" r.ev_class = c.oid AND r.ev_type = '1') "
2077+
"THEN '%c'::\"char\" "
2078+
"ELSE relkind END AS relkind,"
2079+
"(select usename from pg_user where relowner = usesysid) as usename, "
20802080
"relchecks, reltriggers, relhasindex "
20812081
"from pg_class c "
20822082
"where relname !~ '^pg_' "
20832083
"and relkind in ('%c', '%c', '%c') "
20842084
"order by oid",
2085+
RELKIND_VIEW,
20852086
RELKIND_RELATION, RELKIND_SEQUENCE, RELKIND_VIEW);
20862087
}
20872088

@@ -2102,8 +2103,8 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
21022103

21032104
i_reloid = PQfnumber(res, "oid");
21042105
i_relname = PQfnumber(res, "relname");
2105-
i_relkind = PQfnumber(res, "relkind");
21062106
i_relacl = PQfnumber(res, "relacl");
2107+
i_relkind = PQfnumber(res, "relkind");
21072108
i_usename = PQfnumber(res, "usename");
21082109
i_relchecks = PQfnumber(res, "relchecks");
21092110
i_reltriggers = PQfnumber(res, "reltriggers");

0 commit comments

Comments
 (0)
0