Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function
От | Andres Freund |
---|---|
Тема | Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function |
Дата | |
Msg-id | 20180709183201.zn53uwiwqozhettk@alap3.anarazel.de обсуждение исходный текст |
Ответ на | 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
Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function Re: could not read block 0 in file : read only 0 of 8192 bytes whendoing nasty on immutable index function |
Список | 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 по дате отправления: