From d4a40603003fadd01456ad74f17c97a219c365f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=C3=81lvaro=20Herrera?= <alvherre@kurilemu.de>
Date: Wed, 30 Sep 2026 13:43:45 +0200
Subject: [PATCH 2/2] Crude test case

XXX not for commit just yet
---
 .../specs/repack_dropped.spec                 | 52 +++++++++++++++++++
 1 file changed, 52 insertions(+)
 create mode 100644 src/test/modules/injection_points/specs/repack_dropped.spec

diff --git a/src/test/modules/injection_points/specs/repack_dropped.spec b/src/test/modules/injection_points/specs/repack_dropped.spec
new file mode 100644
index 00000000000..1a1ea085299
--- /dev/null
+++ b/src/test/modules/injection_points/specs/repack_dropped.spec
@@ -0,0 +1,52 @@
+setup {
+	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;
+	insert into repack_dropped select g, cash_words(g::money), repeat(cash_words(g::money), 10 * g) from generate_series(10, 100) g;
+	create function repack_dropped_f() returns trigger language plpgsql as $$ begin return OLD; end $$;
+	create trigger repack_dropped_t before update on repack_dropped for each row execute function repack_dropped_f();
+	alter table repack_dropped drop column b;
+}
+
+teardown {
+	drop table repack_dropped;
+	drop function repack_dropped_f;
+}
+
+session s1
+
+step s1_size
+{
+	select pg_relation_size(oid), pg_relation_size(reltoastrelid) from pg_class where relname = 'repack_dropped';
+}
+
+step s1_unlock
+{
+	SELECT injection_points_wakeup('repack-concurrently-before-lock');
+}
+
+session s2
+setup
+{
+	SELECT injection_points_set_local();
+	SELECT injection_points_attach('repack-concurrently-before-lock', 'wait');
+}
+
+step s2_repack
+{
+	repack (concurrently) repack_dropped;
+}
+
+session s3
+step s3_updates
+{
+	update repack_dropped set a = a || a;
+}
+
+permutation
+	s1_size
+	s2_repack
+	s3_updates
+	s1_unlock
+	s1_size
-- 
2.47.3

