diff --git a/src/test/modules/injection_points/specs/basic.spec b/src/test/modules/injection_points/specs/basic.spec
index 13d2793f6e4..509572ae9ea 100644
--- a/src/test/modules/injection_points/specs/basic.spec
+++ b/src/test/modules/injection_points/specs/basic.spec
@@ -6,11 +6,7 @@
 
 setup
 {
-	CREATE EXTENSION injection_points;
-}
-teardown
-{
-	DROP EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 }
 
 # Wait happens in the first session, wakeup in the second session.
diff --git a/src/test/modules/injection_points/specs/heap_lock_update.spec b/src/test/modules/injection_points/specs/heap_lock_update.spec
index b3992a1eb7a..6184ed9f5b7 100644
--- a/src/test/modules/injection_points/specs/heap_lock_update.spec
+++ b/src/test/modules/injection_points/specs/heap_lock_update.spec
@@ -22,7 +22,7 @@
 # output, to verify that the test exercises the scenario we want.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE t (id int PRIMARY KEY);
 	do $$
@@ -43,7 +43,6 @@ setup
 teardown
 {
 	DROP TABLE t;
-	DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/inplace.spec b/src/test/modules/injection_points/specs/inplace.spec
index 86539a5bd2f..090166ebb0c 100644
--- a/src/test/modules/injection_points/specs/inplace.spec
+++ b/src/test/modules/injection_points/specs/inplace.spec
@@ -9,7 +9,7 @@
 # Just to save on filesystem syscalls, use relkind=c for every other rel.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 	CREATE SCHEMA vactest;
 	CREATE FUNCTION vactest.mkrels(text, int, int) RETURNS void
 		LANGUAGE plpgsql SET search_path = vactest AS $$
@@ -35,7 +35,6 @@ setup
 teardown
 {
 	DROP SCHEMA vactest CASCADE;
-	DROP EXTENSION injection_points;
 }
 
 # Wait during inplace update, in a VACUUM of vactest.orig50.
diff --git a/src/test/modules/injection_points/specs/on_conflict_probe_window.spec b/src/test/modules/injection_points/specs/on_conflict_probe_window.spec
index 78dddbe8b92..443a30b217a 100644
--- a/src/test/modules/injection_points/specs/on_conflict_probe_window.spec
+++ b/src/test/modules/injection_points/specs/on_conflict_probe_window.spec
@@ -13,7 +13,7 @@
 
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 	CREATE TABLE probe_a (key int PRIMARY KEY, val int);
 	CREATE TABLE probe_b (key int PRIMARY KEY, val int);
 	INSERT INTO probe_a VALUES (1, 0);
@@ -24,7 +24,6 @@ setup
 teardown
 {
 	DROP TABLE probe_a, probe_b;
-	DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/reindex_concurrently_deferred.spec b/src/test/modules/injection_points/specs/reindex_concurrently_deferred.spec
index 4b95e1da2a7..748b8dee604 100644
--- a/src/test/modules/injection_points/specs/reindex_concurrently_deferred.spec
+++ b/src/test/modules/injection_points/specs/reindex_concurrently_deferred.spec
@@ -9,7 +9,7 @@
 
 setup
 {
-    CREATE EXTENSION injection_points;
+    CREATE EXTENSION IF NOT EXISTS injection_points;
     CREATE TABLE reind_deferred (id int, val int,
         CONSTRAINT uq_val UNIQUE(val) DEFERRABLE INITIALLY DEFERRED);
     INSERT INTO reind_deferred VALUES (1, 1), (2, 2);
@@ -18,7 +18,6 @@ setup
 teardown
 {
     DROP TABLE reind_deferred;
-    DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/repack.spec b/src/test/modules/injection_points/specs/repack.spec
index 7896d1456ad..500140b0fc0 100644
--- a/src/test/modules/injection_points/specs/repack.spec
+++ b/src/test/modules/injection_points/specs/repack.spec
@@ -1,7 +1,7 @@
 # REPACK (CONCURRENTLY) ... USING INDEX ...;
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE repack_test(i int PRIMARY KEY, j int,
 				 k int GENERATED ALWAYS AS (j * 2) STORED);
@@ -16,7 +16,6 @@ setup
 teardown
 {
 	DROP TABLE repack_test;
-	DROP EXTENSION injection_points;
 
 	DROP TABLE relfilenodes;
 	DROP TABLE data_s1;
diff --git a/src/test/modules/injection_points/specs/repack_commit_race.spec b/src/test/modules/injection_points/specs/repack_commit_race.spec
index 9926a45839e..05627fcda82 100644
--- a/src/test/modules/injection_points/specs/repack_commit_race.spec
+++ b/src/test/modules/injection_points/specs/repack_commit_race.spec
@@ -5,7 +5,7 @@
 # for MVCC correctness.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE repack_race(i int PRIMARY KEY, j int);
 	INSERT INTO repack_race(i, j) VALUES (1, 1), (2, 2);
@@ -14,7 +14,6 @@ setup
 teardown
 {
 	DROP TABLE repack_race;
-	DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/repack_decode.spec b/src/test/modules/injection_points/specs/repack_decode.spec
index 04f0df83a0a..522ec41cbac 100644
--- a/src/test/modules/injection_points/specs/repack_decode.spec
+++ b/src/test/modules/injection_points/specs/repack_decode.spec
@@ -1,6 +1,6 @@
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	BEGIN;
 	-- Generate a string of random characters that is not likely to be
@@ -22,7 +22,6 @@ setup
 teardown
 {
 	DROP TABLE repack_toast;
-	DROP EXTENSION injection_points;
 	DROP FUNCTION gen_external();
 	SELECT pg_drop_replication_slot('s');
 }
diff --git a/src/test/modules/injection_points/specs/repack_dropped.spec b/src/test/modules/injection_points/specs/repack_dropped.spec
index 099cf744202..784497b0f30 100644
--- a/src/test/modules/injection_points/specs/repack_dropped.spec
+++ b/src/test/modules/injection_points/specs/repack_dropped.spec
@@ -4,7 +4,7 @@
 # they'll comfortably fit in a single page.  The OLD tuple 1 is propagated
 # through the concurrent update because of the trigger.
 setup {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE repack_dropped (id int PRIMARY KEY, a text, b text);
 	ALTER TABLE repack_dropped ALTER COLUMN b SET STORAGE EXTERNAL;
diff --git a/src/test/modules/injection_points/specs/repack_missingval.spec b/src/test/modules/injection_points/specs/repack_missingval.spec
index 4b70d810afd..df7b1f8d839 100644
--- a/src/test/modules/injection_points/specs/repack_missingval.spec
+++ b/src/test/modules/injection_points/specs/repack_missingval.spec
@@ -29,7 +29,6 @@ teardown
 {
 	DROP TABLE repack_missingval;
 	DROP FUNCTION repack_return_old();
-	DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/repack_temporal.spec b/src/test/modules/injection_points/specs/repack_temporal.spec
index c9fd3f61a84..f29b7e573c4 100644
--- a/src/test/modules/injection_points/specs/repack_temporal.spec
+++ b/src/test/modules/injection_points/specs/repack_temporal.spec
@@ -6,7 +6,7 @@
 # target row.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE repack_temporal (
 		id int4range,
@@ -28,7 +28,6 @@ setup
 teardown
 {
 	DROP TABLE repack_temporal;
-	DROP EXTENSION injection_points;
 	DROP TABLE relfilenodes;
 }
 
diff --git a/src/test/modules/injection_points/specs/repack_temporal_multirange.spec b/src/test/modules/injection_points/specs/repack_temporal_multirange.spec
index 8150c0b4ba8..e1328409a9d 100644
--- a/src/test/modules/injection_points/specs/repack_temporal_multirange.spec
+++ b/src/test/modules/injection_points/specs/repack_temporal_multirange.spec
@@ -6,7 +6,7 @@
 # can produce both as candidates and requires exact recheck.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 
 	CREATE TABLE repack_temporal_multirange (
 		id int4multirange,
@@ -34,7 +34,6 @@ setup
 teardown
 {
 	DROP TABLE repack_temporal_multirange;
-	DROP EXTENSION injection_points;
 	DROP TABLE relfilenodes;
 }
 
diff --git a/src/test/modules/injection_points/specs/repack_toast.spec b/src/test/modules/injection_points/specs/repack_toast.spec
index bce4d85f4d9..187ba0616e3 100644
--- a/src/test/modules/injection_points/specs/repack_toast.spec
+++ b/src/test/modules/injection_points/specs/repack_toast.spec
@@ -67,7 +67,6 @@ setup
 teardown
 {
 	DROP TABLE repack_toast;
-	DROP EXTENSION injection_points;
 	DROP FUNCTION gen_compressible(int);
 	DROP FUNCTION gen_compressible_external(int);
 	DROP FUNCTION gen_external();
diff --git a/src/test/modules/injection_points/specs/ri_fastpath_reindex.spec b/src/test/modules/injection_points/specs/ri_fastpath_reindex.spec
index bc1ec6e2819..01127c8cf7d 100644
--- a/src/test/modules/injection_points/specs/ri_fastpath_reindex.spec
+++ b/src/test/modules/injection_points/specs/ri_fastpath_reindex.spec
@@ -1,4 +1,3 @@
-# A foreign key check racing a rebuild of the index it resolves through.
 #
 # Pause the RI fast path before it locks the referenced table, allowing
 # REINDEX CONCURRENTLY to repoint the constraint.  Verify that the check
@@ -7,7 +6,7 @@
 
 setup
 {
-    CREATE EXTENSION injection_points;
+    CREATE EXTENSION IF NOT EXISTS injection_points;
     CREATE TABLE ri_pk (id int PRIMARY KEY);
     INSERT INTO ri_pk SELECT g FROM generate_series(1, 100) g;
     CREATE TABLE ri_fk (id int PRIMARY KEY, pid int REFERENCES ri_pk(id));
@@ -19,7 +18,6 @@ setup
 teardown
 {
     DROP TABLE ri_fk, ri_pk, ri_old_index;
-    DROP EXTENSION injection_points;
 }
 
 # The rebuild, stopped just before it repoints the constraint.
diff --git a/src/test/modules/injection_points/specs/ri_fastpath_snapshot.spec b/src/test/modules/injection_points/specs/ri_fastpath_snapshot.spec
index a3cf6c30fb4..8381d441915 100644
--- a/src/test/modules/injection_points/specs/ri_fastpath_snapshot.spec
+++ b/src/test/modules/injection_points/specs/ri_fastpath_snapshot.spec
@@ -6,7 +6,7 @@
 
 setup
 {
-    CREATE EXTENSION injection_points;
+    CREATE EXTENSION IF NOT EXISTS injection_points;
     CREATE ROLE regress_ri_snapshot;
     CREATE TABLE ri_snapshot_pk (id int PRIMARY KEY);
     CREATE TABLE ri_snapshot_fk (pid int);
@@ -20,7 +20,6 @@ teardown
 {
     DROP TABLE ri_snapshot_fk, ri_snapshot_pk;
     DROP ROLE regress_ri_snapshot;
-    DROP EXTENSION injection_points;
 }
 
 session s1
diff --git a/src/test/modules/injection_points/specs/syscache-update-pruned.spec b/src/test/modules/injection_points/specs/syscache-update-pruned.spec
index e3a4295bd12..367780eba93 100644
--- a/src/test/modules/injection_points/specs/syscache-update-pruned.spec
+++ b/src/test/modules/injection_points/specs/syscache-update-pruned.spec
@@ -25,7 +25,7 @@
 # on filesystem syscalls, use relkind=c for every other rel.
 setup
 {
-	CREATE EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 	CREATE SCHEMA vactest;
 	-- Ensure a leader RELOID catcache entry.  PARALLEL RESTRICTED since a
 	-- parallel worker running pg_relation_filenode() would lack that effect.
@@ -94,7 +94,6 @@ setup
 teardown
 {
 	DROP SCHEMA vactest CASCADE;
-	DROP EXTENSION injection_points;
 }
 
 # Wait during GRANT.  Disable debug_discard_caches, since we're here to
diff --git a/src/test/modules/injection_points/specs/wait_cleanup.spec b/src/test/modules/injection_points/specs/wait_cleanup.spec
index ed7d21c4de4..beefa4e4a71 100644
--- a/src/test/modules/injection_points/specs/wait_cleanup.spec
+++ b/src/test/modules/injection_points/specs/wait_cleanup.spec
@@ -5,11 +5,7 @@
 
 setup
 {
-	CREATE EXTENSION injection_points;
-}
-teardown
-{
-	DROP EXTENSION injection_points;
+	CREATE EXTENSION IF NOT EXISTS injection_points;
 }
 
 # The first waiter, that gets canceled or terminated.  This does not
