aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-03-14 18:57:33 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-03-14 18:57:33 +0000
commit28bcc344b52823ccbbe9abd52cd5b18f08e8136a (patch)
treec87e7805039f6969754dc94708fe9639ef9fafe9 /src
parente7fb9f18bfe545070f7b1761b2ff7779c19f331f (diff)
downloadpostgresql-28bcc344b52823ccbbe9abd52cd5b18f08e8136a.tar.gz
postgresql-28bcc344b52823ccbbe9abd52cd5b18f08e8136a.zip
Make pg_dump emit a useful error message, instead of just dumping core,
if it finds a pg_rewrite entry for which there is no pg_class entry. Per report from Andrew Slobodyanyk.
Diffstat (limited to 'src')
-rw-r--r--src/bin/pg_dump/pg_dump.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index e2fb805d59e..f4e7c6e5f1f 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -12,7 +12,7 @@
* by PostgreSQL
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.403 2005/02/22 04:39:35 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_dump/pg_dump.c,v 1.404 2005/03/14 18:57:33 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -3154,6 +3154,13 @@ getRules(int *numRules)
ruleinfo[i].dobj.name = strdup(PQgetvalue(res, i, i_rulename));
ruletableoid = atooid(PQgetvalue(res, i, i_ruletable));
ruleinfo[i].ruletable = findTableByOid(ruletableoid);
+ if (ruleinfo[i].ruletable == NULL)
+ {
+ write_msg(NULL, "failed sanity check, parent table OID %u of pg_rewrite entry OID %u not found\n",
+ ruletableoid,
+ ruleinfo[i].dobj.catId.oid);
+ exit_nicely();
+ }
ruleinfo[i].dobj.namespace = ruleinfo[i].ruletable->dobj.namespace;
ruleinfo[i].ev_type = *(PQgetvalue(res, i, i_ev_type));
ruleinfo[i].is_instead = *(PQgetvalue(res, i, i_is_instead)) == 't';