From 4c0239cb7a7775e3183cb575e62703d71bf3302d Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Wed, 7 Apr 2021 14:35:26 +0900 Subject: [PATCH] Remove redundant memset(0) calls for page init of some index AMs Bloom, GIN, GiST and SP-GiST rely on PageInit() to initialize the contents of a page, and this routine fills entirely a page with zeros for a size of BLCKSZ, including the special space. Those index AMs have been using an extra memset() call to fill with zeros the special page space, or even the whole page, which is not necessary as PageInit() already does this work, so let's remove them. GiST was not doing this extra call, but has commented out a system call that did so since 6236991. While on it, remove one MAXALIGN() for SP-GiST as PageInit() takes care of that. This makes the whole page initialization logic more consistent across all index AMs. Author: Bharath Rupireddy Reviewed-by: Vignesh C, Mahendra Singh Thalor Discussion: https://postgr.es/m/CALj2ACViOo2qyaPT7krWm4LRyRTw9kOXt+g6PfNmYuGA=YHj9A@mail.gmail.com --- contrib/bloom/blinsert.c | 1 - contrib/bloom/blutils.c | 1 - src/backend/access/gin/ginutil.c | 1 - src/backend/access/gist/gistutil.c | 2 -- src/backend/access/spgist/spgutils.c | 3 +-- 5 files changed, 1 insertion(+), 7 deletions(-) diff --git a/contrib/bloom/blinsert.c b/contrib/bloom/blinsert.c index d37ceef753a..c34a640d1c4 100644 --- a/contrib/bloom/blinsert.c +++ b/contrib/bloom/blinsert.c @@ -63,7 +63,6 @@ flushCachedPage(Relation index, BloomBuildState *buildstate) static void initCachedPage(BloomBuildState *buildstate) { - memset(buildstate->data.data, 0, BLCKSZ); BloomInitPage(buildstate->data.data, 0); buildstate->count = 0; } diff --git a/contrib/bloom/blutils.c b/contrib/bloom/blutils.c index 1e505b1da54..754de008d43 100644 --- a/contrib/bloom/blutils.c +++ b/contrib/bloom/blutils.c @@ -411,7 +411,6 @@ BloomInitPage(Page page, uint16 flags) PageInit(page, BLCKSZ, sizeof(BloomPageOpaqueData)); opaque = BloomPageGetOpaque(page); - memset(opaque, 0, sizeof(BloomPageOpaqueData)); opaque->flags = flags; opaque->bloom_page_id = BLOOM_PAGE_ID; } diff --git a/src/backend/access/gin/ginutil.c b/src/backend/access/gin/ginutil.c index 6b9b04cf429..cdd626ff0a4 100644 --- a/src/backend/access/gin/ginutil.c +++ b/src/backend/access/gin/ginutil.c @@ -348,7 +348,6 @@ GinInitPage(Page page, uint32 f, Size pageSize) PageInit(page, pageSize, sizeof(GinPageOpaqueData)); opaque = GinPageGetOpaque(page); - memset(opaque, 0, sizeof(GinPageOpaqueData)); opaque->flags = f; opaque->rightlink = InvalidBlockNumber; } diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index 1ff1bf816f1..8dcd53c4577 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -761,8 +761,6 @@ gistinitpage(Page page, uint32 f) PageInit(page, pageSize, sizeof(GISTPageOpaqueData)); opaque = GistPageGetOpaque(page); - /* page was already zeroed by PageInit, so this is not needed: */ - /* memset(&(opaque->nsn), 0, sizeof(GistNSN)); */ opaque->rightlink = InvalidBlockNumber; opaque->flags = f; opaque->gist_page_id = GIST_PAGE_ID; diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c index 72cbde7e0b6..8d99c9b7626 100644 --- a/src/backend/access/spgist/spgutils.c +++ b/src/backend/access/spgist/spgutils.c @@ -677,9 +677,8 @@ SpGistInitPage(Page page, uint16 f) { SpGistPageOpaque opaque; - PageInit(page, BLCKSZ, MAXALIGN(sizeof(SpGistPageOpaqueData))); + PageInit(page, BLCKSZ, sizeof(SpGistPageOpaqueData)); opaque = SpGistPageGetOpaque(page); - memset(opaque, 0, sizeof(SpGistPageOpaqueData)); opaque->flags = f; opaque->spgist_page_id = SPGIST_PAGE_ID; }