The following bug has been logged on the website:
Bug reference: 8128
Logged by: Adrian Vondendriesch
Email address: Adrian.Vondendriesch@credativ.de
PostgreSQL version: 9.1.9
Operating system: Debian GNU/Linux 7.0
Description: =
Hi,
while browsing on bugs.debian.org I saw the following bug:
'pg_upgradecluster
fails with "OLD used in query that is not in a rule"'
(http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=3D688960).
Because I don't found any reference to that report in pgsql-bugs I report it
by
my self.
Since I have tested it on my own I can confirm it is reproducible:
1. In a 8.4 cluster create a scheme called "old":
> CREATE SCHEME "old";
2. Create a test table:
> CREATE TABLE "old".test(id int);
3. insert some test data:
> INSERT INTO "old".test VALUES (1),(2),(3);
4. dump it with pg_dumpall (9.1):
/usr/lib/postgresql/9.1/bin/pg_dumpall -s > foo
This will produce the following error:
> pg_dump: SQL command failed
> pg_dump: Error message from server: ERROR: OLD used in query that is not
in a rule
> LINE 1: LOCK TABLE old.test IN ACCESS SHARE MODE
> ^
> pg_dump: The command was: LOCK TABLE old.test IN ACCESS SHARE MODE
> pg_dumpall: pg_dump failed on database "postgres", exiting
If pg_dumpall version 8.4 is used, the dump runs smoothly. This is because
pg_dump(all) in version 8.x uses quotes. (2013-04-30 16:24:49 CEST LOG:
statement: LOCK TABLE "old".test IN ACCESS SHARE MODE).
I think it's a bad idea to name a scheme 'old', but it's possible, so it
should be
supported. I saw no clue to resolve that issue in the pg_dump
documentation.
I'm running Debian Wheezy using the apt.postgresql.org repository.
Regards
- Adrian