diff options
author | Michael Paquier <michael@paquier.xyz> | 2019-07-10 15:15:23 +0900 |
---|---|---|
committer | Michael Paquier <michael@paquier.xyz> | 2019-07-10 15:15:23 +0900 |
commit | b9e1538fcf35708f19ce3f86c22b9bd91a0d2820 (patch) | |
tree | 1a550c03cf3963288a4fcf6530ff5f02cab89045 /src/backend/access/gist/gistbuildbuffers.c | |
parent | 3337fd192596973936c1cd96294f21f3c6f6e6c7 (diff) | |
download | postgresql-b9e1538fcf35708f19ce3f86c22b9bd91a0d2820.tar.gz postgresql-b9e1538fcf35708f19ce3f86c22b9bd91a0d2820.zip |
Fix variable initialization when using buffering build with GiST
This can cause valgrind to complain, as the flag marking a buffer as a
temporary copy was not getting initialized.
While on it, fill in with zeros newly-created buffer pages. This does
not matter when loading a block from a temporary file, but it makes the
push of an index tuple into a new buffer page safer.
This has been introduced by 1d27dcf, so backpatch all the way down to
9.4.
Author: Alexander Lakhin
Discussion: https://postgr.es/m/15899-0d24fb273b3dd90c@postgresql.org
Backpatch-through: 9.4
Diffstat (limited to 'src/backend/access/gist/gistbuildbuffers.c')
-rw-r--r-- | src/backend/access/gist/gistbuildbuffers.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/access/gist/gistbuildbuffers.c b/src/backend/access/gist/gistbuildbuffers.c index 9b401882c89..3a140aa2f78 100644 --- a/src/backend/access/gist/gistbuildbuffers.c +++ b/src/backend/access/gist/gistbuildbuffers.c @@ -138,6 +138,7 @@ gistGetNodeBuffer(GISTBuildBuffers *gfbb, GISTSTATE *giststate, nodeBuffer->pageBlocknum = InvalidBlockNumber; nodeBuffer->pageBuffer = NULL; nodeBuffer->queuedForEmptying = false; + nodeBuffer->isTemp = false; nodeBuffer->level = level; /* @@ -186,8 +187,8 @@ gistAllocateNewPageBuffer(GISTBuildBuffers *gfbb) { GISTNodeBufferPage *pageBuffer; - pageBuffer = (GISTNodeBufferPage *) MemoryContextAlloc(gfbb->context, - BLCKSZ); + pageBuffer = (GISTNodeBufferPage *) MemoryContextAllocZero(gfbb->context, + BLCKSZ); pageBuffer->prev = InvalidBlockNumber; /* Set page free space */ |