summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier2024-08-23 03:11:36 +0000
committerMichael Paquier2024-08-23 03:11:36 +0000
commit94a3373ac5c3d2444b2379a3c185b986627c42d4 (patch)
treefc0e7b187001012b1ba01a1550f6c422dcd889a3
parent2e35c67f956891b2dd7c30fbac9a14e76377300a (diff)
Rework new SLRU test with injection points
Rather than the SQL injection_points_load(), this commit changes the injection point test introduced in 768a9fd5535f to rely on the two macros INJECTION_POINT_LOAD() and INJECTION_POINT_CACHED(), that have been originally introduced for the sake of this test. This runs the test as a two-step process: load the injection point, then run its callback directly from the local cache loaded. What the test did originally was also fine, but the point here is to have an example in core of how to use these new macros. While on it, fix the header ordering in multixact.c, as pointed out by Alexander Korotkov. This was an oversight in 768a9fd5535f. Per discussion with Álvaro Herrera. Author: Michael Paquier Discussion: https://postgr.es/m/[email protected] Discussion: https://postgr.es/m/CAPpHfduzaBz7KMhwuVOZMTpG=JniPG4aUosXPZCxZydmzq_oEQ@mail.gmail.com
-rw-r--r--src/backend/access/transam/multixact.c7
-rw-r--r--src/test/modules/test_slru/t/001_multixact.pl3
2 files changed, 6 insertions, 4 deletions
diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c
index 14c2b929e2c..a03d56541d0 100644
--- a/src/backend/access/transam/multixact.c
+++ b/src/backend/access/transam/multixact.c
@@ -88,8 +88,8 @@
#include "storage/proc.h"
#include "storage/procarray.h"
#include "utils/fmgrprotos.h"
-#include "utils/injection_point.h"
#include "utils/guc_hooks.h"
+#include "utils/injection_point.h"
#include "utils/memutils.h"
@@ -855,6 +855,9 @@ MultiXactIdCreateFromMembers(int nmembers, MultiXactMember *members)
}
}
+ /* Load the injection point before entering the critical section */
+ INJECTION_POINT_LOAD("multixact-create-from-members");
+
/*
* Assign the MXID and offsets range to use, and make sure there is space
* in the OFFSETs and MEMBERs files. NB: this routine does
@@ -869,7 +872,7 @@ MultiXactIdCreateFromMembers(int nmembers, MultiXactMember *members)
*/
multi = GetNewMultiXactId(nmembers, &offset);
- INJECTION_POINT("multixact-create-from-members");
+ INJECTION_POINT_CACHED("multixact-create-from-members");
/* Make an XLOG entry describing the new MXID. */
xlrec.mid = multi;
diff --git a/src/test/modules/test_slru/t/001_multixact.pl b/src/test/modules/test_slru/t/001_multixact.pl
index f07406bf9d6..882de7cd20b 100644
--- a/src/test/modules/test_slru/t/001_multixact.pl
+++ b/src/test/modules/test_slru/t/001_multixact.pl
@@ -24,7 +24,7 @@ my ($node, $result);
$node = PostgreSQL::Test::Cluster->new('mike');
$node->init;
$node->append_conf('postgresql.conf',
- "shared_preload_libraries = 'test_slru'");
+ "shared_preload_libraries = 'test_slru,injection_points'");
$node->start;
$node->safe_psql('postgres', q(CREATE EXTENSION injection_points));
$node->safe_psql('postgres', q(CREATE EXTENSION test_slru));
@@ -64,7 +64,6 @@ $node->safe_psql('postgres',
$creator->query_until(
qr/start/, q{
\echo start
- SELECT injection_points_load('multixact-create-from-members');
SELECT test_create_multixact();
});