From c572599c65bfe0387563233faabecd2845073538 Mon Sep 17 00:00:00 2001
From: Robert Haas <rhaas@postgresql.org>
Date: Tue, 5 Dec 2017 09:23:57 -0500
Subject: [PATCH] Mark assorted variables PGDLLIMPORT.

This makes life easier for extension authors who wish to support
Windows.

Brian Cloutier, slightly amended by me.

Discussion: http://postgr.es/m/CAJCy68fscdNhmzFPS4kyO00CADkvXvEa-28H-OtENk-pa2OTWw@mail.gmail.com
---
 src/include/access/twophase.h       |  2 +-
 src/include/commands/extension.h    |  2 +-
 src/include/miscadmin.h             | 10 +++++-----
 src/include/pgtime.h                |  2 +-
 src/include/postmaster/postmaster.h |  4 ++--
 src/include/storage/fd.h            |  2 +-
 src/include/storage/proc.h          |  4 ++--
 src/include/tcop/dest.h             |  3 ++-
 src/include/tcop/tcopprot.h         |  2 +-
 src/include/utils/guc.h             |  6 +++---
 src/include/utils/snapmgr.h         |  6 +++---
 11 files changed, 22 insertions(+), 21 deletions(-)

diff --git a/src/include/access/twophase.h b/src/include/access/twophase.h
index 54dec4eeafb..f5fbbea4b68 100644
--- a/src/include/access/twophase.h
+++ b/src/include/access/twophase.h
@@ -25,7 +25,7 @@
 typedef struct GlobalTransactionData *GlobalTransaction;
 
 /* GUC variable */
-extern int	max_prepared_xacts;
+extern PGDLLIMPORT int max_prepared_xacts;
 
 extern Size TwoPhaseShmemSize(void);
 extern void TwoPhaseShmemInit(void);
diff --git a/src/include/commands/extension.h b/src/include/commands/extension.h
index 73bba3c784a..a0dfae10c6f 100644
--- a/src/include/commands/extension.h
+++ b/src/include/commands/extension.h
@@ -28,7 +28,7 @@
  * them from the extension first.
  */
 extern PGDLLIMPORT bool creating_extension;
-extern Oid	CurrentExtensionObject;
+extern PGDLLIMPORT Oid CurrentExtensionObject;
 
 
 extern ObjectAddress CreateExtension(ParseState *pstate, CreateExtensionStmt *stmt);
diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h
index 3950054368b..59da7a60918 100644
--- a/src/include/miscadmin.h
+++ b/src/include/miscadmin.h
@@ -150,14 +150,14 @@ extern PGDLLIMPORT bool IsUnderPostmaster;
 extern PGDLLIMPORT bool IsBackgroundWorker;
 extern PGDLLIMPORT bool IsBinaryUpgrade;
 
-extern bool ExitOnAnyError;
+extern PGDLLIMPORT bool ExitOnAnyError;
 
 extern PGDLLIMPORT char *DataDir;
 
 extern PGDLLIMPORT int NBuffers;
-extern int	MaxBackends;
-extern int	MaxConnections;
-extern int	max_worker_processes;
+extern PGDLLIMPORT int MaxBackends;
+extern PGDLLIMPORT int MaxConnections;
+extern PGDLLIMPORT int max_worker_processes;
 extern int	max_parallel_workers;
 
 extern PGDLLIMPORT int MyProcPid;
@@ -238,7 +238,7 @@ extern PGDLLIMPORT int IntervalStyle;
 #define MAXTZLEN		10		/* max TZ name len, not counting tr. null */
 
 extern bool enableFsync;
-extern bool allowSystemTableMods;
+extern PGDLLIMPORT bool allowSystemTableMods;
 extern PGDLLIMPORT int work_mem;
 extern PGDLLIMPORT int maintenance_work_mem;
 
diff --git a/src/include/pgtime.h b/src/include/pgtime.h
index 4fd8f75ef91..8a13d717e0d 100644
--- a/src/include/pgtime.h
+++ b/src/include/pgtime.h
@@ -70,7 +70,7 @@ extern size_t pg_strftime(char *s, size_t max, const char *format,
 
 /* these functions and variables are in pgtz.c */
 
-extern pg_tz *session_timezone;
+extern PGDLLIMPORT pg_tz *session_timezone;
 extern pg_tz *log_timezone;
 
 extern void pg_timezone_initialize(void);
diff --git a/src/include/postmaster/postmaster.h b/src/include/postmaster/postmaster.h
index 0f85908b098..f5b863e710f 100644
--- a/src/include/postmaster/postmaster.h
+++ b/src/include/postmaster/postmaster.h
@@ -16,7 +16,7 @@
 /* GUC options */
 extern bool EnableSSL;
 extern int	ReservedBackends;
-extern int	PostPortNumber;
+extern PGDLLIMPORT int PostPortNumber;
 extern int	Unix_socket_permissions;
 extern char *Unix_socket_group;
 extern char *Unix_socket_directories;
@@ -44,7 +44,7 @@ extern int	postmaster_alive_fds[2];
 #define POSTMASTER_FD_OWN		1	/* kept open by postmaster only */
 #endif
 
-extern const char *progname;
+extern PGDLLIMPORT const char *progname;
 
 extern void PostmasterMain(int argc, char *argv[]) pg_attribute_noreturn();
 extern void ClosePostmasterPorts(bool am_syslogger);
diff --git a/src/include/storage/fd.h b/src/include/storage/fd.h
index 45dadf666f1..dc2eb35f062 100644
--- a/src/include/storage/fd.h
+++ b/src/include/storage/fd.h
@@ -50,7 +50,7 @@ typedef int File;
 
 
 /* GUC parameter */
-extern int	max_files_per_process;
+extern PGDLLIMPORT int max_files_per_process;
 
 /*
  * This is private to fd.c, but exported for save/restore_backend_variables()
diff --git a/src/include/storage/proc.h b/src/include/storage/proc.h
index 205f4845108..1d370500af8 100644
--- a/src/include/storage/proc.h
+++ b/src/include/storage/proc.h
@@ -269,7 +269,7 @@ typedef struct PROC_HDR
 	int			startupBufferPinWaitBufId;
 } PROC_HDR;
 
-extern PROC_HDR *ProcGlobal;
+extern PGDLLIMPORT PROC_HDR *ProcGlobal;
 
 extern PGPROC *PreparedXactProcs;
 
@@ -287,7 +287,7 @@ extern PGPROC *PreparedXactProcs;
 #define NUM_AUXILIARY_PROCS		4
 
 /* configurable options */
-extern int	DeadlockTimeout;
+extern PGDLLIMPORT int DeadlockTimeout;
 extern int	StatementTimeout;
 extern int	LockTimeout;
 extern int	IdleInTransactionSessionTimeout;
diff --git a/src/include/tcop/dest.h b/src/include/tcop/dest.h
index c990544a163..f31c06a9c02 100644
--- a/src/include/tcop/dest.h
+++ b/src/include/tcop/dest.h
@@ -129,7 +129,8 @@ struct _DestReceiver
 	/* Private fields might appear beyond this point... */
 };
 
-extern DestReceiver *None_Receiver; /* permanent receiver for DestNone */
+extern PGDLLIMPORT DestReceiver *None_Receiver; /* permanent receiver for
+												 * DestNone */
 
 /* The primary destination management functions */
 
diff --git a/src/include/tcop/tcopprot.h b/src/include/tcop/tcopprot.h
index f8c535c91e3..62c7f6c61c2 100644
--- a/src/include/tcop/tcopprot.h
+++ b/src/include/tcop/tcopprot.h
@@ -45,7 +45,7 @@ typedef enum
 	LOGSTMT_ALL					/* log all statements */
 } LogStmtLevel;
 
-extern int	log_statement;
+extern PGDLLIMPORT int log_statement;
 
 extern List *pg_parse_query(const char *query_string);
 extern List *pg_analyze_and_rewrite(RawStmt *parsetree,
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index 41335b8e75a..26e0caaf59d 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -248,8 +248,8 @@ extern bool default_with_oids;
 extern bool session_auth_is_superuser;
 
 extern int	log_min_error_statement;
-extern int	log_min_messages;
-extern int	client_min_messages;
+extern PGDLLIMPORT int log_min_messages;
+extern PGDLLIMPORT int client_min_messages;
 extern int	log_min_duration_statement;
 extern int	log_temp_files;
 
@@ -258,7 +258,7 @@ extern int	temp_file_limit;
 extern int	num_temp_buffers;
 
 extern char *cluster_name;
-extern char *ConfigFileName;
+extern PGDLLIMPORT char *ConfigFileName;
 extern char *HbaFileName;
 extern char *IdentFileName;
 extern char *external_pid_file;
diff --git a/src/include/utils/snapmgr.h b/src/include/utils/snapmgr.h
index fc641537804..8585194e785 100644
--- a/src/include/utils/snapmgr.h
+++ b/src/include/utils/snapmgr.h
@@ -56,10 +56,10 @@ extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
 
 extern bool FirstSnapshotSet;
 
-extern TransactionId TransactionXmin;
-extern TransactionId RecentXmin;
+extern PGDLLIMPORT TransactionId TransactionXmin;
+extern PGDLLIMPORT TransactionId RecentXmin;
 extern PGDLLIMPORT TransactionId RecentGlobalXmin;
-extern TransactionId RecentGlobalDataXmin;
+extern PGDLLIMPORT TransactionId RecentGlobalDataXmin;
 
 extern Snapshot GetTransactionSnapshot(void);
 extern Snapshot GetLatestSnapshot(void);
-- 
GitLab