public inbox for [email protected]  
help / color / mirror / Atom feed
From: Peter Eisentraut <[email protected]>
To: Jelte Fennema-Nio <[email protected]>
To: PostgreSQL Hackers <[email protected]>
To: Thomas Munro <[email protected]>
Subject: Re: Make copyObject work in C++
Date: Wed, 14 Jan 2026 16:59:55 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
References: <CAGECzQR21OnnKiZO_1rLWO0-16kg1JBxnVq-wymYW0-_1cUNtg@mail.gmail.com>
	<[email protected]>
	<[email protected]>
	<[email protected]>

On 10.01.26 12:09, Jelte Fennema-Nio wrote:
> On Sat Jan 3, 2026 at 10:32 AM CET, Jelte Fennema-Nio wrote:
>> Attached is a patchset that does that. It required a few more fixes to
>> make the extension compile on MSVC too.
> 
> Rebased after Peter merged the C++ improvements from the other thread.

I have a couple of comments on the sample extension module.

I think this module should have a runtime test, too.  Otherwise you 
don't know that you got the linkage correct, or whether this works at 
all.  It doesn't have to do much, like it could literally be a + b, and 
it could evolve in the future to test hooks, _PG_init, etc.

Let's put a README file in the module's directory instead of putting the 
explanation into the Makefile/meson.build.

I wonder if the module's build integration would work correctly in the 
autoconf/makefile case if no C++ is available.  AFAICT, it would fail to 
build with g++ not found or similar.

AFAICT, the minimum changes to get a minimum test module to work are

- fix for "restrict", recently committed
- disable warning about zero-length arrays, seems trivial
- named designated initializers

I learned that named designated initializers in C++ are not allowed to 
be specified out of order, so they are not a full equivalent to the C 
syntax.  This could be a problem for example if someone wanted in the 
future to have something like

     PG_MODULE_MAGIC_EXT(.threads_supported = true)

(while not specifying the leading .name and .version fields).

I think for now the easiest fix would be to just not use the named 
initializers in the definition of PG_MODULE_MAGIC_DATA.  Then we don't 
need to require C++20 and have that additional code.  In the future, we 
might need a different solution more suitable for C++.

The use of -std=c++11 for CI is a valid idea; I have often wanted that 
for C as well.  But conversely we also want to allow testing optional 
extension and future C standard features.  So we need a comprehensive 
solution there that covers both ends and both languages.  Let's leave 
that out for now and think about it separately.







view thread (7+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: Make copyObject work in C++
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox