/* 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);
shm_toc *toc;
} ParallelWorkerContext;
-extern volatile bool ParallelMessagePending;
+extern PGDLLIMPORT volatile bool ParallelMessagePending;
extern PGDLLIMPORT int ParallelWorkerNumber;
extern PGDLLIMPORT bool InitializingParallelWorker;
extern void DetachSession(void);
/* The current session, or NULL for none. */
-extern Session *CurrentSession;
+extern PGDLLIMPORT Session *CurrentSession;
#endif /* SESSION_H */
#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;
* 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
#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,
#define XACT_REPEATABLE_READ 2
#define XACT_SERIALIZABLE 3
-extern int DefaultXactIsoLevel;
+extern PGDLLIMPORT int DefaultXactIsoLevel;
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
{
#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;
* 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.
#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
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
#define XLogLogicalInfoActive() (wal_level >= WAL_LEVEL_LOGICAL)
#ifdef WAL_DEBUG
-extern bool XLOG_DEBUG;
+extern PGDLLIMPORT bool XLOG_DEBUG;
#endif
/*
* entire sync phase. */
} CheckpointStatsData;
-extern CheckpointStatsData CheckpointStats;
+extern PGDLLIMPORT CheckpointStatsData CheckpointStats;
/*
* GetWALAvailability return codes
* 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 */
#include "access/xlogrecord.h"
/* GUCs */
-extern int recovery_prefetch;
+extern PGDLLIMPORT int recovery_prefetch;
/* Possible values for recovery_prefetch */
typedef enum
} 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);
* 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.
STANDBY_SNAPSHOT_READY
} HotStandbyState;
-extern HotStandbyState standbyState;
+extern PGDLLIMPORT HotStandbyState standbyState;
#define InHotStandby (standbyState >= STANDBY_SNAPSHOT_PENDING)
#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();
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);
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 { \
#include "utils/relcache.h"
/* GUC variables */
-extern int wal_skip_threshold;
+extern PGDLLIMPORT int wal_skip_threshold;
extern SMgrRelation RelationCreateStorage(RelFileNode rnode,
char relpersistence,
*/
#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);
#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
#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);
/* 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 */
#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);
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
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
* 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;
/* ----------
#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);
#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);
} 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);
#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 */
/*
* 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);
/* 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);
} 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);
#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,
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. */
/*
* prototypes for functions in pqcomm.c
*/
-extern WaitEventSet *FeBeWaitSet;
+extern PGDLLIMPORT WaitEventSet *FeBeWaitSet;
#define FeBeWaitSetSocketPos 0
#define FeBeWaitSetLatchPos 1
/*
* 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);
#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
{
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
#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);
#endif
} pg_enc2name;
-extern const pg_enc2name pg_enc2name_tbl[];
+extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
/*
* Encoding names for gettext
const char *name;
} pg_enc2gettext;
-extern const pg_enc2gettext pg_enc2gettext_tbl[];
+extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
/*
* pg_wchar stuff
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
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
/*
#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 */
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);
/*****************************************************************************
#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);
B_LOGGER,
} BackendType;
-extern BackendType MyBackendType;
+extern PGDLLIMPORT BackendType MyBackendType;
extern const char *GetBackendTypeDesc(BackendType backendType);
NormalProcessing /* normal processing */
} ProcessingMode;
-extern ProcessingMode Mode;
+extern PGDLLIMPORT ProcessingMode Mode;
#define IsBootstrapProcessingMode() (Mode == BootstrapProcessing)
#define IsInitProcessingMode() (Mode == InitProcessing)
NUM_AUXPROCTYPES /* Must be last! */
} AuxProcType;
-extern AuxProcType MyAuxProcType;
+extern PGDLLIMPORT AuxProcType MyAuxProcType;
#define AmStartupProcess() (MyAuxProcType == StartupProcess)
#define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
/* 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,
* 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
/*
*
* 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 */
/*
} 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,
/* 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);
/*
* 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);
#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);
} 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;
*/
#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 */
* 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 */
*/
/* updated directly by bgwriter and bufmgr */
-extern PgStat_BgWriterStats PendingBgWriterStats;
+extern PGDLLIMPORT PgStat_BgWriterStats PendingBgWriterStats;
/*
* Checkpointer statistics counters are updated directly by checkpointer and
* bufmgr.
*/
-extern PgStat_CheckpointerStats PendingCheckpointerStats;
+extern PGDLLIMPORT 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;
/*
*/
/* updated directly by backends and background processes */
-extern PgStat_WalStats PendingWalStats;
+extern PGDLLIMPORT PgStat_WalStats PendingWalStats;
#endif /* PGSTAT_H */
/* 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);
/* 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
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 */
#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);
/* 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);
slist_node rw_lnode; /* list link */
} RegisteredBgWorker;
-extern slist_head BackgroundWorkerList;
+extern PGDLLIMPORT slist_head BackgroundWorkerList;
extern Size BackgroundWorkerShmemSize(void);
extern void BackgroundWorkerShmemInit(void);
/* 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();
/*
* The value of the archive_library GUC.
*/
-extern char *XLogArchiveLibrary;
+extern PGDLLIMPORT char *XLogArchiveLibrary;
/*
* Archive module callbacks
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 */
#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
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();
#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
#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();
#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);
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);
#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.
sig_atomic_t force_reply; /* used as a bool */
} WalRcvData;
-extern WalRcvData *WalRcv;
+extern PGDLLIMPORT WalRcvData *WalRcv;
typedef struct
{
} 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);
TimestampTz replyTime;
} WalSnd;
-extern WalSnd *MyWalSnd;
+extern PGDLLIMPORT WalSnd *MyWalSnd;
/* There is one WalSndCtl struct for the whole database cluster */
typedef struct
WalSnd walsnds[FLEXIBLE_ARRAY_MEMBER];
} WalSndCtlData;
-extern WalSndCtlData *WalSndCtl;
+extern PGDLLIMPORT WalSndCtlData *WalSndCtl;
extern void WalSndSetState(WalSndState state);
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 */
} 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,
extern PGDLLIMPORT WritebackContext BackendWritebackContext;
/* in localbuf.c */
-extern BufferDesc *LocalBufferDescriptors;
+extern PGDLLIMPORT BufferDesc *LocalBufferDescriptors;
/* in bufmgr.c */
int buf_id;
} CkptSortItem;
-extern CkptSortItem *CkptBufferIds;
+extern PGDLLIMPORT CkptSortItem *CkptBufferIds;
/*
* Internal buffer management routines
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;
#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.
/* 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
/*
* GUC: backwards-compatibility flag to suppress LO permission checks
*/
-extern bool lo_compat_privileges;
+extern PGDLLIMPORT bool lo_compat_privileges;
/*
* Function definitions...
} 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 */
#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
#ifdef LOCK_DEBUG
-extern bool Trace_lwlocks;
+extern PGDLLIMPORT bool Trace_lwlocks;
#endif
extern bool LWLockAcquire(LWLock *lock, LWLockMode mode);
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);
} 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
} 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
#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)
/*
* 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 */
extern PGDLLIMPORT PROC_HDR *ProcGlobal;
-extern PGPROC *PreparedXactProcs;
+extern PGDLLIMPORT PGPROC *PreparedXactProcs;
/* Accessor for PGPROC given a pgprocno. */
#define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)])
extern PGDLLIMPORT int LockTimeout;
extern PGDLLIMPORT int IdleInTransactionSessionTimeout;
extern PGDLLIMPORT int IdleSessionTimeout;
-extern bool log_lock_waits;
+extern PGDLLIMPORT bool log_lock_waits;
/*
#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
/* 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);
#ifndef HAVE_SPINLOCKS
extern void SpinlockSemaInit(void);
-extern PGSemaphore *SpinlockSemaArray;
+extern PGDLLIMPORT PGSemaphore *SpinlockSemaArray;
#endif
#endif /* SPIN_H */
#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);
/* 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 */
/*
* GUC variable for current configuration
*/
-extern char *TSCurrentConfig;
+extern PGDLLIMPORT char *TSCurrentConfig;
extern TSParserCacheEntry *lookup_ts_parser_cache(Oid prsId);
#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] )
/*
* GUC parameter
*/
-extern bool Array_nulls;
+extern PGDLLIMPORT bool Array_nulls;
/*
* prototypes for functions defined in arrayfuncs.c
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);
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 */
* 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.
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
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 */
/* 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
/*
};
/* 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);
extern int EvalJsonPathVar(void *vars, char *varName, int varNameLen,
JsonbValue *val, JsonbValue *baseObject);
-extern const TableFuncRoutine JsonbTableRoutine;
+extern PGDLLIMPORT const TableFuncRoutine JsonbTableRoutine;
#endif
#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);
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);
* 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;
/*
} PlanCacheMode;
/* GUC parameter */
-extern int plan_cache_mode;
+extern PGDLLIMPORT int plan_cache_mode;
#define CACHEDPLANSOURCE_MAGIC 195726186
#define CACHEDPLAN_MAGIC 953717834
#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);
};
/* 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
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 */
#define RLS_H
/* GUC variable */
-extern bool row_security;
+extern PGDLLIMPORT bool row_security;
/*
* Used by callers of check_enable_rls.
extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
extern void SnapshotTooOldMagicForTest(void);
-extern bool FirstSnapshotSet;
+extern PGDLLIMPORT bool FirstSnapshotSet;
extern PGDLLIMPORT TransactionId TransactionXmin;
extern PGDLLIMPORT TransactionId RecentXmin;
/* 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) */
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 */