Thread: 'Zombie' tables

'Zombie' tables

From
Steve Heaven
Date:
We run 6.5.2 on a Mandrake Linux 6.1 box.
The dBs are used as backends to various websites. They are accessed via
Perl CGI scripts.

The scripts create various temporary tables which are then later
dropped. Occasionally the 'DROP' doesnt work properly. The file
base/<dbname>/<tablename> gets deleted, but the entry in pg_class
doesnt. This leads to a table that cant be dropped. (see below) The only
way out of this that we have found is to manually copy another file to
base/<dbname>/<zombietablename> and then drop it.

Is this a bug or are we doing something wrong?
Thanks

Steve


select relname from pg_class where relname ~'^r';
relname
-------
r863
r865
r866
r864
r867


 drop table r867;
ERROR:  mdopen: couldn't open r867: No such file or directory


--
thorNET  - Internet Consultancy, Services & Training
Phone: 01454 854413
Fax:   01454 854412
http://www.thornet.co.uk

Re: 'Zombie' tables

From
Tom Lane
Date:
Steve Heaven <steve@thornet.co.uk> writes:
> We run 6.5.2 on a Mandrake Linux 6.1 box.
> The scripts create various temporary tables which are then later
> dropped. Occasionally the 'DROP' doesnt work properly. The file
> base/<dbname>/<tablename> gets deleted, but the entry in pg_class
> doesnt. This leads to a table that cant be dropped. (see below) The only
> way out of this that we have found is to manually copy another file to
> base/<dbname>/<zombietablename> and then drop it.

That's the standard workaround.

> Is this a bug or are we doing something wrong?

It's a bug.  Fixed in 7.0 as far as I know.

            regards, tom lane