|
22 | 22 | *
|
23 | 23 | *
|
24 | 24 | * 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 $ |
26 | 26 | *
|
27 | 27 | * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
|
28 | 28 | *
|
@@ -1004,7 +1004,7 @@ dumpDatabase(Archive *AH)
|
1004 | 1004 | fprintf(stderr,"%s saving database definition\n",g_comment_start);
|
1005 | 1005 |
|
1006 | 1006 | /* 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" |
1008 | 1008 | " where datname = '%s'",PQdb(g_conn));
|
1009 | 1009 |
|
1010 | 1010 | res=PQexec(g_conn,dbQry->data);
|
@@ -1172,11 +1172,11 @@ getTypes(int *numTypes)
|
1172 | 1172 | */
|
1173 | 1173 |
|
1174 | 1174 | 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"); |
1180 | 1180 |
|
1181 | 1181 | res=PQexec(g_conn,query->data);
|
1182 | 1182 | if (!res||
|
@@ -1225,6 +1225,9 @@ getTypes(int *numTypes)
|
1225 | 1225 | tinfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
|
1226 | 1226 | tinfo[i].typedefn=strdup(PQgetvalue(res,i,i_typedefn));
|
1227 | 1227 |
|
| 1228 | +if (strlen(tinfo[i].usename)==0) |
| 1229 | +fprintf(stderr,"WARNING: owner of type '%s' appears to be invalid\n",tinfo[i].typname); |
| 1230 | + |
1228 | 1231 | if (strcmp(PQgetvalue(res,i,i_typbyval),"f")==0)
|
1229 | 1232 | tinfo[i].passedbyvalue=0;
|
1230 | 1233 | else
|
@@ -1288,9 +1291,9 @@ getOperators(int *numOprs)
|
1288 | 1291 |
|
1289 | 1292 | appendPQExpBuffer(query,"SELECT pg_operator.oid, oprname, oprkind, oprcode, "
|
1290 | 1293 | "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"); |
1294 | 1297 |
|
1295 | 1298 | res=PQexec(g_conn,query->data);
|
1296 | 1299 | if (!res||
|
@@ -1336,6 +1339,11 @@ getOperators(int *numOprs)
|
1336 | 1339 | oprinfo[i].oprlsortop=strdup(PQgetvalue(res,i,i_oprlsortop));
|
1337 | 1340 | oprinfo[i].oprrsortop=strdup(PQgetvalue(res,i,i_oprrsortop));
|
1338 | 1341 | 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 | + |
1339 | 1347 | }
|
1340 | 1348 |
|
1341 | 1349 | PQclear(res);
|
@@ -1627,10 +1635,11 @@ getAggregates(int *numAggs)
|
1627 | 1635 | /* find all user-defined aggregates */
|
1628 | 1636 |
|
1629 | 1637 | 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" ); |
1634 | 1643 |
|
1635 | 1644 | res=PQexec(g_conn,query->data);
|
1636 | 1645 | if (!res||
|
@@ -1665,6 +1674,10 @@ getAggregates(int *numAggs)
|
1665 | 1674 | agginfo[i].aggbasetype=strdup(PQgetvalue(res,i,i_aggbasetype));
|
1666 | 1675 | agginfo[i].agginitval=strdup(PQgetvalue(res,i,i_agginitval));
|
1667 | 1676 | 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 | + |
1668 | 1681 | }
|
1669 | 1682 |
|
1670 | 1683 | PQclear(res);
|
@@ -1706,10 +1719,11 @@ getFuncs(int *numFuncs)
|
1706 | 1719 |
|
1707 | 1720 | appendPQExpBuffer(query,
|
1708 | 1721 | "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, " |
1710 | 1724 | "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", |
1713 | 1727 | g_last_builtin_oid);
|
1714 | 1728 |
|
1715 | 1729 | res=PQexec(g_conn,query->data);
|
@@ -1755,6 +1769,11 @@ getFuncs(int *numFuncs)
|
1755 | 1769 | finfo[i].lang=atoi(PQgetvalue(res,i,i_prolang));
|
1756 | 1770 | finfo[i].usename=strdup(PQgetvalue(res,i,i_usename));
|
1757 | 1771 | 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 | + |
1758 | 1777 | if (finfo[i].nargs<0||finfo[i].nargs>FUNC_MAX_ARGS)
|
1759 | 1778 | {
|
1760 | 1779 | fprintf(stderr,"failed sanity check: %s has %d args\n",
|
@@ -1818,10 +1837,11 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
|
1818 | 1837 | */
|
1819 | 1838 |
|
1820 | 1839 | 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, " |
1822 | 1842 | "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_' " |
1825 | 1845 | "and relkind in ('%c', '%c', '%c') "
|
1826 | 1846 | "order by oid",
|
1827 | 1847 | RELKIND_RELATION,RELKIND_SEQUENCE,RELKIND_VIEW);
|
@@ -1866,6 +1886,10 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
|
1866 | 1886 | tblinfo[i].viewdef=NULL;
|
1867 | 1887 | }
|
1868 | 1888 |
|
| 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 | + |
1869 | 1893 | /*
|
1870 | 1894 | * Exclude inherited CHECKs from CHECK constraints total. If a
|
1871 | 1895 | * constraint matches by name and condition with a constraint
|
@@ -3981,7 +4005,7 @@ dumpRules(Archive *fout, const char *tablename,
|
3981 | 4005 | */
|
3982 | 4006 | resetPQExpBuffer(query);
|
3983 | 4007 | 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, " |
3985 | 4009 | " pg_rewrite.oid, pg_rewrite.rulename "
|
3986 | 4010 | "FROM pg_rewrite, pg_class, pg_rules "
|
3987 | 4011 | "WHERE pg_class.relname = '%s' "
|
|