Remove Item type
authorPeter Eisentraut <peter@eisentraut.org>
Mon, 27 Oct 2025 08:54:16 +0000 (09:54 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Mon, 27 Oct 2025 08:55:59 +0000 (09:55 +0100)
This type is just char * underneath, it provides no real value, no
type safety, and just makes the code one level more mysterious.  It is
more idiomatic to refer to blobs of memory by a combination of void *
and size_t, so change it to that.

Also, since this type hides the pointerness, we can't apply qualifiers
to what is pointed to, which requires some unconstify nonsense.  This
change allows fixing that.

Extension code that uses the Item type can change its code to use
void * to be backward compatible.

Reviewed-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Peter Geoghegan <pg@bowt.ie>
Discussion: https://www.postgresql.org/message-id/flat/c75cccf5-5709-407b-a36a-2ae6570be766@eisentraut.org

29 files changed:
src/backend/access/brin/brin_pageops.c
src/backend/access/brin/brin_xlog.c
src/backend/access/gin/ginentrypage.c
src/backend/access/gin/ginfast.c
src/backend/access/gin/ginvacuum.c
src/backend/access/gin/ginxlog.c
src/backend/access/gist/gist.c
src/backend/access/gist/gistbuild.c
src/backend/access/gist/gistutil.c
src/backend/access/gist/gistxlog.c
src/backend/access/hash/hash_xlog.c
src/backend/access/hash/hashinsert.c
src/backend/access/heap/heapam_xlog.c
src/backend/access/heap/hio.c
src/backend/access/heap/rewriteheap.c
src/backend/access/nbtree/nbtdedup.c
src/backend/access/nbtree/nbtinsert.c
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtsort.c
src/backend/access/nbtree/nbtxlog.c
src/backend/access/spgist/spgdoinsert.c
src/backend/access/spgist/spgutils.c
src/backend/access/spgist/spgxlog.c
src/backend/commands/sequence.c
src/backend/storage/page/bufpage.c
src/include/access/spgist_private.h
src/include/storage/bufpage.h
src/include/storage/item.h [deleted file]
src/tools/pgindent/typedefs.list

index 6d8dd1512d6a79b3cd8536c67ef3733286c163a1..b19c843132ce50d7d4ad807734788634828083c5 100644 (file)
@@ -176,7 +176,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,
        brin_can_do_samepage_update(oldbuf, origsz, newsz))
    {
        START_CRIT_SECTION();
-       if (!PageIndexTupleOverwrite(oldpage, oldoff, (Item) unconstify(BrinTuple *, newtup), newsz))
+       if (!PageIndexTupleOverwrite(oldpage, oldoff, newtup, newsz))
            elog(ERROR, "failed to replace BRIN tuple");
        MarkBufferDirty(oldbuf);
 
@@ -250,8 +250,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange,
            brin_page_init(newpage, BRIN_PAGETYPE_REGULAR);
 
        PageIndexTupleDeleteNoCompact(oldpage, oldoff);
-       newoff = PageAddItem(newpage, (Item) unconstify(BrinTuple *, newtup), newsz,
-                            InvalidOffsetNumber, false, false);
+       newoff = PageAddItem(newpage, newtup, newsz, InvalidOffsetNumber, false, false);
        if (newoff == InvalidOffsetNumber)
            elog(ERROR, "failed to add BRIN tuple to new page");
        MarkBufferDirty(oldbuf);
@@ -408,8 +407,7 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange,
    START_CRIT_SECTION();
    if (extended)
        brin_page_init(page, BRIN_PAGETYPE_REGULAR);
-   off = PageAddItem(page, (Item) tup, itemsz, InvalidOffsetNumber,
-                     false, false);
+   off = PageAddItem(page, tup, itemsz, InvalidOffsetNumber, false, false);
    if (off == InvalidOffsetNumber)
        elog(ERROR, "failed to add BRIN tuple to new page");
    MarkBufferDirty(*buffer);
index 55348140fad3b028b6e127ca3277f25b4e417642..c8b4decb3ec4ef58c87b873dfd0a247e9ad2c6ea 100644 (file)
@@ -87,7 +87,7 @@ brin_xlog_insert_update(XLogReaderState *record,
        if (PageGetMaxOffsetNumber(page) + 1 < offnum)
            elog(PANIC, "brin_xlog_insert_update: invalid max offset number");
 
-       offnum = PageAddItem(page, (Item) tuple, tuplen, offnum, true, false);
+       offnum = PageAddItem(page, tuple, tuplen, offnum, true, false);
        if (offnum == InvalidOffsetNumber)
            elog(PANIC, "brin_xlog_insert_update: failed to add tuple");
 
@@ -189,7 +189,7 @@ brin_xlog_samepage_update(XLogReaderState *record)
 
        offnum = xlrec->offnum;
 
-       if (!PageIndexTupleOverwrite(page, offnum, (Item) brintuple, tuplen))
+       if (!PageIndexTupleOverwrite(page, offnum, brintuple, tuplen))
            elog(PANIC, "brin_xlog_samepage_update: failed to replace tuple");
 
        PageSetLSN(page, lsn);
index ba6bbd562df0c8cac0f7ee22863ff6dd99835120..c05923677004a16e23e0d57ec38360af60bd5ea3 100644 (file)
@@ -563,7 +563,7 @@ entryExecPlaceToPage(GinBtree btree, Buffer buf, GinBtreeStack *stack,
    entryPreparePage(btree, page, off, insertData, updateblkno);
 
    placed = PageAddItem(page,
-                        (Item) insertData->entry,
+                        insertData->entry,
                         IndexTupleSize(insertData->entry),
                         off, false, false);
    if (placed != off)
@@ -684,7 +684,7 @@ entrySplitPage(GinBtree btree, Buffer origbuf,
            lsize += MAXALIGN(IndexTupleSize(itup)) + sizeof(ItemIdData);
        }
 
-       if (PageAddItem(page, (Item) itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
+       if (PageAddItem(page, itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
            elog(ERROR, "failed to add item to index page in \"%s\"",
                 RelationGetRelationName(btree->index));
        ptr += MAXALIGN(IndexTupleSize(itup));
@@ -727,12 +727,12 @@ ginEntryFillRoot(GinBtree btree, Page root,
    IndexTuple  itup;
 
    itup = GinFormInteriorTuple(getRightMostTuple(lpage), lpage, lblkno);
-   if (PageAddItem(root, (Item) itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
+   if (PageAddItem(root, itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
        elog(ERROR, "failed to add item to index root page");
    pfree(itup);
 
    itup = GinFormInteriorTuple(getRightMostTuple(rpage), rpage, rblkno);
-   if (PageAddItem(root, (Item) itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
+   if (PageAddItem(root, itup, IndexTupleSize(itup), InvalidOffsetNumber, false, false) == InvalidOffsetNumber)
        elog(ERROR, "failed to add item to index root page");
    pfree(itup);
 }
index a6d88572cc29b4bcca7f26342a3759f81cda0bf4..5b28dde7541f0aa0bccbc7d4927ab8230bc951fe 100644 (file)
@@ -83,7 +83,7 @@ writeListPage(Relation index, Buffer buffer,
        ptr += this_size;
        size += this_size;
 
-       l = PageAddItem(page, (Item) tuples[i], this_size, off, false, false);
+       l = PageAddItem(page, tuples[i], this_size, off, false, false);
 
        if (l == InvalidOffsetNumber)
            elog(ERROR, "failed to add item to index page in \"%s\"",
@@ -384,7 +384,7 @@ ginHeapTupleFastInsert(GinState *ginstate, GinTupleCollector *collector)
        for (i = 0; i < collector->ntuples; i++)
        {
            tupsize = IndexTupleSize(collector->tuples[i]);
-           l = PageAddItem(page, (Item) collector->tuples[i], tupsize, off, false, false);
+           l = PageAddItem(page, collector->tuples[i], tupsize, off, false, false);
 
            if (l == InvalidOffsetNumber)
                elog(ERROR, "failed to add item to index page in \"%s\"",
index 2d833d6d618753d19a0253d5ed5c84a240557e81..2237efa50bbcff9a878577c1f8c9c9220f0226b4 100644 (file)
@@ -547,7 +547,7 @@ ginVacuumEntryPage(GinVacuumState *gvs, Buffer buffer, BlockNumber *roots, uint3
                    pfree(plist);
                PageIndexTupleDelete(tmppage, i);
 
-               if (PageAddItem(tmppage, (Item) itup, IndexTupleSize(itup), i, false, false) != i)
+               if (PageAddItem(tmppage, itup, IndexTupleSize(itup), i, false, false) != i)
                    elog(ERROR, "failed to add item to index page in \"%s\"",
                         RelationGetRelationName(gvs->index));
 
index fa293ee79d59ee85ddb549adfe9c0fa33c785dd7..75df3d7a6801e8fa2210554b24a6303c7c4388d3 100644 (file)
@@ -93,7 +93,7 @@ ginRedoInsertEntry(Buffer buffer, bool isLeaf, BlockNumber rightblkno, void *rda
 
    itup = &data->tuple;
 
-   if (PageAddItem(page, (Item) itup, IndexTupleSize(itup), offset, false, false) == InvalidOffsetNumber)
+   if (PageAddItem(page, itup, IndexTupleSize(itup), offset, false, false) == InvalidOffsetNumber)
    {
        RelFileLocator locator;
        ForkNumber  forknum;
@@ -573,8 +573,7 @@ ginRedoUpdateMetapage(XLogReaderState *record)
            {
                tupsize = IndexTupleSize(tuples);
 
-               if (PageAddItem(page, (Item) tuples, tupsize, off,
-                               false, false) == InvalidOffsetNumber)
+               if (PageAddItem(page, tuples, tupsize, off, false, false) == InvalidOffsetNumber)
                    elog(ERROR, "failed to add item to index page");
 
                tuples = (IndexTuple) (((char *) tuples) + tupsize);
@@ -654,7 +653,7 @@ ginRedoInsertListPage(XLogReaderState *record)
    {
        tupsize = IndexTupleSize(tuples);
 
-       l = PageAddItem(page, (Item) tuples, tupsize, off, false, false);
+       l = PageAddItem(page, tuples, tupsize, off, false, false);
 
        if (l == InvalidOffsetNumber)
            elog(ERROR, "failed to add item to index page");
index a96796d5c7da9a0589c50f3c637ab7719cb17714..5213cd71e977a26db67fea267cee0659d27203f8 100644 (file)
@@ -430,7 +430,7 @@ gistplacetopage(Relation rel, Size freespace, GISTSTATE *giststate,
            {
                IndexTuple  thistup = (IndexTuple) data;
 
-               if (PageAddItem(ptr->page, (Item) data, IndexTupleSize(thistup), i + FirstOffsetNumber, false, false) == InvalidOffsetNumber)
+               if (PageAddItem(ptr->page, data, IndexTupleSize(thistup), i + FirstOffsetNumber, false, false) == InvalidOffsetNumber)
                    elog(ERROR, "failed to add item to index page in \"%s\"", RelationGetRelationName(rel));
 
                /*
@@ -551,8 +551,7 @@ gistplacetopage(Relation rel, Size freespace, GISTSTATE *giststate,
            if (ntup == 1)
            {
                /* One-for-one replacement, so use PageIndexTupleOverwrite */
-               if (!PageIndexTupleOverwrite(page, oldoffnum, (Item) *itup,
-                                            IndexTupleSize(*itup)))
+               if (!PageIndexTupleOverwrite(page, oldoffnum, *itup, IndexTupleSize(*itup)))
                    elog(ERROR, "failed to add item to index page in \"%s\"",
                         RelationGetRelationName(rel));
            }
index 9b2ec9815f17ed81d2ae91aec4f958426c5c5eed..be0fd5b753d7ec8ad066dfc518b5ea0bf8ad9dd8 100644 (file)
@@ -558,7 +558,7 @@ gist_indexsortbuild_levelstate_flush(GISTBuildState *state,
        {
            IndexTuple  thistup = (IndexTuple) data;
 
-           if (PageAddItem(target, (Item) data, IndexTupleSize(thistup), i + FirstOffsetNumber, false, false) == InvalidOffsetNumber)
+           if (PageAddItem(target, data, IndexTupleSize(thistup), i + FirstOffsetNumber, false, false) == InvalidOffsetNumber)
                elog(ERROR, "failed to add item to index page in \"%s\"", RelationGetRelationName(state->indexrel));
 
            data += IndexTupleSize(thistup);
index cdc4ab3151be1c5eb6dc27a6144240c47c95648b..98b7960834121eda529e7472b2b3803103461695 100644 (file)
@@ -44,7 +44,7 @@ gistfillbuffer(Page page, IndexTuple *itup, int len, OffsetNumber off)
        Size        sz = IndexTupleSize(itup[i]);
        OffsetNumber l;
 
-       l = PageAddItem(page, (Item) itup[i], sz, off, false, false);
+       l = PageAddItem(page, itup[i], sz, off, false, false);
        if (l == InvalidOffsetNumber)
            elog(ERROR, "failed to add item to GiST index page, item %d out of %d, size %d bytes",
                 i, len, (int) sz);
index 42fee1f0764fa7b33aa99f8b94ef08242b8b9e3b..3f5340b92068f68db06f5a35dd0e1b7fb9046e87 100644 (file)
@@ -98,7 +98,7 @@ gistRedoPageUpdateRecord(XLogReaderState *record)
            data += sizeof(OffsetNumber);
            itup = (IndexTuple) data;
            itupsize = IndexTupleSize(itup);
-           if (!PageIndexTupleOverwrite(page, offnum, (Item) itup, itupsize))
+           if (!PageIndexTupleOverwrite(page, offnum, itup, itupsize))
                elog(ERROR, "failed to add item to GiST index page, size %d bytes",
                     (int) itupsize);
            data += itupsize;
@@ -133,7 +133,7 @@ gistRedoPageUpdateRecord(XLogReaderState *record)
 
                data += sz;
 
-               l = PageAddItem(page, (Item) itup, sz, off, false, false);
+               l = PageAddItem(page, itup, sz, off, false, false);
                if (l == InvalidOffsetNumber)
                    elog(ERROR, "failed to add item to GiST index page, size %d bytes",
                         (int) sz);
index d963a0c370292423dad71203feccc28fc0c3bfd2..2a0145f3c9b18afaafb6149ba2dae6ac0ad84fd9 100644 (file)
@@ -137,8 +137,7 @@ hash_xlog_insert(XLogReaderState *record)
 
        page = BufferGetPage(buffer);
 
-       if (PageAddItem(page, (Item) datapos, datalen, xlrec->offnum,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(page, datapos, datalen, xlrec->offnum, false, false) == InvalidOffsetNumber)
            elog(PANIC, "hash_xlog_insert: failed to add item");
 
        PageSetLSN(page, lsn);
@@ -557,7 +556,7 @@ hash_xlog_move_page_contents(XLogReaderState *record)
 
                data += itemsz;
 
-               l = PageAddItem(writepage, (Item) itup, itemsz, towrite[ninserted], false, false);
+               l = PageAddItem(writepage, itup, itemsz, towrite[ninserted], false, false);
                if (l == InvalidOffsetNumber)
                    elog(ERROR, "hash_xlog_move_page_contents: failed to add item to hash index page, size %d bytes",
                         (int) itemsz);
@@ -689,7 +688,7 @@ hash_xlog_squeeze_page(XLogReaderState *record)
 
                data += itemsz;
 
-               l = PageAddItem(writepage, (Item) itup, itemsz, towrite[ninserted], false, false);
+               l = PageAddItem(writepage, itup, itemsz, towrite[ninserted], false, false);
                if (l == InvalidOffsetNumber)
                    elog(ERROR, "hash_xlog_squeeze_page: failed to add item to hash index page, size %d bytes",
                         (int) itemsz);
index 10de1580dc211f92ed0e9e1f3799d160f2b4f8f4..0f9f97f7e3d09c0cdfe0816b2e35e92093622e50 100644 (file)
@@ -310,10 +310,8 @@ _hash_pgaddtup(Relation rel, Buffer buf, Size itemsize, IndexTuple itup,
        itup_off = _hash_binsearch(page, hashkey);
    }
 
-   if (PageAddItem(page, (Item) itup, itemsize, itup_off, false, false)
-       == InvalidOffsetNumber)
-       elog(ERROR, "failed to add index item to \"%s\"",
-            RelationGetRelationName(rel));
+   if (PageAddItem(page, itup, itemsize, itup_off, false, false) == InvalidOffsetNumber)
+       elog(ERROR, "failed to add index item to \"%s\"", RelationGetRelationName(rel));
 
    return itup_off;
 }
@@ -352,10 +350,8 @@ _hash_pgaddmultitup(Relation rel, Buffer buf, IndexTuple *itups,
 
        itup_offsets[i] = itup_off;
 
-       if (PageAddItem(page, (Item) itups[i], itemsize, itup_off, false, false)
-           == InvalidOffsetNumber)
-           elog(ERROR, "failed to add index item to \"%s\"",
-                RelationGetRelationName(rel));
+       if (PageAddItem(page, itups[i], itemsize, itup_off, false, false) == InvalidOffsetNumber)
+           elog(ERROR, "failed to add index item to \"%s\"", RelationGetRelationName(rel));
    }
 }
 
index 230d9888793b7c0432da2dc440431c63dc1a778c..11cb3f74da5b5d1d33427a223cb378bfe244188b 100644 (file)
@@ -572,8 +572,7 @@ heap_xlog_insert(XLogReaderState *record)
        HeapTupleHeaderSetCmin(htup, FirstCommandId);
        htup->t_ctid = target_tid;
 
-       if (PageAddItem(page, (Item) htup, newlen, xlrec->offnum,
-                       true, true) == InvalidOffsetNumber)
+       if (PageAddItem(page, htup, newlen, xlrec->offnum, true, true) == InvalidOffsetNumber)
            elog(PANIC, "failed to add tuple");
 
        freespace = PageGetHeapFreeSpace(page); /* needed to update FSM below */
@@ -713,7 +712,7 @@ heap_xlog_multi_insert(XLogReaderState *record)
            ItemPointerSetBlockNumber(&htup->t_ctid, blkno);
            ItemPointerSetOffsetNumber(&htup->t_ctid, offnum);
 
-           offnum = PageAddItem(page, (Item) htup, newlen, offnum, true, true);
+           offnum = PageAddItem(page, htup, newlen, offnum, true, true);
            if (offnum == InvalidOffsetNumber)
                elog(PANIC, "failed to add tuple");
        }
@@ -1034,7 +1033,7 @@ heap_xlog_update(XLogReaderState *record, bool hot_update)
        /* Make sure there is no forward chain link in t_ctid */
        htup->t_ctid = newtid;
 
-       offnum = PageAddItem(page, (Item) htup, newlen, offnum, true, true);
+       offnum = PageAddItem(page, htup, newlen, offnum, true, true);
        if (offnum == InvalidOffsetNumber)
            elog(PANIC, "failed to add tuple");
 
index c482c9d61b2655debc805b9cc7c05926b2a9b184..24c83e349c602c2f3a932ae7fe5bb30e321a4c3a 100644 (file)
@@ -58,9 +58,7 @@ RelationPutHeapTuple(Relation relation,
    /* Add the tuple to the page */
    pageHeader = BufferGetPage(buffer);
 
-   offnum = PageAddItem(pageHeader, (Item) tuple->t_data,
-                        tuple->t_len, InvalidOffsetNumber, false, true);
-
+   offnum = PageAddItem(pageHeader, tuple->t_data, tuple->t_len, InvalidOffsetNumber, false, true);
    if (offnum == InvalidOffsetNumber)
        elog(PANIC, "failed to add tuple to page");
 
index e6d2b5fced198dc53b7e668c3cfff8d05674f12b..8061e92f044ec688bde926b49c8ba7d6832f5722 100644 (file)
@@ -673,8 +673,7 @@ raw_heap_insert(RewriteState state, HeapTuple tup)
    }
 
    /* And now we can insert the tuple into the page */
-   newoff = PageAddItem(page, (Item) heaptup->t_data, heaptup->t_len,
-                        InvalidOffsetNumber, false, true);
+   newoff = PageAddItem(page, heaptup->t_data, heaptup->t_len, InvalidOffsetNumber, false, true);
    if (newoff == InvalidOffsetNumber)
        elog(ERROR, "failed to add tuple");
 
index ab0b6946cb031e1bafd4ac8d2875587ed9ab1a68..07e63962f81b4f6a78da0380972ef3f3d9dee255 100644 (file)
@@ -126,8 +126,7 @@ _bt_dedup_pass(Relation rel, Buffer buf, IndexTuple newitem, Size newitemsz,
        Size        hitemsz = ItemIdGetLength(hitemid);
        IndexTuple  hitem = (IndexTuple) PageGetItem(page, hitemid);
 
-       if (PageAddItem(newpage, (Item) hitem, hitemsz, P_HIKEY,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(newpage, hitem, hitemsz, P_HIKEY, false, false) == InvalidOffsetNumber)
            elog(ERROR, "deduplication failed to add highkey");
    }
 
@@ -570,8 +569,7 @@ _bt_dedup_finish_pending(Page newpage, BTDedupState state)
        tuplesz = IndexTupleSize(state->base);
        Assert(tuplesz == MAXALIGN(IndexTupleSize(state->base)));
        Assert(tuplesz <= BTMaxItemSize);
-       if (PageAddItem(newpage, (Item) state->base, tuplesz, tupoff,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(newpage, state->base, tuplesz, tupoff, false, false) == InvalidOffsetNumber)
            elog(ERROR, "deduplication failed to add tuple to page");
 
        spacesaving = 0;
@@ -590,8 +588,7 @@ _bt_dedup_finish_pending(Page newpage, BTDedupState state)
 
        Assert(tuplesz == MAXALIGN(IndexTupleSize(final)));
        Assert(tuplesz <= BTMaxItemSize);
-       if (PageAddItem(newpage, (Item) final, tuplesz, tupoff, false,
-                       false) == InvalidOffsetNumber)
+       if (PageAddItem(newpage, final, tuplesz, tupoff, false, false) == InvalidOffsetNumber)
            elog(ERROR, "deduplication failed to add tuple to page");
 
        pfree(final);
index 85d97a970ac87914591af2a071b5a2355bb89293..42727e80c302bbb3952684d3c25493f2d07938b6 100644 (file)
@@ -1278,8 +1278,7 @@ _bt_insertonpg(Relation rel,
        if (postingoff != 0)
            memcpy(oposting, nposting, MAXALIGN(IndexTupleSize(nposting)));
 
-       if (PageAddItem(page, (Item) itup, itemsz, newitemoff, false,
-                       false) == InvalidOffsetNumber)
+       if (PageAddItem(page, itup, itemsz, newitemoff, false, false) == InvalidOffsetNumber)
            elog(PANIC, "failed to add new item to block %u in index \"%s\"",
                 BufferGetBlockNumber(buf), RelationGetRelationName(rel));
 
@@ -1700,8 +1699,7 @@ _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key, Buffer buf,
    Assert(BTreeTupleGetNAtts(lefthighkey, rel) <=
           IndexRelationGetNumberOfKeyAttributes(rel));
    Assert(itemsz == MAXALIGN(IndexTupleSize(lefthighkey)));
-   if (PageAddItem(leftpage, (Item) lefthighkey, itemsz, afterleftoff, false,
-                   false) == InvalidOffsetNumber)
+   if (PageAddItem(leftpage, lefthighkey, itemsz, afterleftoff, false, false) == InvalidOffsetNumber)
        elog(ERROR, "failed to add high key to the left sibling"
             " while splitting block %u of index \"%s\"",
             origpagenumber, RelationGetRelationName(rel));
@@ -1771,8 +1769,7 @@ _bt_split(Relation rel, Relation heaprel, BTScanInsert itup_key, Buffer buf,
        Assert(BTreeTupleGetNAtts(righthighkey, rel) > 0);
        Assert(BTreeTupleGetNAtts(righthighkey, rel) <=
               IndexRelationGetNumberOfKeyAttributes(rel));
-       if (PageAddItem(rightpage, (Item) righthighkey, itemsz, afterrightoff,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(rightpage, righthighkey, itemsz, afterrightoff, false, false) == InvalidOffsetNumber)
        {
            elog(ERROR, "failed to add high key to the right sibling"
                 " while splitting block %u of index \"%s\"",
@@ -2537,8 +2534,7 @@ _bt_newlevel(Relation rel, Relation heaprel, Buffer lbuf, Buffer rbuf)
     * benefit of _bt_restore_page().
     */
    Assert(BTreeTupleGetNAtts(left_item, rel) == 0);
-   if (PageAddItem(rootpage, (Item) left_item, left_item_sz, P_HIKEY,
-                   false, false) == InvalidOffsetNumber)
+   if (PageAddItem(rootpage, left_item, left_item_sz, P_HIKEY, false, false) == InvalidOffsetNumber)
        elog(PANIC, "failed to add leftkey to new root page"
             " while splitting block %u of index \"%s\"",
             BufferGetBlockNumber(lbuf), RelationGetRelationName(rel));
@@ -2549,8 +2545,7 @@ _bt_newlevel(Relation rel, Relation heaprel, Buffer lbuf, Buffer rbuf)
    Assert(BTreeTupleGetNAtts(right_item, rel) > 0);
    Assert(BTreeTupleGetNAtts(right_item, rel) <=
           IndexRelationGetNumberOfKeyAttributes(rel));
-   if (PageAddItem(rootpage, (Item) right_item, right_item_sz, P_FIRSTKEY,
-                   false, false) == InvalidOffsetNumber)
+   if (PageAddItem(rootpage, right_item, right_item_sz, P_FIRSTKEY, false, false) == InvalidOffsetNumber)
        elog(PANIC, "failed to add rightkey to new root page"
             " while splitting block %u of index \"%s\"",
             BufferGetBlockNumber(lbuf), RelationGetRelationName(rel));
@@ -2654,8 +2649,7 @@ _bt_pgaddtup(Page page,
        itemsize = sizeof(IndexTupleData);
    }
 
-   if (unlikely(PageAddItem(page, (Item) itup, itemsize, itup_off, false,
-                            false) == InvalidOffsetNumber))
+   if (unlikely(PageAddItem(page, itup, itemsize, itup_off, false, false) == InvalidOffsetNumber))
        return false;
 
    return true;
index c79dd38ee18f3bb59b090615e315513fbf58aa05..30b43a4dd18de17ab30deb1db29608262ad2cde1 100644 (file)
@@ -1194,8 +1194,7 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
 
        itup = updatable[i]->itup;
        itemsz = MAXALIGN(IndexTupleSize(itup));
-       if (!PageIndexTupleOverwrite(page, updatedoffset, (Item) itup,
-                                    itemsz))
+       if (!PageIndexTupleOverwrite(page, updatedoffset, itup, itemsz))
            elog(PANIC, "failed to update partially dead item in block %u of index \"%s\"",
                 BufferGetBlockNumber(buf), RelationGetRelationName(rel));
    }
@@ -1314,8 +1313,7 @@ _bt_delitems_delete(Relation rel, Buffer buf,
 
        itup = updatable[i]->itup;
        itemsz = MAXALIGN(IndexTupleSize(itup));
-       if (!PageIndexTupleOverwrite(page, updatedoffset, (Item) itup,
-                                    itemsz))
+       if (!PageIndexTupleOverwrite(page, updatedoffset, itup, itemsz))
            elog(PANIC, "failed to update partially dead item in block %u of index \"%s\"",
                 BufferGetBlockNumber(buf), RelationGetRelationName(rel));
    }
@@ -2239,8 +2237,7 @@ _bt_mark_page_halfdead(Relation rel, Relation heaprel, Buffer leafbuf,
    else
        BTreeTupleSetTopParent(&trunctuple, InvalidBlockNumber);
 
-   if (!PageIndexTupleOverwrite(page, P_HIKEY, (Item) &trunctuple,
-                                IndexTupleSize(&trunctuple)))
+   if (!PageIndexTupleOverwrite(page, P_HIKEY, &trunctuple, IndexTupleSize(&trunctuple)))
        elog(ERROR, "could not overwrite high key in half-dead page");
 
    /* Must mark buffers dirty before XLogInsert */
index 8828a7a8f89524af9ac3973a174ef846cd102ced..6b618266a7f08efb188b7481459fa30e0f4d0752 100644 (file)
@@ -731,8 +731,7 @@ _bt_sortaddtup(Page page,
        itemsize = sizeof(IndexTupleData);
    }
 
-   if (PageAddItem(page, (Item) itup, itemsize, itup_off,
-                   false, false) == InvalidOffsetNumber)
+   if (PageAddItem(page, itup, itemsize, itup_off, false, false) == InvalidOffsetNumber)
        elog(ERROR, "failed to add item to the index page");
 }
 
@@ -934,8 +933,7 @@ _bt_buildadd(BTWriteState *wstate, BTPageState *state, IndexTuple itup,
            Assert(IndexTupleSize(oitup) > last_truncextra);
            truncated = _bt_truncate(wstate->index, lastleft, oitup,
                                     wstate->inskey);
-           if (!PageIndexTupleOverwrite(opage, P_HIKEY, (Item) truncated,
-                                        IndexTupleSize(truncated)))
+           if (!PageIndexTupleOverwrite(opage, P_HIKEY, truncated, IndexTupleSize(truncated)))
                elog(ERROR, "failed to add high key to the index page");
            pfree(truncated);
 
index 69ea668bb0d923474fcf925e992f27b430e17ff6..d4a26de06a3d802ad9390247beaacb82e239b011 100644 (file)
@@ -38,7 +38,7 @@ _bt_restore_page(Page page, char *from, int len)
    IndexTupleData itupdata;
    Size        itemsz;
    char       *end = from + len;
-   Item        items[MaxIndexTuplesPerPage];
+   void       *items[MaxIndexTuplesPerPage];
    uint16      itemsizes[MaxIndexTuplesPerPage];
    int         i;
    int         nitems;
@@ -53,16 +53,15 @@ _bt_restore_page(Page page, char *from, int len)
    {
        /*
         * As we step through the items, 'from' won't always be properly
-        * aligned, so we need to use memcpy().  Further, we use Item (which
-        * is just a char*) here for our items array for the same reason;
-        * wouldn't want the compiler or anyone thinking that an item is
-        * aligned when it isn't.
+        * aligned, so we need to use memcpy().  Further, we use void * here
+        * for our items array for the same reason; wouldn't want the compiler
+        * or anyone thinking that an item is aligned when it isn't.
         */
        memcpy(&itupdata, from, sizeof(IndexTupleData));
        itemsz = IndexTupleSize(&itupdata);
        itemsz = MAXALIGN(itemsz);
 
-       items[i] = (Item) from;
+       items[i] = from;
        itemsizes[i] = itemsz;
        i++;
 
@@ -72,8 +71,7 @@ _bt_restore_page(Page page, char *from, int len)
 
    for (i = nitems - 1; i >= 0; i--)
    {
-       if (PageAddItem(page, items[i], itemsizes[i], nitems - i,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(page, items[i], itemsizes[i], nitems - i, false, false) == InvalidOffsetNumber)
            elog(PANIC, "_bt_restore_page: cannot add item to page");
    }
 }
@@ -186,8 +184,7 @@ btree_xlog_insert(bool isleaf, bool ismeta, bool posting,
        if (!posting)
        {
            /* Simple retail insertion */
-           if (PageAddItem(page, (Item) datapos, datalen, xlrec->offnum,
-                           false, false) == InvalidOffsetNumber)
+           if (PageAddItem(page, datapos, datalen, xlrec->offnum, false, false) == InvalidOffsetNumber)
                elog(PANIC, "failed to add new item");
        }
        else
@@ -225,8 +222,7 @@ btree_xlog_insert(bool isleaf, bool ismeta, bool posting,
 
            /* Insert "final" new item (not orignewitem from WAL stream) */
            Assert(IndexTupleSize(newitem) == datalen);
-           if (PageAddItem(page, (Item) newitem, datalen, xlrec->offnum,
-                           false, false) == InvalidOffsetNumber)
+           if (PageAddItem(page, newitem, datalen, xlrec->offnum, false, false) == InvalidOffsetNumber)
                elog(PANIC, "failed to add posting split new item");
        }
 
@@ -368,8 +364,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
 
        /* Add high key tuple from WAL record to temp page */
        leftoff = P_HIKEY;
-       if (PageAddItem(leftpage, (Item) left_hikey, left_hikeysz, P_HIKEY,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(leftpage, left_hikey, left_hikeysz, P_HIKEY, false, false) == InvalidOffsetNumber)
            elog(ERROR, "failed to add high key to left page after split");
        leftoff = OffsetNumberNext(leftoff);
 
@@ -384,9 +379,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
            {
                Assert(newitemonleft ||
                       xlrec->firstrightoff == xlrec->newitemoff);
-               if (PageAddItem(leftpage, (Item) nposting,
-                               MAXALIGN(IndexTupleSize(nposting)), leftoff,
-                               false, false) == InvalidOffsetNumber)
+               if (PageAddItem(leftpage, nposting, MAXALIGN(IndexTupleSize(nposting)), leftoff, false, false) == InvalidOffsetNumber)
                    elog(ERROR, "failed to add new posting list item to left page after split");
                leftoff = OffsetNumberNext(leftoff);
                continue;       /* don't insert oposting */
@@ -395,8 +388,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
            /* add the new item if it was inserted on left page */
            else if (newitemonleft && off == xlrec->newitemoff)
            {
-               if (PageAddItem(leftpage, (Item) newitem, newitemsz, leftoff,
-                               false, false) == InvalidOffsetNumber)
+               if (PageAddItem(leftpage, newitem, newitemsz, leftoff, false, false) == InvalidOffsetNumber)
                    elog(ERROR, "failed to add new item to left page after split");
                leftoff = OffsetNumberNext(leftoff);
            }
@@ -404,8 +396,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
            itemid = PageGetItemId(origpage, off);
            itemsz = ItemIdGetLength(itemid);
            item = (IndexTuple) PageGetItem(origpage, itemid);
-           if (PageAddItem(leftpage, (Item) item, itemsz, leftoff,
-                           false, false) == InvalidOffsetNumber)
+           if (PageAddItem(leftpage, item, itemsz, leftoff, false, false) == InvalidOffsetNumber)
                elog(ERROR, "failed to add old item to left page after split");
            leftoff = OffsetNumberNext(leftoff);
        }
@@ -413,8 +404,7 @@ btree_xlog_split(bool newitemonleft, XLogReaderState *record)
        /* cope with possibility that newitem goes at the end */
        if (newitemonleft && off == xlrec->newitemoff)
        {
-           if (PageAddItem(leftpage, (Item) newitem, newitemsz, leftoff,
-                           false, false) == InvalidOffsetNumber)
+           if (PageAddItem(leftpage, newitem, newitemsz, leftoff, false, false) == InvalidOffsetNumber)
                elog(ERROR, "failed to add new item to left page after split");
            leftoff = OffsetNumberNext(leftoff);
        }
@@ -503,8 +493,7 @@ btree_xlog_dedup(XLogReaderState *record)
            Size        itemsz = ItemIdGetLength(itemid);
            IndexTuple  item = (IndexTuple) PageGetItem(page, itemid);
 
-           if (PageAddItem(newpage, (Item) item, itemsz, P_HIKEY,
-                           false, false) == InvalidOffsetNumber)
+           if (PageAddItem(newpage, item, itemsz, P_HIKEY, false, false) == InvalidOffsetNumber)
                elog(ERROR, "deduplication failed to add highkey");
        }
 
@@ -580,8 +569,7 @@ btree_xlog_updates(Page page, OffsetNumber *updatedoffsets,
 
        /* Overwrite updated version of tuple */
        itemsz = MAXALIGN(IndexTupleSize(vacposting->itup));
-       if (!PageIndexTupleOverwrite(page, updatedoffsets[i],
-                                    (Item) vacposting->itup, itemsz))
+       if (!PageIndexTupleOverwrite(page, updatedoffsets[i], vacposting->itup, itemsz))
            elog(PANIC, "failed to update partially dead item");
 
        pfree(vacposting->itup);
@@ -788,8 +776,7 @@ btree_xlog_mark_page_halfdead(uint8 info, XLogReaderState *record)
    trunctuple.t_info = sizeof(IndexTupleData);
    BTreeTupleSetTopParent(&trunctuple, xlrec->topparent);
 
-   if (PageAddItem(page, (Item) &trunctuple, sizeof(IndexTupleData), P_HIKEY,
-                   false, false) == InvalidOffsetNumber)
+   if (PageAddItem(page, &trunctuple, sizeof(IndexTupleData), P_HIKEY, false, false) == InvalidOffsetNumber)
        elog(ERROR, "could not add dummy high key to half-dead page");
 
    PageSetLSN(page, lsn);
@@ -923,8 +910,7 @@ btree_xlog_unlink_page(uint8 info, XLogReaderState *record)
        trunctuple.t_info = sizeof(IndexTupleData);
        BTreeTupleSetTopParent(&trunctuple, xlrec->leaftopparent);
 
-       if (PageAddItem(page, (Item) &trunctuple, sizeof(IndexTupleData), P_HIKEY,
-                       false, false) == InvalidOffsetNumber)
+       if (PageAddItem(page, &trunctuple, sizeof(IndexTupleData), P_HIKEY, false, false) == InvalidOffsetNumber)
            elog(ERROR, "could not add dummy high key to half-dead page");
 
        PageSetLSN(page, lsn);
index af6b27b2135acb9d06edcdc8bc4ade02140fb488..e00bd0e26368a9d83fddb96eacd5737485ec777d 100644 (file)
@@ -165,8 +165,7 @@ spgPageIndexMultiDelete(SpGistState *state, Page page,
        if (tuple == NULL || tuple->tupstate != tupstate)
            tuple = spgFormDeadTuple(state, tupstate, blkno, offnum);
 
-       if (PageAddItem(page, (Item) tuple, tuple->size,
-                       itemno, false, false) != itemno)
+       if (PageAddItem(page, tuple, tuple->size, itemno, false, false) != itemno)
            elog(ERROR, "failed to add item of size %u to SPGiST index page",
                 tuple->size);
 
@@ -222,7 +221,7 @@ addLeafTuple(Relation index, SpGistState *state, SpGistLeafTuple leafTuple,
        /* Tuple is not part of a chain */
        SGLT_SET_NEXTOFFSET(leafTuple, InvalidOffsetNumber);
        current->offnum = SpGistPageAddNewItem(state, current->page,
-                                              (Item) leafTuple, leafTuple->size,
+                                              leafTuple, leafTuple->size,
                                               NULL, false);
 
        xlrec.offnumLeaf = current->offnum;
@@ -255,7 +254,7 @@ addLeafTuple(Relation index, SpGistState *state, SpGistLeafTuple leafTuple,
        {
            SGLT_SET_NEXTOFFSET(leafTuple, SGLT_GET_NEXTOFFSET(head));
            offnum = SpGistPageAddNewItem(state, current->page,
-                                         (Item) leafTuple, leafTuple->size,
+                                         leafTuple, leafTuple->size,
                                          NULL, false);
 
            /*
@@ -274,7 +273,7 @@ addLeafTuple(Relation index, SpGistState *state, SpGistLeafTuple leafTuple,
            SGLT_SET_NEXTOFFSET(leafTuple, InvalidOffsetNumber);
            PageIndexTupleDelete(current->page, current->offnum);
            if (PageAddItem(current->page,
-                           (Item) leafTuple, leafTuple->size,
+                           leafTuple, leafTuple->size,
                            current->offnum, false, false) != current->offnum)
                elog(ERROR, "failed to add item of size %u to SPGiST index page",
                     leafTuple->size);
@@ -478,8 +477,7 @@ moveLeafs(Relation index, SpGistState *state,
             */
            SGLT_SET_NEXTOFFSET(it, r);
 
-           r = SpGistPageAddNewItem(state, npage, (Item) it, it->size,
-                                    &startOffset, false);
+           r = SpGistPageAddNewItem(state, npage, it, it->size, &startOffset, false);
 
            toInsert[nInsert] = r;
            nInsert++;
@@ -492,9 +490,7 @@ moveLeafs(Relation index, SpGistState *state,
 
    /* add the new tuple as well */
    SGLT_SET_NEXTOFFSET(newLeafTuple, r);
-   r = SpGistPageAddNewItem(state, npage,
-                            (Item) newLeafTuple, newLeafTuple->size,
-                            &startOffset, false);
+   r = SpGistPageAddNewItem(state, npage, newLeafTuple, newLeafTuple->size, &startOffset, false);
    toInsert[nInsert] = r;
    nInsert++;
    memcpy(leafptr, newLeafTuple, newLeafTuple->size);
@@ -1226,7 +1222,7 @@ doPickSplit(Relation index, SpGistState *state,
 
        /* Insert it on page */
        newoffset = SpGistPageAddNewItem(state, BufferGetPage(leafBuffer),
-                                        (Item) it, it->size,
+                                        it, it->size,
                                         &startOffsets[leafPageSelect[i]],
                                         false);
        toInsert[i] = newoffset;
@@ -1268,7 +1264,7 @@ doPickSplit(Relation index, SpGistState *state,
        current->page = parent->page;
        xlrec.offnumInner = current->offnum =
            SpGistPageAddNewItem(state, current->page,
-                                (Item) innerTuple, innerTuple->size,
+                                innerTuple, innerTuple->size,
                                 NULL, false);
 
        /*
@@ -1302,7 +1298,7 @@ doPickSplit(Relation index, SpGistState *state,
        current->page = BufferGetPage(current->buffer);
        xlrec.offnumInner = current->offnum =
            SpGistPageAddNewItem(state, current->page,
-                                (Item) innerTuple, innerTuple->size,
+                                innerTuple, innerTuple->size,
                                 NULL, false);
 
        /* Done modifying new current buffer, mark it dirty */
@@ -1340,7 +1336,7 @@ doPickSplit(Relation index, SpGistState *state,
        xlrec.innerIsParent = false;
 
        xlrec.offnumInner = current->offnum =
-           PageAddItem(current->page, (Item) innerTuple, innerTuple->size,
+           PageAddItem(current->page, innerTuple, innerTuple->size,
                        InvalidOffsetNumber, false, false);
        if (current->offnum != FirstOffsetNumber)
            elog(ERROR, "failed to add item of size %u to SPGiST index page",
@@ -1547,7 +1543,7 @@ spgAddNodeAction(Relation index, SpGistState *state,
 
        PageIndexTupleDelete(current->page, current->offnum);
        if (PageAddItem(current->page,
-                       (Item) newInnerTuple, newInnerTuple->size,
+                       newInnerTuple, newInnerTuple->size,
                        current->offnum, false, false) != current->offnum)
            elog(ERROR, "failed to add item of size %u to SPGiST index page",
                 newInnerTuple->size);
@@ -1631,7 +1627,7 @@ spgAddNodeAction(Relation index, SpGistState *state,
        /* insert new ... */
        xlrec.offnumNew = current->offnum =
            SpGistPageAddNewItem(state, current->page,
-                                (Item) newInnerTuple, newInnerTuple->size,
+                                newInnerTuple, newInnerTuple->size,
                                 NULL, false);
 
        MarkBufferDirty(current->buffer);
@@ -1654,7 +1650,7 @@ spgAddNodeAction(Relation index, SpGistState *state,
                                  current->blkno, current->offnum);
 
        PageIndexTupleDelete(saveCurrent.page, saveCurrent.offnum);
-       if (PageAddItem(saveCurrent.page, (Item) dt, dt->size,
+       if (PageAddItem(saveCurrent.page, dt, dt->size,
                        saveCurrent.offnum,
                        false, false) != saveCurrent.offnum)
            elog(ERROR, "failed to add item of size %u to SPGiST index page",
@@ -1818,7 +1814,7 @@ spgSplitNodeAction(Relation index, SpGistState *state,
     */
    PageIndexTupleDelete(current->page, current->offnum);
    xlrec.offnumPrefix = PageAddItem(current->page,
-                                    (Item) prefixTuple, prefixTuple->size,
+                                    prefixTuple, prefixTuple->size,
                                     current->offnum, false, false);
    if (xlrec.offnumPrefix != current->offnum)
        elog(ERROR, "failed to add item of size %u to SPGiST index page",
@@ -1832,7 +1828,7 @@ spgSplitNodeAction(Relation index, SpGistState *state,
        postfixBlkno = current->blkno;
        xlrec.offnumPostfix = postfixOffset =
            SpGistPageAddNewItem(state, current->page,
-                                (Item) postfixTuple, postfixTuple->size,
+                                postfixTuple, postfixTuple->size,
                                 NULL, false);
        xlrec.postfixBlkSame = true;
    }
@@ -1841,7 +1837,7 @@ spgSplitNodeAction(Relation index, SpGistState *state,
        postfixBlkno = BufferGetBlockNumber(newBuffer);
        xlrec.offnumPostfix = postfixOffset =
            SpGistPageAddNewItem(state, BufferGetPage(newBuffer),
-                                (Item) postfixTuple, postfixTuple->size,
+                                postfixTuple, postfixTuple->size,
                                 NULL, false);
        MarkBufferDirty(newBuffer);
        xlrec.postfixBlkSame = false;
index 9b86c016acb37b2b274d96ea7a9618adf5243b56..245ec05e4bbb9f2473156a37f85acf6fc1e6fbd2 100644 (file)
@@ -1200,7 +1200,7 @@ spgExtractNodeLabels(SpGistState *state, SpGistInnerTuple innerTuple)
  * rather than returning InvalidOffsetNumber.
  */
 OffsetNumber
-SpGistPageAddNewItem(SpGistState *state, Page page, Item item, Size size,
+SpGistPageAddNewItem(SpGistState *state, Page page, const void *item, Size size,
                     OffsetNumber *startOffset, bool errorOK)
 {
    SpGistPageOpaque opaque = SpGistPageGetOpaque(page);
index d4620c915d0cc9998407d9eb140c2352cf8791c4..b7110302b986726e0be88adf5ad1f9759d344b05 100644 (file)
@@ -47,7 +47,7 @@ fillFakeState(SpGistState *state, spgxlogState stateSrc)
  * existing tuple, it had better be a placeholder tuple.
  */
 static void
-addOrReplaceTuple(Page page, Item tuple, int size, OffsetNumber offset)
+addOrReplaceTuple(Page page, const void *tuple, int size, OffsetNumber offset)
 {
    if (offset <= PageGetMaxOffsetNumber(page))
    {
@@ -110,8 +110,7 @@ spgRedoAddLeaf(XLogReaderState *record)
        if (xldata->offnumLeaf != xldata->offnumHeadLeaf)
        {
            /* normal cases, tuple was added by SpGistPageAddNewItem */
-           addOrReplaceTuple(page, (Item) leafTuple, leafTupleHdr.size,
-                             xldata->offnumLeaf);
+           addOrReplaceTuple(page, leafTuple, leafTupleHdr.size, xldata->offnumLeaf);
 
            /* update head tuple's chain link if needed */
            if (xldata->offnumHeadLeaf != InvalidOffsetNumber)
@@ -129,7 +128,7 @@ spgRedoAddLeaf(XLogReaderState *record)
            /* replacing a DEAD tuple */
            PageIndexTupleDelete(page, xldata->offnumLeaf);
            if (PageAddItem(page,
-                           (Item) leafTuple, leafTupleHdr.size,
+                           leafTuple, leafTupleHdr.size,
                            xldata->offnumLeaf, false, false) != xldata->offnumLeaf)
                elog(ERROR, "failed to add item of size %u to SPGiST index page",
                     leafTupleHdr.size);
@@ -232,8 +231,7 @@ spgRedoMoveLeafs(XLogReaderState *record)
            memcpy(&leafTupleHdr, leafTuple,
                   sizeof(SpGistLeafTupleData));
 
-           addOrReplaceTuple(page, (Item) leafTuple,
-                             leafTupleHdr.size, toInsert[i]);
+           addOrReplaceTuple(page, leafTuple, leafTupleHdr.size, toInsert[i]);
            ptr += leafTupleHdr.size;
        }
 
@@ -309,7 +307,7 @@ spgRedoAddNode(XLogReaderState *record)
            page = BufferGetPage(buffer);
 
            PageIndexTupleDelete(page, xldata->offnum);
-           if (PageAddItem(page, (Item) innerTuple, innerTupleHdr.size,
+           if (PageAddItem(page, innerTuple, innerTupleHdr.size,
                            xldata->offnum,
                            false, false) != xldata->offnum)
                elog(ERROR, "failed to add item of size %u to SPGiST index page",
@@ -351,8 +349,7 @@ spgRedoAddNode(XLogReaderState *record)
        {
            page = BufferGetPage(buffer);
 
-           addOrReplaceTuple(page, (Item) innerTuple,
-                             innerTupleHdr.size, xldata->offnumNew);
+           addOrReplaceTuple(page, innerTuple, innerTupleHdr.size, xldata->offnumNew);
 
            /*
             * If parent is in this same page, update it now.
@@ -390,7 +387,7 @@ spgRedoAddNode(XLogReaderState *record)
                                      xldata->offnumNew);
 
            PageIndexTupleDelete(page, xldata->offnum);
-           if (PageAddItem(page, (Item) dt, dt->size,
+           if (PageAddItem(page, dt, dt->size,
                            xldata->offnum,
                            false, false) != xldata->offnum)
                elog(ERROR, "failed to add item of size %u to SPGiST index page",
@@ -492,8 +489,7 @@ spgRedoSplitTuple(XLogReaderState *record)
        {
            page = BufferGetPage(buffer);
 
-           addOrReplaceTuple(page, (Item) postfixTuple,
-                             postfixTupleHdr.size, xldata->offnumPostfix);
+           addOrReplaceTuple(page, postfixTuple, postfixTupleHdr.size, xldata->offnumPostfix);
 
            PageSetLSN(page, lsn);
            MarkBufferDirty(buffer);
@@ -508,15 +504,13 @@ spgRedoSplitTuple(XLogReaderState *record)
        page = BufferGetPage(buffer);
 
        PageIndexTupleDelete(page, xldata->offnumPrefix);
-       if (PageAddItem(page, (Item) prefixTuple, prefixTupleHdr.size,
+       if (PageAddItem(page, prefixTuple, prefixTupleHdr.size,
                        xldata->offnumPrefix, false, false) != xldata->offnumPrefix)
            elog(ERROR, "failed to add item of size %u to SPGiST index page",
                 prefixTupleHdr.size);
 
        if (xldata->postfixBlkSame)
-           addOrReplaceTuple(page, (Item) postfixTuple,
-                             postfixTupleHdr.size,
-                             xldata->offnumPostfix);
+           addOrReplaceTuple(page, postfixTuple, postfixTupleHdr.size, xldata->offnumPostfix);
 
        PageSetLSN(page, lsn);
        MarkBufferDirty(buffer);
@@ -662,8 +656,7 @@ spgRedoPickSplit(XLogReaderState *record)
        if (page == NULL)
            continue;           /* no need to touch this page */
 
-       addOrReplaceTuple(page, (Item) leafTuple, leafTupleHdr.size,
-                         toInsert[i]);
+       addOrReplaceTuple(page, leafTuple, leafTupleHdr.size, toInsert[i]);
    }
 
    /* Now update src and dest page LSNs if needed */
@@ -692,8 +685,7 @@ spgRedoPickSplit(XLogReaderState *record)
    {
        page = BufferGetPage(innerBuffer);
 
-       addOrReplaceTuple(page, (Item) innerTuple, innerTupleHdr.size,
-                         xldata->offnumInner);
+       addOrReplaceTuple(page, innerTuple, innerTupleHdr.size, xldata->offnumInner);
 
        /* if inner is also parent, update link while we're here */
        if (xldata->innerIsParent)
index cf46a5433648791fc72da41a7a98a04d479463bd..c23dee5231c073cdf8f607155338b3bede7e74ac 100644 (file)
@@ -404,8 +404,7 @@ fill_seq_fork_with_data(Relation rel, HeapTuple tuple, ForkNumber forkNum)
 
    MarkBufferDirty(buf);
 
-   offnum = PageAddItem(page, (Item) tuple->t_data, tuple->t_len,
-                        InvalidOffsetNumber, false, false);
+   offnum = PageAddItem(page, tuple->t_data, tuple->t_len, InvalidOffsetNumber, false, false);
    if (offnum != FirstOffsetNumber)
        elog(ERROR, "failed to add sequence tuple to page");
 
@@ -1946,8 +1945,7 @@ seq_redo(XLogReaderState *record)
    item = (char *) xlrec + sizeof(xl_seq_rec);
    itemsz = XLogRecGetDataLen(record) - sizeof(xl_seq_rec);
 
-   if (PageAddItem(localpage, (Item) item, itemsz,
-                   FirstOffsetNumber, false, false) == InvalidOffsetNumber)
+   if (PageAddItem(localpage, item, itemsz, FirstOffsetNumber, false, false) == InvalidOffsetNumber)
        elog(PANIC, "seq_redo: failed to add item to page");
 
    PageSetLSN(localpage, lsn);
index dbb49ed9197d74307354588d4b2d948afbeb6e37..aac6e695954677c882ba80674ad4371e37b9810b 100644 (file)
@@ -191,7 +191,7 @@ PageIsVerified(PageData *page, BlockNumber blkno, int flags, bool *checksum_fail
  */
 OffsetNumber
 PageAddItemExtended(Page page,
-                   Item item,
+                   const void *item,
                    Size size,
                    OffsetNumber offsetNumber,
                    int flags)
@@ -1402,7 +1402,7 @@ PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum)
  */
 bool
 PageIndexTupleOverwrite(Page page, OffsetNumber offnum,
-                       Item newtup, Size newsize)
+                       const void *newtup, Size newsize)
 {
    PageHeader  phdr = (PageHeader) page;
    ItemId      tupid;
index 56ac64f0597eb1c544bcd90c5ea96e2f4d718539..781e1e12e556b970621df2fbf4f4e11f8ac4e0dc 100644 (file)
@@ -526,7 +526,7 @@ extern void spgDeformLeafTuple(SpGistLeafTuple tup, TupleDesc tupleDescriptor,
 extern Datum *spgExtractNodeLabels(SpGistState *state,
                                   SpGistInnerTuple innerTuple);
 extern OffsetNumber SpGistPageAddNewItem(SpGistState *state, Page page,
-                                        Item item, Size size,
+                                        const void *item, Size size,
                                         OffsetNumber *startOffset,
                                         bool errorOK);
 extern bool spgproperty(Oid index_oid, int attno,
index aeb67c498c59fd622be5ea7eadc4973b67048d53..abc2cf2a020bf987acd7485ecb429338c320b59d 100644 (file)
@@ -16,7 +16,6 @@
 
 #include "access/xlogdefs.h"
 #include "storage/block.h"
-#include "storage/item.h"
 #include "storage/off.h"
 
 /* GUC variable */
@@ -351,13 +350,13 @@ PageValidateSpecialPointer(const PageData *page)
  *     This does not change the status of any of the resources passed.
  *     The semantics may change in the future.
  */
-static inline Item
+static inline void *
 PageGetItem(const PageData *page, const ItemIdData *itemId)
 {
    Assert(page);
    Assert(ItemIdHasStorage(itemId));
 
-   return (Item) (((const char *) page) + ItemIdGetOffset(itemId));
+   return (void *) (((const char *) page) + ItemIdGetOffset(itemId));
 }
 
 /*
@@ -488,7 +487,7 @@ StaticAssertDecl(BLCKSZ == ((BLCKSZ / sizeof(size_t)) * sizeof(size_t)),
 extern void PageInit(Page page, Size pageSize, Size specialSize);
 extern bool PageIsVerified(PageData *page, BlockNumber blkno, int flags,
                           bool *checksum_failure_p);
-extern OffsetNumber PageAddItemExtended(Page page, Item item, Size size,
+extern OffsetNumber PageAddItemExtended(Page page, const void *item, Size size,
                                        OffsetNumber offsetNumber, int flags);
 extern Page PageGetTempPage(const PageData *page);
 extern Page PageGetTempPageCopy(const PageData *page);
@@ -504,7 +503,7 @@ extern void PageIndexTupleDelete(Page page, OffsetNumber offnum);
 extern void PageIndexMultiDelete(Page page, OffsetNumber *itemnos, int nitems);
 extern void PageIndexTupleDeleteNoCompact(Page page, OffsetNumber offnum);
 extern bool PageIndexTupleOverwrite(Page page, OffsetNumber offnum,
-                                   Item newtup, Size newsize);
+                                   const void *newtup, Size newsize);
 extern char *PageSetChecksumCopy(Page page, BlockNumber blkno);
 extern void PageSetChecksumInplace(Page page, BlockNumber blkno);
 
diff --git a/src/include/storage/item.h b/src/include/storage/item.h
deleted file mode 100644 (file)
index 5a4539c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * item.h
- *   POSTGRES disk item definitions.
- *
- *
- * Portions Copyright (c) 1996-2025, PostgreSQL Global Development Group
- * Portions Copyright (c) 1994, Regents of the University of California
- *
- * src/include/storage/item.h
- *
- *-------------------------------------------------------------------------
- */
-#ifndef ITEM_H
-#define ITEM_H
-
-typedef Pointer Item;
-
-#endif                         /* ITEM_H */
index 43fe3bcd593e2f9473ee2e69ae383ecc42700e40..bb4e1b3700564dcce6278bd41a0a9aaa93fa1bfd 100644 (file)
@@ -1321,7 +1321,6 @@ IsForeignRelUpdatable_function
 IsForeignScanParallelSafe_function
 IsoConnInfo
 IspellDict
-Item
 ItemArray
 ItemId
 ItemIdData