2222 *
2323 *
2424 * IDENTIFICATION
25- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.201 2001/04/05 02:50:01 tgl Exp $
25+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.202 2001/04/14 13:11:03 pjw Exp $
2626 *
2727 * Modifications - 6/10/96 - dave@bensoft.com - version 1.13.dhb
2828 *
@@ -2035,9 +2035,14 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
20352035 PGresult * res2 ;
20362036
20372037 resetPQExpBuffer (query );
2038- appendPQExpBuffer (query , "SELECT pg_get_viewdef(" );
2038+ appendPQExpBuffer (query , "SELECT definition as viewdef, " );
2039+ /* XXX 7.2 - replace with att from pg_views or some other generic source */
2040+ appendPQExpBuffer (query , "(select oid from pg_rewrite where rulename='_RET'"
2041+ " || viewname) as view_oid from pg_views"
2042+ " where viewname = " );
20392043 formatStringLiteral (query , tblinfo [i ].relname , CONV_ALL );
2040- appendPQExpBuffer (query , ") as viewdef" );
2044+ appendPQExpBuffer (query , ";" );
2045+
20412046 res2 = PQexec (g_conn , query -> data );
20422047 if (!res2 || PQresultStatus (res2 ) != PGRES_TUPLES_OK )
20432048 {
@@ -2051,18 +2056,26 @@ getTables(int *numTables, FuncInfo *finfo, int numFuncs)
20512056 {
20522057 if (PQntuples (res2 ) < 1 )
20532058 {
2054- fprintf (stderr , "getTables(): SELECT (for VIEW %s) returned no definitions" ,
2059+ fprintf (stderr , "getTables(): SELECT (for VIEW %s) returned no definitions\n " ,
20552060 tblinfo [i ].relname );
20562061 }
20572062 else
20582063 {
2059- fprintf (stderr , "getTables(): SELECT (for VIEW %s) returned more than 1 definition" ,
2064+ fprintf (stderr , "getTables(): SELECT (for VIEW %s) returned more than 1 definition\n " ,
20602065 tblinfo [i ].relname );
20612066 }
20622067 exit_nicely (g_conn );
20632068 }
20642069
2070+ if (PQgetisnull (res2 , 0 , 1 ))
2071+ {
2072+ fprintf (stderr , "getTables(): SELECT (for VIEW %s) returned NULL oid\n" , tblinfo [i ].relname );
2073+ fprintf (stderr , "SELECT was: %s\n" , query -> data );
2074+ exit_nicely (g_conn );
2075+ }
2076+
20652077 tblinfo [i ].viewdef = strdup (PQgetvalue (res2 , 0 , 0 ));
2078+ tblinfo [i ].viewoid = strdup (PQgetvalue (res2 , 0 , 1 ));
20662079
20672080 if (strlen (tblinfo [i ].viewdef ) == 0 )
20682081 {
@@ -3739,6 +3752,7 @@ dumpTables(Archive *fout, TableInfo *tblinfo, int numTables,
37393752 int numParents ;
37403753 int actual_atts ; /* number of attrs in this CREATE statment */
37413754 char * reltypename ;
3755+ char * objoid ;
37423756
37433757 /* First - dump SEQUENCEs */
37443758 if (tablename && strlen (tablename ) > 0 )
@@ -3778,15 +3792,15 @@ dumpTables(Archive *fout, TableInfo *tblinfo, int numTables,
37783792 if (tblinfo [i ].viewdef != NULL )
37793793 {
37803794 reltypename = "VIEW" ;
3781-
3795+ objoid = tblinfo [ i ]. viewoid ;
37823796 appendPQExpBuffer (delq , "DROP VIEW %s;\n" , fmtId (tblinfo [i ].relname , force_quotes ));
3783- appendPQExpBuffer (q , "CREATE VIEW %s as %s" , fmtId (tblinfo [i ].relname , force_quotes ), tblinfo [i ].viewdef );
3797+ appendPQExpBuffer (q , "CREATE VIEW %s as %s\n " , fmtId (tblinfo [i ].relname , force_quotes ), tblinfo [i ].viewdef );
37843798
37853799 }
37863800 else
37873801 {
37883802 reltypename = "TABLE" ;
3789-
3803+ objoid = tblinfo [ i ]. oid ;
37903804 parentRels = tblinfo [i ].parentRels ;
37913805 numParents = tblinfo [i ].numParents ;
37923806
@@ -3883,7 +3897,7 @@ dumpTables(Archive *fout, TableInfo *tblinfo, int numTables,
38833897 if (!dataOnly )
38843898 {
38853899
3886- ArchiveEntry (fout , tblinfo [ i ]. oid , tblinfo [i ].relname ,
3900+ ArchiveEntry (fout , objoid , tblinfo [i ].relname ,
38873901 reltypename , NULL , q -> data , delq -> data , "" , tblinfo [i ].usename ,
38883902 NULL , NULL );
38893903
@@ -4323,7 +4337,7 @@ findLastBuiltinOid(const char *dbname)
43234337 if (res == NULL ||
43244338 PQresultStatus (res ) != PGRES_TUPLES_OK )
43254339 {
4326- fprintf (stderr , "pg_dump: error in finding the last system OID" );
4340+ fprintf (stderr , "pg_dump: error in finding the last system OID. " );
43274341 fprintf (stderr , "Explanation from backend: '%s'.\n" , PQerrorMessage (g_conn ));
43284342 exit_nicely (g_conn );
43294343 }
0 commit comments