Re: Mark all GUC variable as PGDLLIMPORT
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Andres Freund <andres@anarazel.de>
Cc: Robert Haas <robertmhaas@gmail.com>, John Naylor <john.naylor@enterprisedb.com>, Tom Lane <tgl@sss.pgh.pa.us>, Andrew Dunstan <andrew@dunslane.net>, Chapman Flack <chap@anastigmatix.net>, Julien Rouhaud <rjuju123@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-05-09T07:15:35Z
Lists: pgsql-hackers
On Fri, May 06, 2022 at 04:49:24PM -0700, Andres Freund wrote:
> Just noticed that
> extern sigset_t UnBlockSig,
> BlockSig,
> StartupBlockSig;
> are unadorned.
mark_pgdllimport.pl is not able to capture this part of the change
because of this logic, where we assume that the header line has to
finish with a semicolon:
# Variable declarations should end in a semicolon. If we see an
# opening parenthesis, it's probably a function declaration.
$needs_pgdllimport = 0 if $stripped_line !~ /;$/ ||
$stripped_line =~ /\(/;
It is quite common to define one variable per line, so I would not put
the blame on the script and just update pqsignal.h. And it is common
to finish lines with a comma for function declarations..
> There's also a number of variables that are only declared in .c files that
> !windows can still access. Some likely aren't worth caring about, but some
> others are underlying GUCs, so we probably do? E.g.
> CommitDelay
> CommitSiblings
> default_tablespace
> ignore_checksum_failure
> ignore_invalid_pages
> Log_disconnections
> ssl_renegotiation_limit
> temp_tablespaces
> wal_level_options
These are indeed declared in .c files. So you mean that we'd better
declare them in headers and mark them as PGDLLIMPORT? I am not sure
if that's worth the addition, nobody has asked for these to be
available yet, AFAIK.
> Unix_socket_group
> Unix_socket_permissions
Already marked with PGDLLIMPORT.
> Also noticed that the bbsink_ops variables are const, instead of static const,
> was that intentional?
Yep, that looks like an error.
While on it, I think that it would be a good idea to document in the
script that we need pass down a list of header files as arguments to
rewrite them.
--
Michael
Commits
-
Remove PGDLLIMPORT marker from __pg_log_level
- 8d3341266508 15.0 landed
-
Mark a few 'bbsink' related functions / variables static.
- b5f44225b833 15.0 landed
-
Add some missing PGDLLIMPORT markings
- 5edeb574285e 15.0 landed
-
Apply PGDLLIMPORT markings broadly.
- 8ec569479fc2 15.0 landed
-
Helper script to apply PGDLLIMPORT markings.
- 80900d469091 15.0 landed
-
Simplify declaring variables exported from libpgcommon and libpgport.
- e04a8059a74c 15.0 cited