Re: Make copyObject work in C++
Jelte Fennema <postgres@jeltef.nl>
From: "Jelte Fennema-Nio" <postgres@jeltef.nl>
To: "Andres Freund" <andres@anarazel.de>
Cc: "Peter Eisentraut" <peter@eisentraut.org>, "PostgreSQL Hackers"
<pgsql-hackers@lists.postgresql.org>, "Thomas Munro"
<thomas.munro@gmail.com>
Date: 2026-02-13T10:28:20Z
Lists: pgsql-hackers
Attachments
- v8-0001-Test-List-macros-in-C-extensions.patch (text/x-patch) patch v8-0001
- v8-0002-Test-most-StaticAssert-macros-in-C-extensions.patch (text/x-patch) patch v8-0002
- v8-0003-Support-using-copyObject-in-C.patch (text/x-patch) patch v8-0003
- v8-0004-Use-pg_exprtype-instead-of-typeof.patch (text/x-patch) patch v8-0004
On Sun Jan 25, 2026 at 9:06 PM CET, Andres Freund wrote: > Named args make that easier in two ways: First, only extensions using the > to-be-removed option will fail. Second, removal of options reliably generates > errors, rather than bogusly use one field for another, just because the types > are compatible. After discussing the topic in-person with Peter at FOSDEM. We agreed that the best road forward was to not bother with MSVC for now. No-one has actually expressed an interest in being able to build C++ extension using MSVC, and the effort to support it is both non-trivial and not without downsides to the rest of the codebase. We can always come back to this later, possibly requiring C++20 on MSVC. So I've removed that patch and now this patchset its goal is to improve compatibiltity with the C++ flavor of GCC and Clang. Patch 1 and 2 add some more macro calls to our test C++ extension. These macros already work in GCC and Clang, this is purely to test for future regressinos. Patch 3 makes copyObject work when using GCC or Clang with -std=c++11 by introducing pg_exprtype. Patch 4 starts using pg_exprtype in more places. I'm also working on some patches to support StaticAssertVariableIsOfType, but I've run into some ICE compiler errors of MSVC 2019.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Enable test_cplusplusext with MSVC
- c05ad248f99c 19 (unreleased) landed
-
Disable some C++ warnings in MSVC
- 82a7cbea747c 19 (unreleased) landed
-
meson: Make room for C++-only warning flags for MSVC
- 4c83f1253593 19 (unreleased) landed
-
Make fixed-length list building macros work in C++
- f8e7ca328510 19 (unreleased) landed
-
Make unconstify and unvolatize use StaticAssertVariableIsOfTypeMacro
- 258248d0bdbf 19 (unreleased) landed
-
Use typeof everywhere instead of compiler specific spellings
- e2308350c9b7 19 (unreleased) landed
-
Test List macros in C++ extensions
- 3d28ecb5ac76 19 (unreleased) landed
-
Test most StaticAssert macros in C++ extensions
- 451650eaacd5 19 (unreleased) landed
-
Revert "Change copyObject() to use typeof_unqual"
- 0af05b5dbb42 19 (unreleased) landed
-
Fix for C++ compatibility
- b4555cb070f1 19 (unreleased) landed
-
tests: Add a test C++ extension module
- 476b35d4e311 19 (unreleased) landed