Re: Bogus collation version recording in recordMultipleDependencies
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Julien Rouhaud <rjuju123@gmail.com>,
Thomas Munro <thomas.munro@gmail.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-04-19T17:52:59Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes: > On 2021-04-18 11:29:42 -0400, Tom Lane wrote: >> I'm not sure that an error in this direction is all that much more >> problematic than the other direction. If it's okay to claim that >> indexes need to be rebuilt when they don't really, then we could just >> drop this entire overcomplicated infrastructure and report that all >> indexes need to be rebuilt after any collation version change. > That doesn't ring true to me. There's a huge difference between needing > to rebuild all indexes, especially primary key indexes which often are > over int8 etc, and unnecessarily needing to rebuild indexes doing > comparatively rare things. It would not be that hard to exclude indexes on int8, or other cases that clearly have zero collation dependencies. And I think I might have some faith in such a solution. Right now I have zero faith that the patch as it stands gives trustworthy answers. I think that the real fundamental bug is supposing that static analysis can give 100% correct answers. Even if it did do so in a given state of the database, consider this counterexample: create type myrow as (f1 int, f2 int); create table mytable (id bigint, r1 myrow, r2 myrow); create index myindex on mytable(id) where r1 < r2; alter type myrow add attribute f3 text; myindex is recorded as having no collation dependency, but that is now wrong. regards, tom lane
Commits
-
Doc: Update notes about libc collation versions.
- b65431ca5e12 14.0 landed
-
Revert per-index collation version tracking feature.
- ec4831470826 14.0 landed
-
Rethink extraction of collation dependencies.
- f24b15699705 14.0 landed
-
Fix bogus collation-version-recording logic.
- ef387bed87f2 14.0 landed
-
Rename the "point is strictly above/below point" comparison operators.
- 0cc993278888 14.0 cited
-
Move catalog toast table declarations
- b4c9695e79f7 14.0 cited