Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function - Mailing list pgsql-bugs

From Andres Freund
Subject Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function
Date
Msg-id 20180709183201.zn53uwiwqozhettk@alap3.anarazel.de
Whole thread Raw
In response to Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function  (Peter Geoghegan <pg@bowt.ie>)
Responses Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function  (Peter Geoghegan <pg@bowt.ie>)
Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function  (Peter Geoghegan <pg@bowt.ie>)
Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function  (Peter Geoghegan <pg@bowt.ie>)
Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function  (Peter Geoghegan <pg@bowt.ie>)
List pgsql-bugs
Hi,

On 2018-07-09 09:59:58 -0700, Peter Geoghegan wrote:
> On Thu, Jun 28, 2018 at 8:02 AM, Andres Freund <andres@anarazel.de> wrote:
> > I believe this happens because there's currently no relcache
> > invalidation registered for the main relation, until *after* the index
> > is built. Normally it'd be the CacheInvalidateRelcacheByTuple(tuple) in
> > index_update_stats(), which is called at the bottom of index_build().
> > But we never get there, because the earlier error.  That's bad, because
> > any relcache entry built *after* the CommandCounterIncrement() in
> > CommandCounterIncrement() will now be outdated.
> >
> > In the olden days we most of the time didn't build a relcache entry
> > until after the index was built - but plan_create_index_workers() now
> > does. I'm suspect there's other ways to trigger that earlier, too.
> 
> Note that there is a kludge within plan_create_index_workers() that
> has us treat the heap relation as an inheritance parent, just to get a
> RelOptInfo for the heap relation without running into similar trouble
> with the index in get_relation_info(). Perhaps there's an argument to
> be made for refactoring plan_create_index_workers() as a fix for this.

Maybe I'm missing something, but what has this got to do with the issue
at hand?


> > Putting in a CacheInvalidateRelcache(heapRelation); before the CCI in
> > index_create() indeed makes the "borked relcache" problem go away.
> >
> >
> > I wonder why we don't just generally trigger invalidations to an
> > indexes' "owning" relation in CacheInvalidateHeapTuple()?
> 
> I don't know, but that seems like a good question.

I assume we'll have to backpatch this issue, so I think it'd probably a
good idea to put a specific CacheInvalidateHeapTuple() in there
explicitly in the back branches, and do the larger fix in 12. ISTM
there's some risks that it'd cause issues.  Will you tackle this?

Greetings,

Andres Freund


pgsql-bugs by date:

Previous
From: PG Bug reporting form
Date:
Subject: BUG #15269: Can't reassign bg color to server group once it was donepreviously
Next
From: PG Bug reporting form
Date:
Subject: BUG #15270: __builtin_isinf conflict when building using clang