summaryrefslogtreecommitdiff
path: root/src/backend/access/gin/gindatapage.c
diff options
context:
space:
mode:
authorPeter Eisentraut <peter@eisentraut.org>2025-12-03 09:54:15 +0100
committerPeter Eisentraut <peter@eisentraut.org>2025-12-03 09:54:15 +0100
commit756a43689324b473ee07549a6eb7a53a203df5ad (patch)
treeb72ab16ee77de3e82288c76c7b9493b93d378216 /src/backend/access/gin/gindatapage.c
parent8c6bbd674ed810df9af5ec42f6b38c205e3ad365 (diff)
Don't rely on pointer arithmetic with Pointer type
The comment for the Pointer type says 'XXX Pointer arithmetic is done with this, so it can't be void * under "true" ANSI compilers.'. This fixes that. Change from Pointer to use char * explicitly where pointer arithmetic is needed. This makes the meaning of the code clearer locally and removes a dependency on the actual definition of the Pointer type. (The definition of the Pointer type is not changed in this commit.) Reviewed-by: Chao Li <li.evan.chao@gmail.com> Reviewed-by: Bertrand Drouvot <bertranddrouvot.pg@gmail.com> Discussion: https://www.postgresql.org/message-id/4154950a-47ae-4223-bd01-1235cc50e933%40eisentraut.org
Diffstat (limited to 'src/backend/access/gin/gindatapage.c')
-rw-r--r--src/backend/access/gin/gindatapage.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c
index ab19a854cd7..8d9e3727c51 100644
--- a/src/backend/access/gin/gindatapage.c
+++ b/src/backend/access/gin/gindatapage.c
@@ -140,20 +140,20 @@ GinDataLeafPageGetItems(Page page, int *nitems, ItemPointerData advancePast)
{
GinPostingList *seg = GinDataLeafPageGetPostingList(page);
Size len = GinDataLeafPageGetPostingListSize(page);
- Pointer endptr = ((Pointer) seg) + len;
+ char *endptr = (char *) seg + len;
GinPostingList *next;
/* Skip to the segment containing advancePast+1 */
if (ItemPointerIsValid(&advancePast))
{
next = GinNextPostingListSegment(seg);
- while ((Pointer) next < endptr &&
+ while ((char *) next < endptr &&
ginCompareItemPointers(&next->first, &advancePast) <= 0)
{
seg = next;
next = GinNextPostingListSegment(seg);
}
- len = endptr - (Pointer) seg;
+ len = endptr - (char *) seg;
}
if (len > 0)
@@ -1371,8 +1371,8 @@ disassembleLeaf(Page page)
{
disassembledLeaf *leaf;
GinPostingList *seg;
- Pointer segbegin;
- Pointer segend;
+ char *segbegin;
+ char *segend;
leaf = palloc0(sizeof(disassembledLeaf));
dlist_init(&leaf->segments);
@@ -1383,9 +1383,9 @@ disassembleLeaf(Page page)
* Create a leafSegmentInfo entry for each segment.
*/
seg = GinDataLeafPageGetPostingList(page);
- segbegin = (Pointer) seg;
+ segbegin = (char *) seg;
segend = segbegin + GinDataLeafPageGetPostingListSize(page);
- while ((Pointer) seg < segend)
+ while ((char *) seg < segend)
{
leafSegmentInfo *seginfo = palloc(sizeof(leafSegmentInfo));
@@ -1779,7 +1779,7 @@ createPostingTree(Relation index, ItemPointerData *items, uint32 nitems,
Buffer buffer;
Page tmppage;
Page page;
- Pointer ptr;
+ char *ptr;
int nrootitems;
int rootsize;
bool is_build = (buildStats != NULL);
@@ -1795,7 +1795,7 @@ createPostingTree(Relation index, ItemPointerData *items, uint32 nitems,
*/
nrootitems = 0;
rootsize = 0;
- ptr = (Pointer) GinDataLeafPageGetPostingList(tmppage);
+ ptr = (char *) GinDataLeafPageGetPostingList(tmppage);
while (nrootitems < nitems)
{
GinPostingList *segment;