On Thu, Aug 2, 2018 at 3:18 AM, Kyotaro HORIGUCHI <horiguchi.kyot...@lab.ntt.co.jp> wrote: >> [1] >> http://archives.postgresql.org/message-id/CAKoxK%2B5fVodiCtMsXKV_1YAKXbzwSfp7DgDqUmcUAzeAhf%3DHEQ%40mail.gmail.com >> [2] https://www.postgresql.org/message-id/12259.1532117...@sss.pgh.pa.us > > As for [1], it is not a issue on invalidation. It happens also if > the relation has any index and even drop is not needed. The > following steps are sufficient. > > create table t( pk serial, t text ); > insert into t( t ) values( 'hello' ), ('world'); > create index idx_fake0 on t (pk); > create index idx_fake on t ( f_fake( pk ) ); -- ERROR
The fact that there was a weird error wasn't really what we cared about there. If the user is doing something that's clearly unreasonable or nonsensical, then they cannot expect much from the error message (maybe we could do better, but it's not a priority). What we really cared about was the fact that it was possible to make a backend's relcache irrecoverably corrupt. That should never be allowed to happen, even when the user is determined to do something unreasonable. -- Peter Geoghegan