diff --git a/src/test/isolation/expected/bru-trigger.out b/src/test/isolation/expected/bru-trigger.out
new file mode 100644
index 0000000000..edae1c5832
--- /dev/null
+++ b/src/test/isolation/expected/bru-trigger.out
@@ -0,0 +1,8 @@
+Parsed test spec with 2 sessions
+
+starting permutation: s1b s1u s2u s1c
+step s1b: BEGIN;
+step s1u: UPDATE bruttest SET cnt = cnt + 1;
+step s2u: UPDATE bruttest SET cnt = cnt + 1; <waiting ...>
+step s1c: COMMIT;
+step s2u: <... completed>
diff --git a/src/test/isolation/specs/bru-trigger.spec b/src/test/isolation/specs/bru-trigger.spec
new file mode 100644
index 0000000000..9d49b25174
--- /dev/null
+++ b/src/test/isolation/specs/bru-trigger.spec
@@ -0,0 +1,32 @@
+# Before Row Update Trigger test
+#
+# Test concurrent access to a row in a new buffer from within BEFORE UPDATE trigger
+
+setup
+{
+ CREATE TABLE bruttest(cnt INTEGER DEFAULT 0, t TEXT);
+ ALTER TABLE bruttest ALTER COLUMN t SET STORAGE plain;
+ CREATE FUNCTION noop_tfunc() RETURNS TRIGGER LANGUAGE plpgsql AS $body$
+ BEGIN
+  RETURN NEW;
+ END
+ $body$;
+ CREATE TRIGGER brupdate_trigger BEFORE UPDATE ON bruttest FOR EACH ROW EXECUTE FUNCTION noop_tfunc();
+ INSERT INTO bruttest(t) VALUES (repeat('x', 5000));
+}
+
+teardown
+{
+ DROP TABLE bruttest;
+ DROP FUNCTION noop_tfunc();
+}
+
+session s1
+step s1b	{ BEGIN; }
+step s1u	{ UPDATE bruttest SET cnt = cnt + 1; }
+step s1c	{ COMMIT; }
+
+session s2
+step s2u	{ UPDATE bruttest SET cnt = cnt + 1; }
+
+permutation s1b s1u s2u s1c
