pgsql: Clear out values from dropped columns during REPACK (CONCURRENTL - Mailing list pgsql-committers

From Álvaro Herrera
Subject pgsql: Clear out values from dropped columns during REPACK (CONCURRENTL
Date
Msg-id E1xCxa9-000000008xu-3PBD@gemulon.postgresql.org
Whole thread
List pgsql-committers
Clear out values from dropped columns during REPACK (CONCURRENTLY)

When repacking a table concurrently, some border conditions can cause
a concurrent update to propagate the original old tuple to the transient
table (such as a trigger that returns OLD).  That's essentially just
wasted space, which REPACK is there to remove.  Prevent that by setting
the isnull flag to true for any column cataloged as dropped in tuples
being "replayed" as concurrent updates.

Reported-by: Radim Marek <radim@boringsql.com>
Reviewed-by: Antonin Houska <ah@cybertec.at>
Backpatch: 19
Discussion: https://postgr.es/m/CAJgoLkK2UBzB1J9buCsSUbjf7bOqz-o_0=CeiTruU789BhBw-Q@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/e5d25959cf8761c7dbdd7cfbb91338e94a40e8e2

Modified Files
--------------
src/backend/commands/repack.c                      | 36 +++++++----
.../injection_points/expected/repack_dropped.out   | 47 ++++++++++++++
src/test/modules/injection_points/meson.build      |  1 +
.../injection_points/specs/repack_dropped.spec     | 71 ++++++++++++++++++++++
4 files changed, 144 insertions(+), 11 deletions(-)


pgsql-committers by date:

Previous
From: Amit Langote
Date:
Subject: pgsql: Remove batching from RI fast-path checks
Next
From: Tom Lane
Date:
Subject: pgsql: Fix lcov duplicate directory specification in non-VPATH builds.