0017-Revert-Introduce-pending-flag-for-GUC-assig-20251013.patch
application/x-patch
Filename: 0017-Revert-Introduce-pending-flag-for-GUC-assig-20251013.patch
Type: application/x-patch
Part: 16
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0017
Subject: Revert "Introduce pending flag for GUC assign hooks"
| File | + | − |
|---|---|---|
| src/backend/access/transam/xlog.c | 1 | 1 |
| src/backend/commands/variable.c | 3 | 3 |
| src/backend/libpq/pqcomm.c | 4 | 4 |
| src/backend/tcop/postgres.c | 1 | 1 |
| src/backend/utils/misc/guc.c | 19 | 40 |
| src/backend/utils/misc/stack_depth.c | 1 | 1 |
| src/include/utils/guc.h | 1 | 1 |
| src/include/utils/guc_hooks.h | 10 | 10 |
From aeadb3079216f970505605217a2bd9fabeff584a Mon Sep 17 00:00:00 2001
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
Date: Fri, 26 Sep 2025 16:47:24 +0530
Subject: [PATCH 17/19] Revert "Introduce pending flag for GUC assign hooks"
This reverts commit 0a13e56dceea8cc7a2685df7ee8cea434588681b.
---
src/backend/access/transam/xlog.c | 2 +-
src/backend/commands/variable.c | 6 +--
src/backend/libpq/pqcomm.c | 8 ++--
src/backend/tcop/postgres.c | 2 +-
src/backend/utils/misc/guc.c | 59 +++++++++-------------------
src/backend/utils/misc/stack_depth.c | 2 +-
src/include/utils/guc.h | 2 +-
src/include/utils/guc_hooks.h | 20 +++++-----
8 files changed, 40 insertions(+), 61 deletions(-)
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index cc48b253bc8..eceab341255 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -2197,7 +2197,7 @@ CalculateCheckpointSegments(void)
}
void
-assign_max_wal_size(int newval, void *extra, bool *pending)
+assign_max_wal_size(int newval, void *extra)
{
max_wal_size_mb = newval;
CalculateCheckpointSegments();
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index e40dae2ddf2..608f10d9412 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -1143,7 +1143,7 @@ check_cluster_name(char **newval, void **extra, GucSource source)
* GUC assign_hook for maintenance_io_concurrency
*/
void
-assign_maintenance_io_concurrency(int newval, void *extra, bool *pending)
+assign_maintenance_io_concurrency(int newval, void *extra)
{
/*
* Reconfigure recovery prefetching, because a setting it depends on
@@ -1161,12 +1161,12 @@ assign_maintenance_io_concurrency(int newval, void *extra, bool *pending)
* they may be assigned in either order.
*/
void
-assign_io_max_combine_limit(int newval, void *extra, bool *pending)
+assign_io_max_combine_limit(int newval, void *extra)
{
io_combine_limit = Min(newval, io_combine_limit_guc);
}
void
-assign_io_combine_limit(int newval, void *extra, bool *pending)
+assign_io_combine_limit(int newval, void *extra)
{
io_combine_limit = Min(io_max_combine_limit, newval);
}
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 1726a7c0993..25f739a6a17 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -1951,7 +1951,7 @@ pq_settcpusertimeout(int timeout, Port *port)
* GUC assign_hook for tcp_keepalives_idle
*/
void
-assign_tcp_keepalives_idle(int newval, void *extra, bool *pending)
+assign_tcp_keepalives_idle(int newval, void *extra)
{
/*
* The kernel API provides no way to test a value without setting it; and
@@ -1984,7 +1984,7 @@ show_tcp_keepalives_idle(void)
* GUC assign_hook for tcp_keepalives_interval
*/
void
-assign_tcp_keepalives_interval(int newval, void *extra, bool *pending)
+assign_tcp_keepalives_interval(int newval, void *extra)
{
/* See comments in assign_tcp_keepalives_idle */
(void) pq_setkeepalivesinterval(newval, MyProcPort);
@@ -2007,7 +2007,7 @@ show_tcp_keepalives_interval(void)
* GUC assign_hook for tcp_keepalives_count
*/
void
-assign_tcp_keepalives_count(int newval, void *extra, bool *pending)
+assign_tcp_keepalives_count(int newval, void *extra)
{
/* See comments in assign_tcp_keepalives_idle */
(void) pq_setkeepalivescount(newval, MyProcPort);
@@ -2030,7 +2030,7 @@ show_tcp_keepalives_count(void)
* GUC assign_hook for tcp_user_timeout
*/
void
-assign_tcp_user_timeout(int newval, void *extra, bool *pending)
+assign_tcp_user_timeout(int newval, void *extra)
{
/* See comments in assign_tcp_keepalives_idle */
(void) pq_settcpusertimeout(newval, MyProcPort);
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 81881ef56c1..ee9f308379c 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -3598,7 +3598,7 @@ check_log_stats(bool *newval, void **extra, GucSource source)
/* GUC assign hook for transaction_timeout */
void
-assign_transaction_timeout(int newval, void *extra, bool *pending)
+assign_transaction_timeout(int newval, void *extra)
{
if (IsTransactionState())
{
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index c9361a0e423..8794e26ef1d 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -1681,7 +1681,6 @@ InitializeOneGUCOption(struct config_generic *gconf)
struct config_int *conf = (struct config_int *) gconf;
int newval = conf->boot_val;
void *extra = NULL;
- bool pending = false;
Assert(newval >= conf->min);
Assert(newval <= conf->max);
@@ -1690,13 +1689,9 @@ InitializeOneGUCOption(struct config_generic *gconf)
elog(FATAL, "failed to initialize %s to %d",
conf->gen.name, newval);
if (conf->assign_hook)
- conf->assign_hook(newval, extra, &pending);
-
- if (!pending)
- {
- *conf->variable = conf->reset_val = newval;
- conf->gen.extra = conf->reset_extra = extra;
- }
+ conf->assign_hook(newval, extra);
+ *conf->variable = conf->reset_val = newval;
+ conf->gen.extra = conf->reset_extra = extra;
break;
}
case PGC_REAL:
@@ -2052,18 +2047,13 @@ ResetAllOptions(void)
case PGC_INT:
{
struct config_int *conf = (struct config_int *) gconf;
- bool pending = false;
if (conf->assign_hook)
conf->assign_hook(conf->reset_val,
- conf->reset_extra,
- &pending);
- if (!pending)
- {
- *conf->variable = conf->reset_val;
- set_extra_field(&conf->gen, &conf->gen.extra,
- conf->reset_extra);
- }
+ conf->reset_extra);
+ *conf->variable = conf->reset_val;
+ set_extra_field(&conf->gen, &conf->gen.extra,
+ conf->reset_extra);
break;
}
case PGC_REAL:
@@ -2440,21 +2430,16 @@ AtEOXact_GUC(bool isCommit, int nestLevel)
struct config_int *conf = (struct config_int *) gconf;
int newval = newvalue.val.intval;
void *newextra = newvalue.extra;
- bool pending = false;
if (*conf->variable != newval ||
conf->gen.extra != newextra)
{
if (conf->assign_hook)
- conf->assign_hook(newval, newextra, &pending);
-
- if (!pending)
- {
- *conf->variable = newval;
- set_extra_field(&conf->gen, &conf->gen.extra,
- newextra);
- changed = true;
- }
+ conf->assign_hook(newval, newextra);
+ *conf->variable = newval;
+ set_extra_field(&conf->gen, &conf->gen.extra,
+ newextra);
+ changed = true;
}
break;
}
@@ -3871,24 +3856,18 @@ set_config_with_handle(const char *name, config_handle *handle,
if (changeVal)
{
- bool pending = false;
-
/* Save old value to support transaction abort */
if (!makeDefault)
push_old_value(&conf->gen, action);
if (conf->assign_hook)
- conf->assign_hook(newval, newextra, &pending);
-
- if (!pending)
- {
- *conf->variable = newval;
- set_extra_field(&conf->gen, &conf->gen.extra,
- newextra);
- set_guc_source(&conf->gen, source);
- conf->gen.scontext = context;
- conf->gen.srole = srole;
- }
+ conf->assign_hook(newval, newextra);
+ *conf->variable = newval;
+ set_extra_field(&conf->gen, &conf->gen.extra,
+ newextra);
+ set_guc_source(&conf->gen, source);
+ conf->gen.scontext = context;
+ conf->gen.srole = srole;
}
if (makeDefault)
{
diff --git a/src/backend/utils/misc/stack_depth.c b/src/backend/utils/misc/stack_depth.c
index ef59ae62008..8f7cf531fbc 100644
--- a/src/backend/utils/misc/stack_depth.c
+++ b/src/backend/utils/misc/stack_depth.c
@@ -156,7 +156,7 @@ check_max_stack_depth(int *newval, void **extra, GucSource source)
/* GUC assign hook for max_stack_depth */
void
-assign_max_stack_depth(int newval, void *extra, bool *pending)
+assign_max_stack_depth(int newval, void *extra)
{
ssize_t newval_bytes = newval * (ssize_t) 1024;
diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h
index c3056cd2da8..f21ec37da89 100644
--- a/src/include/utils/guc.h
+++ b/src/include/utils/guc.h
@@ -187,7 +187,7 @@ typedef bool (*GucStringCheckHook) (char **newval, void **extra, GucSource sourc
typedef bool (*GucEnumCheckHook) (int *newval, void **extra, GucSource source);
typedef void (*GucBoolAssignHook) (bool newval, void *extra);
-typedef void (*GucIntAssignHook) (int newval, void *extra, bool *pending);
+typedef void (*GucIntAssignHook) (int newval, void *extra);
typedef void (*GucRealAssignHook) (double newval, void *extra);
typedef void (*GucStringAssignHook) (const char *newval, void *extra);
typedef void (*GucEnumAssignHook) (int newval, void *extra);
diff --git a/src/include/utils/guc_hooks.h b/src/include/utils/guc_hooks.h
index 658c799419e..82ac8646a8d 100644
--- a/src/include/utils/guc_hooks.h
+++ b/src/include/utils/guc_hooks.h
@@ -81,12 +81,12 @@ extern bool check_log_stats(bool *newval, void **extra, GucSource source);
extern bool check_log_timezone(char **newval, void **extra, GucSource source);
extern void assign_log_timezone(const char *newval, void *extra);
extern const char *show_log_timezone(void);
-extern void assign_maintenance_io_concurrency(int newval, void *extra, bool *pending);
-extern void assign_io_max_combine_limit(int newval, void *extra, bool *pending);
-extern void assign_io_combine_limit(int newval, void *extra, bool *pending);
-extern void assign_max_wal_size(int newval, void *extra, bool *pending);
+extern void assign_maintenance_io_concurrency(int newval, void *extra);
+extern void assign_io_max_combine_limit(int newval, void *extra);
+extern void assign_io_combine_limit(int newval, void *extra);
+extern void assign_max_wal_size(int newval, void *extra);
extern bool check_max_stack_depth(int *newval, void **extra, GucSource source);
-extern void assign_max_stack_depth(int newval, void *extra, bool *pending);
+extern void assign_max_stack_depth(int newval, void *extra);
extern bool check_multixact_member_buffers(int *newval, void **extra,
GucSource source);
extern bool check_multixact_offset_buffers(int *newval, void **extra,
@@ -141,13 +141,13 @@ extern void assign_synchronous_standby_names(const char *newval, void *extra);
extern void assign_synchronous_commit(int newval, void *extra);
extern void assign_syslog_facility(int newval, void *extra);
extern void assign_syslog_ident(const char *newval, void *extra);
-extern void assign_tcp_keepalives_count(int newval, void *extra, bool *pending);
+extern void assign_tcp_keepalives_count(int newval, void *extra);
extern const char *show_tcp_keepalives_count(void);
-extern void assign_tcp_keepalives_idle(int newval, void *extra, bool *pending);
+extern void assign_tcp_keepalives_idle(int newval, void *extra);
extern const char *show_tcp_keepalives_idle(void);
-extern void assign_tcp_keepalives_interval(int newval, void *extra, bool *pending);
+extern void assign_tcp_keepalives_interval(int newval, void *extra);
extern const char *show_tcp_keepalives_interval(void);
-extern void assign_tcp_user_timeout(int newval, void *extra, bool *pending);
+extern void assign_tcp_user_timeout(int newval, void *extra);
extern const char *show_tcp_user_timeout(void);
extern bool check_temp_buffers(int *newval, void **extra, GucSource source);
extern bool check_temp_tablespaces(char **newval, void **extra,
@@ -163,7 +163,7 @@ extern bool check_transaction_buffers(int *newval, void **extra, GucSource sourc
extern bool check_transaction_deferrable(bool *newval, void **extra, GucSource source);
extern bool check_transaction_isolation(int *newval, void **extra, GucSource source);
extern bool check_transaction_read_only(bool *newval, void **extra, GucSource source);
-extern void assign_transaction_timeout(int newval, void *extra, bool *pending);
+extern void assign_transaction_timeout(int newval, void *extra);
extern const char *show_unix_socket_permissions(void);
extern bool check_wal_buffers(int *newval, void **extra, GucSource source);
extern bool check_wal_consistency_checking(char **newval, void **extra,
--
2.34.1