pg.ddx.io pgsql-committers@postgresql.org mailing list archivehelp / color / mirror / Atom feed
pgsql: Fix catcache invalidation of a list entry that's being built 6+ messages / 1 participants [nested] [flat]
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 13:13 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 13:13 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/ce7c406f0f8d562e856d43a7e1feb82043f772bc Modified Files -------------- src/backend/utils/cache/catcache.c | 231 +++++++++++++++++++++++-------------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/tools/pgindent/typedefs.list | 1 + 4 files changed, 148 insertions(+), 87 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 13:13 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 13:13 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ REL_14_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/fce17c3a53d6ea7b7aa2178328e8f5a438805244 Modified Files -------------- src/backend/utils/cache/catcache.c | 231 +++++++++++++++++++++++-------------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/tools/pgindent/typedefs.list | 1 + 4 files changed, 148 insertions(+), 87 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 13:13 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 13:13 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/af8cd1639ab298ba8fae62cd9583f1c10a5068e1 Modified Files -------------- src/backend/utils/cache/catcache.c | 232 +++++++++++++-------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/test/modules/test_misc/meson.build | 1 + src/test/modules/test_misc/t/007_catcache_inval.pl | 98 +++++++++ src/tools/pgindent/typedefs.list | 1 + 6 files changed, 252 insertions(+), 83 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 13:13 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 13:13 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/91fc447c21d38f6631480ae6f252dbf4211b10b2 Modified Files -------------- src/backend/utils/cache/catcache.c | 231 +++++++++++++++++++++++-------------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/tools/pgindent/typedefs.list | 1 + 4 files changed, 148 insertions(+), 87 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 13:13 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 13:13 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/96e61b2792a5a4820504aa5e1defaa8582858cd0 Modified Files -------------- src/backend/utils/cache/catcache.c | 238 +++++++++++++-------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/test/modules/test_misc/meson.build | 3 +- src/test/modules/test_misc/t/007_catcache_inval.pl | 101 +++++++++ src/tools/pgindent/typedefs.list | 1 + 6 files changed, 259 insertions(+), 87 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
* pgsql: Fix catcache invalidation of a list entry that's being built @ 2025-01-14 16:57 Heikki Linnakangas <heikki.linnakangas@iki.fi> 0 siblings, 0 replies; 6+ messages in thread From: Heikki Linnakangas @ 2025-01-14 16:57 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix catcache invalidation of a list entry that's being built If a new catalog tuple is inserted that belongs to a catcache list entry, and cache invalidation happens while the list entry is being built, the list entry might miss the newly inserted tuple. To fix, change the way we detect concurrent invalidations while a catcache entry is being built. Keep a stack of entries that are being built, and apply cache invalidation to those entries in addition to the real catcache entries. This is similar to the in-progress list in relcache.c. Back-patch to all supported versions. (This commit to v13 a few hours later than other branches, because I somehow missed v13 in the first batch.) Reviewed-by: Noah Misch Discussion: https://www.postgresql.org/message-id/2234dc98-06fe-42ed-b5db-ac17384dc880@iki.fi Branch ------ REL_13_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/f217c410553d28ca182952465d848331945959a4 Modified Files -------------- src/backend/utils/cache/catcache.c | 231 +++++++++++++++++++++++-------------- src/backend/utils/cache/inval.c | 2 +- src/include/utils/catcache.h | 1 + src/tools/pgindent/typedefs.list | 1 + 4 files changed, 148 insertions(+), 87 deletions(-) ^ permalink raw reply [nested|flat] 6+ messages in thread
end of thread, other threads:[~2025-01-14 16:57 UTC | newest] Thread overview: 6+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2025-01-14 13:13 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi> 2025-01-14 13:13 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi> 2025-01-14 13:13 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi> 2025-01-14 13:13 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi> 2025-01-14 13:13 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi> 2025-01-14 16:57 pgsql: Fix catcache invalidation of a list entry that's being built Heikki Linnakangas <heikki.linnakangas@iki.fi>
This inbox is served by DDX for PostgreSQL; see mirroring instructions for how to clone and mirror all data and code used for this inbox