summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/access/gin.h2
-rw-r--r--src/include/access/parallel.h2
-rw-r--r--src/include/access/session.h2
-rw-r--r--src/include/access/tableam.h4
-rw-r--r--src/include/access/toast_compression.h2
-rw-r--r--src/include/access/twophase_rmgr.h8
-rw-r--r--src/include/access/xact.h16
-rw-r--r--src/include/access/xlog.h56
-rw-r--r--src/include/access/xlog_internal.h8
-rw-r--r--src/include/access/xlogprefetcher.h2
-rw-r--r--src/include/access/xlogrecovery.h42
-rw-r--r--src/include/access/xlogutils.h4
-rw-r--r--src/include/bootstrap/bootstrap.h6
-rw-r--r--src/include/catalog/namespace.h2
-rw-r--r--src/include/catalog/objectaddress.h2
-rw-r--r--src/include/catalog/storage.h2
-rw-r--r--src/include/commands/async.h4
-rw-r--r--src/include/commands/tablespace.h2
-rw-r--r--src/include/commands/user.h2
-rw-r--r--src/include/commands/vacuum.h18
-rw-r--r--src/include/common/file_perm.h6
-rw-r--r--src/include/common/jsonapi.h2
-rw-r--r--src/include/common/logging.h2
-rw-r--r--src/include/common/pg_lzcompress.h4
-rw-r--r--src/include/common/relpath.h2
-rw-r--r--src/include/fe_utils/cancel.h2
-rw-r--r--src/include/fe_utils/print.h9
-rw-r--r--src/include/fe_utils/string_utils.h2
-rw-r--r--src/include/fmgr.h2
-rw-r--r--src/include/jit/jit.h20
-rw-r--r--src/include/jit/llvmjit.h44
-rw-r--r--src/include/libpq/auth.h6
-rw-r--r--src/include/libpq/libpq-be.h2
-rw-r--r--src/include/libpq/libpq.h28
-rw-r--r--src/include/libpq/pqcomm.h2
-rw-r--r--src/include/libpq/scram.h2
-rw-r--r--src/include/mb/pg_wchar.h6
-rw-r--r--src/include/miscadmin.h54
-rw-r--r--src/include/nodes/readfuncs.h2
-rw-r--r--src/include/optimizer/geqo.h11
-rw-r--r--src/include/optimizer/optimizer.h4
-rw-r--r--src/include/optimizer/planmain.h6
-rw-r--r--src/include/parser/parse_expr.h2
-rw-r--r--src/include/parser/parser.h4
-rw-r--r--src/include/pg_getopt.h10
-rw-r--r--src/include/pgstat.h16
-rw-r--r--src/include/pgtime.h2
-rw-r--r--src/include/port/win32_port.h6
-rw-r--r--src/include/port/win32ntdll.h4
-rw-r--r--src/include/postmaster/autovacuum.h32
-rw-r--r--src/include/postmaster/bgworker_internals.h2
-rw-r--r--src/include/postmaster/bgwriter.h8
-rw-r--r--src/include/postmaster/pgarch.h8
-rw-r--r--src/include/postmaster/postmaster.h34
-rw-r--r--src/include/postmaster/startup.h2
-rw-r--r--src/include/postmaster/syslogger.h14
-rw-r--r--src/include/postmaster/walwriter.h4
-rw-r--r--src/include/replication/logicallauncher.h4
-rw-r--r--src/include/replication/syncrep.h8
-rw-r--r--src/include/replication/walreceiver.h8
-rw-r--r--src/include/replication/walsender.h14
-rw-r--r--src/include/replication/walsender_private.h6
-rw-r--r--src/include/replication/worker_internal.h10
-rw-r--r--src/include/storage/buf_internals.h4
-rw-r--r--src/include/storage/bufmgr.h20
-rw-r--r--src/include/storage/dsm_impl.h4
-rw-r--r--src/include/storage/fd.h4
-rw-r--r--src/include/storage/large_object.h2
-rw-r--r--src/include/storage/lock.h14
-rw-r--r--src/include/storage/lwlock.h4
-rw-r--r--src/include/storage/pg_shmem.h14
-rw-r--r--src/include/storage/pmsignal.h2
-rw-r--r--src/include/storage/predicate.h6
-rw-r--r--src/include/storage/proc.h4
-rw-r--r--src/include/storage/s_lock.h2
-rw-r--r--src/include/storage/sinval.h4
-rw-r--r--src/include/storage/spin.h2
-rw-r--r--src/include/storage/standby.h8
-rw-r--r--src/include/tcop/tcopprot.h8
-rw-r--r--src/include/tsearch/ts_cache.h2
-rw-r--r--src/include/tsearch/ts_type.h2
-rw-r--r--src/include/utils/array.h2
-rw-r--r--src/include/utils/builtins.h2
-rw-r--r--src/include/utils/bytea.h3
-rw-r--r--src/include/utils/datetime.h7
-rw-r--r--src/include/utils/elog.h12
-rw-r--r--src/include/utils/fmgrtab.h9
-rw-r--r--src/include/utils/guc.h62
-rw-r--r--src/include/utils/guc_tables.h8
-rw-r--r--src/include/utils/jsonpath.h2
-rw-r--r--src/include/utils/pg_locale.h18
-rw-r--r--src/include/utils/pgstat_internal.h4
-rw-r--r--src/include/utils/plancache.h2
-rw-r--r--src/include/utils/ps_status.h2
-rw-r--r--src/include/utils/queryjumble.h4
-rw-r--r--src/include/utils/relcache.h4
-rw-r--r--src/include/utils/rls.h2
-rw-r--r--src/include/utils/snapmgr.h2
-rw-r--r--src/include/utils/timestamp.h4
-rw-r--r--src/include/utils/xml.h6
100 files changed, 434 insertions, 429 deletions
diff --git a/src/include/access/gin.h b/src/include/access/gin.h
index e83e0acd923..aacc665fdc8 100644
--- a/src/include/access/gin.h
+++ b/src/include/access/gin.h
@@ -68,7 +68,7 @@ typedef char GinTernaryValue;
/* GUC parameters */
extern PGDLLIMPORT int GinFuzzySearchLimit;
-extern int gin_pending_list_limit;
+extern PGDLLIMPORT int gin_pending_list_limit;
/* ginutil.c */
extern void ginGetStats(Relation index, GinStatsData *stats);
diff --git a/src/include/access/parallel.h b/src/include/access/parallel.h
index 30786820f81..983841d45e8 100644
--- a/src/include/access/parallel.h
+++ b/src/include/access/parallel.h
@@ -54,7 +54,7 @@ typedef struct ParallelWorkerContext
shm_toc *toc;
} ParallelWorkerContext;
-extern volatile bool ParallelMessagePending;
+extern PGDLLIMPORT volatile bool ParallelMessagePending;
extern PGDLLIMPORT int ParallelWorkerNumber;
extern PGDLLIMPORT bool InitializingParallelWorker;
diff --git a/src/include/access/session.h b/src/include/access/session.h
index 0ed52d48214..775888bbb03 100644
--- a/src/include/access/session.h
+++ b/src/include/access/session.h
@@ -39,6 +39,6 @@ extern void AttachSession(dsm_handle handle);
extern void DetachSession(void);
/* The current session, or NULL for none. */
-extern Session *CurrentSession;
+extern PGDLLIMPORT Session *CurrentSession;
#endif /* SESSION_H */
diff --git a/src/include/access/tableam.h b/src/include/access/tableam.h
index bb365736b75..fe869c6c184 100644
--- a/src/include/access/tableam.h
+++ b/src/include/access/tableam.h
@@ -28,8 +28,8 @@
#define DEFAULT_TABLE_ACCESS_METHOD "heap"
/* GUCs */
-extern char *default_table_access_method;
-extern bool synchronize_seqscans;
+extern PGDLLIMPORT char *default_table_access_method;
+extern PGDLLIMPORT bool synchronize_seqscans;
struct BulkInsertStateData;
diff --git a/src/include/access/toast_compression.h b/src/include/access/toast_compression.h
index 9b433c7721c..deb8f99da51 100644
--- a/src/include/access/toast_compression.h
+++ b/src/include/access/toast_compression.h
@@ -20,7 +20,7 @@
* but the value is one of the char values defined below, as they appear in
* pg_attribute.attcompression, e.g. TOAST_PGLZ_COMPRESSION.
*/
-extern int default_toast_compression;
+extern PGDLLIMPORT int default_toast_compression;
/*
* Built-in compression method ID. The toast compression header will store
diff --git a/src/include/access/twophase_rmgr.h b/src/include/access/twophase_rmgr.h
index 284c7539f8e..96381a5e3f8 100644
--- a/src/include/access/twophase_rmgr.h
+++ b/src/include/access/twophase_rmgr.h
@@ -28,10 +28,10 @@ typedef uint8 TwoPhaseRmgrId;
#define TWOPHASE_RM_PREDICATELOCK_ID 4
#define TWOPHASE_RM_MAX_ID TWOPHASE_RM_PREDICATELOCK_ID
-extern const TwoPhaseCallback twophase_recover_callbacks[];
-extern const TwoPhaseCallback twophase_postcommit_callbacks[];
-extern const TwoPhaseCallback twophase_postabort_callbacks[];
-extern const TwoPhaseCallback twophase_standby_recover_callbacks[];
+extern PGDLLIMPORT const TwoPhaseCallback twophase_recover_callbacks[];
+extern PGDLLIMPORT const TwoPhaseCallback twophase_postcommit_callbacks[];
+extern PGDLLIMPORT const TwoPhaseCallback twophase_postabort_callbacks[];
+extern PGDLLIMPORT const TwoPhaseCallback twophase_standby_recover_callbacks[];
extern void RegisterTwoPhaseRecord(TwoPhaseRmgrId rmid, uint16 info,
diff --git a/src/include/access/xact.h b/src/include/access/xact.h
index 4e1e8735010..837fe7de0b9 100644
--- a/src/include/access/xact.h
+++ b/src/include/access/xact.h
@@ -38,7 +38,7 @@
#define XACT_REPEATABLE_READ 2
#define XACT_SERIALIZABLE 3
-extern int DefaultXactIsoLevel;
+extern PGDLLIMPORT int DefaultXactIsoLevel;
extern PGDLLIMPORT int XactIsoLevel;
/*
@@ -52,18 +52,18 @@ extern PGDLLIMPORT int XactIsoLevel;
#define IsolationIsSerializable() (XactIsoLevel == XACT_SERIALIZABLE)
/* Xact read-only state */
-extern bool DefaultXactReadOnly;
-extern bool XactReadOnly;
+extern PGDLLIMPORT bool DefaultXactReadOnly;
+extern PGDLLIMPORT bool XactReadOnly;
/* flag for logging statements in this transaction */
-extern bool xact_is_sampled;
+extern PGDLLIMPORT bool xact_is_sampled;
/*
* Xact is deferrable -- only meaningful (currently) for read only
* SERIALIZABLE transactions
*/
-extern bool DefaultXactDeferrable;
-extern bool XactDeferrable;
+extern PGDLLIMPORT bool DefaultXactDeferrable;
+extern PGDLLIMPORT bool XactDeferrable;
typedef enum
{
@@ -80,7 +80,7 @@ typedef enum
#define SYNCHRONOUS_COMMIT_ON SYNCHRONOUS_COMMIT_REMOTE_FLUSH
/* Synchronous commit level */
-extern int synchronous_commit;
+extern PGDLLIMPORT int synchronous_commit;
/* used during logical streaming of a transaction */
extern PGDLLIMPORT TransactionId CheckXidAlive;
@@ -93,7 +93,7 @@ extern PGDLLIMPORT bool bsysscan;
* globally accessible, so can be set from anywhere in the code which requires
* recording flags.
*/
-extern int MyXactFlags;
+extern PGDLLIMPORT int MyXactFlags;
/*
* XACT_FLAGS_ACCESSEDTEMPNAMESPACE - set when a temporary object is accessed.
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h
index 5e1e3446aed..d9f2487a969 100644
--- a/src/include/access/xlog.h
+++ b/src/include/access/xlog.h
@@ -24,35 +24,35 @@
#define SYNC_METHOD_OPEN 2 /* for O_SYNC */
#define SYNC_METHOD_FSYNC_WRITETHROUGH 3
#define SYNC_METHOD_OPEN_DSYNC 4 /* for O_DSYNC */
-extern int sync_method;
+extern PGDLLIMPORT int sync_method;
-extern XLogRecPtr ProcLastRecPtr;
-extern XLogRecPtr XactLastRecEnd;
+extern PGDLLIMPORT XLogRecPtr ProcLastRecPtr;
+extern PGDLLIMPORT XLogRecPtr XactLastRecEnd;
extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd;
/* these variables are GUC parameters related to XLOG */
-extern PGDLLIMPORT int wal_segment_size;
-extern int min_wal_size_mb;
-extern int max_wal_size_mb;
-extern int wal_keep_size_mb;
-extern int max_slot_wal_keep_size_mb;
-extern int XLOGbuffers;
-extern int XLogArchiveTimeout;
-extern int wal_retrieve_retry_interval;
-extern char *XLogArchiveCommand;
-extern bool EnableHotStandby;
-extern bool fullPageWrites;
-extern bool wal_log_hints;
-extern int wal_compression;
-extern bool wal_init_zero;
-extern bool wal_recycle;
-extern bool *wal_consistency_checking;
-extern char *wal_consistency_checking_string;
-extern bool log_checkpoints;
-extern bool track_wal_io_timing;
-extern int wal_decode_buffer_size;
-
-extern int CheckPointSegments;
+extern PGDLLIMPORT int wal_segment_size;
+extern PGDLLIMPORT int min_wal_size_mb;
+extern PGDLLIMPORT int max_wal_size_mb;
+extern PGDLLIMPORT int wal_keep_size_mb;
+extern PGDLLIMPORT int max_slot_wal_keep_size_mb;
+extern PGDLLIMPORT int XLOGbuffers;
+extern PGDLLIMPORT int XLogArchiveTimeout;
+extern PGDLLIMPORT int wal_retrieve_retry_interval;
+extern PGDLLIMPORT char *XLogArchiveCommand;
+extern PGDLLIMPORT bool EnableHotStandby;
+extern PGDLLIMPORT bool fullPageWrites;
+extern PGDLLIMPORT bool wal_log_hints;
+extern PGDLLIMPORT int wal_compression;
+extern PGDLLIMPORT bool wal_init_zero;
+extern PGDLLIMPORT bool wal_recycle;
+extern PGDLLIMPORT bool *wal_consistency_checking;
+extern PGDLLIMPORT char *wal_consistency_checking_string;
+extern PGDLLIMPORT bool log_checkpoints;
+extern PGDLLIMPORT bool track_wal_io_timing;
+extern PGDLLIMPORT int wal_decode_buffer_size;
+
+extern PGDLLIMPORT int CheckPointSegments;
/* Archive modes */
typedef enum ArchiveMode
@@ -61,7 +61,7 @@ typedef enum ArchiveMode
ARCHIVE_MODE_ON, /* enabled while server is running normally */
ARCHIVE_MODE_ALWAYS /* enabled always (even during recovery) */
} ArchiveMode;
-extern int XLogArchiveMode;
+extern PGDLLIMPORT int XLogArchiveMode;
/* WAL levels */
typedef enum WalLevel
@@ -121,7 +121,7 @@ extern PGDLLIMPORT int wal_level;
#define XLogLogicalInfoActive() (wal_level >= WAL_LEVEL_LOGICAL)
#ifdef WAL_DEBUG
-extern bool XLOG_DEBUG;
+extern PGDLLIMPORT bool XLOG_DEBUG;
#endif
/*
@@ -175,7 +175,7 @@ typedef struct CheckpointStatsData
* entire sync phase. */
} CheckpointStatsData;
-extern CheckpointStatsData CheckpointStats;
+extern PGDLLIMPORT CheckpointStatsData CheckpointStats;
/*
* GetWALAvailability return codes
diff --git a/src/include/access/xlog_internal.h b/src/include/access/xlog_internal.h
index 750f6341205..fae0bef8f5d 100644
--- a/src/include/access/xlog_internal.h
+++ b/src/include/access/xlog_internal.h
@@ -358,9 +358,9 @@ extern void XLogRecGetBlockRefInfo(XLogReaderState *record, bool pretty,
* Exported for the functions in timeline.c and xlogarchive.c. Only valid
* in the startup process.
*/
-extern bool ArchiveRecoveryRequested;
-extern bool InArchiveRecovery;
-extern bool StandbyMode;
-extern char *recoveryRestoreCommand;
+extern PGDLLIMPORT bool ArchiveRecoveryRequested;
+extern PGDLLIMPORT bool InArchiveRecovery;
+extern PGDLLIMPORT bool StandbyMode;
+extern PGDLLIMPORT char *recoveryRestoreCommand;
#endif /* XLOG_INTERNAL_H */
diff --git a/src/include/access/xlogprefetcher.h b/src/include/access/xlogprefetcher.h
index 80283a8fc23..fdd67fcedd2 100644
--- a/src/include/access/xlogprefetcher.h
+++ b/src/include/access/xlogprefetcher.h
@@ -18,7 +18,7 @@
#include "access/xlogrecord.h"
/* GUCs */
-extern int recovery_prefetch;
+extern PGDLLIMPORT int recovery_prefetch;
/* Possible values for recovery_prefetch */
typedef enum
diff --git a/src/include/access/xlogrecovery.h b/src/include/access/xlogrecovery.h
index 75a0f5fe5ec..0aa85d90e89 100644
--- a/src/include/access/xlogrecovery.h
+++ b/src/include/access/xlogrecovery.h
@@ -49,33 +49,33 @@ typedef enum RecoveryPauseState
} RecoveryPauseState;
/* User-settable GUC parameters */
-extern bool recoveryTargetInclusive;
-extern int recoveryTargetAction;
-extern int recovery_min_apply_delay;
-extern char *PrimaryConnInfo;
-extern char *PrimarySlotName;
-extern char *recoveryRestoreCommand;
-extern char *recoveryEndCommand;
-extern char *archiveCleanupCommand;
+extern PGDLLIMPORT bool recoveryTargetInclusive;
+extern PGDLLIMPORT int recoveryTargetAction;
+extern PGDLLIMPORT int recovery_min_apply_delay;
+extern PGDLLIMPORT char *PrimaryConnInfo;
+extern PGDLLIMPORT char *PrimarySlotName;
+extern PGDLLIMPORT char *recoveryRestoreCommand;
+extern PGDLLIMPORT char *recoveryEndCommand;
+extern PGDLLIMPORT char *archiveCleanupCommand;
/* indirectly set via GUC system */
-extern TransactionId recoveryTargetXid;
-extern char *recovery_target_time_string;
-extern TimestampTz recoveryTargetTime;
-extern const char *recoveryTargetName;
-extern XLogRecPtr recoveryTargetLSN;
-extern RecoveryTargetType recoveryTarget;
-extern char *PromoteTriggerFile;
-extern bool wal_receiver_create_temp_slot;
-extern RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
-extern TimeLineID recoveryTargetTLIRequested;
-extern TimeLineID recoveryTargetTLI;
+extern PGDLLIMPORT TransactionId recoveryTargetXid;
+extern PGDLLIMPORT char *recovery_target_time_string;
+extern PGDLLIMPORT TimestampTz recoveryTargetTime;
+extern PGDLLIMPORT const char *recoveryTargetName;
+extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN;
+extern PGDLLIMPORT RecoveryTargetType recoveryTarget;
+extern PGDLLIMPORT char *PromoteTriggerFile;
+extern PGDLLIMPORT bool wal_receiver_create_temp_slot;
+extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
+extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested;
+extern PGDLLIMPORT TimeLineID recoveryTargetTLI;
/* Have we already reached a consistent database state? */
-extern bool reachedConsistency;
+extern PGDLLIMPORT bool reachedConsistency;
/* Are we currently in standby mode? */
-extern bool StandbyMode;
+extern PGDLLIMPORT bool StandbyMode;
extern Size XLogRecoveryShmemSize(void);
extern void XLogRecoveryShmemInit(void);
diff --git a/src/include/access/xlogutils.h b/src/include/access/xlogutils.h
index 3746e31e40f..761625acf44 100644
--- a/src/include/access/xlogutils.h
+++ b/src/include/access/xlogutils.h
@@ -21,7 +21,7 @@
* potentially perform work during recovery should check RecoveryInProgress().
* See XLogCtl notes in xlog.c.
*/
-extern bool InRecovery;
+extern PGDLLIMPORT bool InRecovery;
/*
* Like InRecovery, standbyState is only valid in the startup process.
@@ -52,7 +52,7 @@ typedef enum
STANDBY_SNAPSHOT_READY
} HotStandbyState;
-extern HotStandbyState standbyState;
+extern PGDLLIMPORT HotStandbyState standbyState;
#define InHotStandby (standbyState >= STANDBY_SNAPSHOT_PENDING)
diff --git a/src/include/bootstrap/bootstrap.h b/src/include/bootstrap/bootstrap.h
index 471414909f3..49d4ad560f1 100644
--- a/src/include/bootstrap/bootstrap.h
+++ b/src/include/bootstrap/bootstrap.h
@@ -27,9 +27,9 @@
#define BOOTCOL_NULL_FORCE_NULL 2
#define BOOTCOL_NULL_FORCE_NOT_NULL 3
-extern Relation boot_reldesc;
-extern Form_pg_attribute attrtypes[MAXATTR];
-extern int numattr;
+extern PGDLLIMPORT Relation boot_reldesc;
+extern PGDLLIMPORT Form_pg_attribute attrtypes[MAXATTR];
+extern PGDLLIMPORT int numattr;
extern void BootstrapModeMain(int argc, char *argv[], bool check_only) pg_attribute_noreturn();
diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h
index f963d82797c..1bc55c01a5c 100644
--- a/src/include/catalog/namespace.h
+++ b/src/include/catalog/namespace.h
@@ -182,7 +182,7 @@ extern void AtEOSubXact_Namespace(bool isCommit, SubTransactionId mySubid,
SubTransactionId parentSubid);
/* stuff for search_path GUC variable */
-extern char *namespace_search_path;
+extern PGDLLIMPORT char *namespace_search_path;
extern List *fetch_search_path(bool includeImplicit);
extern int fetch_search_path_array(Oid *sarray, int sarray_len);
diff --git a/src/include/catalog/objectaddress.h b/src/include/catalog/objectaddress.h
index 274f300054e..cf4d8b31077 100644
--- a/src/include/catalog/objectaddress.h
+++ b/src/include/catalog/objectaddress.h
@@ -28,7 +28,7 @@ typedef struct ObjectAddress
int32 objectSubId; /* Subitem within object (eg column), or 0 */
} ObjectAddress;
-extern const ObjectAddress InvalidObjectAddress;
+extern PGDLLIMPORT const ObjectAddress InvalidObjectAddress;
#define ObjectAddressSubSet(addr, class_id, object_id, object_sub_id) \
do { \
diff --git a/src/include/catalog/storage.h b/src/include/catalog/storage.h
index 844a023b2ce..59f3404ac64 100644
--- a/src/include/catalog/storage.h
+++ b/src/include/catalog/storage.h
@@ -20,7 +20,7 @@
#include "utils/relcache.h"
/* GUC variables */
-extern int wal_skip_threshold;
+extern PGDLLIMPORT int wal_skip_threshold;
extern SMgrRelation RelationCreateStorage(RelFileNode rnode,
char relpersistence,
diff --git a/src/include/commands/async.h b/src/include/commands/async.h
index ebc92717892..926af933d1b 100644
--- a/src/include/commands/async.h
+++ b/src/include/commands/async.h
@@ -20,8 +20,8 @@
*/
#define NUM_NOTIFY_BUFFERS 8
-extern bool Trace_notify;
-extern volatile sig_atomic_t notifyInterruptPending;
+extern PGDLLIMPORT bool Trace_notify;
+extern PGDLLIMPORT volatile sig_atomic_t notifyInterruptPending;
extern Size AsyncShmemSize(void);
extern void AsyncShmemInit(void);
diff --git a/src/include/commands/tablespace.h b/src/include/commands/tablespace.h
index 323528ebb83..24b647332d1 100644
--- a/src/include/commands/tablespace.h
+++ b/src/include/commands/tablespace.h
@@ -19,7 +19,7 @@
#include "lib/stringinfo.h"
#include "nodes/parsenodes.h"
-extern bool allow_in_place_tablespaces;
+extern PGDLLIMPORT bool allow_in_place_tablespaces;
/* XLOG stuff */
#define XLOG_TBLSPC_CREATE 0x00
diff --git a/src/include/commands/user.h b/src/include/commands/user.h
index 0b7a3cd65fd..d3dd8303d28 100644
--- a/src/include/commands/user.h
+++ b/src/include/commands/user.h
@@ -17,7 +17,7 @@
#include "parser/parse_node.h"
/* GUC. Is actually of type PasswordType. */
-extern int Password_encryption;
+extern PGDLLIMPORT int Password_encryption;
/* Hook to check passwords in CreateRole() and AlterRole() */
typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index ead88edda76..f38e1148f97 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -252,17 +252,17 @@ typedef struct VacDeadItems
/* GUC parameters */
extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
-extern int vacuum_freeze_min_age;
-extern int vacuum_freeze_table_age;
-extern int vacuum_multixact_freeze_min_age;
-extern int vacuum_multixact_freeze_table_age;
-extern int vacuum_failsafe_age;
-extern int vacuum_multixact_failsafe_age;
+extern PGDLLIMPORT int vacuum_freeze_min_age;
+extern PGDLLIMPORT int vacuum_freeze_table_age;
+extern PGDLLIMPORT int vacuum_multixact_freeze_min_age;
+extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
+extern PGDLLIMPORT int vacuum_failsafe_age;
+extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
/* Variables for cost-based parallel vacuum */
-extern pg_atomic_uint32 *VacuumSharedCostBalance;
-extern pg_atomic_uint32 *VacuumActiveNWorkers;
-extern int VacuumCostBalanceLocal;
+extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
+extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
+extern PGDLLIMPORT int VacuumCostBalanceLocal;
/* in commands/vacuum.c */
diff --git a/src/include/common/file_perm.h b/src/include/common/file_perm.h
index 85d32ed141b..48d68ef2763 100644
--- a/src/include/common/file_perm.h
+++ b/src/include/common/file_perm.h
@@ -41,11 +41,11 @@
#define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP)
/* Modes for creating directories and files in the data directory */
-extern int pg_dir_create_mode;
-extern int pg_file_create_mode;
+extern PGDLLIMPORT int pg_dir_create_mode;
+extern PGDLLIMPORT int pg_file_create_mode;
/* Mode mask to pass to umask() */
-extern int pg_mode_mask;
+extern PGDLLIMPORT int pg_mode_mask;
/* Set permissions and mask based on the provided mode */
extern void SetDataDirectoryCreatePerm(int dataDirMode);
diff --git a/src/include/common/jsonapi.h b/src/include/common/jsonapi.h
index 52cb4a9339e..8d31630e5ce 100644
--- a/src/include/common/jsonapi.h
+++ b/src/include/common/jsonapi.h
@@ -128,7 +128,7 @@ extern JsonParseErrorType pg_parse_json(JsonLexContext *lex,
JsonSemAction *sem);
/* the null action object used for pure validation */
-extern JsonSemAction nullSemAction;
+extern PGDLLIMPORT JsonSemAction nullSemAction;
/*
* json_count_array_elements performs a fast secondary parse to determine the
diff --git a/src/include/common/logging.h b/src/include/common/logging.h
index 43cc79afa8a..61cfdce6531 100644
--- a/src/include/common/logging.h
+++ b/src/include/common/logging.h
@@ -55,7 +55,7 @@ enum pg_log_level
PG_LOG_OFF,
};
-extern enum pg_log_level __pg_log_level;
+extern PGDLLIMPORT enum pg_log_level __pg_log_level;
/*
* Kind of a hack to be able to produce the psql output exactly as required by
diff --git a/src/include/common/pg_lzcompress.h b/src/include/common/pg_lzcompress.h
index 3e53fbe97bd..2a12b33a008 100644
--- a/src/include/common/pg_lzcompress.h
+++ b/src/include/common/pg_lzcompress.h
@@ -75,8 +75,8 @@ typedef struct PGLZ_Strategy
* output would be larger than input.
* ----------
*/
-extern const PGLZ_Strategy *const PGLZ_strategy_default;
-extern const PGLZ_Strategy *const PGLZ_strategy_always;
+extern PGDLLIMPORT const PGLZ_Strategy *const PGLZ_strategy_default;
+extern PGDLLIMPORT const PGLZ_Strategy *const PGLZ_strategy_always;
/* ----------
diff --git a/src/include/common/relpath.h b/src/include/common/relpath.h
index a4b5dc853bf..13849a37907 100644
--- a/src/include/common/relpath.h
+++ b/src/include/common/relpath.h
@@ -56,7 +56,7 @@ typedef enum ForkNumber
#define FORKNAMECHARS 4 /* max chars for a fork name */
-extern const char *const forkNames[];
+extern PGDLLIMPORT const char *const forkNames[];
extern ForkNumber forkname_to_number(const char *forkName);
extern int forkname_chars(const char *str, ForkNumber *fork);
diff --git a/src/include/fe_utils/cancel.h b/src/include/fe_utils/cancel.h
index 7005b804bcf..3b84daf6eb6 100644
--- a/src/include/fe_utils/cancel.h
+++ b/src/include/fe_utils/cancel.h
@@ -18,7 +18,7 @@
#include "libpq-fe.h"
-extern volatile sig_atomic_t CancelRequested;
+extern PGDLLIMPORT volatile sig_atomic_t CancelRequested;
extern void SetCancelConn(PGconn *conn);
extern void ResetCancelConn(void);
diff --git a/src/include/fe_utils/print.h b/src/include/fe_utils/print.h
index 836b4e29a81..bb2f1bf4e64 100644
--- a/src/include/fe_utils/print.h
+++ b/src/include/fe_utils/print.h
@@ -177,11 +177,12 @@ typedef struct printQueryOpt
} printQueryOpt;
-extern volatile sig_atomic_t cancel_pressed;
+extern PGDLLIMPORT volatile sig_atomic_t cancel_pressed;
-extern const printTextFormat pg_asciiformat;
-extern const printTextFormat pg_asciiformat_old;
-extern printTextFormat pg_utf8format; /* ideally would be const, but... */
+extern PGDLLIMPORT const printTextFormat pg_asciiformat;
+extern PGDLLIMPORT const printTextFormat pg_asciiformat_old;
+extern PGDLLIMPORT printTextFormat pg_utf8format; /* ideally would be const,
+ * but... */
extern void disable_sigpipe_trap(void);
diff --git a/src/include/fe_utils/string_utils.h b/src/include/fe_utils/string_utils.h
index 3c88250e6cc..b9b8708dab7 100644
--- a/src/include/fe_utils/string_utils.h
+++ b/src/include/fe_utils/string_utils.h
@@ -20,7 +20,7 @@
#include "pqexpbuffer.h"
/* Global variables controlling behavior of fmtId() and fmtQualifiedId() */
-extern int quote_all_identifiers;
+extern PGDLLIMPORT int quote_all_identifiers;
extern PQExpBuffer (*getLocalPQExpBuffer) (void);
/* Functions */
diff --git a/src/include/fmgr.h b/src/include/fmgr.h
index 6560e462d66..a1cf4bd646e 100644
--- a/src/include/fmgr.h
+++ b/src/include/fmgr.h
@@ -721,7 +721,7 @@ extern bool CheckFunctionValidatorAccess(Oid validatorOid, Oid functionOid);
/*
* Routines in dfmgr.c
*/
-extern char *Dynamic_library_path;
+extern PGDLLIMPORT char *Dynamic_library_path;
extern void *load_external_function(const char *filename, const char *funcname,
bool signalNotFound, void **filehandle);
diff --git a/src/include/jit/jit.h b/src/include/jit/jit.h
index 707176d9ed3..d1940332094 100644
--- a/src/include/jit/jit.h
+++ b/src/include/jit/jit.h
@@ -79,16 +79,16 @@ struct JitProviderCallbacks
/* GUCs */
-extern bool jit_enabled;
-extern char *jit_provider;
-extern bool jit_debugging_support;
-extern bool jit_dump_bitcode;
-extern bool jit_expressions;
-extern bool jit_profiling_support;
-extern bool jit_tuple_deforming;
-extern double jit_above_cost;
-extern double jit_inline_above_cost;
-extern double jit_optimize_above_cost;
+extern PGDLLIMPORT bool jit_enabled;
+extern PGDLLIMPORT char *jit_provider;
+extern PGDLLIMPORT bool jit_debugging_support;
+extern PGDLLIMPORT bool jit_dump_bitcode;
+extern PGDLLIMPORT bool jit_expressions;
+extern PGDLLIMPORT bool jit_profiling_support;
+extern PGDLLIMPORT bool jit_tuple_deforming;
+extern PGDLLIMPORT double jit_above_cost;
+extern PGDLLIMPORT double jit_inline_above_cost;
+extern PGDLLIMPORT double jit_optimize_above_cost;
extern void jit_reset_after_error(void);
diff --git a/src/include/jit/llvmjit.h b/src/include/jit/llvmjit.h
index 66143afccc0..4541f9a2c42 100644
--- a/src/include/jit/llvmjit.h
+++ b/src/include/jit/llvmjit.h
@@ -56,30 +56,30 @@ typedef struct LLVMJitContext
} LLVMJitContext;
/* llvm module containing information about types */
-extern LLVMModuleRef llvm_types_module;
+extern PGDLLIMPORT LLVMModuleRef llvm_types_module;
/* type and struct definitions */
-extern LLVMTypeRef TypeParamBool;
-extern LLVMTypeRef TypePGFunction;
-extern LLVMTypeRef TypeSizeT;
-extern LLVMTypeRef TypeStorageBool;
-
-extern LLVMTypeRef StructNullableDatum;
-extern LLVMTypeRef StructTupleDescData;
-extern LLVMTypeRef StructHeapTupleData;
-extern LLVMTypeRef StructTupleTableSlot;
-extern LLVMTypeRef StructHeapTupleTableSlot;
-extern LLVMTypeRef StructMinimalTupleTableSlot;
-extern LLVMTypeRef StructMemoryContextData;
-extern LLVMTypeRef StructFunctionCallInfoData;
-extern LLVMTypeRef StructExprContext;
-extern LLVMTypeRef StructExprEvalStep;
-extern LLVMTypeRef StructExprState;
-extern LLVMTypeRef StructAggState;
-extern LLVMTypeRef StructAggStatePerTransData;
-extern LLVMTypeRef StructAggStatePerGroupData;
-
-extern LLVMValueRef AttributeTemplate;
+extern PGDLLIMPORT LLVMTypeRef TypeParamBool;
+extern PGDLLIMPORT LLVMTypeRef TypePGFunction;
+extern PGDLLIMPORT LLVMTypeRef TypeSizeT;
+extern PGDLLIMPORT LLVMTypeRef TypeStorageBool;
+
+extern PGDLLIMPORT LLVMTypeRef StructNullableDatum;
+extern PGDLLIMPORT LLVMTypeRef StructTupleDescData;
+extern PGDLLIMPORT LLVMTypeRef StructHeapTupleData;
+extern PGDLLIMPORT LLVMTypeRef StructTupleTableSlot;
+extern PGDLLIMPORT LLVMTypeRef StructHeapTupleTableSlot;
+extern PGDLLIMPORT LLVMTypeRef StructMinimalTupleTableSlot;
+extern PGDLLIMPORT LLVMTypeRef StructMemoryContextData;
+extern PGDLLIMPORT LLVMTypeRef StructFunctionCallInfoData;
+extern PGDLLIMPORT LLVMTypeRef StructExprContext;
+extern PGDLLIMPORT LLVMTypeRef StructExprEvalStep;
+extern PGDLLIMPORT LLVMTypeRef StructExprState;
+extern PGDLLIMPORT LLVMTypeRef StructAggState;
+extern PGDLLIMPORT LLVMTypeRef StructAggStatePerTransData;
+extern PGDLLIMPORT LLVMTypeRef StructAggStatePerGroupData;
+
+extern PGDLLIMPORT LLVMValueRef AttributeTemplate;
extern void llvm_enter_fatal_on_oom(void);
diff --git a/src/include/libpq/auth.h b/src/include/libpq/auth.h
index 6d7ee1acb9d..d3c189efe32 100644
--- a/src/include/libpq/auth.h
+++ b/src/include/libpq/auth.h
@@ -16,9 +16,9 @@
#include "libpq/libpq-be.h"
-extern char *pg_krb_server_keyfile;
-extern bool pg_krb_caseins_users;
-extern char *pg_krb_realm;
+extern PGDLLIMPORT char *pg_krb_server_keyfile;
+extern PGDLLIMPORT bool pg_krb_caseins_users;
+extern PGDLLIMPORT char *pg_krb_realm;
extern void ClientAuthentication(Port *port);
extern void sendAuthRequest(Port *port, AuthRequest areq, const char *extradata,
diff --git a/src/include/libpq/libpq-be.h b/src/include/libpq/libpq-be.h
index c3bf5146528..90c20da22bf 100644
--- a/src/include/libpq/libpq-be.h
+++ b/src/include/libpq/libpq-be.h
@@ -326,7 +326,7 @@ extern ssize_t be_gssapi_read(Port *port, void *ptr, size_t len);
extern ssize_t be_gssapi_write(Port *port, void *ptr, size_t len);
#endif /* ENABLE_GSS */
-extern ProtocolVersion FrontendProtocol;
+extern PGDLLIMPORT ProtocolVersion FrontendProtocol;
/* TCP keepalives configuration. These are no-ops on an AF_UNIX socket. */
diff --git a/src/include/libpq/libpq.h b/src/include/libpq/libpq.h
index d348a55812e..2de7d9bad2c 100644
--- a/src/include/libpq/libpq.h
+++ b/src/include/libpq/libpq.h
@@ -58,7 +58,7 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
/*
* prototypes for functions in pqcomm.c
*/
-extern WaitEventSet *FeBeWaitSet;
+extern PGDLLIMPORT WaitEventSet *FeBeWaitSet;
#define FeBeWaitSetSocketPos 0
#define FeBeWaitSetLatchPos 1
@@ -87,17 +87,17 @@ extern bool pq_check_connection(void);
/*
* prototypes for functions in be-secure.c
*/
-extern char *ssl_library;
-extern char *ssl_cert_file;
-extern char *ssl_key_file;
-extern char *ssl_ca_file;
-extern char *ssl_crl_file;
-extern char *ssl_crl_dir;
-extern char *ssl_dh_params_file;
+extern PGDLLIMPORT char *ssl_library;
+extern PGDLLIMPORT char *ssl_cert_file;
+extern PGDLLIMPORT char *ssl_key_file;
+extern PGDLLIMPORT char *ssl_ca_file;
+extern PGDLLIMPORT char *ssl_crl_file;
+extern PGDLLIMPORT char *ssl_crl_dir;
+extern PGDLLIMPORT char *ssl_dh_params_file;
extern PGDLLIMPORT char *ssl_passphrase_command;
extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload;
#ifdef USE_SSL
-extern bool ssl_loaded_verify_locations;
+extern PGDLLIMPORT bool ssl_loaded_verify_locations;
#endif
extern int secure_initialize(bool isServerStart);
@@ -118,11 +118,11 @@ extern ssize_t secure_open_gssapi(Port *port);
#endif
/* GUCs */
-extern char *SSLCipherSuites;
-extern char *SSLECDHCurve;
-extern bool SSLPreferServerCiphers;
-extern int ssl_min_protocol_version;
-extern int ssl_max_protocol_version;
+extern PGDLLIMPORT char *SSLCipherSuites;
+extern PGDLLIMPORT char *SSLECDHCurve;
+extern PGDLLIMPORT bool SSLPreferServerCiphers;
+extern PGDLLIMPORT int ssl_min_protocol_version;
+extern PGDLLIMPORT int ssl_max_protocol_version;
enum ssl_protocol_versions
{
diff --git a/src/include/libpq/pqcomm.h b/src/include/libpq/pqcomm.h
index ed26ad22567..b418283d5ff 100644
--- a/src/include/libpq/pqcomm.h
+++ b/src/include/libpq/pqcomm.h
@@ -135,7 +135,7 @@ typedef ProtocolVersion MsgType;
typedef uint32 PacketLen;
-extern bool Db_user_namespace;
+extern PGDLLIMPORT bool Db_user_namespace;
/*
* In protocol 3.0 and later, the startup packet length is not fixed, but
diff --git a/src/include/libpq/scram.h b/src/include/libpq/scram.h
index e60992a0d2d..c51e848c24d 100644
--- a/src/include/libpq/scram.h
+++ b/src/include/libpq/scram.h
@@ -18,7 +18,7 @@
#include "libpq/sasl.h"
/* SASL implementation callbacks */
-extern const pg_be_sasl_mech pg_be_scram_mech;
+extern PGDLLIMPORT const pg_be_sasl_mech pg_be_scram_mech;
/* Routines to handle and check SCRAM-SHA-256 secret */
extern char *pg_be_scram_build_secret(const char *password);
diff --git a/src/include/mb/pg_wchar.h b/src/include/mb/pg_wchar.h
index fd89bee80bf..31f5b393da4 100644
--- a/src/include/mb/pg_wchar.h
+++ b/src/include/mb/pg_wchar.h
@@ -359,7 +359,7 @@ typedef struct pg_enc2name
#endif
} pg_enc2name;
-extern const pg_enc2name pg_enc2name_tbl[];
+extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
/*
* Encoding names for gettext
@@ -370,7 +370,7 @@ typedef struct pg_enc2gettext
const char *name;
} pg_enc2gettext;
-extern const pg_enc2gettext pg_enc2gettext_tbl[];
+extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
/*
* pg_wchar stuff
@@ -406,7 +406,7 @@ typedef struct
int maxmblen; /* max bytes for a char in this encoding */
} pg_wchar_tbl;
-extern const pg_wchar_tbl pg_wchar_table[];
+extern PGDLLIMPORT const pg_wchar_tbl pg_wchar_table[];
/*
* Data structures for conversions between UTF-8 and other encodings
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index bcf20164212..e9ad52c3475 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -182,15 +182,15 @@ extern PGDLLIMPORT pg_time_t MyStartTime;
extern PGDLLIMPORT TimestampTz MyStartTimestamp;
extern PGDLLIMPORT struct Port *MyProcPort;
extern PGDLLIMPORT struct Latch *MyLatch;
-extern int32 MyCancelKey;
-extern int MyPMChildSlot;
+extern PGDLLIMPORT int32 MyCancelKey;
+extern PGDLLIMPORT int MyPMChildSlot;
-extern char OutputFileName[];
+extern PGDLLIMPORT char OutputFileName[];
extern PGDLLIMPORT char my_exec_path[];
-extern char pkglib_path[];
+extern PGDLLIMPORT char pkglib_path[];
#ifdef EXEC_BACKEND
-extern char postgres_exec_path[];
+extern PGDLLIMPORT char postgres_exec_path[];
#endif
/*
@@ -255,25 +255,25 @@ extern PGDLLIMPORT int IntervalStyle;
#define MAXTZLEN 10 /* max TZ name len, not counting tr. null */
-extern bool enableFsync;
+extern PGDLLIMPORT bool enableFsync;
extern PGDLLIMPORT bool allowSystemTableMods;
extern PGDLLIMPORT int work_mem;
extern PGDLLIMPORT double hash_mem_multiplier;
extern PGDLLIMPORT int maintenance_work_mem;
extern PGDLLIMPORT int max_parallel_maintenance_workers;
-extern int VacuumCostPageHit;
-extern int VacuumCostPageMiss;
-extern int VacuumCostPageDirty;
-extern int VacuumCostLimit;
-extern double VacuumCostDelay;
+extern PGDLLIMPORT int VacuumCostPageHit;
+extern PGDLLIMPORT int VacuumCostPageMiss;
+extern PGDLLIMPORT int VacuumCostPageDirty;
+extern PGDLLIMPORT int VacuumCostLimit;
+extern PGDLLIMPORT double VacuumCostDelay;
-extern int64 VacuumPageHit;
-extern int64 VacuumPageMiss;
-extern int64 VacuumPageDirty;
+extern PGDLLIMPORT int64 VacuumPageHit;
+extern PGDLLIMPORT int64 VacuumPageMiss;
+extern PGDLLIMPORT int64 VacuumPageDirty;
-extern int VacuumCostBalance;
-extern bool VacuumCostActive;
+extern PGDLLIMPORT int VacuumCostBalance;
+extern PGDLLIMPORT bool VacuumCostActive;
/* in tcop/postgres.c */
@@ -299,7 +299,7 @@ extern void PreventCommandIfParallelMode(const char *cmdname);
extern void PreventCommandDuringRecovery(const char *cmdname);
/* in utils/misc/guc.c */
-extern int trace_recovery_messages;
+extern PGDLLIMPORT int trace_recovery_messages;
extern int trace_recovery(int trace_level);
/*****************************************************************************
@@ -312,7 +312,7 @@ extern int trace_recovery(int trace_level);
#define SECURITY_RESTRICTED_OPERATION 0x0002
#define SECURITY_NOFORCE_RLS 0x0004
-extern char *DatabasePath;
+extern PGDLLIMPORT char *DatabasePath;
/* now in utils/init/miscinit.c */
extern void InitPostmasterChild(void);
@@ -337,7 +337,7 @@ typedef enum BackendType
B_LOGGER,
} BackendType;
-extern BackendType MyBackendType;
+extern PGDLLIMPORT BackendType MyBackendType;
extern const char *GetBackendTypeDesc(BackendType backendType);
@@ -400,7 +400,7 @@ typedef enum ProcessingMode
NormalProcessing /* normal processing */
} ProcessingMode;
-extern ProcessingMode Mode;
+extern PGDLLIMPORT ProcessingMode Mode;
#define IsBootstrapProcessingMode() (Mode == BootstrapProcessing)
#define IsInitProcessingMode() (Mode == InitProcessing)
@@ -438,7 +438,7 @@ typedef enum
NUM_AUXPROCTYPES /* Must be last! */
} AuxProcType;
-extern AuxProcType MyAuxProcType;
+extern PGDLLIMPORT AuxProcType MyAuxProcType;
#define AmStartupProcess() (MyAuxProcType == StartupProcess)
#define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
@@ -456,19 +456,19 @@ extern AuxProcType MyAuxProcType;
/* in utils/init/postinit.c */
extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
extern void InitializeMaxBackends(void);
-extern int GetMaxBackends(void);
+extern int GetMaxBackends(void);
extern void SetMaxBackends(int max_backends);
extern void InitPostgres(const char *in_dbname, Oid dboid, const char *username,
Oid useroid, char *out_dbname, bool override_allow_connections);
extern void BaseInit(void);
/* in utils/init/miscinit.c */
-extern bool IgnoreSystemIndexes;
+extern PGDLLIMPORT bool IgnoreSystemIndexes;
extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress;
-extern bool process_shared_preload_libraries_done;
-extern char *session_preload_libraries_string;
-extern char *shared_preload_libraries_string;
-extern char *local_preload_libraries_string;
+extern PGDLLIMPORT bool process_shared_preload_libraries_done;
+extern PGDLLIMPORT char *session_preload_libraries_string;
+extern PGDLLIMPORT char *shared_preload_libraries_string;
+extern PGDLLIMPORT char *local_preload_libraries_string;
extern void CreateDataDirLockFile(bool amPostmaster);
extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
diff --git a/src/include/nodes/readfuncs.h b/src/include/nodes/readfuncs.h
index 41794354e27..66717fd6c33 100644
--- a/src/include/nodes/readfuncs.h
+++ b/src/include/nodes/readfuncs.h
@@ -20,7 +20,7 @@
* variable in read.c that needs to be accessible to readfuncs.c
*/
#ifdef WRITE_READ_PARSE_PLAN_TREES
-extern bool restore_location_fields;
+extern PGDLLIMPORT bool restore_location_fields;
#endif
/*
diff --git a/src/include/optimizer/geqo.h b/src/include/optimizer/geqo.h
index 4563f200cde..d3993233323 100644
--- a/src/include/optimizer/geqo.h
+++ b/src/include/optimizer/geqo.h
@@ -49,23 +49,24 @@
*
* If you change these, update backend/utils/misc/postgresql.conf.sample
*/
-extern int Geqo_effort; /* 1 .. 10, knob for adjustment of defaults */
+extern PGDLLIMPORT int Geqo_effort; /* 1 .. 10, knob for adjustment of
+ * defaults */
#define DEFAULT_GEQO_EFFORT 5
#define MIN_GEQO_EFFORT 1
#define MAX_GEQO_EFFORT 10
-extern int Geqo_pool_size; /* 2 .. inf, or 0 to use default */
+extern PGDLLIMPORT int Geqo_pool_size; /* 2 .. inf, or 0 to use default */
-extern int Geqo_generations; /* 1 .. inf, or 0 to use default */
+extern PGDLLIMPORT int Geqo_generations; /* 1 .. inf, or 0 to use default */
-extern double Geqo_selection_bias;
+extern PGDLLIMPORT double Geqo_selection_bias;
#define DEFAULT_GEQO_SELECTION_BIAS 2.0
#define MIN_GEQO_SELECTION_BIAS 1.5
#define MAX_GEQO_SELECTION_BIAS 2.0
-extern double Geqo_seed; /* 0 .. 1 */
+extern PGDLLIMPORT double Geqo_seed; /* 0 .. 1 */
/*
diff --git a/src/include/optimizer/optimizer.h b/src/include/optimizer/optimizer.h
index 2302ab6d546..d40ce2eae14 100644
--- a/src/include/optimizer/optimizer.h
+++ b/src/include/optimizer/optimizer.h
@@ -112,8 +112,8 @@ typedef enum
} ForceParallelMode;
/* GUC parameters */
-extern int force_parallel_mode;
-extern bool parallel_leader_participation;
+extern PGDLLIMPORT int force_parallel_mode;
+extern PGDLLIMPORT bool parallel_leader_participation;
extern struct PlannedStmt *planner(Query *parse, const char *query_string,
int cursorOptions,
diff --git a/src/include/optimizer/planmain.h b/src/include/optimizer/planmain.h
index 6947bc65d1e..c4f61c1a09c 100644
--- a/src/include/optimizer/planmain.h
+++ b/src/include/optimizer/planmain.h
@@ -19,7 +19,7 @@
/* GUC parameters */
#define DEFAULT_CURSOR_TUPLE_FRACTION 0.1
-extern double cursor_tuple_fraction;
+extern PGDLLIMPORT double cursor_tuple_fraction;
/* query_planner callback to compute query_pathkeys */
typedef void (*query_pathkeys_callback) (PlannerInfo *root, void *extra);
@@ -64,8 +64,8 @@ extern Limit *make_limit(Plan *lefttree, Node *limitOffset, Node *limitCount,
/*
* prototypes for plan/initsplan.c
*/
-extern int from_collapse_limit;
-extern int join_collapse_limit;
+extern PGDLLIMPORT int from_collapse_limit;
+extern PGDLLIMPORT int join_collapse_limit;
extern void add_base_rels_to_query(PlannerInfo *root, Node *jtnode);
extern void add_other_rels_to_query(PlannerInfo *root);
diff --git a/src/include/parser/parse_expr.h b/src/include/parser/parse_expr.h
index 308e84edda4..c8e5c57b430 100644
--- a/src/include/parser/parse_expr.h
+++ b/src/include/parser/parse_expr.h
@@ -16,7 +16,7 @@
#include "parser/parse_node.h"
/* GUC parameters */
-extern bool Transform_null_equals;
+extern PGDLLIMPORT bool Transform_null_equals;
extern Node *transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKind);
diff --git a/src/include/parser/parser.h b/src/include/parser/parser.h
index 6aac0e096a1..828150f01bc 100644
--- a/src/include/parser/parser.h
+++ b/src/include/parser/parser.h
@@ -53,8 +53,8 @@ typedef enum
} BackslashQuoteType;
/* GUC variables in scan.l (every one of these is a bad idea :-() */
-extern int backslash_quote;
-extern bool escape_string_warning;
+extern PGDLLIMPORT int backslash_quote;
+extern PGDLLIMPORT bool escape_string_warning;
extern PGDLLIMPORT bool standard_conforming_strings;
diff --git a/src/include/pg_getopt.h b/src/include/pg_getopt.h
index ec9f6e6ee34..9d91e602e64 100644
--- a/src/include/pg_getopt.h
+++ b/src/include/pg_getopt.h
@@ -33,10 +33,10 @@
*/
#ifndef HAVE_GETOPT_H
-extern char *optarg;
-extern int optind;
-extern int opterr;
-extern int optopt;
+extern PGDLLIMPORT char *optarg;
+extern PGDLLIMPORT int optind;
+extern PGDLLIMPORT int opterr;
+extern PGDLLIMPORT int optopt;
#endif /* HAVE_GETOPT_H */
@@ -45,7 +45,7 @@ extern int optopt;
* Cygwin, however, doesn't like this either.
*/
#if defined(HAVE_INT_OPTRESET) && !defined(__CYGWIN__)
-extern int optreset;
+extern PGDLLIMPORT int optreset;
#endif
/* Provide getopt() declaration if the platform doesn't have it */
diff --git a/src/include/pgstat.h b/src/include/pgstat.h
index 88c87a0cc54..ac28f813b4e 100644
--- a/src/include/pgstat.h
+++ b/src/include/pgstat.h
@@ -651,7 +651,7 @@ extern PGDLLIMPORT int pgstat_fetch_consistency;
*/
/* updated directly by bgwriter and bufmgr */
-extern PgStat_BgWriterStats PendingBgWriterStats;
+extern PGDLLIMPORT PgStat_BgWriterStats PendingBgWriterStats;
/*
@@ -662,7 +662,7 @@ extern PgStat_BgWriterStats PendingBgWriterStats;
* Checkpointer statistics counters are updated directly by checkpointer and
* bufmgr.
*/
-extern PgStat_CheckpointerStats PendingCheckpointerStats;
+extern PGDLLIMPORT PgStat_CheckpointerStats PendingCheckpointerStats;
/*
@@ -670,18 +670,18 @@ extern PgStat_CheckpointerStats PendingCheckpointerStats;
*/
/* Updated by pgstat_count_buffer_*_time macros */
-extern PgStat_Counter pgStatBlockReadTime;
-extern PgStat_Counter pgStatBlockWriteTime;
+extern PGDLLIMPORT PgStat_Counter pgStatBlockReadTime;
+extern PGDLLIMPORT PgStat_Counter pgStatBlockWriteTime;
/*
* Updated by pgstat_count_conn_*_time macros, called by
* pgstat_report_activity().
*/
-extern PgStat_Counter pgStatActiveTime;
-extern PgStat_Counter pgStatTransactionIdleTime;
+extern PGDLLIMPORT PgStat_Counter pgStatActiveTime;
+extern PGDLLIMPORT PgStat_Counter pgStatTransactionIdleTime;
/* updated by the traffic cop and in errfinish() */
-extern SessionEndType pgStatSessionEndCause;
+extern PGDLLIMPORT SessionEndType pgStatSessionEndCause;
/*
@@ -689,7 +689,7 @@ extern SessionEndType pgStatSessionEndCause;
*/
/* updated directly by backends and background processes */
-extern PgStat_WalStats PendingWalStats;
+extern PGDLLIMPORT PgStat_WalStats PendingWalStats;
#endif /* PGSTAT_H */
diff --git a/src/include/pgtime.h b/src/include/pgtime.h
index 441d7847c12..1c44be8baa9 100644
--- a/src/include/pgtime.h
+++ b/src/include/pgtime.h
@@ -81,7 +81,7 @@ extern size_t pg_strftime(char *s, size_t max, const char *format,
/* these functions and variables are in pgtz.c */
extern PGDLLIMPORT pg_tz *session_timezone;
-extern pg_tz *log_timezone;
+extern PGDLLIMPORT pg_tz *log_timezone;
extern void pg_timezone_initialize(void);
extern pg_tz *pg_tzset(const char *tzname);
diff --git a/src/include/port/win32_port.h b/src/include/port/win32_port.h
index 4bb6fc5e1e3..5045ced91b7 100644
--- a/src/include/port/win32_port.h
+++ b/src/include/port/win32_port.h
@@ -449,8 +449,8 @@ extern char *pgwin32_setlocale(int category, const char *locale);
/* In backend/port/win32/signal.c */
extern PGDLLIMPORT volatile int pg_signal_queue;
extern PGDLLIMPORT int pg_signal_mask;
-extern HANDLE pgwin32_signal_event;
-extern HANDLE pgwin32_initial_signal_pipe;
+extern PGDLLIMPORT HANDLE pgwin32_signal_event;
+extern PGDLLIMPORT HANDLE pgwin32_initial_signal_pipe;
#define UNBLOCKED_SIGNAL_QUEUE() (pg_signal_queue & ~pg_signal_mask)
#define PG_SIGNAL_COUNT 32
@@ -485,7 +485,7 @@ int pgwin32_recv(SOCKET s, char *buf, int len, int flags);
int pgwin32_send(SOCKET s, const void *buf, int len, int flags);
int pgwin32_waitforsinglesocket(SOCKET s, int what, int timeout);
-extern int pgwin32_noblock;
+extern PGDLLIMPORT int pgwin32_noblock;
#endif /* FRONTEND */
diff --git a/src/include/port/win32ntdll.h b/src/include/port/win32ntdll.h
index 663b9754bd7..291b067ea4f 100644
--- a/src/include/port/win32ntdll.h
+++ b/src/include/port/win32ntdll.h
@@ -23,9 +23,9 @@
#include <ntstatus.h>
#include <winternl.h>
-typedef NTSTATUS (__stdcall *RtlGetLastNtStatus_t) (void);
+typedef NTSTATUS (__stdcall * RtlGetLastNtStatus_t) (void);
-extern RtlGetLastNtStatus_t pg_RtlGetLastNtStatus;
+extern PGDLLIMPORT RtlGetLastNtStatus_t pg_RtlGetLastNtStatus;
extern int initialize_ntdll(void);
diff --git a/src/include/postmaster/autovacuum.h b/src/include/postmaster/autovacuum.h
index 30a2b3274f8..9d40fd6d54b 100644
--- a/src/include/postmaster/autovacuum.h
+++ b/src/include/postmaster/autovacuum.h
@@ -27,25 +27,25 @@ typedef enum
/* GUC variables */
-extern bool autovacuum_start_daemon;
-extern int autovacuum_max_workers;
-extern int autovacuum_work_mem;
-extern int autovacuum_naptime;
-extern int autovacuum_vac_thresh;
-extern double autovacuum_vac_scale;
-extern int autovacuum_vac_ins_thresh;
-extern double autovacuum_vac_ins_scale;
-extern int autovacuum_anl_thresh;
-extern double autovacuum_anl_scale;
-extern int autovacuum_freeze_max_age;
-extern int autovacuum_multixact_freeze_max_age;
-extern double autovacuum_vac_cost_delay;
-extern int autovacuum_vac_cost_limit;
+extern PGDLLIMPORT bool autovacuum_start_daemon;
+extern PGDLLIMPORT int autovacuum_max_workers;
+extern PGDLLIMPORT int autovacuum_work_mem;
+extern PGDLLIMPORT int autovacuum_naptime;
+extern PGDLLIMPORT int autovacuum_vac_thresh;
+extern PGDLLIMPORT double autovacuum_vac_scale;
+extern PGDLLIMPORT int autovacuum_vac_ins_thresh;
+extern PGDLLIMPORT double autovacuum_vac_ins_scale;
+extern PGDLLIMPORT int autovacuum_anl_thresh;
+extern PGDLLIMPORT double autovacuum_anl_scale;
+extern PGDLLIMPORT int autovacuum_freeze_max_age;
+extern PGDLLIMPORT int autovacuum_multixact_freeze_max_age;
+extern PGDLLIMPORT double autovacuum_vac_cost_delay;
+extern PGDLLIMPORT int autovacuum_vac_cost_limit;
/* autovacuum launcher PID, only valid when worker is shutting down */
-extern int AutovacuumLauncherPid;
+extern PGDLLIMPORT int AutovacuumLauncherPid;
-extern int Log_autovacuum_min_duration;
+extern PGDLLIMPORT int Log_autovacuum_min_duration;
/* Status inquiry functions */
extern bool AutoVacuumingActive(void);
diff --git a/src/include/postmaster/bgworker_internals.h b/src/include/postmaster/bgworker_internals.h
index 75900686fc9..387683546d8 100644
--- a/src/include/postmaster/bgworker_internals.h
+++ b/src/include/postmaster/bgworker_internals.h
@@ -42,7 +42,7 @@ typedef struct RegisteredBgWorker
slist_node rw_lnode; /* list link */
} RegisteredBgWorker;
-extern slist_head BackgroundWorkerList;
+extern PGDLLIMPORT slist_head BackgroundWorkerList;
extern Size BackgroundWorkerShmemSize(void);
extern void BackgroundWorkerShmemInit(void);
diff --git a/src/include/postmaster/bgwriter.h b/src/include/postmaster/bgwriter.h
index 2882efd67be..2511ef451e0 100644
--- a/src/include/postmaster/bgwriter.h
+++ b/src/include/postmaster/bgwriter.h
@@ -22,10 +22,10 @@
/* GUC options */
-extern int BgWriterDelay;
-extern int CheckPointTimeout;
-extern int CheckPointWarning;
-extern double CheckPointCompletionTarget;
+extern PGDLLIMPORT int BgWriterDelay;
+extern PGDLLIMPORT int CheckPointTimeout;
+extern PGDLLIMPORT int CheckPointWarning;
+extern PGDLLIMPORT double CheckPointCompletionTarget;
extern void BackgroundWriterMain(void) pg_attribute_noreturn();
extern void CheckpointerMain(void) pg_attribute_noreturn();
diff --git a/src/include/postmaster/pgarch.h b/src/include/postmaster/pgarch.h
index 9bc7593a2df..38cb1c64774 100644
--- a/src/include/postmaster/pgarch.h
+++ b/src/include/postmaster/pgarch.h
@@ -36,7 +36,7 @@ extern void PgArchForceDirScan(void);
/*
* The value of the archive_library GUC.
*/
-extern char *XLogArchiveLibrary;
+extern PGDLLIMPORT char *XLogArchiveLibrary;
/*
* Archive module callbacks
@@ -55,19 +55,19 @@ typedef struct ArchiveModuleCallbacks
ArchiveCheckConfiguredCB check_configured_cb;
ArchiveFileCB archive_file_cb;
ArchiveShutdownCB shutdown_cb;
-} ArchiveModuleCallbacks;
+} ArchiveModuleCallbacks;
/*
* Type of the shared library symbol _PG_archive_module_init that is looked
* up when loading an archive library.
*/
-typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb);
+typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks * cb);
/*
* Since the logic for archiving via a shell command is in the core server
* and does not need to be loaded via a shared library, it has a special
* initialization function.
*/
-extern void shell_archive_init(ArchiveModuleCallbacks *cb);
+extern void shell_archive_init(ArchiveModuleCallbacks * cb);
#endif /* _PGARCH_H */
diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h
index 324a30ec1ab..90e333ccd20 100644
--- a/src/include/postmaster/postmaster.h
+++ b/src/include/postmaster/postmaster.h
@@ -14,27 +14,27 @@
#define _POSTMASTER_H
/* GUC options */
-extern bool EnableSSL;
-extern int ReservedBackends;
+extern PGDLLIMPORT bool EnableSSL;
+extern PGDLLIMPORT int ReservedBackends;
extern PGDLLIMPORT int PostPortNumber;
-extern int Unix_socket_permissions;
-extern char *Unix_socket_group;
-extern char *Unix_socket_directories;
-extern char *ListenAddresses;
-extern bool ClientAuthInProgress;
-extern int PreAuthDelay;
-extern int AuthenticationTimeout;
-extern bool Log_connections;
-extern bool log_hostname;
-extern bool enable_bonjour;
-extern char *bonjour_name;
-extern bool restart_after_crash;
-extern bool remove_temp_files_after_crash;
+extern PGDLLIMPORT int Unix_socket_permissions;
+extern PGDLLIMPORT char *Unix_socket_group;
+extern PGDLLIMPORT char *Unix_socket_directories;
+extern PGDLLIMPORT char *ListenAddresses;
+extern PGDLLIMPORT bool ClientAuthInProgress;
+extern PGDLLIMPORT int PreAuthDelay;
+extern PGDLLIMPORT int AuthenticationTimeout;
+extern PGDLLIMPORT bool Log_connections;
+extern PGDLLIMPORT bool log_hostname;
+extern PGDLLIMPORT bool enable_bonjour;
+extern PGDLLIMPORT char *bonjour_name;
+extern PGDLLIMPORT bool restart_after_crash;
+extern PGDLLIMPORT bool remove_temp_files_after_crash;
#ifdef WIN32
-extern HANDLE PostmasterHandle;
+extern PGDLLIMPORT HANDLE PostmasterHandle;
#else
-extern int postmaster_alive_fds[2];
+extern PGDLLIMPORT int postmaster_alive_fds[2];
/*
* Constants that represent which of postmaster_alive_fds is held by
diff --git a/src/include/postmaster/startup.h b/src/include/postmaster/startup.h
index 7e39db71593..d66ec1fcb12 100644
--- a/src/include/postmaster/startup.h
+++ b/src/include/postmaster/startup.h
@@ -23,7 +23,7 @@
ereport(LOG, errmsg(msg, secs, (usecs / 10000), __VA_ARGS__ )); \
} while(0)
-extern int log_startup_progress_interval;
+extern PGDLLIMPORT int log_startup_progress_interval;
extern void HandleStartupProcInterrupts(void);
extern void StartupProcessMain(void) pg_attribute_noreturn();
diff --git a/src/include/postmaster/syslogger.h b/src/include/postmaster/syslogger.h
index 1ca326e52e3..6436724f3db 100644
--- a/src/include/postmaster/syslogger.h
+++ b/src/include/postmaster/syslogger.h
@@ -67,18 +67,18 @@ typedef union
#define PIPE_PROTO_DEST_JSONLOG 0x40
/* GUC options */
-extern bool Logging_collector;
-extern int Log_RotationAge;
-extern int Log_RotationSize;
+extern PGDLLIMPORT bool Logging_collector;
+extern PGDLLIMPORT int Log_RotationAge;
+extern PGDLLIMPORT int Log_RotationSize;
extern PGDLLIMPORT char *Log_directory;
extern PGDLLIMPORT char *Log_filename;
-extern bool Log_truncate_on_rotation;
-extern int Log_file_mode;
+extern PGDLLIMPORT bool Log_truncate_on_rotation;
+extern PGDLLIMPORT int Log_file_mode;
#ifndef WIN32
-extern int syslogPipe[2];
+extern PGDLLIMPORT int syslogPipe[2];
#else
-extern HANDLE syslogPipe[2];
+extern PGDLLIMPORT HANDLE syslogPipe[2];
#endif
diff --git a/src/include/postmaster/walwriter.h b/src/include/postmaster/walwriter.h
index 5a3011d9c95..ddc943657e3 100644
--- a/src/include/postmaster/walwriter.h
+++ b/src/include/postmaster/walwriter.h
@@ -13,8 +13,8 @@
#define _WALWRITER_H
/* GUC options */
-extern int WalWriterDelay;
-extern int WalWriterFlushAfter;
+extern PGDLLIMPORT int WalWriterDelay;
+extern PGDLLIMPORT int WalWriterFlushAfter;
extern void WalWriterMain(void) pg_attribute_noreturn();
diff --git a/src/include/replication/logicallauncher.h b/src/include/replication/logicallauncher.h
index 15596fe446e..f1e2821e254 100644
--- a/src/include/replication/logicallauncher.h
+++ b/src/include/replication/logicallauncher.h
@@ -12,8 +12,8 @@
#ifndef LOGICALLAUNCHER_H
#define LOGICALLAUNCHER_H
-extern int max_logical_replication_workers;
-extern int max_sync_workers_per_subscription;
+extern PGDLLIMPORT int max_logical_replication_workers;
+extern PGDLLIMPORT int max_sync_workers_per_subscription;
extern void ApplyLauncherRegister(void);
extern void ApplyLauncherMain(Datum main_arg);
diff --git a/src/include/replication/syncrep.h b/src/include/replication/syncrep.h
index 27be230d779..4d7c90b9f0d 100644
--- a/src/include/replication/syncrep.h
+++ b/src/include/replication/syncrep.h
@@ -72,14 +72,14 @@ typedef struct SyncRepConfigData
char member_names[FLEXIBLE_ARRAY_MEMBER];
} SyncRepConfigData;
-extern SyncRepConfigData *SyncRepConfig;
+extern PGDLLIMPORT SyncRepConfigData *SyncRepConfig;
/* communication variables for parsing synchronous_standby_names GUC */
-extern SyncRepConfigData *syncrep_parse_result;
-extern char *syncrep_parse_error_msg;
+extern PGDLLIMPORT SyncRepConfigData *syncrep_parse_result;
+extern PGDLLIMPORT char *syncrep_parse_error_msg;
/* user-settable parameters for synchronous replication */
-extern char *SyncRepStandbyNames;
+extern PGDLLIMPORT char *SyncRepStandbyNames;
/* called by user backend */
extern void SyncRepWaitForLSN(XLogRecPtr lsn, bool commit);
diff --git a/src/include/replication/walreceiver.h b/src/include/replication/walreceiver.h
index 92f73a55b8d..81184aa92f3 100644
--- a/src/include/replication/walreceiver.h
+++ b/src/include/replication/walreceiver.h
@@ -25,9 +25,9 @@
#include "utils/tuplestore.h"
/* user-settable parameters */
-extern int wal_receiver_status_interval;
-extern int wal_receiver_timeout;
-extern bool hot_standby_feedback;
+extern PGDLLIMPORT int wal_receiver_status_interval;
+extern PGDLLIMPORT int wal_receiver_timeout;
+extern PGDLLIMPORT bool hot_standby_feedback;
/*
* MAXCONNINFO: maximum size of a connection string.
@@ -160,7 +160,7 @@ typedef struct
sig_atomic_t force_reply; /* used as a bool */
} WalRcvData;
-extern WalRcvData *WalRcv;
+extern PGDLLIMPORT WalRcvData *WalRcv;
typedef struct
{
diff --git a/src/include/replication/walsender.h b/src/include/replication/walsender.h
index b1892e9e4be..d99a21b0771 100644
--- a/src/include/replication/walsender.h
+++ b/src/include/replication/walsender.h
@@ -25,15 +25,15 @@ typedef enum
} CRSSnapshotAction;
/* global state */
-extern bool am_walsender;
-extern bool am_cascading_walsender;
-extern bool am_db_walsender;
-extern bool wake_wal_senders;
+extern PGDLLIMPORT bool am_walsender;
+extern PGDLLIMPORT bool am_cascading_walsender;
+extern PGDLLIMPORT bool am_db_walsender;
+extern PGDLLIMPORT bool wake_wal_senders;
/* user-settable parameters */
-extern int max_wal_senders;
-extern int wal_sender_timeout;
-extern bool log_replication_commands;
+extern PGDLLIMPORT int max_wal_senders;
+extern PGDLLIMPORT int wal_sender_timeout;
+extern PGDLLIMPORT bool log_replication_commands;
extern void InitWalSender(void);
extern bool exec_replication_command(const char *query_string);
diff --git a/src/include/replication/walsender_private.h b/src/include/replication/walsender_private.h
index 9631047c6c1..c14888e493f 100644
--- a/src/include/replication/walsender_private.h
+++ b/src/include/replication/walsender_private.h
@@ -80,7 +80,7 @@ typedef struct WalSnd
TimestampTz replyTime;
} WalSnd;
-extern WalSnd *MyWalSnd;
+extern PGDLLIMPORT WalSnd *MyWalSnd;
/* There is one WalSndCtl struct for the whole database cluster */
typedef struct
@@ -107,7 +107,7 @@ typedef struct
WalSnd walsnds[FLEXIBLE_ARRAY_MEMBER];
} WalSndCtlData;
-extern WalSndCtlData *WalSndCtl;
+extern PGDLLIMPORT WalSndCtlData *WalSndCtl;
extern void WalSndSetState(WalSndState state);
@@ -123,6 +123,6 @@ extern void replication_scanner_init(const char *query_string);
extern void replication_scanner_finish(void);
extern bool replication_scanner_is_replication_command(void);
-extern Node *replication_parse_result;
+extern PGDLLIMPORT Node *replication_parse_result;
#endif /* _WALSENDER_PRIVATE_H */
diff --git a/src/include/replication/worker_internal.h b/src/include/replication/worker_internal.h
index 3c3f5f6a3a0..4485d4ebee1 100644
--- a/src/include/replication/worker_internal.h
+++ b/src/include/replication/worker_internal.h
@@ -69,16 +69,16 @@ typedef struct LogicalRepWorker
} LogicalRepWorker;
/* Main memory context for apply worker. Permanent during worker lifetime. */
-extern MemoryContext ApplyContext;
+extern PGDLLIMPORT MemoryContext ApplyContext;
/* libpqreceiver connection */
-extern struct WalReceiverConn *LogRepWorkerWalRcvConn;
+extern PGDLLIMPORT struct WalReceiverConn *LogRepWorkerWalRcvConn;
/* Worker and subscription objects. */
-extern Subscription *MySubscription;
-extern LogicalRepWorker *MyLogicalRepWorker;
+extern PGDLLIMPORT Subscription *MySubscription;
+extern PGDLLIMPORT LogicalRepWorker *MyLogicalRepWorker;
-extern bool in_remote_transaction;
+extern PGDLLIMPORT bool in_remote_transaction;
extern void logicalrep_worker_attach(int slot);
extern LogicalRepWorker *logicalrep_worker_find(Oid subid, Oid relid,
diff --git a/src/include/storage/buf_internals.h b/src/include/storage/buf_internals.h
index b903d2bcaf0..a17e7b28a53 100644
--- a/src/include/storage/buf_internals.h
+++ b/src/include/storage/buf_internals.h
@@ -279,7 +279,7 @@ extern PGDLLIMPORT BufferDescPadded *BufferDescriptors;
extern PGDLLIMPORT WritebackContext BackendWritebackContext;
/* in localbuf.c */
-extern BufferDesc *LocalBufferDescriptors;
+extern PGDLLIMPORT BufferDesc *LocalBufferDescriptors;
/* in bufmgr.c */
@@ -298,7 +298,7 @@ typedef struct CkptSortItem
int buf_id;
} CkptSortItem;
-extern CkptSortItem *CkptBufferIds;
+extern PGDLLIMPORT CkptSortItem *CkptBufferIds;
/*
* Internal buffer management routines
diff --git a/src/include/storage/bufmgr.h b/src/include/storage/bufmgr.h
index a6b657f0ba5..58391406f65 100644
--- a/src/include/storage/bufmgr.h
+++ b/src/include/storage/bufmgr.h
@@ -65,16 +65,16 @@ struct SMgrRelationData;
extern PGDLLIMPORT int NBuffers;
/* in bufmgr.c */
-extern bool zero_damaged_pages;
-extern int bgwriter_lru_maxpages;
-extern double bgwriter_lru_multiplier;
-extern bool track_io_timing;
-extern int effective_io_concurrency;
-extern int maintenance_io_concurrency;
-
-extern int checkpoint_flush_after;
-extern int backend_flush_after;
-extern int bgwriter_flush_after;
+extern PGDLLIMPORT bool zero_damaged_pages;
+extern PGDLLIMPORT int bgwriter_lru_maxpages;
+extern PGDLLIMPORT double bgwriter_lru_multiplier;
+extern PGDLLIMPORT bool track_io_timing;
+extern PGDLLIMPORT int effective_io_concurrency;
+extern PGDLLIMPORT int maintenance_io_concurrency;
+
+extern PGDLLIMPORT int checkpoint_flush_after;
+extern PGDLLIMPORT int backend_flush_after;
+extern PGDLLIMPORT int bgwriter_flush_after;
/* in buf_init.c */
extern PGDLLIMPORT char *BufferBlocks;
diff --git a/src/include/storage/dsm_impl.h b/src/include/storage/dsm_impl.h
index f60b76f075b..c51584dc6a0 100644
--- a/src/include/storage/dsm_impl.h
+++ b/src/include/storage/dsm_impl.h
@@ -39,8 +39,8 @@
#endif
/* GUC. */
-extern int dynamic_shared_memory_type;
-extern int min_dynamic_shared_memory;
+extern PGDLLIMPORT int dynamic_shared_memory_type;
+extern PGDLLIMPORT int min_dynamic_shared_memory;
/*
* Directory for on-disk state.
diff --git a/src/include/storage/fd.h b/src/include/storage/fd.h
index 29209e27243..69549b000fa 100644
--- a/src/include/storage/fd.h
+++ b/src/include/storage/fd.h
@@ -59,12 +59,12 @@ typedef int File;
/* GUC parameter */
extern PGDLLIMPORT int max_files_per_process;
extern PGDLLIMPORT bool data_sync_retry;
-extern int recovery_init_sync_method;
+extern PGDLLIMPORT int recovery_init_sync_method;
/*
* This is private to fd.c, but exported for save/restore_backend_variables()
*/
-extern int max_safe_fds;
+extern PGDLLIMPORT int max_safe_fds;
/*
* On Windows, we have to interpret EACCES as possibly meaning the same as
diff --git a/src/include/storage/large_object.h b/src/include/storage/large_object.h
index 274b97fd422..b826a7dcd5b 100644
--- a/src/include/storage/large_object.h
+++ b/src/include/storage/large_object.h
@@ -79,7 +79,7 @@ typedef struct LargeObjectDesc
/*
* GUC: backwards-compatibility flag to suppress LO permission checks
*/
-extern bool lo_compat_privileges;
+extern PGDLLIMPORT bool lo_compat_privileges;
/*
* Function definitions...
diff --git a/src/include/storage/lock.h b/src/include/storage/lock.h
index dc537e20f2c..e4e1495b245 100644
--- a/src/include/storage/lock.h
+++ b/src/include/storage/lock.h
@@ -34,14 +34,14 @@ typedef struct PROC_QUEUE
} PROC_QUEUE;
/* GUC variables */
-extern int max_locks_per_xact;
+extern PGDLLIMPORT int max_locks_per_xact;
#ifdef LOCK_DEBUG
-extern int Trace_lock_oidmin;
-extern bool Trace_locks;
-extern bool Trace_userlocks;
-extern int Trace_lock_table;
-extern bool Debug_deadlocks;
+extern PGDLLIMPORT int Trace_lock_oidmin;
+extern PGDLLIMPORT bool Trace_locks;
+extern PGDLLIMPORT bool Trace_userlocks;
+extern PGDLLIMPORT int Trace_lock_table;
+extern PGDLLIMPORT bool Debug_deadlocks;
#endif /* LOCK_DEBUG */
@@ -154,7 +154,7 @@ typedef enum LockTagType
#define LOCKTAG_LAST_TYPE LOCKTAG_ADVISORY
-extern const char *const LockTagTypeNames[];
+extern PGDLLIMPORT const char *const LockTagTypeNames[];
/*
* The LOCKTAG struct is defined with malice aforethought to fit into 16
diff --git a/src/include/storage/lwlock.h b/src/include/storage/lwlock.h
index 33eb4c10339..e8c91139f89 100644
--- a/src/include/storage/lwlock.h
+++ b/src/include/storage/lwlock.h
@@ -110,7 +110,7 @@ typedef enum LWLockMode
#ifdef LOCK_DEBUG
-extern bool Trace_lwlocks;
+extern PGDLLIMPORT bool Trace_lwlocks;
#endif
extern bool LWLockAcquire(LWLock *lock, LWLockMode mode);
@@ -121,7 +121,7 @@ extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val);
extern void LWLockReleaseAll(void);
extern bool LWLockHeldByMe(LWLock *lock);
extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
-extern int LWLockHeldCount(void);
+extern int LWLockHeldCount(void);
extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value);
diff --git a/src/include/storage/pg_shmem.h b/src/include/storage/pg_shmem.h
index 50e5c5f99b3..da5962edb9f 100644
--- a/src/include/storage/pg_shmem.h
+++ b/src/include/storage/pg_shmem.h
@@ -42,9 +42,9 @@ typedef struct PGShmemHeader /* standard header for all Postgres shmem */
} PGShmemHeader;
/* GUC variables */
-extern int shared_memory_type;
-extern int huge_pages;
-extern int huge_page_size;
+extern PGDLLIMPORT int shared_memory_type;
+extern PGDLLIMPORT int huge_pages;
+extern PGDLLIMPORT int huge_page_size;
/* Possible values for huge_pages */
typedef enum
@@ -63,12 +63,12 @@ typedef enum
} PGShmemType;
#ifndef WIN32
-extern unsigned long UsedShmemSegID;
+extern PGDLLIMPORT unsigned long UsedShmemSegID;
#else
-extern HANDLE UsedShmemSegID;
-extern void *ShmemProtectiveRegion;
+extern PGDLLIMPORT HANDLE UsedShmemSegID;
+extern PGDLLIMPORT void *ShmemProtectiveRegion;
#endif
-extern void *UsedShmemSegAddr;
+extern PGDLLIMPORT void *UsedShmemSegAddr;
#if !defined(WIN32) && !defined(EXEC_BACKEND)
#define DEFAULT_SHARED_MEMORY_TYPE SHMEM_TYPE_MMAP
diff --git a/src/include/storage/pmsignal.h b/src/include/storage/pmsignal.h
index ea42c2072d1..58f4ddf4768 100644
--- a/src/include/storage/pmsignal.h
+++ b/src/include/storage/pmsignal.h
@@ -89,7 +89,7 @@ extern void PostmasterDeathSignalInit(void);
#endif
#ifdef USE_POSTMASTER_DEATH_SIGNAL
-extern volatile sig_atomic_t postmaster_possibly_dead;
+extern PGDLLIMPORT volatile sig_atomic_t postmaster_possibly_dead;
static inline bool
PostmasterIsAlive(void)
diff --git a/src/include/storage/predicate.h b/src/include/storage/predicate.h
index ba12904f22a..8dfcb3944b4 100644
--- a/src/include/storage/predicate.h
+++ b/src/include/storage/predicate.h
@@ -22,9 +22,9 @@
/*
* GUC variables
*/
-extern int max_predicate_locks_per_xact;
-extern int max_predicate_locks_per_relation;
-extern int max_predicate_locks_per_page;
+extern PGDLLIMPORT int max_predicate_locks_per_xact;
+extern PGDLLIMPORT int max_predicate_locks_per_relation;
+extern PGDLLIMPORT int max_predicate_locks_per_page;
/* Number of SLRU buffers to use for Serial SLRU */
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h
index 36ecf7d0058..c02001d3a09 100644
--- a/src/include/storage/proc.h
+++ b/src/include/storage/proc.h
@@ -400,7 +400,7 @@ typedef struct PROC_HDR
extern PGDLLIMPORT PROC_HDR *ProcGlobal;
-extern PGPROC *PreparedXactProcs;
+extern PGDLLIMPORT PGPROC *PreparedXactProcs;
/* Accessor for PGPROC given a pgprocno. */
#define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)])
@@ -421,7 +421,7 @@ extern PGDLLIMPORT int StatementTimeout;
extern PGDLLIMPORT int LockTimeout;
extern PGDLLIMPORT int IdleInTransactionSessionTimeout;
extern PGDLLIMPORT int IdleSessionTimeout;
-extern bool log_lock_waits;
+extern PGDLLIMPORT bool log_lock_waits;
/*
diff --git a/src/include/storage/s_lock.h b/src/include/storage/s_lock.h
index af1145d98f6..39faa4d8378 100644
--- a/src/include/storage/s_lock.h
+++ b/src/include/storage/s_lock.h
@@ -1042,7 +1042,7 @@ extern int tas(volatile slock_t *lock); /* in port/.../tas.s, or
#define TAS_SPIN(lock) TAS(lock)
#endif /* TAS_SPIN */
-extern slock_t dummy_spinlock;
+extern PGDLLIMPORT slock_t dummy_spinlock;
/*
* Platform-independent out-of-line support routines
diff --git a/src/include/storage/sinval.h b/src/include/storage/sinval.h
index 593a4211af6..e7cd45658c6 100644
--- a/src/include/storage/sinval.h
+++ b/src/include/storage/sinval.h
@@ -123,9 +123,9 @@ typedef union
/* Counter of messages processed; don't worry about overflow. */
-extern uint64 SharedInvalidMessageCounter;
+extern PGDLLIMPORT uint64 SharedInvalidMessageCounter;
-extern volatile sig_atomic_t catchupInterruptPending;
+extern PGDLLIMPORT volatile sig_atomic_t catchupInterruptPending;
extern void SendSharedInvalidMessages(const SharedInvalidationMessage *msgs,
int n);
diff --git a/src/include/storage/spin.h b/src/include/storage/spin.h
index 70070ca9abe..7031f1d2c56 100644
--- a/src/include/storage/spin.h
+++ b/src/include/storage/spin.h
@@ -71,7 +71,7 @@ extern Size SpinlockSemaSize(void);
#ifndef HAVE_SPINLOCKS
extern void SpinlockSemaInit(void);
-extern PGSemaphore *SpinlockSemaArray;
+extern PGDLLIMPORT PGSemaphore *SpinlockSemaArray;
#endif
#endif /* SPIN_H */
diff --git a/src/include/storage/standby.h b/src/include/storage/standby.h
index 58ea21aa132..6a7763264b0 100644
--- a/src/include/storage/standby.h
+++ b/src/include/storage/standby.h
@@ -21,10 +21,10 @@
#include "storage/standbydefs.h"
/* User-settable GUC parameters */
-extern int vacuum_defer_cleanup_age;
-extern int max_standby_archive_delay;
-extern int max_standby_streaming_delay;
-extern bool log_recovery_conflict_waits;
+extern PGDLLIMPORT int vacuum_defer_cleanup_age;
+extern PGDLLIMPORT int max_standby_archive_delay;
+extern PGDLLIMPORT int max_standby_streaming_delay;
+extern PGDLLIMPORT bool log_recovery_conflict_waits;
extern void InitRecoveryTransactionEnvironment(void);
extern void ShutdownRecoveryTransactionEnvironment(void);
diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h
index 92291a750d3..87e408b7199 100644
--- a/src/include/tcop/tcopprot.h
+++ b/src/include/tcop/tcopprot.h
@@ -25,11 +25,11 @@
/* Required daylight between max_stack_depth and the kernel limit, in bytes */
#define STACK_DEPTH_SLOP (512 * 1024L)
-extern CommandDest whereToSendOutput;
+extern PGDLLIMPORT CommandDest whereToSendOutput;
extern PGDLLIMPORT const char *debug_query_string;
-extern int max_stack_depth;
-extern int PostAuthDelay;
-extern int client_connection_check_interval;
+extern PGDLLIMPORT int max_stack_depth;
+extern PGDLLIMPORT int PostAuthDelay;
+extern PGDLLIMPORT int client_connection_check_interval;
/* GUC-configurable parameters */
diff --git a/src/include/tsearch/ts_cache.h b/src/include/tsearch/ts_cache.h
index 5e70d74b414..5e4a49ea1c7 100644
--- a/src/include/tsearch/ts_cache.h
+++ b/src/include/tsearch/ts_cache.h
@@ -84,7 +84,7 @@ typedef struct
/*
* GUC variable for current configuration
*/
-extern char *TSCurrentConfig;
+extern PGDLLIMPORT char *TSCurrentConfig;
extern TSParserCacheEntry *lookup_ts_parser_cache(Oid prsId);
diff --git a/src/include/tsearch/ts_type.h b/src/include/tsearch/ts_type.h
index 1a8bad84914..a2008f5504b 100644
--- a/src/include/tsearch/ts_type.h
+++ b/src/include/tsearch/ts_type.h
@@ -169,7 +169,7 @@ typedef struct
#define OP_PHRASE 4 /* highest code, tsquery_cleanup.c */
#define OP_COUNT 4
-extern const int tsearch_op_priority[OP_COUNT];
+extern PGDLLIMPORT const int tsearch_op_priority[OP_COUNT];
/* get operation priority by its code*/
#define OP_PRIORITY(x) ( tsearch_op_priority[(x) - 1] )
diff --git a/src/include/utils/array.h b/src/include/utils/array.h
index 2dba156d350..656c766a9a1 100644
--- a/src/include/utils/array.h
+++ b/src/include/utils/array.h
@@ -339,7 +339,7 @@ typedef struct ArrayIteratorData *ArrayIterator;
/*
* GUC parameter
*/
-extern bool Array_nulls;
+extern PGDLLIMPORT bool Array_nulls;
/*
* prototypes for functions defined in arrayfuncs.c
diff --git a/src/include/utils/builtins.h b/src/include/utils/builtins.h
index 666e5454969..221c3e6c3de 100644
--- a/src/include/utils/builtins.h
+++ b/src/include/utils/builtins.h
@@ -64,7 +64,7 @@ extern char *regexp_fixed_prefix(text *text_re, bool case_insensitive,
Oid collation, bool *exact);
/* ruleutils.c */
-extern bool quote_all_identifiers;
+extern PGDLLIMPORT bool quote_all_identifiers;
extern const char *quote_identifier(const char *ident);
extern char *quote_qualified_identifier(const char *qualifier,
const char *ident);
diff --git a/src/include/utils/bytea.h b/src/include/utils/bytea.h
index dfef8e2d520..c3c9e54707f 100644
--- a/src/include/utils/bytea.h
+++ b/src/include/utils/bytea.h
@@ -22,6 +22,7 @@ typedef enum
BYTEA_OUTPUT_HEX
} ByteaOutputType;
-extern int bytea_output; /* ByteaOutputType, but int for GUC enum */
+extern PGDLLIMPORT int bytea_output; /* ByteaOutputType, but int for GUC
+ * enum */
#endif /* BYTEA_H */
diff --git a/src/include/utils/datetime.h b/src/include/utils/datetime.h
index 0801858d601..4527e825177 100644
--- a/src/include/utils/datetime.h
+++ b/src/include/utils/datetime.h
@@ -257,9 +257,10 @@ do { \
* Include check for leap year.
*/
-extern const char *const months[]; /* months (3-char abbreviations) */
-extern const char *const days[]; /* days (full names) */
-extern const int day_tab[2][13];
+extern PGDLLIMPORT const char *const months[]; /* months (3-char
+ * abbreviations) */
+extern PGDLLIMPORT const char *const days[]; /* days (full names) */
+extern PGDLLIMPORT const int day_tab[2][13];
/*
* These are the rules for the Gregorian calendar, which was adopted in 1582.
diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h
index 3eb8de39661..f5c6cd904de 100644
--- a/src/include/utils/elog.h
+++ b/src/include/utils/elog.h
@@ -424,12 +424,12 @@ typedef enum
PGERROR_VERBOSE /* all the facts, ma'am */
} PGErrorVerbosity;
-extern int Log_error_verbosity;
-extern char *Log_line_prefix;
-extern int Log_destination;
-extern char *Log_destination_string;
-extern bool syslog_sequence_numbers;
-extern bool syslog_split_messages;
+extern PGDLLIMPORT int Log_error_verbosity;
+extern PGDLLIMPORT char *Log_line_prefix;
+extern PGDLLIMPORT int Log_destination;
+extern PGDLLIMPORT char *Log_destination_string;
+extern PGDLLIMPORT bool syslog_sequence_numbers;
+extern PGDLLIMPORT bool syslog_split_messages;
/* Log destination bitmap */
#define LOG_DESTINATION_STDERR 1
diff --git a/src/include/utils/fmgrtab.h b/src/include/utils/fmgrtab.h
index e5f53d62950..0a59937656f 100644
--- a/src/include/utils/fmgrtab.h
+++ b/src/include/utils/fmgrtab.h
@@ -32,17 +32,18 @@ typedef struct
PGFunction func; /* pointer to compiled function */
} FmgrBuiltin;
-extern const FmgrBuiltin fmgr_builtins[];
+extern PGDLLIMPORT const FmgrBuiltin fmgr_builtins[];
-extern const int fmgr_nbuiltins; /* number of entries in table */
+extern PGDLLIMPORT const int fmgr_nbuiltins; /* number of entries in table */
-extern const Oid fmgr_last_builtin_oid; /* highest function OID in table */
+extern PGDLLIMPORT const Oid fmgr_last_builtin_oid; /* highest function OID in
+ * table */
/*
* Mapping from a builtin function's OID to its index in the fmgr_builtins
* array. This is indexed from 0 through fmgr_last_builtin_oid.
*/
#define InvalidOidBuiltinMapping PG_UINT16_MAX
-extern const uint16 fmgr_builtin_oid_index[];
+extern PGDLLIMPORT const uint16 fmgr_builtin_oid_index[];
#endif /* FMGRTAB_H */
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index 1189e1a2263..efcbad78423 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -239,53 +239,53 @@ typedef enum
/* GUC vars that are actually declared in guc.c, rather than elsewhere */
-extern bool Debug_print_plan;
-extern bool Debug_print_parse;
-extern bool Debug_print_rewritten;
-extern bool Debug_pretty_print;
+extern PGDLLIMPORT bool Debug_print_plan;
+extern PGDLLIMPORT bool Debug_print_parse;
+extern PGDLLIMPORT bool Debug_print_rewritten;
+extern PGDLLIMPORT bool Debug_pretty_print;
-extern bool log_parser_stats;
-extern bool log_planner_stats;
-extern bool log_executor_stats;
-extern bool log_statement_stats;
-extern bool log_btree_build_stats;
+extern PGDLLIMPORT bool log_parser_stats;
+extern PGDLLIMPORT bool log_planner_stats;
+extern PGDLLIMPORT bool log_executor_stats;
+extern PGDLLIMPORT bool log_statement_stats;
+extern PGDLLIMPORT bool log_btree_build_stats;
extern PGDLLIMPORT bool check_function_bodies;
-extern bool session_auth_is_superuser;
+extern PGDLLIMPORT bool session_auth_is_superuser;
-extern bool log_duration;
-extern int log_parameter_max_length;
-extern int log_parameter_max_length_on_error;
-extern int log_min_error_statement;
+extern PGDLLIMPORT bool log_duration;
+extern PGDLLIMPORT int log_parameter_max_length;
+extern PGDLLIMPORT int log_parameter_max_length_on_error;
+extern PGDLLIMPORT int log_min_error_statement;
extern PGDLLIMPORT int log_min_messages;
extern PGDLLIMPORT int client_min_messages;
-extern int log_min_duration_sample;
-extern int log_min_duration_statement;
-extern int log_temp_files;
-extern double log_statement_sample_rate;
-extern double log_xact_sample_rate;
-extern char *backtrace_functions;
-extern char *backtrace_symbol_list;
+extern PGDLLIMPORT int log_min_duration_sample;
+extern PGDLLIMPORT int log_min_duration_statement;
+extern PGDLLIMPORT int log_temp_files;
+extern PGDLLIMPORT double log_statement_sample_rate;
+extern PGDLLIMPORT double log_xact_sample_rate;
+extern PGDLLIMPORT char *backtrace_functions;
+extern PGDLLIMPORT char *backtrace_symbol_list;
-extern int temp_file_limit;
+extern PGDLLIMPORT int temp_file_limit;
-extern int num_temp_buffers;
+extern PGDLLIMPORT int num_temp_buffers;
extern PGDLLIMPORT char *cluster_name;
extern PGDLLIMPORT char *ConfigFileName;
-extern char *HbaFileName;
-extern char *IdentFileName;
-extern char *external_pid_file;
+extern PGDLLIMPORT char *HbaFileName;
+extern PGDLLIMPORT char *IdentFileName;
+extern PGDLLIMPORT char *external_pid_file;
extern PGDLLIMPORT char *application_name;
-extern int tcp_keepalives_idle;
-extern int tcp_keepalives_interval;
-extern int tcp_keepalives_count;
-extern int tcp_user_timeout;
+extern PGDLLIMPORT int tcp_keepalives_idle;
+extern PGDLLIMPORT int tcp_keepalives_interval;
+extern PGDLLIMPORT int tcp_keepalives_count;
+extern PGDLLIMPORT int tcp_user_timeout;
#ifdef TRACE_SORT
-extern bool trace_sort;
+extern PGDLLIMPORT bool trace_sort;
#endif
/*
diff --git a/src/include/utils/guc_tables.h b/src/include/utils/guc_tables.h
index 63b56f18e0d..ba44f7437bf 100644
--- a/src/include/utils/guc_tables.h
+++ b/src/include/utils/guc_tables.h
@@ -249,10 +249,10 @@ struct config_enum
};
/* constant tables corresponding to enums above and in guc.h */
-extern const char *const config_group_names[];
-extern const char *const config_type_names[];
-extern const char *const GucContext_Names[];
-extern const char *const GucSource_Names[];
+extern PGDLLIMPORT const char *const config_group_names[];
+extern PGDLLIMPORT const char *const config_type_names[];
+extern PGDLLIMPORT const char *const GucContext_Names[];
+extern PGDLLIMPORT const char *const GucSource_Names[];
/* get the current set of variables */
extern struct config_generic **get_guc_variables(void);
diff --git a/src/include/utils/jsonpath.h b/src/include/utils/jsonpath.h
index 1897ddffa6e..358b9eb6110 100644
--- a/src/include/utils/jsonpath.h
+++ b/src/include/utils/jsonpath.h
@@ -283,6 +283,6 @@ extern JsonbValue *JsonPathValue(Datum jb, JsonPath *jp, bool *empty,
extern int EvalJsonPathVar(void *vars, char *varName, int varNameLen,
JsonbValue *val, JsonbValue *baseObject);
-extern const TableFuncRoutine JsonbTableRoutine;
+extern PGDLLIMPORT const TableFuncRoutine JsonbTableRoutine;
#endif
diff --git a/src/include/utils/pg_locale.h b/src/include/utils/pg_locale.h
index a44e17ffdf8..e7385faef86 100644
--- a/src/include/utils/pg_locale.h
+++ b/src/include/utils/pg_locale.h
@@ -38,16 +38,16 @@
#define LOCALE_NAME_BUFLEN 128
/* GUC settings */
-extern char *locale_messages;
-extern char *locale_monetary;
-extern char *locale_numeric;
-extern char *locale_time;
+extern PGDLLIMPORT char *locale_messages;
+extern PGDLLIMPORT char *locale_monetary;
+extern PGDLLIMPORT char *locale_numeric;
+extern PGDLLIMPORT char *locale_time;
/* lc_time localization cache */
-extern char *localized_abbrev_days[];
-extern char *localized_full_days[];
-extern char *localized_abbrev_months[];
-extern char *localized_full_months[];
+extern PGDLLIMPORT char *localized_abbrev_days[];
+extern PGDLLIMPORT char *localized_full_days[];
+extern PGDLLIMPORT char *localized_abbrev_months[];
+extern PGDLLIMPORT char *localized_full_months[];
extern bool check_locale_messages(char **newval, void **extra, GucSource source);
@@ -103,7 +103,7 @@ struct pg_locale_struct
typedef struct pg_locale_struct *pg_locale_t;
-extern struct pg_locale_struct default_locale;
+extern PGDLLIMPORT struct pg_locale_struct default_locale;
extern void make_icu_collator(const char *iculocstr,
struct pg_locale_struct *resultp);
diff --git a/src/include/utils/pgstat_internal.h b/src/include/utils/pgstat_internal.h
index ab27bc47c5e..0ee60b2f2a1 100644
--- a/src/include/utils/pgstat_internal.h
+++ b/src/include/utils/pgstat_internal.h
@@ -638,14 +638,14 @@ extern void pgstat_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
* Variables in pgstat.c
*/
-extern PgStat_LocalState pgStatLocal;
+extern PGDLLIMPORT PgStat_LocalState pgStatLocal;
/*
* Variables in pgstat_slru.c
*/
-extern bool have_slrustats;
+extern PGDLLIMPORT bool have_slrustats;
/*
diff --git a/src/include/utils/plancache.h b/src/include/utils/plancache.h
index 95b99e3d252..0499635f594 100644
--- a/src/include/utils/plancache.h
+++ b/src/include/utils/plancache.h
@@ -35,7 +35,7 @@ typedef enum
} PlanCacheMode;
/* GUC parameter */
-extern int plan_cache_mode;
+extern PGDLLIMPORT int plan_cache_mode;
#define CACHEDPLANSOURCE_MAGIC 195726186
#define CACHEDPLAN_MAGIC 953717834
diff --git a/src/include/utils/ps_status.h b/src/include/utils/ps_status.h
index 9f43e1fdf0a..bba463591f8 100644
--- a/src/include/utils/ps_status.h
+++ b/src/include/utils/ps_status.h
@@ -12,7 +12,7 @@
#ifndef PS_STATUS_H
#define PS_STATUS_H
-extern bool update_process_title;
+extern PGDLLIMPORT bool update_process_title;
extern char **save_ps_display_args(int argc, char **argv);
diff --git a/src/include/utils/queryjumble.h b/src/include/utils/queryjumble.h
index c670662db2b..3c2d9beab21 100644
--- a/src/include/utils/queryjumble.h
+++ b/src/include/utils/queryjumble.h
@@ -62,14 +62,14 @@ enum ComputeQueryIdType
};
/* GUC parameters */
-extern int compute_query_id;
+extern PGDLLIMPORT int compute_query_id;
extern const char *CleanQuerytext(const char *query, int *location, int *len);
extern JumbleState *JumbleQuery(Query *query, const char *querytext);
extern void EnableQueryId(void);
-extern bool query_id_enabled;
+extern PGDLLIMPORT bool query_id_enabled;
/*
* Returns whether query identifier computation has been enabled, either
diff --git a/src/include/utils/relcache.h b/src/include/utils/relcache.h
index 2281a7dc533..86dddbd975d 100644
--- a/src/include/utils/relcache.h
+++ b/src/include/utils/relcache.h
@@ -145,9 +145,9 @@ extern void RelationCacheInitFilePostInvalidate(void);
extern void RelationCacheInitFileRemove(void);
/* should be used only by relcache.c and catcache.c */
-extern bool criticalRelcachesBuilt;
+extern PGDLLIMPORT bool criticalRelcachesBuilt;
/* should be used only by relcache.c and postinit.c */
-extern bool criticalSharedRelcachesBuilt;
+extern PGDLLIMPORT bool criticalSharedRelcachesBuilt;
#endif /* RELCACHE_H */
diff --git a/src/include/utils/rls.h b/src/include/utils/rls.h
index c1896d67356..75259cc1f77 100644
--- a/src/include/utils/rls.h
+++ b/src/include/utils/rls.h
@@ -14,7 +14,7 @@
#define RLS_H
/* GUC variable */
-extern bool row_security;
+extern PGDLLIMPORT bool row_security;
/*
* Used by callers of check_enable_rls.
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index e04018c034f..67b217b1c11 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -53,7 +53,7 @@ extern TimestampTz GetSnapshotCurrentTimestamp(void);
extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
extern void SnapshotTooOldMagicForTest(void);
-extern bool FirstSnapshotSet;
+extern PGDLLIMPORT bool FirstSnapshotSet;
extern PGDLLIMPORT TransactionId TransactionXmin;
extern PGDLLIMPORT TransactionId RecentXmin;
diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h
index d33421d3809..edf3a973186 100644
--- a/src/include/utils/timestamp.h
+++ b/src/include/utils/timestamp.h
@@ -57,10 +57,10 @@
/* Set at postmaster start */
-extern TimestampTz PgStartTime;
+extern PGDLLIMPORT TimestampTz PgStartTime;
/* Set at configuration reload */
-extern TimestampTz PgReloadTime;
+extern PGDLLIMPORT TimestampTz PgReloadTime;
/* Internal routines (not fmgr-callable) */
diff --git a/src/include/utils/xml.h b/src/include/utils/xml.h
index c1de08d15b8..6620a626191 100644
--- a/src/include/utils/xml.h
+++ b/src/include/utils/xml.h
@@ -75,10 +75,10 @@ extern char *map_sql_identifier_to_xml_name(const char *ident, bool fully_escape
extern char *map_xml_name_to_sql_identifier(const char *name);
extern char *map_sql_value_to_xml_value(Datum value, Oid type, bool xml_escape_strings);
-extern int xmlbinary; /* XmlBinaryType, but int for guc enum */
+extern PGDLLIMPORT int xmlbinary; /* XmlBinaryType, but int for guc enum */
-extern int xmloption; /* XmlOptionType, but int for guc enum */
+extern PGDLLIMPORT int xmloption; /* XmlOptionType, but int for guc enum */
-extern const TableFuncRoutine XmlTableRoutine;
+extern PGDLLIMPORT const TableFuncRoutine XmlTableRoutine;
#endif /* XML_H */