Re: some Page/PageData const stuff

Andres Freund <andres@anarazel.de>

From: Andres Freund <andres@anarazel.de>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2026-01-02T19:17:39Z
Lists: pgsql-hackers
Hi,

On 2025-01-20 15:01:08 +0100, Peter Eisentraut wrote:
> This has been committed.

I don't like the const markings in PageGetItem():


/*
 * PageGetItem
 *		Retrieves an item on the given page.
 *
 * Note:
 *		This does not change the status of any of the resources passed.
 *		The semantics may change in the future.
 */
static inline void *
PageGetItem(const PageData *page, const ItemIdData *itemId)
{
	Assert(page);
	Assert(ItemIdHasStorage(itemId));

	return (void *) (((const char *) page) + ItemIdGetOffset(itemId));
}

The const for PageData seems like a lie to me, because we cast it away. And
indeed, we often then use the returned value to set hint bits etc.

Greetings,

Andres Freund



Commits

  1. Remove bogus const qualifier on PageGetItem() argument

  2. Add some more use of Page/PageData rather than char *

  3. Add const qualifiers to bufpage.h

  4. Add PageData C type