Re: pg_dump tries to do too much per query - Mailing list pgsql-hackers

From Philip Warner
Subject Re: pg_dump tries to do too much per query
Date
Msg-id 3.0.5.32.20000918221819.029c2b00@mail.rhyme.com.au
Whole thread Raw
In response to pg_dump tries to do too much per query  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Re: pg_dump tries to do too much per query
List pgsql-hackers
At 16:29 17/09/00 -0400, Tom Lane wrote:
>
>create table test (f1 int);
>create view v_test as select f1+1 as f11 from test;
>drop table test;
>
>then run pg_dump:
>
>getTables(): SELECT failed.  Explanation from backend: 'ERROR:  cache
lookup of attribute 1 in relation 400384 failed
>'.
>

FWIW, the patch below causes get_viewdef to produce:
   ERROR:  pg_get_viewdef: cache lookup of attribute 1 in relation 19136
failed for rule v_test

when a table has been deleted.

----------------------------------------------------
--- ruleutils.c.orig    Wed Sep 13 22:08:04 2000
+++ ruleutils.c    Mon Sep 18 20:59:25 2000
@@ -72,6 +72,7 @@ * ---------- */static char *rulename = NULL;
+static char *toproutinename = NULL;static void *plan_getrule = NULL;static char *query_getrule = "SELECT * FROM
pg_rewriteWHERE rulename = $1";static void *plan_getview = NULL;
 
@@ -134,6 +135,12 @@    int            len;    /* ----------
+     * We use this in reporting errors.
+     * ----------
+     */
+    toproutinename = "pg_get_ruledef";
+
+    /* ----------     * We need the rules name somewhere deep down: rulename is global     * ----------     */
@@ -234,6 +241,12 @@    char       *name;    /* ----------
+     * We use this in reporting errors.
+     * ----------
+     */
+    toproutinename = "pg_get_viewdef";
+
+    /* ----------     * We need the view name somewhere deep down     * ----------     */
@@ -337,6 +350,13 @@    char       *sep;    /* ----------
+     * We use this in reporting errors.
+     * ----------
+     */
+    toproutinename = "pg_get_indexdef";
+    rulename = NULL;
+
+    /* ----------     * Connect to SPI manager     * ----------     */
@@ -554,6 +574,13 @@    Form_pg_shadow user_rec;    /* ----------
+     * We use this in reporting errors.
+     * ----------
+     */
+    toproutinename = "pg_get_userbyid";
+    rulename = NULL;
+
+    /* ----------     * Allocate space for the result     * ----------     */
@@ -2014,8 +2041,16 @@                                 ObjectIdGetDatum(relid), (Datum) attnum,
       0, 0);    if (!HeapTupleIsValid(atttup))
 
-        elog(ERROR, "cache lookup of attribute %d in relation %u failed",
-             attnum, relid);
+    {
+        if (rulename != NULL)
+        {
+            elog(ERROR, "%s: cache lookup of attribute %d in relation %u failed for
rule %s",
+                toproutinename, attnum, relid, rulename);
+        } else {
+            elog(ERROR, "%s: cache lookup of attribute %d in relation %u failed",
+                toproutinename, attnum, relid);
+        }
+    }    attStruct = (Form_pg_attribute) GETSTRUCT(atttup);    return pstrdup(NameStr(attStruct->attname));

----------------------------------------------------------------
Philip Warner                    |     __---_____
Albatross Consulting Pty. Ltd.   |----/       -  \
(A.B.N. 75 008 659 498)          |          /(@)   ______---_
Tel: (+61) 0500 83 82 81         |                 _________  \
Fax: (+61) 0500 83 82 82         |                 ___________ |
Http://www.rhyme.com.au          |                /           \|                                |    --________--
PGP key available upon request,  |  /
and from pgp5.ai.mit.edu:11371   |/


pgsql-hackers by date:

Previous
From: Michael Meskes
Date:
Subject: Re: Cannot compile
Next
From: "Karl F. Larsen"
Date:
Subject: Re: Cannot compile