Re: error on CREATE INDEX when restoring from dump file: could not read block 0

Jim Nasby <jim.nasby@bluetreble.com>

From: Jim Nasby <Jim.Nasby@BlueTreble.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Vincent Veyron <vv.lists@wanadoo.fr>, <pgsql-general@postgresql.org>
Date: 2015-09-28T01:13:17Z
Lists: pgsql-general
On 9/27/15 5:32 PM, Tom Lane wrote:
> I would be more excited about fixing this if the cases that had come up
> didn't involve index definitions that were broken on their face.  In this
> example the index entries would depend on entries in not just one but
> *three*  tables, for none of which could the index possibly get updated
> correctly when rows other than the row that PG thinks the index entry is
> for get updated.
>
> As an example, even if we stopped this error from occurring, there would
> be no guarantee that a restore from pg_dump would populate the index
> usefully, since pg_dump could have no idea that the other two tables need
> to be populated before building this index.

Not to mention the issue of what happens when someone updates tblcontrat 
or tblagent. (It'd be cool if we had cross-table indexes, but this 
certainly isn't how to do it...)

I am wondering if there's a practical way to restrict what relations can 
be referenced by a query/transaction/subtrans. That would allow for 
generating a better error here. It'd also make it possible to ignore 
certain transactions in HeapTupleSatisfiesVacuum if such a restriction 
was published. There's probably some other uses as well.
-- 
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Experts in Analytics, Data Architecture and PostgreSQL
Data in Trouble? Get it in Treble! http://BlueTreble.com