Tom Lane escreveu:
> The window for this sort of thing isn't very large, because the first
> thing pg_dump does is acquire AccessShareLock on every table it intends
> to dump, and past that point it won't be possible for anyone to modify
> the table's DDL.  But it can happen.
> 
I did not see it documented anywhere. Should we at least add a comment at the
top of pg_dump documenting this behavior? Attached is a proposed patch using
your own words.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
*** src/bin/pg_dump/pg_dump.c.orig	2010-02-19 23:22:56.000000000 -0200
--- src/bin/pg_dump/pg_dump.c	2010-02-19 23:43:08.000000000 -0200
***************
*** 11,16 ****
--- 11,27 ----
   *	script that reproduces the schema in terms of SQL that is understood
   *	by PostgreSQL
   *
+  *	Note that pg_dump runs in a serializable transaction, so it sees a
+  *	consistent snapshot of the database including system catalogs.
+  *	However, it relies in part on various specialized backend functions
+  *	like pg_get_indexdef(), and those things tend to run on SnapshotNow
+  *	time, ie they look at the currently committed state.  So it is
+  *	possible to get 'cache lookup failed' error if someone performs DDL
+  *	changes while a dump is happening. The window for this sort of thing
+  *	is from the beginning of the serializable transaction to
+  *	getSchemaData() (when pg_dump acquires AccessShareLock on every
+  *	table it intends to dump). It isn't very large but it can happen.
+  *
   * IDENTIFICATION
   *	  $PostgreSQL$
   *
-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to