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

Commit565afb8

Browse files
committed
Uses column select expressions to get object object owners and tests for blank names
1 parentaef7a0c commit565afb8

File tree

2 files changed

+46
-22
lines changed

2 files changed

+46
-22
lines changed

‎src/bin/pg_dump/pg_backup_archiver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ typedef z_stream *z_streamp;
6262

6363
#defineK_VERS_MAJOR 1
6464
#defineK_VERS_MINOR 4
65-
#defineK_VERS_REV14
65+
#defineK_VERS_REV15
6666

6767
/* Data block types */
6868
#defineBLK_DATA 1

‎src/bin/pg_dump/pg_dump.c

Lines changed: 45 additions & 21 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.166 2000/09/17 20:01:28 tgl Exp $
25+
* $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.167 2000/09/18 03:24:03 pjw Exp $
2626
*
2727
* Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828
*
@@ -1004,7 +1004,7 @@ dumpDatabase(Archive *AH)
10041004
fprintf(stderr,"%s saving database definition\n",g_comment_start);
10051005

10061006
/* Get the dba */
1007-
appendPQExpBuffer(dbQry,"selectpg_get_userbyid(datdba) as dba from pg_database"
1007+
appendPQExpBuffer(dbQry,"select(select usename from pg_user wheredatdba = usesysid) as dba from pg_database"
10081008
" where datname = '%s'",PQdb(g_conn));
10091009

10101010
res=PQexec(g_conn,dbQry->data);
@@ -1172,11 +1172,11 @@ getTypes(int *numTypes)
11721172
*/
11731173

11741174
appendPQExpBuffer(query,"SELECT pg_type.oid, typowner, typname, typlen, typprtlen, "
1175-
"typinput, typoutput, typreceive, typsend, typelem, typdelim, "
1176-
"typdefault, typrelid, typbyval, usename, "
1177-
"format_type(pg_type.oid, NULL) astypedefn "
1178-
"frompg_type, pg_user "
1179-
"where typowner = usesysid");
1175+
"typinput, typoutput, typreceive, typsend, typelem, typdelim, "
1176+
"typdefault, typrelid, typbyval, "
1177+
"(select usename from pg_user where typowner = usesysid) asusename, "
1178+
"format_type(pg_type.oid, NULL) as typedefn "
1179+
"from pg_type");
11801180

11811181
res=PQexec(g_conn,query->data);
11821182
if (!res||
@@ -1225,6 +1225,9 @@ getTypes(int *numTypes)
12251225
tinfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
12261226
tinfo[i].typedefn=strdup(PQgetvalue(res,i,i_typedefn));
12271227

1228+
if (strlen(tinfo[i].usename)==0)
1229+
fprintf(stderr,"WARNING: owner of type '%s' appears to be invalid\n",tinfo[i].typname);
1230+
12281231
if (strcmp(PQgetvalue(res,i,i_typbyval),"f")==0)
12291232
tinfo[i].passedbyvalue=0;
12301233
else
@@ -1288,9 +1291,9 @@ getOperators(int *numOprs)
12881291

12891292
appendPQExpBuffer(query,"SELECT pg_operator.oid, oprname, oprkind, oprcode, "
12901293
"oprleft, oprright, oprcom, oprnegate, oprrest, oprjoin, "
1291-
"oprcanhash, oprlsortop, oprrsortop, usename "
1292-
"frompg_operator,pg_user "
1293-
"where oprowner = usesysid");
1294+
"oprcanhash, oprlsortop, oprrsortop, "
1295+
"(select usenamefrom pg_user where oprowner = usesysid) as usename "
1296+
"from pg_operator");
12941297

12951298
res=PQexec(g_conn,query->data);
12961299
if (!res||
@@ -1336,6 +1339,11 @@ getOperators(int *numOprs)
13361339
oprinfo[i].oprlsortop=strdup(PQgetvalue(res,i,i_oprlsortop));
13371340
oprinfo[i].oprrsortop=strdup(PQgetvalue(res,i,i_oprrsortop));
13381341
oprinfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
1342+
1343+
if (strlen(oprinfo[i].usename)==0)
1344+
fprintf(stderr,"WARNING: owner of operator '%s' appears to be invalid\n",
1345+
oprinfo[i].oprname);
1346+
13391347
}
13401348

13411349
PQclear(res);
@@ -1627,10 +1635,11 @@ getAggregates(int *numAggs)
16271635
/* find all user-defined aggregates */
16281636

16291637
appendPQExpBuffer(query,
1630-
"SELECT pg_aggregate.oid, aggname, aggtransfn, "
1631-
"aggfinalfn, aggtranstype, aggbasetype, "
1632-
"agginitval, usename from pg_aggregate, pg_user "
1633-
"where aggowner = usesysid");
1638+
"SELECT pg_aggregate.oid, aggname, aggtransfn, "
1639+
"aggfinalfn, aggtranstype, aggbasetype, "
1640+
"agginitval, "
1641+
"(select usename from pg_user where aggowner = usesysid) as usename "
1642+
"from pg_aggregate" );
16341643

16351644
res=PQexec(g_conn,query->data);
16361645
if (!res||
@@ -1665,6 +1674,10 @@ getAggregates(int *numAggs)
16651674
agginfo[i].aggbasetype=strdup(PQgetvalue(res,i,i_aggbasetype));
16661675
agginfo[i].agginitval=strdup(PQgetvalue(res,i,i_agginitval));
16671676
agginfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
1677+
if (strlen(agginfo[i].usename)==0)
1678+
fprintf(stderr,"WARNING: owner of aggregate '%s' appears to be invalid\n",
1679+
agginfo[i].aggname);
1680+
16681681
}
16691682

16701683
PQclear(res);
@@ -1706,10 +1719,11 @@ getFuncs(int *numFuncs)
17061719

17071720
appendPQExpBuffer(query,
17081721
"SELECT pg_proc.oid, proname, prolang, pronargs, prorettype, "
1709-
"proretset, proargtypes, prosrc, probin, usename, "
1722+
"proretset, proargtypes, prosrc, probin, "
1723+
"(select usename from pg_user where proowner = usesysid) as usename, "
17101724
"proiscachable "
1711-
"from pg_proc, pg_user "
1712-
"where pg_proc.oid > '%u'::oid and proowner = usesysid",
1725+
"from pg_proc "
1726+
"where pg_proc.oid > '%u'::oid",
17131727
g_last_builtin_oid);
17141728

17151729
res=PQexec(g_conn,query->data);
@@ -1755,6 +1769,11 @@ getFuncs(int *numFuncs)
17551769
finfo[i].lang=atoi(PQgetvalue(res,i,i_prolang));
17561770
finfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
17571771
finfo[i].iscachable= (strcmp(PQgetvalue(res,i,i_iscachable),"t")==0);
1772+
1773+
if (strlen(finfo[i].usename)==0)
1774+
fprintf(stderr,"WARNING: owner of function '%s' appears to be invalid\n",
1775+
finfo[i].proname);
1776+
17581777
if (finfo[i].nargs<0||finfo[i].nargs>FUNC_MAX_ARGS)
17591778
{
17601779
fprintf(stderr,"failed sanity check: %s has %d args\n",
@@ -1818,10 +1837,11 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
18181837
*/
18191838

18201839
appendPQExpBuffer(query,
1821-
"SELECT pg_class.oid, relname, relkind, relacl, usename, "
1840+
"SELECT pg_class.oid, relname, relkind, relacl, "
1841+
"(select usename from pg_user where relowner = usesysid) as usename, "
18221842
"relchecks, reltriggers, relhasindex, pg_get_viewdef(relname) as viewdef "
1823-
"from pg_class, pg_user "
1824-
"whererelowner = usesysid andrelname !~ '^pg_' "
1843+
"from pg_class "
1844+
"where relname !~ '^pg_' "
18251845
"and relkind in ('%c', '%c', '%c') "
18261846
"order by oid",
18271847
RELKIND_RELATION,RELKIND_SEQUENCE,RELKIND_VIEW);
@@ -1866,6 +1886,10 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
18661886
tblinfo[i].viewdef=NULL;
18671887
}
18681888

1889+
if (strlen(tblinfo[i].usename)==0)
1890+
fprintf(stderr,"WARNING: owner of table '%s' appears to be invalid\n",
1891+
tblinfo[i].relname);
1892+
18691893
/*
18701894
* Exclude inherited CHECKs from CHECK constraints total. If a
18711895
* constraint matches by name and condition with a constraint
@@ -3981,7 +4005,7 @@ dumpRules(Archive *fout, const char *tablename,
39814005
*/
39824006
resetPQExpBuffer(query);
39834007
appendPQExpBuffer(query,"SELECT definition,"
3984-
"pg_get_userbyid(pg_class.relowner) AS viewowner, "
4008+
"(select usename from pg_user wherepg_class.relowner = usesysid) AS viewowner, "
39854009
" pg_rewrite.oid, pg_rewrite.rulename "
39864010
"FROM pg_rewrite, pg_class, pg_rules "
39874011
"WHERE pg_class.relname = '%s' "

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp