On Mon, Mar 31, 2008 at 11:40 PM, Tom Lane <[EMAIL PROTECTED]> wrote:
> "Morris Goldstein" <[EMAIL PROTECTED]> writes: > > Suppose I have a database with $PGDATA on /dev/sda, and a tablespace > > directory on /dev/sdb. Will Postgres start successfully if /dev/sda is > > mounted and /dev/sdb is not? If not, why not? > > It will start, but you will have unpleasant failures when you try to use > tables in the secondary tablespace ... note that if autovacuum is on, > that is likely to happen even without any explicit action on your part. > > One of the gripes I have with postgres is that, that it won't even complain if one of the segments of a relation goes missing unless the missing segment is referred to by an index!!! The most troublesome part is that count(*) (i.e seq scan) scans only upto the last sequential segment found. Here's a case in example: Healthy: -------- count(*) : 2187001 size: 2441 MB segments: 17651, .1, .2 Corrupt: 17651.1 missing ------------------------- count(*) : 917503 size: 1024 MB segments: 17651, .2 select max(a) from temp: 2187001 (uses index to locate the last tuple in segment .2) select a from temp where a = (select max(a) from temp)/2 ERROR: could not read block 156214 of relation 1663/11511/17651: read only 0 of 8192 bytes retore missing segment: ----------------------- select a from temp where a = (select max(a) from temp)/2 : 1093500 I think that the counter-argument would be that this has never been reported in the field, but I wish our metadata records this somehow, and reports an ERROR if it finds that a segment is missing. Best regards, -- [EMAIL PROTECTED] [EMAIL PROTECTED] gmail | hotmail | indiatimes | yahoo }.com EnterpriseDB http://www.enterprisedb.com Mail sent from my BlackLaptop device