1
0
mirror of https://github.com/pgbackrest/pgbackrest.git synced 2025-07-05 00:28:52 +02:00

Split VR_EXTERN/FN_EXTERN macros from FV_EXTERN.

This should make it a little clearer what the variable (VR) macros are doing since the declaration/definition cannot both be set to extern (but functions can).

Splitting the variable macros out also allows them to be changed in the future with little churn, while changing the function macro creates a large amount of churn.
This commit is contained in:
David Steele
2023-01-02 15:24:51 +07:00
parent 9e29c01891
commit f018912908
361 changed files with 1893 additions and 1889 deletions

View File

@ -39,7 +39,7 @@ pgClientFreeResource(THIS_VOID)
}
/**********************************************************************************************************************************/
FV_EXTERN PgClient *
FN_EXTERN PgClient *
pgClientNew(const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec timeout)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -118,7 +118,7 @@ pgClientEscape(const String *string)
}
/**********************************************************************************************************************************/
FV_EXTERN PgClient *
FN_EXTERN PgClient *
pgClientOpen(PgClient *this)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -165,7 +165,7 @@ pgClientOpen(PgClient *this)
}
/**********************************************************************************************************************************/
FV_EXTERN Pack *
FN_EXTERN Pack *
pgClientQuery(PgClient *const this, const String *const query, const PgClientQueryResult resultType)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -357,7 +357,7 @@ pgClientQuery(PgClient *const this, const String *const query, const PgClientQue
}
/**********************************************************************************************************************************/
FV_EXTERN void
FN_EXTERN void
pgClientClose(PgClient *this)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -377,7 +377,7 @@ pgClientClose(PgClient *this)
}
/**********************************************************************************************************************************/
FV_EXTERN String *
FN_EXTERN String *
pgClientToLog(const PgClient *this)
{
return strNewFmt(

View File

@ -32,7 +32,7 @@ typedef struct PgClient PgClient;
/***********************************************************************************************************************************
Constructors
***********************************************************************************************************************************/
FV_EXTERN PgClient *pgClientNew(
FN_EXTERN PgClient *pgClientNew(
const String *host, const unsigned int port, const String *database, const String *user, const TimeMSec timeout);
/***********************************************************************************************************************************
@ -86,7 +86,7 @@ pgClientTimeout(const PgClient *const this)
Functions
***********************************************************************************************************************************/
// Open connection to PostgreSQL
FV_EXTERN PgClient *pgClientOpen(PgClient *this);
FN_EXTERN PgClient *pgClientOpen(PgClient *this);
// Move to a new parent mem context
FN_INLINE_ALWAYS PgClient *
@ -96,10 +96,10 @@ pgClientMove(PgClient *const this, MemContext *const parentNew)
}
// Execute a query and return results
FV_EXTERN Pack *pgClientQuery(PgClient *this, const String *query, PgClientQueryResult resultType);
FN_EXTERN Pack *pgClientQuery(PgClient *this, const String *query, PgClientQueryResult resultType);
// Close connection to PostgreSQL
FV_EXTERN void pgClientClose(PgClient *this);
FN_EXTERN void pgClientClose(PgClient *this);
/***********************************************************************************************************************************
Destructor
@ -113,7 +113,7 @@ pgClientFree(PgClient *const this)
/***********************************************************************************************************************************
Macros for function logging
***********************************************************************************************************************************/
FV_EXTERN String *pgClientToLog(const PgClient *this);
FN_EXTERN String *pgClientToLog(const PgClient *this);
#define FUNCTION_LOG_PG_CLIENT_TYPE \
PgClient *

View File

@ -117,7 +117,7 @@ pgInterfaceVersion(unsigned int pgVersion)
}
/**********************************************************************************************************************************/
FV_EXTERN bool
FN_EXTERN bool
pgDbIsTemplate(const String *const name)
{
FUNCTION_TEST_BEGIN();
@ -128,7 +128,7 @@ pgDbIsTemplate(const String *const name)
}
/**********************************************************************************************************************************/
FV_EXTERN bool
FN_EXTERN bool
pgDbIsSystem(const String *const name)
{
FUNCTION_TEST_BEGIN();
@ -139,7 +139,7 @@ pgDbIsSystem(const String *const name)
}
/**********************************************************************************************************************************/
FV_EXTERN bool
FN_EXTERN bool
pgDbIsSystemId(const unsigned int id)
{
FUNCTION_TEST_BEGIN();
@ -218,7 +218,7 @@ pgControlFromBuffer(const Buffer *controlFile)
FUNCTION_LOG_RETURN(PG_CONTROL, result);
}
FV_EXTERN PgControl
FN_EXTERN PgControl
pgControlFromFile(const Storage *storage)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -243,7 +243,7 @@ pgControlFromFile(const Storage *storage)
}
/**********************************************************************************************************************************/
FV_EXTERN uint32_t
FN_EXTERN uint32_t
pgControlVersion(unsigned int pgVersion)
{
FUNCTION_TEST_BEGIN();
@ -266,7 +266,7 @@ typedef struct PgWalCommon
#define PG_WAL_LONG_HEADER 0x0002
/**********************************************************************************************************************************/
FV_EXTERN PgWal
FN_EXTERN PgWal
pgWalFromBuffer(const Buffer *walBuffer)
{
FUNCTION_LOG_BEGIN(logLevelTrace);
@ -311,7 +311,7 @@ pgWalFromBuffer(const Buffer *walBuffer)
FUNCTION_LOG_RETURN(PG_WAL, result);
}
FV_EXTERN PgWal
FN_EXTERN PgWal
pgWalFromFile(const String *walFile, const Storage *storage)
{
FUNCTION_LOG_BEGIN(logLevelDebug);
@ -335,7 +335,7 @@ pgWalFromFile(const String *walFile, const Storage *storage)
}
/**********************************************************************************************************************************/
FV_EXTERN String *
FN_EXTERN String *
pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion)
{
FUNCTION_TEST_BEGIN();
@ -361,7 +361,7 @@ pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion)
}
/**********************************************************************************************************************************/
FV_EXTERN uint64_t
FN_EXTERN uint64_t
pgLsnFromStr(const String *lsn)
{
FUNCTION_TEST_BEGIN();
@ -383,7 +383,7 @@ pgLsnFromStr(const String *lsn)
FUNCTION_TEST_RETURN(UINT64, result);
}
FV_EXTERN String *
FN_EXTERN String *
pgLsnToStr(uint64_t lsn)
{
FUNCTION_TEST_BEGIN();
@ -394,7 +394,7 @@ pgLsnToStr(uint64_t lsn)
}
/**********************************************************************************************************************************/
FV_EXTERN String *
FN_EXTERN String *
pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize)
{
FUNCTION_TEST_BEGIN();
@ -408,7 +408,7 @@ pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize)
}
/**********************************************************************************************************************************/
FV_EXTERN uint32_t
FN_EXTERN uint32_t
pgTimelineFromWalSegment(const String *const walSegment)
{
FUNCTION_TEST_BEGIN();
@ -422,7 +422,7 @@ pgTimelineFromWalSegment(const String *const walSegment)
}
/**********************************************************************************************************************************/
FV_EXTERN StringList *
FN_EXTERN StringList *
pgLsnRangeToWalSegmentList(
const uint32_t timeline, const uint64_t lsnStart, const uint64_t lsnStop, const unsigned int walSegmentSize)
{
@ -472,7 +472,7 @@ pgLsnRangeToWalSegmentList(
}
/**********************************************************************************************************************************/
FV_EXTERN const String *
FN_EXTERN const String *
pgLsnName(unsigned int pgVersion)
{
FUNCTION_TEST_BEGIN();
@ -485,7 +485,7 @@ pgLsnName(unsigned int pgVersion)
/***********************************************************************************************************************************
Get WAL name (wal/xlog) for a PostgreSQL version
***********************************************************************************************************************************/
FV_EXTERN const String *
FN_EXTERN const String *
pgWalName(unsigned int pgVersion)
{
FUNCTION_TEST_BEGIN();
@ -496,7 +496,7 @@ pgWalName(unsigned int pgVersion)
}
/**********************************************************************************************************************************/
FV_EXTERN const String *
FN_EXTERN const String *
pgWalPath(unsigned int pgVersion)
{
FUNCTION_TEST_BEGIN();
@ -507,7 +507,7 @@ pgWalPath(unsigned int pgVersion)
}
/**********************************************************************************************************************************/
FV_EXTERN const String *
FN_EXTERN const String *
pgXactPath(unsigned int pgVersion)
{
FUNCTION_TEST_BEGIN();
@ -518,7 +518,7 @@ pgXactPath(unsigned int pgVersion)
}
/**********************************************************************************************************************************/
FV_EXTERN unsigned int
FN_EXTERN unsigned int
pgVersionFromStr(const String *const version)
{
FUNCTION_LOG_BEGIN(logLevelTrace);
@ -542,7 +542,7 @@ pgVersionFromStr(const String *const version)
UINT, cvtZSubNToUInt(strZ(version), 0, (size_t)idxStart) * 10000 + cvtZToUInt(strZ(version) + (size_t)idxStart + 1) * 100);
}
FV_EXTERN String *
FN_EXTERN String *
pgVersionToStr(unsigned int version)
{
FUNCTION_LOG_BEGIN(logLevelTrace);
@ -556,7 +556,7 @@ pgVersionToStr(unsigned int version)
}
/**********************************************************************************************************************************/
FV_EXTERN String *
FN_EXTERN String *
pgControlToLog(const PgControl *pgControl)
{
return strNewFmt(
@ -564,7 +564,7 @@ pgControlToLog(const PgControl *pgControl)
pgControl->walSegmentSize, cvtBoolToConstZ(pgControl->pageChecksum));
}
FV_EXTERN String *
FN_EXTERN String *
pgWalToLog(const PgWal *pgWal)
{
return strNewFmt("{version: %u, systemId: %" PRIu64 "}", pgWal->version, pgWal->systemId);

View File

@ -121,64 +121,64 @@ typedef struct PgWal
Functions
***********************************************************************************************************************************/
// Is this a template database?
FV_EXTERN bool pgDbIsTemplate(const String *name);
FN_EXTERN bool pgDbIsTemplate(const String *name);
// Is this a system database, i.e. template or postgres?
FV_EXTERN bool pgDbIsSystem(const String *name);
FN_EXTERN bool pgDbIsSystem(const String *name);
// Does this database have a system id, i.e. less than the minimum assignable user id?
FV_EXTERN bool pgDbIsSystemId(unsigned int id);
FN_EXTERN bool pgDbIsSystemId(unsigned int id);
// Get info from pg_control
FV_EXTERN PgControl pgControlFromFile(const Storage *storage);
FN_EXTERN PgControl pgControlFromFile(const Storage *storage);
// Get the control version for a PostgreSQL version
FV_EXTERN uint32_t pgControlVersion(unsigned int pgVersion);
FN_EXTERN uint32_t pgControlVersion(unsigned int pgVersion);
// Convert version string to version number and vice versa
FV_EXTERN unsigned int pgVersionFromStr(const String *version);
FV_EXTERN String *pgVersionToStr(unsigned int version);
FN_EXTERN unsigned int pgVersionFromStr(const String *version);
FN_EXTERN String *pgVersionToStr(unsigned int version);
// Get info from WAL header
FV_EXTERN PgWal pgWalFromFile(const String *walFile, const Storage *storage);
FV_EXTERN PgWal pgWalFromBuffer(const Buffer *walBuffer);
FN_EXTERN PgWal pgWalFromFile(const String *walFile, const Storage *storage);
FN_EXTERN PgWal pgWalFromBuffer(const Buffer *walBuffer);
// Get the tablespace identifier used to distinguish versions in a tablespace directory, e.g. PG_15_202209061
FV_EXTERN String *pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion);
FN_EXTERN String *pgTablespaceId(unsigned int pgVersion, unsigned int pgCatalogVersion);
// Convert a string to an lsn and vice versa
FV_EXTERN uint64_t pgLsnFromStr(const String *lsn);
FV_EXTERN String *pgLsnToStr(uint64_t lsn);
FN_EXTERN uint64_t pgLsnFromStr(const String *lsn);
FN_EXTERN String *pgLsnToStr(uint64_t lsn);
// Convert a timeline and lsn to a wal segment and vice versa
FV_EXTERN String *pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize);
FN_EXTERN String *pgLsnToWalSegment(uint32_t timeline, uint64_t lsn, unsigned int walSegmentSize);
// Get timeline from WAL segment name
FV_EXTERN uint32_t pgTimelineFromWalSegment(const String *walSegment);
FN_EXTERN uint32_t pgTimelineFromWalSegment(const String *walSegment);
// Convert a timeline and lsn range to a list of wal segments
FV_EXTERN StringList *pgLsnRangeToWalSegmentList(
FN_EXTERN StringList *pgLsnRangeToWalSegmentList(
uint32_t timeline, uint64_t lsnStart, uint64_t lsnStop, unsigned int walSegmentSize);
// Get name used for lsn in functions (this was changed in PostgreSQL 10 for consistency since lots of names were changing)
FV_EXTERN const String *pgLsnName(unsigned int pgVersion);
FN_EXTERN const String *pgLsnName(unsigned int pgVersion);
// Calculate the checksum for a page. Page cannot be const because the page header is temporarily modified during processing.
FV_EXTERN uint16_t pgPageChecksum(unsigned char *page, uint32_t blockNo);
FN_EXTERN uint16_t pgPageChecksum(unsigned char *page, uint32_t blockNo);
FV_EXTERN const String *pgWalName(unsigned int pgVersion);
FN_EXTERN const String *pgWalName(unsigned int pgVersion);
// Get wal path (this was changed in PostgreSQL 10 to avoid including "log" in the name)
FV_EXTERN const String *pgWalPath(unsigned int pgVersion);
FN_EXTERN const String *pgWalPath(unsigned int pgVersion);
// Get transaction commit log path (this was changed in PostgreSQL 10 to avoid including "log" in the name)
FV_EXTERN const String *pgXactPath(unsigned int pgVersion);
FN_EXTERN const String *pgXactPath(unsigned int pgVersion);
/***********************************************************************************************************************************
Macros for function logging
***********************************************************************************************************************************/
FV_EXTERN String *pgControlToLog(const PgControl *pgControl);
FV_EXTERN String *pgWalToLog(const PgWal *pgWal);
FN_EXTERN String *pgControlToLog(const PgControl *pgControl);
FN_EXTERN String *pgWalToLog(const PgWal *pgWal);
#define FUNCTION_LOG_PG_CONTROL_TYPE \
PgControl

View File

@ -13,7 +13,7 @@ Include the page checksum code
#include "postgres/interface/pageChecksum.vendor.c.inc"
/**********************************************************************************************************************************/
FV_EXTERN uint16_t
FN_EXTERN uint16_t
pgPageChecksum(unsigned char *page, uint32_t blockNo)
{
return pg_checksum_page((char *)page, blockNo);