diff --git a/src/test/modules/gin/expected/gin_incomplete_splits.out b/src/test/modules/gin/expected/gin_incomplete_splits.out index 15574e5..4bc5ef1 100644 --- a/src/test/modules/gin/expected/gin_incomplete_splits.out +++ b/src/test/modules/gin/expected/gin_incomplete_splits.out @@ -126,6 +126,12 @@ SELECT injection_points_attach('gin-leave-leaf-split-incomplete', 'error'); select insert_until_fail(:next_i) as next_i \gset NOTICE: failed with: error triggered for injection point gin-leave-leaf-split-incomplete +SELECT pg_sleep(10); + pg_sleep +---------- + +(1 row) + SELECT injection_points_detach('gin-leave-leaf-split-incomplete'); injection_points_detach ------------------------- diff --git a/src/test/modules/gin/sql/gin_incomplete_splits.sql b/src/test/modules/gin/sql/gin_incomplete_splits.sql index ebf0f62..fb66bac 100644 --- a/src/test/modules/gin/sql/gin_incomplete_splits.sql +++ b/src/test/modules/gin/sql/gin_incomplete_splits.sql @@ -118,6 +118,7 @@ select verify(:next_i); SELECT injection_points_attach('gin-leave-leaf-split-incomplete', 'error'); select insert_until_fail(:next_i) as next_i \gset +SELECT pg_sleep(10); SELECT injection_points_detach('gin-leave-leaf-split-incomplete'); -- Verify that a scan works even though there's an incomplete split diff --git a/src/test/modules/injection_points/injection_points.c b/src/test/modules/injection_points/injection_points.c index a74a4a2..f9e8a1f 100644 --- a/src/test/modules/injection_points/injection_points.c +++ b/src/test/modules/injection_points/injection_points.c @@ -18,6 +18,7 @@ #include "postgres.h" #include "fmgr.h" +#include "libpq/pqsignal.h" #include "miscadmin.h" #include "storage/condition_variable.h" #include "storage/dsm_registry.h" @@ -213,6 +214,14 @@ injection_points_cleanup(int code, Datum arg) void injection_error(const char *name) { + if (strcmp(name, "gin-leave-leaf-split-incomplete") == 0 && + !injection_point_allowed(name)) + { + sigprocmask(SIG_SETMASK, &BlockSig, NULL); + pg_usleep(20 * USECS_PER_SEC); /* let other suite detach */ + sigprocmask(SIG_SETMASK, &UnBlockSig, NULL); + } + if (!injection_point_allowed(name)) return;