From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | some Page/PageData const stuff |
Date: | 2024-12-09 15:44:14 |
Message-ID: | 692ee0da-49da-4d32-8dca-da224cc2800e@eisentraut.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
In [0] I wrote:
"""
I was fiddling a bit with making some Page-related APIs const-proof,
which might involve changing something like "Page p" to "const PageData
*p", but I was surprised that a type PageData exists but it's an
unrelated type local to generic_xlog.c.
This patch renames that type to a more specific name
[GenericXLogPageData]. This makes room for possibly adding another
PageData type with the earlier meaning, but that's not done here.
"""
[0]:
https://www.postgresql.org/message-id/flat/001d457e-c118-4219-8132-e1846c2ae3c9%40eisentraut.org
This is now the follow-up that adds back PageData with the earlier
meaning and updates a few of the Page-related APIs to be const-proof.
That is all pretty straightforward, except one inline function that had
to be changed back to a macro, because it is used in a way that
sometimes it takes const and returns const and sometimes takes non-const
and returns non-const. (We might be able to do that kind of thing
better with C23 in N years. ;-) )
Just a thought, I've been thinking it might be neat if PageData were
actually defined something like this:
typedef struct PageData
{
union
{
PageHeaderData phdr;
PGAlignedBlock data;
};
} PageData;
Then you could write all those (PageHeader) casts in a more elegant way,
and you don't get to randomly mix char * and Page, which has very weak
type safety. But this currently totally breaks, because many places
assume you can do char-based pointer arithmetic with Page values. So
this would need further analysis.
Attachment | Content-Type | Size |
---|---|---|
0001-Add-PageData.patch | text/plain | 699 bytes |
0002-Add-const-qualifiers-to-bufpage.h.patch | text/plain | 10.8 KB |
0003-Add-more-use-of-Page-PageData-rather-than-char.patch | text/plain | 4.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | David G. Johnston | 2024-12-09 15:56:35 | Re: Document NULL |
Previous Message | Andres Freund | 2024-12-09 15:42:16 | Re: meson missing test dependencies |