postgres.git / summary / log / commit / refs

commit    f87bf848067490fac09489b9be389539b340d1c5
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Mon Jul 27 09:30:26 2015 +0000

    Reuse all-zero pages in GIN.
    
    In GIN, an all-zeros page would be leaked forever, and never reused. Just
    add them to the FSM in vacuum, and they will be reinitialized when grabbed
    from the FSM. On master and 9.5, attempting to access the page's opaque
    struct also caused an assertion failure, although that was otherwise
    harmless.
    
    Reported by Jeff Janes. Backpatch to all supported versions.


src/backend/access/gin/ginvacuum.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/access/gin/ginvacuum.c b/src/backend/access/gin/ginvacuum.c index 8dbffbf55f1..31bb27172ba 100644 --- a/src/backend/access/gin/ginvacuum.c +++ b/src/backend/access/gin/ginvacuum.c @@ -762,7 +762,7 @@ ginvacuumcleanup(PG_FUNCTION_ARGS) LockBuffer(buffer, GIN_SHARE); page = (Page) BufferGetPage(buffer); - if (GinPageIsDeleted(page)) + if (PageIsNew(page) || GinPageIsDeleted(page)) { RecordFreeIndexPage(index, blkno); totFreePages++; [parent: 40ad7822019a]