pg.ddx.io pgsql-committers@postgresql.org mailing list archivehelp / color / mirror / Atom feed
pgsql: Fix GIN posting tree page deletion with incomplete splits. 7+ messages / 1 participants [nested] [flat]
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/f20c4278342f6afc44b856e98a0850f9dd2df0a8 Modified Files -------------- src/backend/access/gin/ginvacuum.c | 18 +++- src/test/modules/gin/Makefile | 2 +- .../modules/gin/expected/gin_incomplete_splits.out | 109 ++++++++++++++++++++- src/test/modules/gin/sql/gin_incomplete_splits.sql | 83 +++++++++++++++- 4 files changed, 206 insertions(+), 6 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_19_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/b13fd289988067dd09ccc08243fcab803804595b Modified Files -------------- src/backend/access/gin/ginvacuum.c | 18 +++- src/test/modules/gin/Makefile | 2 +- .../modules/gin/expected/gin_incomplete_splits.out | 109 ++++++++++++++++++++- src/test/modules/gin/sql/gin_incomplete_splits.sql | 83 +++++++++++++++- 4 files changed, 206 insertions(+), 6 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_18_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/9448c3e7ba5c40aadf07e1109685a3691d60880b Modified Files -------------- src/backend/access/gin/ginvacuum.c | 19 +++- src/test/modules/gin/Makefile | 2 +- .../modules/gin/expected/gin_incomplete_splits.out | 109 ++++++++++++++++++++- src/test/modules/gin/sql/gin_incomplete_splits.sql | 83 +++++++++++++++- 4 files changed, 208 insertions(+), 5 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_17_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/aa14281fdde6b2cc7a794dd02bc128dd0cb20b45 Modified Files -------------- src/backend/access/gin/ginvacuum.c | 19 +++- src/test/modules/gin/Makefile | 2 +- .../modules/gin/expected/gin_incomplete_splits.out | 109 ++++++++++++++++++++- src/test/modules/gin/sql/gin_incomplete_splits.sql | 83 +++++++++++++++- 4 files changed, 208 insertions(+), 5 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_16_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/4dd227f51d461b6cbbcdc7d5805ec6ef4023a715 Modified Files -------------- src/backend/access/gin/ginvacuum.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_15_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/aef6198af1401d29f07692ee9b78069c3b6e7126 Modified Files -------------- src/backend/access/gin/ginvacuum.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
* pgsql: Fix GIN posting tree page deletion with incomplete splits. @ 2026-08-22 18:50 Peter Geoghegan <pg@bowt.ie> 0 siblings, 0 replies; 7+ messages in thread From: Peter Geoghegan @ 2026-08-22 18:50 UTC (permalink / raw) To: pgsql-committers@lists.postgresql.org Fix GIN posting tree page deletion with incomplete splits. GIN posting tree page deletion failed to consider whether the target page's left sibling page, or the deletion target itself, was marked as incompletely split. Page deletion finds the target page's left sibling by walking the parent's downlinks, but an incompletely split page's new right half is part of the sibling chain despite having no downlink. Deletion could therefore overwrite the rightlink of the wrong page, disconnecting the split's still-live right half from the sibling chain. Scans would then silently miss tuples from that page. To fix, teach the relevant page deletion path to avoid deleting a posting tree page whose left sibling is marked incompletely split (and to avoid doing so when the target page itself is so marked). This is essentially the same approach used by nbtree page deletion. Claude Code found this problem. The committed test case is a simplified version of the one that it wrote to demonstrate this bug. Author: Peter Geoghegan <pg@bowt.ie> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CAH2-Wz=sKJcn+OtfVN9rdg+Ps9e4cuQWNP-9t12UE2d8nEG90Q@mail.gmail.com Backpatch-through: 14 Branch ------ REL_14_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/bbe7aca31db0b9e4758bb67a2d42f1bcc05e0c4b Modified Files -------------- src/backend/access/gin/ginvacuum.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) ^ permalink raw reply [nested|flat] 7+ messages in thread
end of thread, other threads:[~2026-08-22 18:50 UTC | newest] Thread overview: 7+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie> 2026-08-22 18:50 pgsql: Fix GIN posting tree page deletion with incomplete splits. Peter Geoghegan <pg@bowt.ie>
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