Re: pg_dump tries to do too much per query
| От | Philip Warner |
|---|---|
| Тема | Re: pg_dump tries to do too much per query |
| Дата | |
| Msg-id | 3.0.5.32.20000918221819.029c2b00@mail.rhyme.com.au обсуждение исходный текст |
| Ответ на | pg_dump tries to do too much per query (Tom Lane <tgl@sss.pgh.pa.us>) |
| Ответы |
Re: Re: pg_dump tries to do too much per query
|
| Список | 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 по дате отправления: