public inbox for [email protected]help / color / mirror / Atom feed
[PATCH 1/4] demote: setter functions for LocalXLogInsert local variable 2+ messages / 2 participants [nested] [flat]
* [PATCH 1/4] demote: setter functions for LocalXLogInsert local variable @ 2020-07-31 08:58 Jehan-Guillaume de Rorthais <[email protected]> 0 siblings, 0 replies; 2+ messages in thread From: Jehan-Guillaume de Rorthais @ 2020-07-31 08:58 UTC (permalink / raw) Adds functions extern LocalSetXLogInsertNotAllowed() and LocalSetXLogInsertCheckRecovery() to set the local variable LocalXLogInsert respectively to 0 and -1. These functions are declared as extern for future need in the demote patch. Function LocalSetXLogInsertAllowed() already exists and declared as static as it is not needed outside of xlog.h. --- src/backend/access/transam/xlog.c | 27 +++++++++++++++++++++++---- src/include/access/xlog.h | 2 ++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 09c01ed4ae..c0d79f192c 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -7711,7 +7711,7 @@ StartupXLOG(void) Insert->fullPageWrites = lastFullPageWrites; LocalSetXLogInsertAllowed(); UpdateFullPageWrites(); - LocalXLogInsertAllowed = -1; + LocalSetXLogInsertCheckRecovery(); if (InRecovery) { @@ -8219,6 +8219,25 @@ LocalSetXLogInsertAllowed(void) InitXLOGAccess(); } +/* + * Make XLogInsertAllowed() return false in the current process only. + */ +void +LocalSetXLogInsertNotAllowed(void) +{ + LocalXLogInsertAllowed = 0; +} + +/* + * Make XLogInsertCheckRecovery() return false in the current process only. + */ +void +LocalSetXLogInsertCheckRecovery(void) +{ + LocalXLogInsertAllowed = -1; +} + + /* * Subroutine to try to fetch and validate a prior checkpoint record. * @@ -9004,9 +9023,9 @@ CreateCheckPoint(int flags) if (shutdown) { if (flags & CHECKPOINT_END_OF_RECOVERY) - LocalXLogInsertAllowed = -1; /* return to "check" state */ + LocalSetXLogInsertCheckRecovery(); /* return to "check" state */ else - LocalXLogInsertAllowed = 0; /* never again write WAL */ + LocalSetXLogInsertNotAllowed(); /* never again write WAL */ } /* @@ -9159,7 +9178,7 @@ CreateEndOfRecoveryRecord(void) END_CRIT_SECTION(); - LocalXLogInsertAllowed = -1; /* return to "check" state */ + LocalSetXLogInsertCheckRecovery(); /* return to "check" state */ } /* diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h index 221af87e71..8c9cadc6da 100644 --- a/src/include/access/xlog.h +++ b/src/include/access/xlog.h @@ -306,6 +306,8 @@ extern RecoveryState GetRecoveryState(void); extern bool HotStandbyActive(void); extern bool HotStandbyActiveInReplay(void); extern bool XLogInsertAllowed(void); +extern void LocalSetXLogInsertNotAllowed(void); +extern void LocalSetXLogInsertCheckRecovery(void); extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream); extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI); extern XLogRecPtr GetXLogInsertRecPtr(void); -- 2.20.1 --MP_/6xG3U2Dzv0UR=.BCNK7fiL6 Content-Type: text/x-patch Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename=v5-0002-demote-support-demoting-instance-from-production-to-.patch ^ permalink raw reply [nested|flat] 2+ messages in thread
* Unneeded volatile qualifier in fmgr.c @ 2025-02-12 08:25 Julien Rouhaud <[email protected]> 0 siblings, 0 replies; 2+ messages in thread From: Julien Rouhaud @ 2025-02-12 08:25 UTC (permalink / raw) To: [email protected] Hi, While reading some code in fmgr.c I noticed that the save_nestlevel variable is declared as volatile. I'm assuming that's because a long time ago it was modified in the PG_TRY / PG_CATCH block but it doesn't look needed anymore. Trivial patch attached. diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index aa89ae8fe1a..ef0fde51b38 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -639,7 +639,7 @@ fmgr_security_definer(PG_FUNCTION_ARGS) ListCell *lc1, *lc2, *lc3; - volatile int save_nestlevel; + int save_nestlevel; PgStat_FunctionCallUsage fcusage; if (!fcinfo->flinfo->fn_extra) Attachments: [text/plain] fmgr_volatile.diff (414B, ../../Z6xbAgXKY2L-3d5Q@jrouhaud/2-fmgr_volatile.diff) download | inline diff: diff --git a/src/backend/utils/fmgr/fmgr.c b/src/backend/utils/fmgr/fmgr.c index aa89ae8fe1a..ef0fde51b38 100644 --- a/src/backend/utils/fmgr/fmgr.c +++ b/src/backend/utils/fmgr/fmgr.c @@ -639,7 +639,7 @@ fmgr_security_definer(PG_FUNCTION_ARGS) ListCell *lc1, *lc2, *lc3; - volatile int save_nestlevel; + int save_nestlevel; PgStat_FunctionCallUsage fcusage; if (!fcinfo->flinfo->fn_extra) ^ permalink raw reply [nested|flat] 2+ messages in thread
end of thread, other threads:[~2025-02-12 08:25 UTC | newest] Thread overview: 2+ messages (download: mbox mbox.gz follow: Atom feed) -- links below jump to the message on this page -- 2020-07-31 08:58 [PATCH 1/4] demote: setter functions for LocalXLogInsert local variable Jehan-Guillaume de Rorthais <[email protected]> 2025-02-12 08:25 Unneeded volatile qualifier in fmgr.c Julien Rouhaud <[email protected]>
This inbox is served by agora; see mirroring instructions for how to clone and mirror all data and code used for this inbox