Adjust max_prepared_transactions only when it is default (#7712)

DESCRIPTION: Adjusts max_prepared_transactions only when it's set to
default on PG >= 16

Fixes #7711.
Change AdjustMaxPreparedTransactions to really check if
max_prepared_transactions is explicitly set by user, and only adjust
max_prepared_transactions when it is default.
This fixes 021_twophase test failure with loaded Citus library after
postgres/postgres@b39c5272.

Co-authored-by: Karina Litskevich <litskevichkarina@gmail.com>
pull/7572/merge
Karina 2025-04-24 14:11:49 +03:00 committed by GitHub
parent bb9d90ecc3
commit 48d89c9c1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 10 additions and 0 deletions

View File

@ -802,8 +802,18 @@ AdjustMaxPreparedTransactions(void)
* (connections * 2 currently). If the user explicitly configured 2PC, we
* leave the configuration alone - there might have been intent behind the
* decision.
*
* find_option is declared static in guc.c for older versions, so we can't
* really check if max_prepared_xacts is configured by the user explicitly,
* so check if it's value is default.
*/
#if PG_VERSION_NUM >= PG_VERSION_16
struct config_generic *gconf = find_option("max_prepared_transactions",
false, false, ERROR);
if (gconf->source == PGC_S_DEFAULT)
#else
if (max_prepared_xacts == 0)
#endif
{
char newvalue[12];