• Alexander Korotkov's avatar
    Fix past pd_upper write in ginRedoRecompress() · 5f08accd
    Alexander Korotkov authored
    ginRedoRecompress() replays actions over compressed segments of posting list
    in-place.  However, it might lead to write past pg_upper, because intermediate
    state during playing the changes can take more space than both original state
    and final state.  This commit fixes that by refuse from in-place modification.
    Instead page tail is copied once modification is started, and then it's used
    as the source of original segments.  Backpatch to 9.4 where posting list
    compression was introduced.
    
    Reported-by: Sivasubramanian Ramasubramanian
    Discussion: https://postgr.es/m/1536091151804.6588%40amazon.com
    Author: Alexander Korotkov based on patch from and ideas by Sivasubramanian Ramasubramanian
    Review: Sivasubramanian Ramasubramanian
    Backpatch-through: 9.4
    5f08accd
ginxlog.c 21.2 KB