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: