pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / 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
------
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_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 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_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 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