From 229c0a361b8a28e38b0b323f2148375aa2a6e509 Mon Sep 17 00:00:00 2001
From: Dave Cramer <davecramer@gmail.com>
Date: Tue, 4 Aug 2020 12:15:38 -0400
Subject: [PATCH] Throw error and rollback on a failed transaction instead of
 silently rolling back

fix isolation test
---
 src/backend/tcop/utility.c                    |  9 ++++
 src/backend/utils/error/elog.c                |  1 +
 src/include/utils/elog.h                      |  9 ++--
 src/test/isolation/expected/alter-table-3.out | 48 +++++++++++++++++++
 .../expected/classroom-scheduling.out         |  6 +++
 src/test/isolation/expected/deadlock-hard.out |  1 +
 .../isolation/expected/deadlock-simple.out    |  1 +
 .../expected/eval-plan-qual-trigger.out       |  3 ++
 .../isolation/expected/eval-plan-qual.out     |  3 ++
 .../isolation/expected/fk-partitioned-1.out   | 14 ++++++
 .../isolation/expected/fk-partitioned-2.out   |  6 +++
 .../expected/insert-conflict-do-nothing-2.out |  4 ++
 .../expected/lock-committed-keyupdate.out     | 12 +++++
 .../expected/multiple-row-versions.out        |  1 +
 src/test/isolation/expected/nowait-2.out      |  3 ++
 src/test/isolation/expected/nowait-3.out      |  1 +
 src/test/isolation/expected/nowait-4.out      |  1 +
 src/test/isolation/expected/nowait-5.out      |  1 +
 src/test/isolation/expected/nowait.out        |  4 ++
 src/test/isolation/expected/partial-index.out |  6 +++
 .../expected/partition-concurrent-attach.out  |  3 ++
 .../expected/partition-key-update-1.out       |  7 +++
 .../expected/partition-key-update-3.out       |  6 +++
 src/test/isolation/expected/predicate-gin.out | 11 +++++
 .../isolation/expected/predicate-gist.out     |  6 +++
 .../isolation/expected/predicate-hash.out     |  6 +++
 .../isolation/expected/project-manager.out    |  6 +++
 .../expected/propagate-lock-delete.out        |  8 ++++
 .../expected/read-write-unique-2.out          |  2 +
 .../expected/read-write-unique-3.out          |  1 +
 .../expected/read-write-unique-4.out          |  3 ++
 .../isolation/expected/read-write-unique.out  |  2 +
 .../isolation/expected/receipt-report.out     |  2 +
 .../expected/referential-integrity.out        | 13 +++++
 src/test/isolation/expected/ri-trigger.out    |  4 ++
 .../expected/temporal-range-integrity.out     |  6 +++
 src/test/isolation/expected/total-cash.out    |  6 +++
 .../expected/update-conflict-out.out          |  2 +
 src/test/regress/expected/copy2.out           |  2 +
 src/test/regress/expected/create_index.out    |  6 +++
 src/test/regress/expected/foreign_key.out     |  7 +++
 src/test/regress/expected/insert_conflict.out |  3 ++
 src/test/regress/expected/portals.out         |  1 +
 src/test/regress/expected/prepared_xacts.out  |  1 +
 src/test/regress/expected/privileges.out      |  2 +
 src/test/regress/expected/subscription.out    |  2 +
 src/test/regress/expected/transactions.out    |  9 ++++
 src/test/regress/output/constraints.source    |  2 +
 48 files changed, 259 insertions(+), 4 deletions(-)

diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 9a35147b26..123e15edd8 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -621,6 +621,11 @@ standard_ProcessUtility(PlannedStmt *pstmt,
 							/* report unsuccessful commit in qc */
 							if (qc)
 								SetQueryCompletion(qc, CMDTAG_ROLLBACK, 0);
+							/* report USER_ERROR so that we don't completely exit the context */
+							ereport(USER_ERROR,
+									(errcode(ERRCODE_TRANSACTION_ROLLBACK),
+											errmsg("current transaction failed, "
+												"rolling back")));
 						}
 						break;
 
@@ -630,6 +635,10 @@ standard_ProcessUtility(PlannedStmt *pstmt,
 							/* report unsuccessful commit in qc */
 							if (qc)
 								SetQueryCompletion(qc, CMDTAG_ROLLBACK, 0);
+							ereport(ERROR,
+									(errcode(ERRCODE_TRANSACTION_ROLLBACK),
+											errmsg("current transaction failed, "
+												"rolling back")));
 						}
 						break;
 
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 1ba47c194b..d62736b473 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -3411,6 +3411,7 @@ error_severity(int elevel)
 		case WARNING:
 			prefix = gettext_noop("WARNING");
 			break;
+		case USER_ERROR:
 		case ERROR:
 			prefix = gettext_noop("ERROR");
 			break;
diff --git a/src/include/utils/elog.h b/src/include/utils/elog.h
index 1e09ee0541..d3acbeb420 100644
--- a/src/include/utils/elog.h
+++ b/src/include/utils/elog.h
@@ -40,17 +40,18 @@
 #define WARNING		19			/* Warnings.  NOTICE is for expected messages
 								 * like implicit sequence creation by SERIAL.
 								 * WARNING is for unexpected messages. */
-#define ERROR		20			/* user error - abort transaction; return to
+#define USER_ERROR	20
+#define ERROR		21			/* user error - abort transaction; return to
 								 * known state */
 /* Save ERROR value in PGERROR so it can be restored when Win32 includes
  * modify it.  We have to use a constant rather than ERROR because macros
  * are expanded only when referenced outside macros.
  */
 #ifdef WIN32
-#define PGERROR		20
+#define PGERROR		21
 #endif
-#define FATAL		21			/* fatal error - abort process */
-#define PANIC		22			/* take down the other backends with me */
+#define FATAL		22			/* fatal error - abort process */
+#define PANIC		23			/* take down the other backends with me */
 
  /* #define DEBUG DEBUG1 */	/* Backward compatibility with pre-7.3 */
 
diff --git a/src/test/isolation/expected/alter-table-3.out b/src/test/isolation/expected/alter-table-3.out
index b4f3b5a86d..cc237aff0d 100644
--- a/src/test/isolation/expected/alter-table-3.out
+++ b/src/test/isolation/expected/alter-table-3.out
@@ -12,6 +12,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s1c s2a s1d s2b s2c s2d
@@ -26,6 +27,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s1c s2a s2b s1d s2c s2d
@@ -40,6 +42,7 @@ i
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s1c s2a s2b s2c s1d s2d
@@ -55,6 +58,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s1c s1d s2b s2c s2d
@@ -69,6 +73,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s1c s2b s1d s2c s2d
@@ -83,6 +88,7 @@ i
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s1c s2b s2c s1d s2d
@@ -98,6 +104,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s2b s1c s1d s2c s2d
@@ -112,6 +119,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s2b s1c s2c s1d s2d
@@ -127,6 +135,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s1b s2a s2b s2c s1c s1d s2d
@@ -142,6 +151,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s1c s1d s2b s2c s2d
@@ -156,6 +166,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s1c s2b s1d s2c s2d
@@ -170,6 +181,7 @@ i
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s1c s2b s2c s1d s2d
@@ -185,6 +197,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s2b s1c s1d s2c s2d
@@ -199,6 +212,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s2b s1c s2c s1d s2d
@@ -214,6 +228,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s1b s2b s2c s1c s1d s2d
@@ -229,6 +244,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s2b s1b s1c s1d s2c s2d
@@ -243,6 +259,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s2b s1b s1c s2c s1d s2d
@@ -258,6 +275,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s2b s1b s2c s1c s1d s2d
@@ -273,6 +291,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s2b s2c s1b s1c s1d s2d
@@ -287,6 +306,7 @@ ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s1a s2a s2b s2c s1b s1c s2d s1d
@@ -300,6 +320,7 @@ step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1d: COMMIT;
 
@@ -313,6 +334,7 @@ i
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
@@ -326,6 +348,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
@@ -343,6 +366,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s1b s1c s2b s1d s2c s2d
@@ -357,6 +381,7 @@ i
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s1b s1c s2b s2c s1d s2d
@@ -372,6 +397,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s1b s2b s1c s1d s2c s2d
@@ -386,6 +412,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s1b s2b s1c s2c s1d s2d
@@ -401,6 +428,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s1b s2b s2c s1c s1d s2d
@@ -416,6 +444,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s2b s1b s1c s1d s2c s2d
@@ -430,6 +459,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s2b s1b s1c s2c s1d s2d
@@ -445,6 +475,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s2b s1b s2c s1c s1d s2d
@@ -460,6 +491,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s2b s2c s1b s1c s1d s2d
@@ -474,6 +506,7 @@ ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s1a s2b s2c s1b s1c s2d s1d
@@ -487,6 +520,7 @@ step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1d: COMMIT;
 
@@ -500,6 +534,7 @@ i
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
@@ -513,6 +548,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
@@ -530,6 +566,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s2b s1a s1b s1c s2c s1d s2d
@@ -545,6 +582,7 @@ step s2c: INSERT INTO a VALUES (0); <waiting ...>
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s2b s1a s1b s2c s1c s1d s2d
@@ -560,6 +598,7 @@ step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
 step s2c: <... completed>
 error in steps s1d s2c: ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s2b s1a s2c s1b s1c s1d s2d
@@ -574,6 +613,7 @@ ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s2b s1a s2c s1b s1c s2d s1d
@@ -587,6 +627,7 @@ step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1d: COMMIT;
 
@@ -600,6 +641,7 @@ step s1a: BEGIN;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
@@ -613,6 +655,7 @@ i
 step s1a: BEGIN;
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
@@ -630,6 +673,7 @@ step s1a: BEGIN;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 
 starting permutation: s2a s2b s2c s1a s1b s1c s2d s1d
@@ -643,6 +687,7 @@ ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1a: BEGIN;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1d: COMMIT;
 
@@ -656,6 +701,7 @@ step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1a: BEGIN;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
 step s1d: COMMIT;
@@ -669,6 +715,7 @@ i
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
 step s1a: BEGIN;
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
 step s1c: ALTER TABLE a ENABLE TRIGGER t;
@@ -682,6 +729,7 @@ i
 1              
 step s2c: INSERT INTO a VALUES (0);
 ERROR:  duplicate key value violates unique constraint "a_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2d: COMMIT;
 step s1a: BEGIN;
 step s1b: ALTER TABLE a DISABLE TRIGGER t;
diff --git a/src/test/isolation/expected/classroom-scheduling.out b/src/test/isolation/expected/classroom-scheduling.out
index f02638c0b5..185bee5a93 100644
--- a/src/test/isolation/expected/classroom-scheduling.out
+++ b/src/test/isolation/expected/classroom-scheduling.out
@@ -27,6 +27,7 @@ count
 step c1: COMMIT;
 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 wy1 ry2 wx2 c1 c2
@@ -72,6 +73,7 @@ step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '
 step c1: COMMIT;
 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 ry2 wy1 wx2 c1 c2
@@ -147,6 +149,7 @@ step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '201
 step c2: COMMIT;
 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 rx1 wy1 c1 wx2 c2
@@ -162,6 +165,7 @@ step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '
 step c1: COMMIT;
 step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 13:30', end_time = TIMESTAMP WITH TIME ZONE '2010-04-01 14:30' WHERE room_id = '101' AND start_time = TIMESTAMP WITH TIME ZONE '2010-04-01 10:00';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: ry2 rx1 wy1 wx2 c1 c2
@@ -237,6 +241,7 @@ step wx2: UPDATE room_reservation SET start_time = TIMESTAMP WITH TIME ZONE '201
 step c2: COMMIT;
 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 rx1 wy1 c1 c2
@@ -282,6 +287,7 @@ count
 step c2: COMMIT;
 step wy1: INSERT INTO room_reservation VALUES ('101', TIMESTAMP WITH TIME ZONE '2010-04-01 13:00', TIMESTAMP WITH TIME ZONE '2010-04-01 14:00', 'Carol');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 c2 rx1 wy1 c1
diff --git a/src/test/isolation/expected/deadlock-hard.out b/src/test/isolation/expected/deadlock-hard.out
index b4ce01962d..bebd2ef1f7 100644
--- a/src/test/isolation/expected/deadlock-hard.out
+++ b/src/test/isolation/expected/deadlock-hard.out
@@ -20,6 +20,7 @@ step s8a1: LOCK TABLE a1; <waiting ...>
 step s8a1: <... completed>
 step s7a8: <... completed>
 error in steps s8a1 s7a8: ERROR:  deadlock detected
+s8: ERROR:  current transaction failed, rolling back
 step s8c: COMMIT;
 step s7c: COMMIT;
 step s6a7: <... completed>
diff --git a/src/test/isolation/expected/deadlock-simple.out b/src/test/isolation/expected/deadlock-simple.out
index e0d2c4ef12..06104fee30 100644
--- a/src/test/isolation/expected/deadlock-simple.out
+++ b/src/test/isolation/expected/deadlock-simple.out
@@ -8,4 +8,5 @@ step s2ae: LOCK TABLE a1 IN ACCESS EXCLUSIVE MODE;
 step s1ae: <... completed>
 error in steps s2ae s1ae: ERROR:  deadlock detected
 step s1c: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
diff --git a/src/test/isolation/expected/eval-plan-qual-trigger.out b/src/test/isolation/expected/eval-plan-qual-trigger.out
index f0d975ce0c..f9f30cce85 100644
--- a/src/test/isolation/expected/eval-plan-qual-trigger.out
+++ b/src/test/isolation/expected/eval-plan-qual-trigger.out
@@ -610,6 +610,7 @@ step s2_ins_a: INSERT INTO trigtest VALUES ('key-a', 'val-a-s2') RETURNING *; <w
 step s1_c: COMMIT;
 step s2_ins_a: <... completed>
 error in steps s1_c s2_ins_a: ERROR:  duplicate key value violates unique constraint "trigtest_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2_c: COMMIT;
 step s0_rep: SELECT * FROM trigtest ORDER BY key, data
 key            data           
@@ -2024,6 +2025,7 @@ step s2_upd_a_data:
 step s1_c: COMMIT;
 step s2_upd_a_data: <... completed>
 error in steps s1_c s2_upd_a_data: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2_c: COMMIT;
 step s0_rep: SELECT * FROM trigtest ORDER BY key, data
 key            data           
@@ -2137,6 +2139,7 @@ step s2_upd_a_data:
 step s1_c: COMMIT;
 step s2_upd_a_data: <... completed>
 error in steps s1_c s2_upd_a_data: ERROR:  could not serialize access due to concurrent delete
+s2: ERROR:  current transaction failed, rolling back
 step s2_c: COMMIT;
 step s0_rep: SELECT * FROM trigtest ORDER BY key, data
 key            data           
diff --git a/src/test/isolation/expected/eval-plan-qual.out b/src/test/isolation/expected/eval-plan-qual.out
index 3e55a55c63..5aa752d0c2 100644
--- a/src/test/isolation/expected/eval-plan-qual.out
+++ b/src/test/isolation/expected/eval-plan-qual.out
@@ -552,6 +552,7 @@ step updwctefail: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHE
 step c1: COMMIT;
 step updwctefail: <... completed>
 error in steps c1 updwctefail: ERROR:  tuple to be updated was already modified by an operation triggered by the current command
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 step read: SELECT * FROM accounts ORDER BY accountid;
 accountid      balance        
@@ -585,6 +586,7 @@ step delwctefail: WITH doup AS (UPDATE accounts SET balance = balance + 1100 WHE
 step c1: COMMIT;
 step delwctefail: <... completed>
 error in steps c1 delwctefail: ERROR:  tuple to be deleted was already modified by an operation triggered by the current command
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 step read: SELECT * FROM accounts ORDER BY accountid;
 accountid      balance        
@@ -932,6 +934,7 @@ step complexpartupdate_route_err1:
 step c1: COMMIT;
 step complexpartupdate_route_err1: <... completed>
 error in steps c1 complexpartupdate_route_err1: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: simplepartupdate_noroute complexpartupdate_route c1 c2
diff --git a/src/test/isolation/expected/fk-partitioned-1.out b/src/test/isolation/expected/fk-partitioned-1.out
index aea2b6d56b..f984f794d6 100644
--- a/src/test/isolation/expected/fk-partitioned-1.out
+++ b/src/test/isolation/expected/fk-partitioned-1.out
@@ -7,6 +7,7 @@ step s1c: commit;
 step s2b: begin;
 step s2a: alter table pfk attach partition pfk1 for values in (1);
 ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s1d s2b s1c s2a s2c
@@ -16,6 +17,7 @@ step s2b: begin;
 step s1c: commit;
 step s2a: alter table pfk attach partition pfk1 for values in (1);
 ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s1d s2b s2a s1c s2c
@@ -26,6 +28,7 @@ step s2a: alter table pfk attach partition pfk1 for values in (1); <waiting ...>
 step s1c: commit;
 step s2a: <... completed>
 error in steps s1c s2a: ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2b s1d s1c s2a s2c
@@ -35,6 +38,7 @@ step s1d: delete from ppk1 where a = 1;
 step s1c: commit;
 step s2a: alter table pfk attach partition pfk1 for values in (1);
 ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2b s1d s2a s1c s2c
@@ -45,6 +49,7 @@ step s2a: alter table pfk attach partition pfk1 for values in (1); <waiting ...>
 step s1c: commit;
 step s2a: <... completed>
 error in steps s1c s2a: ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2b s2a s1d s2c s1c
@@ -55,6 +60,7 @@ step s1d: delete from ppk1 where a = 1; <waiting ...>
 step s2c: commit;
 step s1d: <... completed>
 error in steps s2c s1d: ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s1b s2b s2a s2c s1d s1c
@@ -64,6 +70,7 @@ step s2a: alter table pfk attach partition pfk1 for values in (1);
 step s2c: commit;
 step s1d: delete from ppk1 where a = 1;
 ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s2b s1b s1d s1c s2a s2c
@@ -73,6 +80,7 @@ step s1d: delete from ppk1 where a = 1;
 step s1c: commit;
 step s2a: alter table pfk attach partition pfk1 for values in (1);
 ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s2b s1b s1d s2a s1c s2c
@@ -83,6 +91,7 @@ step s2a: alter table pfk attach partition pfk1 for values in (1); <waiting ...>
 step s1c: commit;
 step s2a: <... completed>
 error in steps s1c s2a: ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s2b s1b s2a s1d s2c s1c
@@ -93,6 +102,7 @@ step s1d: delete from ppk1 where a = 1; <waiting ...>
 step s2c: commit;
 step s1d: <... completed>
 error in steps s2c s1d: ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s2b s1b s2a s2c s1d s1c
@@ -102,6 +112,7 @@ step s2a: alter table pfk attach partition pfk1 for values in (1);
 step s2c: commit;
 step s1d: delete from ppk1 where a = 1;
 ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s2b s2a s1b s1d s2c s1c
@@ -112,6 +123,7 @@ step s1d: delete from ppk1 where a = 1; <waiting ...>
 step s2c: commit;
 step s1d: <... completed>
 error in steps s2c s1d: ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s2b s2a s1b s2c s1d s1c
@@ -121,6 +133,7 @@ step s1b: begin;
 step s2c: commit;
 step s1d: delete from ppk1 where a = 1;
 ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s2b s2a s2c s1b s1d s1c
@@ -130,4 +143,5 @@ step s2c: commit;
 step s1b: begin;
 step s1d: delete from ppk1 where a = 1;
 ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
diff --git a/src/test/isolation/expected/fk-partitioned-2.out b/src/test/isolation/expected/fk-partitioned-2.out
index 722b615c6e..75d778dd23 100644
--- a/src/test/isolation/expected/fk-partitioned-2.out
+++ b/src/test/isolation/expected/fk-partitioned-2.out
@@ -8,6 +8,7 @@ step s2i: insert into pfk values (1); <waiting ...>
 step s1c: commit;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s1d s2bs s2i s1c s2c
@@ -21,6 +22,7 @@ step s2i: insert into pfk values (1); <waiting ...>
 step s1c: commit;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2b s1d s2i s1c s2c
@@ -31,6 +33,7 @@ step s2i: insert into pfk values (1); <waiting ...>
 step s1c: commit;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  insert or update on table "pfk1" violates foreign key constraint "pfk_a_fkey"
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2bs s1d s2i s1c s2c
@@ -44,6 +47,7 @@ step s2i: insert into pfk values (1); <waiting ...>
 step s1c: commit;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 
 starting permutation: s1b s2b s2i s1d s2c s1c
@@ -54,6 +58,7 @@ step s1d: delete from ppk where a = 1; <waiting ...>
 step s2c: commit;
 step s1d: <... completed>
 error in steps s2c s1d: ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 
 starting permutation: s1b s2bs s2i s1d s2c s1c
@@ -67,4 +72,5 @@ step s1d: delete from ppk where a = 1; <waiting ...>
 step s2c: commit;
 step s1d: <... completed>
 error in steps s2c s1d: ERROR:  update or delete on table "ppk1" violates foreign key constraint "pfk_a_fkey1" on table "pfk"
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
diff --git a/src/test/isolation/expected/insert-conflict-do-nothing-2.out b/src/test/isolation/expected/insert-conflict-do-nothing-2.out
index 2332f96978..977bba8a38 100644
--- a/src/test/isolation/expected/insert-conflict-do-nothing-2.out
+++ b/src/test/isolation/expected/insert-conflict-do-nothing-2.out
@@ -32,6 +32,7 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donoth
 step c1: COMMIT;
 step donothing2: <... completed>
 error in steps c1 donothing2: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 step show: SELECT * FROM ints;
 key            val            
@@ -46,6 +47,7 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT
 step c2: COMMIT;
 step donothing1: <... completed>
 error in steps c2 donothing1: ERROR:  could not serialize access due to concurrent update
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 step show: SELECT * FROM ints;
 key            val            
@@ -84,6 +86,7 @@ step donothing2: INSERT INTO ints(key, val) VALUES(1, 'donothing2'), (1, 'donoth
 step c1: COMMIT;
 step donothing2: <... completed>
 error in steps c1 donothing2: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 step show: SELECT * FROM ints;
 key            val            
@@ -98,6 +101,7 @@ step donothing1: INSERT INTO ints(key, val) VALUES(1, 'donothing1') ON CONFLICT
 step c2: COMMIT;
 step donothing1: <... completed>
 error in steps c2 donothing1: ERROR:  could not serialize access due to concurrent update
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 step show: SELECT * FROM ints;
 key            val            
diff --git a/src/test/isolation/expected/lock-committed-keyupdate.out b/src/test/isolation/expected/lock-committed-keyupdate.out
index 69cdbfba0a..134c2e6fd4 100644
--- a/src/test/isolation/expected/lock-committed-keyupdate.out
+++ b/src/test/isolation/expected/lock-committed-keyupdate.out
@@ -193,6 +193,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -217,6 +218,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -241,6 +243,7 @@ step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL
 step s1c: COMMIT;
 step s2l: <... completed>
 error in steps s1c s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -270,6 +273,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -299,6 +303,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -328,6 +333,7 @@ id             value
 
 1              one            
 2              two            
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -352,6 +358,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -376,6 +383,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -400,6 +408,7 @@ step s2l: SELECT * FROM lcku_table WHERE pg_advisory_lock(578902068) IS NOT NULL
 step s1c: COMMIT;
 step s2l: <... completed>
 error in steps s1c s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -429,6 +438,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -458,6 +468,7 @@ pg_advisory_unlock
 t              
 step s2l: <... completed>
 error in steps s1ul s2l: ERROR:  could not serialize access due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
@@ -487,6 +498,7 @@ id             value
 
 1              one            
 2              two            
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 pg_advisory_unlock_all
 
diff --git a/src/test/isolation/expected/multiple-row-versions.out b/src/test/isolation/expected/multiple-row-versions.out
index d6a0c427fc..dc7ab89113 100644
--- a/src/test/isolation/expected/multiple-row-versions.out
+++ b/src/test/isolation/expected/multiple-row-versions.out
@@ -21,4 +21,5 @@ step c4: COMMIT;
 step c3: COMMIT;
 step wz1: UPDATE t SET txt = 'a' WHERE id = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
diff --git a/src/test/isolation/expected/nowait-2.out b/src/test/isolation/expected/nowait-2.out
index 6e24bbbf26..ee8ceca6b7 100644
--- a/src/test/isolation/expected/nowait-2.out
+++ b/src/test/isolation/expected/nowait-2.out
@@ -12,6 +12,7 @@ id             data
 step s2b: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
 step s1b: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s2a s1a s2b s1b s2c
@@ -26,6 +27,7 @@ id             data
 step s2b: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
 step s1b: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s2a s2b s1a s1b s2c
@@ -39,5 +41,6 @@ id             data
 1              x              
 step s1a: SELECT * FROM foo FOR SHARE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
+s1: ERROR:  current transaction failed, rolling back
 step s1b: COMMIT;
 step s2c: COMMIT;
diff --git a/src/test/isolation/expected/nowait-3.out b/src/test/isolation/expected/nowait-3.out
index 844464654a..6fb4b86d66 100644
--- a/src/test/isolation/expected/nowait-3.out
+++ b/src/test/isolation/expected/nowait-3.out
@@ -14,4 +14,5 @@ id             data
 
 1              x              
 step s2b: COMMIT;
+s3: ERROR:  current transaction failed, rolling back
 step s3b: COMMIT;
diff --git a/src/test/isolation/expected/nowait-4.out b/src/test/isolation/expected/nowait-4.out
index 26f59bef94..de588c4b91 100644
--- a/src/test/isolation/expected/nowait-4.out
+++ b/src/test/isolation/expected/nowait-4.out
@@ -15,5 +15,6 @@ pg_advisory_unlock
 t              
 step s1a: <... completed>
 error in steps s2e s1a: ERROR:  could not obtain lock on row in relation "foo"
+s1: ERROR:  current transaction failed, rolling back
 step s1b: COMMIT;
 step s2f: COMMIT;
diff --git a/src/test/isolation/expected/nowait-5.out b/src/test/isolation/expected/nowait-5.out
index c88aae5ef6..99f81f1a0c 100644
--- a/src/test/isolation/expected/nowait-5.out
+++ b/src/test/isolation/expected/nowait-5.out
@@ -35,3 +35,4 @@ pg_advisory_unlock
 t              
 step sl1_exec: <... completed>
 error in steps upd_releaselock sl1_exec: ERROR:  could not obtain lock on row in relation "test_nowait"
+sl1: ERROR:  current transaction failed, rolling back
diff --git a/src/test/isolation/expected/nowait.out b/src/test/isolation/expected/nowait.out
index a6343b4afa..a1516b7ba3 100644
--- a/src/test/isolation/expected/nowait.out
+++ b/src/test/isolation/expected/nowait.out
@@ -20,6 +20,7 @@ id             data
 step s2a: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
 step s1b: COMMIT;
+s2: ERROR:  current transaction failed, rolling back
 step s2b: COMMIT;
 
 starting permutation: s1a s2a s2b s1b
@@ -29,6 +30,7 @@ id             data
 1              x              
 step s2a: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
+s2: ERROR:  current transaction failed, rolling back
 step s2b: COMMIT;
 step s1b: COMMIT;
 
@@ -39,6 +41,7 @@ id             data
 1              x              
 step s1a: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
+s1: ERROR:  current transaction failed, rolling back
 step s1b: COMMIT;
 step s2b: COMMIT;
 
@@ -50,6 +53,7 @@ id             data
 step s1a: SELECT * FROM foo FOR UPDATE NOWAIT;
 ERROR:  could not obtain lock on row in relation "foo"
 step s2b: COMMIT;
+s1: ERROR:  current transaction failed, rolling back
 step s1b: COMMIT;
 
 starting permutation: s2a s2b s1a s1b
diff --git a/src/test/isolation/expected/partial-index.out b/src/test/isolation/expected/partial-index.out
index d1f00c9b3c..8caacb9871 100644
--- a/src/test/isolation/expected/partial-index.out
+++ b/src/test/isolation/expected/partial-index.out
@@ -52,6 +52,7 @@ step wy2: update test_t set val2 = 2 where val2 = 1 and id = 9;
 step c1: COMMIT;
 step rxy2: select * from test_t where val2 = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rxy1 wx1 wy2 rxy2 c1 c2
@@ -142,6 +143,7 @@ step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10;
 step c1: COMMIT;
 step rxy2: select * from test_t where val2 = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rxy1 wy2 wx1 rxy2 c1 c2
@@ -312,6 +314,7 @@ id             val1           val2
 step c2: COMMIT;
 step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 rxy1 wx1 c1 rxy2 c2
@@ -334,6 +337,7 @@ step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10;
 step c1: COMMIT;
 step rxy2: select * from test_t where val2 = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wy2 rxy1 wx1 rxy2 c1 c2
@@ -504,6 +508,7 @@ id             val1           val2
 step c2: COMMIT;
 step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 rxy2 rxy1 wx1 c1 c2
@@ -606,6 +611,7 @@ id             val1           val2
 step c2: COMMIT;
 step wx1: update test_t set val2 = 2 where val2 = 1 and id = 10;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 rxy2 c2 rxy1 wx1 c1
diff --git a/src/test/isolation/expected/partition-concurrent-attach.out b/src/test/isolation/expected/partition-concurrent-attach.out
index 17fac39989..dae7c7c75e 100644
--- a/src/test/isolation/expected/partition-concurrent-attach.out
+++ b/src/test/isolation/expected/partition-concurrent-attach.out
@@ -8,6 +8,7 @@ step s2i: insert into tpart values (110,'xxx'), (120, 'yyy'), (150, 'zzz'); <wai
 step s1c: commit;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  new row for relation "tpart_default" violates partition constraint
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 step s2s: select tableoid::regclass, * from tpart;
 tableoid       i              j              
@@ -24,6 +25,7 @@ step s2i2: insert into tpart_default (i, j) values (110, 'xxx'), (120, 'yyy'), (
 step s1c: commit;
 step s2i2: <... completed>
 error in steps s1c s2i2: ERROR:  new row for relation "tpart_default" violates partition constraint
+s2: ERROR:  current transaction failed, rolling back
 step s2c: commit;
 step s2s: select tableoid::regclass, * from tpart;
 tableoid       i              j              
@@ -40,6 +42,7 @@ step s1a: alter table tpart attach partition tpart_2 for values from (100) to (2
 step s2c: commit;
 step s1a: <... completed>
 error in steps s2c s1a: ERROR:  updated partition constraint for default partition "tpart_default_default" would be violated by some row
+s1: ERROR:  current transaction failed, rolling back
 step s1c: commit;
 step s2s: select tableoid::regclass, * from tpart;
 tableoid       i              j              
diff --git a/src/test/isolation/expected/partition-key-update-1.out b/src/test/isolation/expected/partition-key-update-1.out
index c1a9c56ae4..a047aafa67 100644
--- a/src/test/isolation/expected/partition-key-update-1.out
+++ b/src/test/isolation/expected/partition-key-update-1.out
@@ -16,6 +16,7 @@ step s2d: DELETE FROM foo WHERE a=1; <waiting ...>
 step s1c: COMMIT;
 step s2d: <... completed>
 error in steps s1c s2d: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s1u s2u s1c s2c
@@ -26,6 +27,7 @@ step s2u: UPDATE foo SET b='EFG' WHERE a=1; <waiting ...>
 step s1c: COMMIT;
 step s2u: <... completed>
 error in steps s1c s2u: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s2d s1u s2c s1c
@@ -53,6 +55,7 @@ step s2u2: UPDATE footrg SET b='XYZ' WHERE a=1; <waiting ...>
 step s1c: COMMIT;
 step s2u2: <... completed>
 error in steps s1c s2u2: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s2u2 s1u2 s2c s1c
@@ -63,6 +66,7 @@ step s1u2: UPDATE footrg SET b='EFG' WHERE a=1; <waiting ...>
 step s2c: COMMIT;
 step s1u2: <... completed>
 error in steps s2c s1u2: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s1: ERROR:  current transaction failed, rolling back
 step s1c: COMMIT;
 
 starting permutation: s1b s2b s1u3pc s2i s1c s2c
@@ -73,6 +77,7 @@ step s2i: INSERT INTO bar VALUES(7); <waiting ...>
 step s1c: COMMIT;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s1u3pc s2i s1r s2c
@@ -93,6 +98,7 @@ step s2i: INSERT INTO bar VALUES(7); <waiting ...>
 step s1c: COMMIT;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s1u3npc s1u3pc s2i s1r s2c
@@ -115,6 +121,7 @@ step s2i: INSERT INTO bar VALUES(7); <waiting ...>
 step s1c: COMMIT;
 step s2i: <... completed>
 error in steps s1c s2i: ERROR:  tuple to be locked was already moved to another partition due to concurrent update
+s2: ERROR:  current transaction failed, rolling back
 step s2c: COMMIT;
 
 starting permutation: s1b s2b s1u3npc s1u3pc s1u3pc s2i s1r s2c
diff --git a/src/test/isolation/expected/partition-key-update-3.out b/src/test/isolation/expected/partition-key-update-3.out
index 42dfe64ad3..681d013a46 100644
--- a/src/test/isolation/expected/partition-key-update-3.out
+++ b/src/test/isolation/expected/partition-key-update-3.out
@@ -24,6 +24,7 @@ step s3donothing: INSERT INTO foo VALUES(2, 'session-3 donothing'), (2, 'session
 step s1c: COMMIT;
 step s3donothing: <... completed>
 error in steps s1c s3donothing: ERROR:  could not serialize access due to concurrent update
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2donothing: INSERT INTO foo VALUES(1, 'session-2 donothing') ON CONFLICT DO NOTHING;
 step s2c: COMMIT;
@@ -44,6 +45,7 @@ step s2donothing: <... completed>
 step s3donothing: <... completed>
 error in steps s1c s2donothing s3donothing: ERROR:  could not serialize access due to concurrent update
 step s2c: COMMIT;
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2select: SELECT * FROM foo ORDER BY a;
 a              b              
@@ -61,6 +63,7 @@ step s1c: COMMIT;
 step s3donothing: <... completed>
 step s2donothing: <... completed>
 error in steps s1c s3donothing s2donothing: ERROR:  could not serialize access due to concurrent update
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2c: COMMIT;
 step s2select: SELECT * FROM foo ORDER BY a;
@@ -93,6 +96,7 @@ step s3donothing: INSERT INTO foo VALUES(2, 'session-3 donothing'), (2, 'session
 step s1c: COMMIT;
 step s3donothing: <... completed>
 error in steps s1c s3donothing: ERROR:  could not serialize access due to concurrent update
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2donothing: INSERT INTO foo VALUES(1, 'session-2 donothing') ON CONFLICT DO NOTHING;
 step s2c: COMMIT;
@@ -113,6 +117,7 @@ step s2donothing: <... completed>
 step s3donothing: <... completed>
 error in steps s1c s2donothing s3donothing: ERROR:  could not serialize access due to concurrent update
 step s2c: COMMIT;
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2select: SELECT * FROM foo ORDER BY a;
 a              b              
@@ -130,6 +135,7 @@ step s1c: COMMIT;
 step s3donothing: <... completed>
 step s2donothing: <... completed>
 error in steps s1c s3donothing s2donothing: ERROR:  could not serialize access due to concurrent update
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 step s2c: COMMIT;
 step s2select: SELECT * FROM foo ORDER BY a;
diff --git a/src/test/isolation/expected/predicate-gin.out b/src/test/isolation/expected/predicate-gin.out
index 77eb5aaff7..c18305caf2 100644
--- a/src/test/isolation/expected/predicate-gin.out
+++ b/src/test/isolation/expected/predicate-gin.out
@@ -13,6 +13,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wa2: insert into gin_tbl values (array[1]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 ra1 wo1 c1 wa2 c2
@@ -28,6 +29,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wa2: insert into gin_tbl values (array[1]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 ra1 wo1 wa2 c1 c2
@@ -73,6 +75,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wb2: insert into gin_tbl values (array[2]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rb1 wo1 c1 wb2 c2
@@ -88,6 +91,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wb2: insert into gin_tbl values (array[2]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rb1 wo1 wb2 c1 c2
@@ -133,6 +137,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wc2: insert into gin_tbl values (array[800]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rc1 wo1 c1 wc2 c2
@@ -148,6 +153,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wc2: insert into gin_tbl values (array[800]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rc1 wo1 wc2 c1 c2
@@ -362,6 +368,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wa2: insert into gin_tbl values (array[1]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: fu ra1 ro2 wo1 c1 wb2 c2
@@ -378,6 +385,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wb2: insert into gin_tbl values (array[2]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ra1 ro2 wo1 c1 fu wa2 c2
@@ -394,6 +402,7 @@ step c1: commit;
 step fu: alter index ginidx set (fastupdate = on);
 step wa2: insert into gin_tbl values (array[1]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rd1 ro2 wo1 c1 wd2 c2
@@ -409,6 +418,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wd2: insert into gin_tbl values (array[2000]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rd1 wo1 c1 wd2 c2
@@ -424,6 +434,7 @@ step wo1: insert into other_tbl values (1);
 step c1: commit;
 step wd2: insert into gin_tbl values (array[2000]);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: ro2 rd1 wo1 wd2 c1 c2
diff --git a/src/test/isolation/expected/predicate-gist.out b/src/test/isolation/expected/predicate-gist.out
index 77a27958af..c980a06198 100644
--- a/src/test/isolation/expected/predicate-gist.out
+++ b/src/test/isolation/expected/predicate-gist.out
@@ -79,6 +79,7 @@ step c1: commit;
 step wy2: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(1, 5) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy1 wx1 rxy2 wy2 c1 c2
@@ -130,6 +131,7 @@ step c1: commit;
 step wy2: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(1, 5) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy1 rxy2 wx1 wy2 c1 c2
@@ -215,6 +217,7 @@ step c2: commit;
 step wx1: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(15, 20) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy2 rxy1 wx1 c1 wy2 c2
@@ -232,6 +235,7 @@ step c1: commit;
 step wy2: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(1, 5) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy2 rxy1 wx1 wy2 c1 c2
@@ -317,6 +321,7 @@ step c2: commit;
 step wx1: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(15, 20) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy2 wy2 rxy1 wx1 c1 c2
@@ -368,6 +373,7 @@ step c2: commit;
 step wx1: insert into gist_point_tbl (id, p)
 			  select g, point(g*500, g*500) from generate_series(15, 20) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy3 wx3 rxy4 c1 wy4 c2
diff --git a/src/test/isolation/expected/predicate-hash.out b/src/test/isolation/expected/predicate-hash.out
index 53e500fd26..e4d488797a 100644
--- a/src/test/isolation/expected/predicate-hash.out
+++ b/src/test/isolation/expected/predicate-hash.out
@@ -79,6 +79,7 @@ step c1: commit;
 step wy2: insert into hash_tbl (id, p)
 			  select g, 20 from generate_series(51, 60) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy1 wx1 rxy2 wy2 c1 c2
@@ -130,6 +131,7 @@ step c1: commit;
 step wy2: insert into hash_tbl (id, p)
 			  select g, 20 from generate_series(51, 60) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy1 rxy2 wx1 wy2 c1 c2
@@ -215,6 +217,7 @@ step c2: commit;
 step wx1: insert into hash_tbl (id, p)
 			  select g, 30 from generate_series(41, 50) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy2 rxy1 wx1 c1 wy2 c2
@@ -232,6 +235,7 @@ step c1: commit;
 step wy2: insert into hash_tbl (id, p)
 			  select g, 20 from generate_series(51, 60) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: commit;
 
 starting permutation: rxy2 rxy1 wx1 wy2 c1 c2
@@ -317,6 +321,7 @@ step c2: commit;
 step wx1: insert into hash_tbl (id, p)
 			  select g, 30 from generate_series(41, 50) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy2 wy2 rxy1 wx1 c1 c2
@@ -368,6 +373,7 @@ step c2: commit;
 step wx1: insert into hash_tbl (id, p)
 			  select g, 30 from generate_series(41, 50) g;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: commit;
 
 starting permutation: rxy3 wx3 rxy4 c1 wy4 c2
diff --git a/src/test/isolation/expected/project-manager.out b/src/test/isolation/expected/project-manager.out
index f85f5136ec..88edcbcd91 100644
--- a/src/test/isolation/expected/project-manager.out
+++ b/src/test/isolation/expected/project-manager.out
@@ -27,6 +27,7 @@ count
 step c1: COMMIT;
 step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 wy1 ry2 wx2 c1 c2
@@ -72,6 +73,7 @@ step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1);
 step c1: COMMIT;
 step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 ry2 wy1 wx2 c1 c2
@@ -147,6 +149,7 @@ step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1;
 step c2: COMMIT;
 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 rx1 wy1 c1 wx2 c2
@@ -162,6 +165,7 @@ step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1);
 step c1: COMMIT;
 step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: ry2 rx1 wy1 wx2 c1 c2
@@ -237,6 +241,7 @@ step wx2: UPDATE person SET is_project_manager = false WHERE person_id = 1;
 step c2: COMMIT;
 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 rx1 wy1 c1 c2
@@ -282,6 +287,7 @@ count
 step c2: COMMIT;
 step wy1: INSERT INTO project VALUES (101, 'Build Great Wall', 1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 c2 rx1 wy1 c1
diff --git a/src/test/isolation/expected/propagate-lock-delete.out b/src/test/isolation/expected/propagate-lock-delete.out
index b668b895f1..1adfc2dca8 100644
--- a/src/test/isolation/expected/propagate-lock-delete.out
+++ b/src/test/isolation/expected/propagate-lock-delete.out
@@ -12,6 +12,7 @@ step s1c: COMMIT;
 step s2c: COMMIT;
 step s3d: <... completed>
 error in steps s2c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s2b s2l s3b s3u s3svu s3d s1c s2c s3c
@@ -27,6 +28,7 @@ step s1c: COMMIT;
 step s2c: COMMIT;
 step s3d: <... completed>
 error in steps s2c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s2b s2l s3b s3u2 s3d s1c s2c s3c
@@ -41,6 +43,7 @@ step s1c: COMMIT;
 step s2c: COMMIT;
 step s3d: <... completed>
 error in steps s2c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s2b s2l s3b s3u2 s3svu s3d s1c s2c s3c
@@ -56,6 +59,7 @@ step s1c: COMMIT;
 step s2c: COMMIT;
 step s3d: <... completed>
 error in steps s2c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s3b s3u s3d s1c s3c
@@ -67,6 +71,7 @@ step s3d: DELETE FROM parent; <waiting ...>
 step s1c: COMMIT;
 step s3d: <... completed>
 error in steps s1c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s3b s3u s3svu s3d s1c s3c
@@ -79,6 +84,7 @@ step s3d: DELETE FROM parent; <waiting ...>
 step s1c: COMMIT;
 step s3d: <... completed>
 error in steps s1c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s3b s3u2 s3d s1c s3c
@@ -90,6 +96,7 @@ step s3d: DELETE FROM parent; <waiting ...>
 step s1c: COMMIT;
 step s3d: <... completed>
 error in steps s1c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
 
 starting permutation: s1b s1l s3b s3u2 s3svu s3d s1c s3c
@@ -102,4 +109,5 @@ step s3d: DELETE FROM parent; <waiting ...>
 step s1c: COMMIT;
 step s3d: <... completed>
 error in steps s1c s3d: ERROR:  update or delete on table "parent" violates foreign key constraint "child_i_fkey" on table "child"
+s3: ERROR:  current transaction failed, rolling back
 step s3c: COMMIT;
diff --git a/src/test/isolation/expected/read-write-unique-2.out b/src/test/isolation/expected/read-write-unique-2.out
index 5e27f0adfd..d6e10ac0a2 100644
--- a/src/test/isolation/expected/read-write-unique-2.out
+++ b/src/test/isolation/expected/read-write-unique-2.out
@@ -12,6 +12,7 @@ step w2: INSERT INTO test VALUES (42); <waiting ...>
 step c1: COMMIT;
 step w2: <... completed>
 error in steps c1 w2: ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: r1 w1 c1 r2 w2 c2
@@ -26,4 +27,5 @@ i
 42             
 step w2: INSERT INTO test VALUES (42);
 ERROR:  duplicate key value violates unique constraint "test_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
diff --git a/src/test/isolation/expected/read-write-unique-3.out b/src/test/isolation/expected/read-write-unique-3.out
index edd3558930..5a94209d29 100644
--- a/src/test/isolation/expected/read-write-unique-3.out
+++ b/src/test/isolation/expected/read-write-unique-3.out
@@ -9,4 +9,5 @@ step rw2: SELECT insert_unique(1, '2'); <waiting ...>
 step c1: COMMIT;
 step rw2: <... completed>
 error in steps c1 rw2: ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
diff --git a/src/test/isolation/expected/read-write-unique-4.out b/src/test/isolation/expected/read-write-unique-4.out
index 64ff157513..bafa1e3cd1 100644
--- a/src/test/isolation/expected/read-write-unique-4.out
+++ b/src/test/isolation/expected/read-write-unique-4.out
@@ -14,6 +14,7 @@ step w2: INSERT INTO invoice VALUES (2016, 3); <waiting ...>
 step c1: COMMIT;
 step w2: <... completed>
 error in steps c1 w2: ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: r1 w1 w2 c1 c2
@@ -26,6 +27,7 @@ step w2: INSERT INTO invoice VALUES (2016, 3); <waiting ...>
 step c1: COMMIT;
 step w2: <... completed>
 error in steps c1 w2: ERROR:  duplicate key value violates unique constraint "invoice_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: r2 w1 w2 c1 c2
@@ -38,4 +40,5 @@ step w2: INSERT INTO invoice VALUES (2016, 3); <waiting ...>
 step c1: COMMIT;
 step w2: <... completed>
 error in steps c1 w2: ERROR:  duplicate key value violates unique constraint "invoice_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
diff --git a/src/test/isolation/expected/read-write-unique.out b/src/test/isolation/expected/read-write-unique.out
index fb32ec3261..5e81c67809 100644
--- a/src/test/isolation/expected/read-write-unique.out
+++ b/src/test/isolation/expected/read-write-unique.out
@@ -12,6 +12,7 @@ step w2: INSERT INTO test VALUES (42); <waiting ...>
 step c1: COMMIT;
 step w2: <... completed>
 error in steps c1 w2: ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: r1 w1 c1 r2 w2 c2
@@ -26,4 +27,5 @@ i
 42             
 step w2: INSERT INTO test VALUES (42);
 ERROR:  duplicate key value violates unique constraint "test_pkey"
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
diff --git a/src/test/isolation/expected/receipt-report.out b/src/test/isolation/expected/receipt-report.out
index bc68d676a0..e9374b6243 100644
--- a/src/test/isolation/expected/receipt-report.out
+++ b/src/test/isolation/expected/receipt-report.out
@@ -266,6 +266,7 @@ receipt        12-23-2008
 step c1: COMMIT;
 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s3: ERROR:  current transaction failed, rolling back
 step c3: COMMIT;
 
 starting permutation: rxwy1 wx2 c2 rx3 ry3 c1 c3
@@ -1070,6 +1071,7 @@ receipt        12-23-2008
 step c1: COMMIT;
 step ry3: SELECT * FROM receipt WHERE deposit_date = DATE '2008-12-22';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s3: ERROR:  current transaction failed, rolling back
 step c3: COMMIT;
 
 starting permutation: wx2 rxwy1 c2 rx3 ry3 c1 c3
diff --git a/src/test/isolation/expected/referential-integrity.out b/src/test/isolation/expected/referential-integrity.out
index ba42efa39b..cae02ef852 100644
--- a/src/test/isolation/expected/referential-integrity.out
+++ b/src/test/isolation/expected/referential-integrity.out
@@ -34,6 +34,7 @@ a_id
 
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 wy1 rx2 ry2 c1 wx2 c2
@@ -52,6 +53,7 @@ a_id
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 wy1 rx2 ry2 wx2 c1 c2
@@ -106,6 +108,7 @@ a_id
 
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 rx2 wy1 ry2 c1 wx2 c2
@@ -124,6 +127,7 @@ a_id
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 rx2 wy1 ry2 wx2 c1 c2
@@ -178,6 +182,7 @@ step wy1: INSERT INTO b VALUES (1);
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 rx2 ry2 wy1 wx2 c1 c2
@@ -268,6 +273,7 @@ step wx2: DELETE FROM a WHERE i = 1;
 step c2: COMMIT;
 step wy1: INSERT INTO b VALUES (1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: rx2 rx1 wy1 c1 ry2 wx2 c2
@@ -286,6 +292,7 @@ a_id
 
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx2 rx1 wy1 ry2 c1 wx2 c2
@@ -304,6 +311,7 @@ a_id
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx2 rx1 wy1 ry2 wx2 c1 c2
@@ -358,6 +366,7 @@ step wy1: INSERT INTO b VALUES (1);
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx2 rx1 ry2 wy1 wx2 c1 c2
@@ -448,6 +457,7 @@ step wx2: DELETE FROM a WHERE i = 1;
 step c2: COMMIT;
 step wy1: INSERT INTO b VALUES (1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: rx2 ry2 rx1 wy1 c1 wx2 c2
@@ -466,6 +476,7 @@ step wy1: INSERT INTO b VALUES (1);
 step c1: COMMIT;
 step wx2: DELETE FROM a WHERE i = 1;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx2 ry2 rx1 wy1 wx2 c1 c2
@@ -556,6 +567,7 @@ step wx2: DELETE FROM a WHERE i = 1;
 step c2: COMMIT;
 step wy1: INSERT INTO b VALUES (1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: rx2 ry2 wx2 rx1 wy1 c1 c2
@@ -610,6 +622,7 @@ i
 step c2: COMMIT;
 step wy1: INSERT INTO b VALUES (1);
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: rx2 ry2 wx2 c2 rx1 wy1 c1
diff --git a/src/test/isolation/expected/ri-trigger.out b/src/test/isolation/expected/ri-trigger.out
index 88943287aa..79edbd976b 100644
--- a/src/test/isolation/expected/ri-trigger.out
+++ b/src/test/isolation/expected/ri-trigger.out
@@ -9,6 +9,7 @@ bool
 t              
 step wyrx2: DELETE FROM parent WHERE parent_id = 0;
 ERROR:  child row exists
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wxry1 r2 c1 wyrx2 c2
@@ -20,6 +21,7 @@ t
 step c1: COMMIT;
 step wyrx2: DELETE FROM parent WHERE parent_id = 0;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wxry1 r2 wyrx2 c1 c2
@@ -53,6 +55,7 @@ step wxry1: INSERT INTO child (parent_id) VALUES (0);
 step c1: COMMIT;
 step wyrx2: DELETE FROM parent WHERE parent_id = 0;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: r2 wxry1 wyrx2 c1 c2
@@ -108,4 +111,5 @@ step wyrx2: DELETE FROM parent WHERE parent_id = 0;
 step c2: COMMIT;
 step wxry1: INSERT INTO child (parent_id) VALUES (0);
 ERROR:  parent row missing
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
diff --git a/src/test/isolation/expected/temporal-range-integrity.out b/src/test/isolation/expected/temporal-range-integrity.out
index f1b24023a2..2f558138e4 100644
--- a/src/test/isolation/expected/temporal-range-integrity.out
+++ b/src/test/isolation/expected/temporal-range-integrity.out
@@ -27,6 +27,7 @@ count
 step c1: COMMIT;
 step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 wy1 ry2 wx2 c1 c2
@@ -72,6 +73,7 @@ step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15');
 step c1: COMMIT;
 step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: rx1 ry2 wy1 wx2 c1 c2
@@ -147,6 +149,7 @@ step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = D
 step c2: COMMIT;
 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 rx1 wy1 c1 wx2 c2
@@ -162,6 +165,7 @@ step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15');
 step c1: COMMIT;
 step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = DATE '2008-01-01';
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: ry2 rx1 wy1 wx2 c1 c2
@@ -237,6 +241,7 @@ step wx2: DELETE FROM statute WHERE statute_cite = '123.45(1)a' AND eff_date = D
 step c2: COMMIT;
 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 rx1 wy1 c1 c2
@@ -282,6 +287,7 @@ count
 step c2: COMMIT;
 step wy1: INSERT INTO offense VALUES (1, '123.45(1)a', DATE '2009-05-15');
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: ry2 wx2 c2 rx1 wy1 c1
diff --git a/src/test/isolation/expected/total-cash.out b/src/test/isolation/expected/total-cash.out
index 5121edc710..1b770c2aeb 100644
--- a/src/test/isolation/expected/total-cash.out
+++ b/src/test/isolation/expected/total-cash.out
@@ -24,6 +24,7 @@ step wy2: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'savings
 step c1: COMMIT;
 step rxy2: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wx1 rxy1 wy2 rxy2 c1 c2
@@ -66,6 +67,7 @@ sum
 step c1: COMMIT;
 step rxy2: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wx1 wy2 rxy1 rxy2 c1 c2
@@ -138,6 +140,7 @@ sum
 step c2: COMMIT;
 step rxy1: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 wx1 rxy1 c1 rxy2 c2
@@ -150,6 +153,7 @@ sum
 step c1: COMMIT;
 step rxy2: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s2: ERROR:  current transaction failed, rolling back
 step c2: COMMIT;
 
 starting permutation: wy2 wx1 rxy1 rxy2 c1 c2
@@ -222,6 +226,7 @@ sum
 step c2: COMMIT;
 step rxy1: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 rxy2 wx1 rxy1 c1 c2
@@ -264,6 +269,7 @@ step wx1: UPDATE accounts SET balance = balance - 200 WHERE accountid = 'checkin
 step c2: COMMIT;
 step rxy1: SELECT SUM(balance) FROM accounts;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+s1: ERROR:  current transaction failed, rolling back
 step c1: COMMIT;
 
 starting permutation: wy2 rxy2 c2 wx1 rxy1 c1
diff --git a/src/test/isolation/expected/update-conflict-out.out b/src/test/isolation/expected/update-conflict-out.out
index 32be3269b3..307d0f4053 100644
--- a/src/test/isolation/expected/update-conflict-out.out
+++ b/src/test/isolation/expected/update-conflict-out.out
@@ -10,6 +10,7 @@ step foo_commit: COMMIT;
 step trouble_update: UPDATE txn1 SET val = 'add physical version for "bar_select"' WHERE id = 7;
 step bar_select: SELECT * FROM txn1 WHERE id = 7;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+bar: ERROR:  current transaction failed, rolling back
 step bar_commit: COMMIT;
 step trouble_abort: ABORT;
 
@@ -23,5 +24,6 @@ step foo_commit: COMMIT;
 step trouble_delete: DELETE FROM txn1 WHERE id = 7;
 step bar_select: SELECT * FROM txn1 WHERE id = 7;
 ERROR:  could not serialize access due to read/write dependencies among transactions
+bar: ERROR:  current transaction failed, rolling back
 step bar_commit: COMMIT;
 step trouble_abort: ABORT;
diff --git a/src/test/regress/expected/copy2.out b/src/test/regress/expected/copy2.out
index c64f0719e7..244e7403fe 100644
--- a/src/test/regress/expected/copy2.out
+++ b/src/test/regress/expected/copy2.out
@@ -414,6 +414,7 @@ SAVEPOINT s1;
 COPY vistest FROM stdin CSV FREEZE;
 ERROR:  cannot perform COPY FREEZE because the table was not created or truncated in the current subtransaction
 COMMIT;
+ERROR:  current transaction failed, rolling back
 BEGIN;
 INSERT INTO vistest VALUES ('z');
 SAVEPOINT s1;
@@ -422,6 +423,7 @@ ROLLBACK TO SAVEPOINT s1;
 COPY vistest FROM stdin CSV FREEZE;
 ERROR:  cannot perform COPY FREEZE because the table was not created or truncated in the current subtransaction
 COMMIT;
+ERROR:  current transaction failed, rolling back
 CREATE FUNCTION truncate_in_subxact() RETURNS VOID AS
 $$
 BEGIN
diff --git a/src/test/regress/expected/create_index.out b/src/test/regress/expected/create_index.out
index 012c1eb067..45482dd15f 100644
--- a/src/test/regress/expected/create_index.out
+++ b/src/test/regress/expected/create_index.out
@@ -1393,6 +1393,7 @@ BEGIN;
 CREATE INDEX CONCURRENTLY concur_index7 ON concur_heap(f1);
 ERROR:  CREATE INDEX CONCURRENTLY cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- But you can do a regular index build in a transaction
 BEGIN;
 CREATE INDEX std_index on concur_heap(f2);
@@ -1453,6 +1454,7 @@ INSERT INTO concur_temp VALUES (1, 'foo'), (2, 'bar');
 CREATE INDEX CONCURRENTLY concur_temp_ind ON concur_temp(f1);
 ERROR:  CREATE INDEX CONCURRENTLY cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- ON COMMIT DELETE ROWS
 CREATE TEMP TABLE concur_temp (f1 int, f2 text)
   ON COMMIT DELETE ROWS;
@@ -2459,6 +2461,7 @@ BEGIN;
 REINDEX TABLE CONCURRENTLY concur_reindex_tab;
 ERROR:  REINDEX CONCURRENTLY cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 REINDEX TABLE CONCURRENTLY pg_class; -- no catalog relation
 ERROR:  cannot reindex system catalogs concurrently
 REINDEX INDEX CONCURRENTLY pg_class_oid_index; -- no catalog index
@@ -2644,6 +2647,7 @@ BEGIN;
 REINDEX INDEX CONCURRENTLY concur_temp_ind_1;
 ERROR:  REINDEX CONCURRENTLY cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- ON COMMIT DELETE ROWS
 CREATE TEMP TABLE concur_temp_tab_2 (c1 int, c2 text)
   ON COMMIT DELETE ROWS;
@@ -2660,6 +2664,7 @@ CREATE INDEX concur_temp_ind_3 ON concur_temp_tab_3(c2);
 REINDEX INDEX CONCURRENTLY concur_temp_ind_3;
 ERROR:  REINDEX CONCURRENTLY cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- REINDEX SCHEMA processes all temporary relations
 CREATE TABLE reindex_temp_before AS
 SELECT oid, relname, relfilenode, relkind, reltoastrelid
@@ -2739,6 +2744,7 @@ BEGIN;
 REINDEX SCHEMA schema_to_reindex; -- failure, cannot run in a transaction
 ERROR:  REINDEX SCHEMA cannot run inside a transaction block
 END;
+ERROR:  current transaction failed, rolling back
 -- concurrently
 REINDEX SCHEMA CONCURRENTLY schema_to_reindex;
 -- Failure for unauthorized user
diff --git a/src/test/regress/expected/foreign_key.out b/src/test/regress/expected/foreign_key.out
index 07bd5b6434..e6ef96670c 100644
--- a/src/test/regress/expected/foreign_key.out
+++ b/src/test/regress/expected/foreign_key.out
@@ -1052,6 +1052,7 @@ INSERT INTO fktable VALUES (500, 1000);
 ERROR:  insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey"
 DETAIL:  Key (fk)=(1000) is not present in table "pktable".
 COMMIT;
+ERROR:  current transaction failed, rolling back
 DROP TABLE fktable, pktable;
 -- tricky behavior: according to SQL99, if a deferred constraint is set
 -- to 'immediate' mode, it should be checked for validity *immediately*,
@@ -1076,6 +1077,7 @@ DETAIL:  Key (fk)=(2000) is not present in table "pktable".
 INSERT INTO pktable VALUES (2000, 3); -- too late
 ERROR:  current transaction is aborted, commands ignored until end of transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 DROP TABLE fktable, pktable;
 -- deferrable, initially deferred
 CREATE TABLE pktable (
@@ -1231,12 +1233,14 @@ UPDATE pktable SET id = 10 WHERE id = 5;
 ERROR:  update or delete on table "pktable" violates foreign key constraint "fktable_fk_fkey" on table "fktable"
 DETAIL:  Key (id)=(5) is still referenced from table "fktable".
 COMMIT;
+ERROR:  current transaction failed, rolling back
 BEGIN;
 -- doesn't match PK, should throw error now
 INSERT INTO fktable VALUES (0, 20);
 ERROR:  insert or update on table "fktable" violates foreign key constraint "fktable_fk_fkey"
 DETAIL:  Key (fk)=(20) is not present in table "pktable".
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- try additional syntax
 ALTER TABLE fktable ALTER CONSTRAINT fktable_fk_fkey NOT DEFERRABLE;
 -- illegal option
@@ -1489,11 +1493,13 @@ insert into fktable2 values(2);
 alter table fktable2 drop constraint fktable2_f1_fkey;
 ERROR:  cannot ALTER TABLE "fktable2" because it has pending trigger events
 commit;
+ERROR:  current transaction failed, rolling back
 begin;
 delete from pktable2 where f1 = 1;
 alter table fktable2 drop constraint fktable2_f1_fkey;
 ERROR:  cannot ALTER TABLE "pktable2" because it has pending trigger events
 commit;
+ERROR:  current transaction failed, rolling back
 drop table pktable2, fktable2;
 --
 -- Test keys that "look" different but compare as equal
@@ -2440,6 +2446,7 @@ INSERT INTO fkpart8.tbl2 VALUES(1);
 ALTER TABLE fkpart8.tbl2 DROP CONSTRAINT tbl2_f1_fkey;
 ERROR:  cannot ALTER TABLE "tbl2_p1" because it has pending trigger events
 COMMIT;
+ERROR:  current transaction failed, rolling back
 DROP SCHEMA fkpart8 CASCADE;
 NOTICE:  drop cascades to 2 other objects
 DETAIL:  drop cascades to table fkpart8.tbl1
diff --git a/src/test/regress/expected/insert_conflict.out b/src/test/regress/expected/insert_conflict.out
index ff157ceb1c..2aee235534 100644
--- a/src/test/regress/expected/insert_conflict.out
+++ b/src/test/regress/expected/insert_conflict.out
@@ -702,16 +702,19 @@ insert into selfconflict values (4,1), (4,2) on conflict(f1) do update set f2 =
 ERROR:  ON CONFLICT DO UPDATE command cannot affect row a second time
 HINT:  Ensure that no rows proposed for insertion within the same command have duplicate constrained values.
 commit;
+ERROR:  current transaction failed, rolling back
 begin transaction isolation level repeatable read;
 insert into selfconflict values (5,1), (5,2) on conflict(f1) do update set f2 = 0;
 ERROR:  ON CONFLICT DO UPDATE command cannot affect row a second time
 HINT:  Ensure that no rows proposed for insertion within the same command have duplicate constrained values.
 commit;
+ERROR:  current transaction failed, rolling back
 begin transaction isolation level serializable;
 insert into selfconflict values (6,1), (6,2) on conflict(f1) do update set f2 = 0;
 ERROR:  ON CONFLICT DO UPDATE command cannot affect row a second time
 HINT:  Ensure that no rows proposed for insertion within the same command have duplicate constrained values.
 commit;
+ERROR:  current transaction failed, rolling back
 select * from selfconflict;
  f1 | f2 
 ----+----
diff --git a/src/test/regress/expected/portals.out b/src/test/regress/expected/portals.out
index dc0d2ef7dd..6092d6acf7 100644
--- a/src/test/regress/expected/portals.out
+++ b/src/test/regress/expected/portals.out
@@ -715,6 +715,7 @@ FETCH BACKWARD 1 FROM foo24; -- should fail
 ERROR:  cursor can only scan forward
 HINT:  Declare it with SCROLL option to enable backward scan.
 END;
+ERROR:  current transaction failed, rolling back
 --
 -- Cursors outside transaction blocks
 --
diff --git a/src/test/regress/expected/prepared_xacts.out b/src/test/regress/expected/prepared_xacts.out
index eb77c18788..41e6bfd9b3 100644
--- a/src/test/regress/expected/prepared_xacts.out
+++ b/src/test/regress/expected/prepared_xacts.out
@@ -137,6 +137,7 @@ ERROR:  could not serialize access due to read/write dependencies among transact
 DETAIL:  Reason code: Canceled on identification as a pivot, during write.
 HINT:  The transaction might succeed if retried.
 PREPARE TRANSACTION 'foo5';
+ERROR:  current transaction failed, rolling back
 SELECT gid FROM pg_prepared_xacts;
  gid  
 ------
diff --git a/src/test/regress/expected/privileges.out b/src/test/regress/expected/privileges.out
index 3ec22c20ea..fd4ed9d95b 100644
--- a/src/test/regress/expected/privileges.out
+++ b/src/test/regress/expected/privileges.out
@@ -114,6 +114,7 @@ BEGIN;
 LOCK atest2 IN ACCESS EXCLUSIVE MODE; -- fail
 ERROR:  permission denied for table atest2
 COMMIT;
+ERROR:  current transaction failed, rolling back
 COPY atest2 FROM stdin; -- fail
 ERROR:  permission denied for table atest2
 GRANT ALL ON atest1 TO PUBLIC; -- fail
@@ -727,6 +728,7 @@ BEGIN;
 LOCK atestc;
 ERROR:  permission denied for table atestc
 END;
+ERROR:  current transaction failed, rolling back
 -- privileges on functions, languages
 -- switch to superuser
 \c -
diff --git a/src/test/regress/expected/subscription.out b/src/test/regress/expected/subscription.out
index 2fa9bce66a..cc5ac964b9 100644
--- a/src/test/regress/expected/subscription.out
+++ b/src/test/regress/expected/subscription.out
@@ -20,6 +20,7 @@ BEGIN;
 CREATE SUBSCRIPTION regress_testsub CONNECTION 'testconn' PUBLICATION testpub WITH (create_slot);
 ERROR:  CREATE SUBSCRIPTION ... WITH (create_slot = true) cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- fail - invalid connection string
 CREATE SUBSCRIPTION regress_testsub CONNECTION 'testconn' PUBLICATION testpub;
 ERROR:  invalid connection string syntax: missing "=" after "testconn" in connection info string
@@ -146,6 +147,7 @@ BEGIN;
 DROP SUBSCRIPTION regress_testsub;
 ERROR:  DROP SUBSCRIPTION cannot run inside a transaction block
 COMMIT;
+ERROR:  current transaction failed, rolling back
 ALTER SUBSCRIPTION regress_testsub SET (slot_name = NONE);
 -- now it works
 BEGIN;
diff --git a/src/test/regress/expected/transactions.out b/src/test/regress/expected/transactions.out
index 1b03310029..89ca57709b 100644
--- a/src/test/regress/expected/transactions.out
+++ b/src/test/regress/expected/transactions.out
@@ -53,6 +53,7 @@ SELECT * FROM writetest; -- ok
 SET TRANSACTION READ WRITE; --fail
 ERROR:  transaction read-write mode must be set before any query
 COMMIT;
+ERROR:  current transaction failed, rolling back
 BEGIN;
 SET TRANSACTION READ ONLY; -- ok
 SET TRANSACTION READ WRITE; -- ok
@@ -73,6 +74,7 @@ SET TRANSACTION READ ONLY; -- ok
 SET TRANSACTION READ WRITE; --fail
 ERROR:  cannot set transaction read-write mode inside a read-only transaction
 COMMIT;
+ERROR:  current transaction failed, rolling back
 BEGIN;
 SET TRANSACTION READ WRITE; -- ok
 SAVEPOINT x;
@@ -87,6 +89,7 @@ SET TRANSACTION READ ONLY; -- ok
 SET TRANSACTION READ WRITE; --fail
 ERROR:  cannot set transaction read-write mode inside a read-only transaction
 COMMIT;
+ERROR:  current transaction failed, rolling back
 BEGIN;
 SET TRANSACTION READ WRITE; -- ok
 SAVEPOINT x;
@@ -271,6 +274,7 @@ ERROR:  column "trans_foo" does not exist
 LINE 1: SELECT trans_foo;
                ^
 COMMIT;
+ERROR:  current transaction failed, rolling back
 SELECT * FROM savepoints;
  a 
 ---
@@ -456,6 +460,7 @@ ERROR:  portal "c" cannot be run
 	FETCH 10 FROM c;
 ERROR:  portal "c" cannot be run
 COMMIT;
+ERROR:  current transaction failed, rolling back
 --
 -- Check that "stable" functions are really stable.  They should not be
 -- able to see the partial results of the calling query.  (Ideally we would
@@ -586,6 +591,7 @@ rollback to x;
 fetch from foo;
 ERROR:  cursor "foo" does not exist
 commit;
+ERROR:  current transaction failed, rolling back
 begin;
 create table abc (a int);
 insert into abc values (5);
@@ -657,6 +663,7 @@ FETCH ok;  -- should work
 FETCH ctt; -- must be rejected
 ERROR:  portal "ctt" cannot be run
 COMMIT;
+ERROR:  current transaction failed, rolling back
 DROP FUNCTION create_temp_tab();
 DROP FUNCTION invert(x float8);
 -- Tests for AND CHAIN
@@ -710,6 +717,7 @@ LINE 1: INSERT INTO abc VALUES ('error');
 INSERT INTO abc VALUES (3);  -- check it's really aborted
 ERROR:  current transaction is aborted, commands ignored until end of transaction block
 COMMIT AND CHAIN;  -- TBLOCK_ABORT_END
+ERROR:  current transaction failed, rolling back
 SHOW transaction_isolation;
  transaction_isolation 
 -----------------------
@@ -755,6 +763,7 @@ ERROR:  invalid input syntax for type integer: "error"
 LINE 1: INSERT INTO abc VALUES ('error');
                                 ^
 COMMIT AND CHAIN;  -- TBLOCK_ABORT_PENDING
+ERROR:  current transaction failed, rolling back
 SHOW transaction_isolation;
  transaction_isolation 
 -----------------------
diff --git a/src/test/regress/output/constraints.source b/src/test/regress/output/constraints.source
index b727c6150a..d0bcf962a8 100644
--- a/src/test/regress/output/constraints.source
+++ b/src/test/regress/output/constraints.source
@@ -541,6 +541,7 @@ INSERT INTO unique_tbl VALUES (3, 'Three'); -- should fail
 ERROR:  duplicate key value violates unique constraint "unique_tbl_i_key"
 DETAIL:  Key (i)=(3) already exists.
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- forced check when SET CONSTRAINTS is called
 BEGIN;
 SET CONSTRAINTS ALL DEFERRED;
@@ -549,6 +550,7 @@ SET CONSTRAINTS ALL IMMEDIATE; -- should fail
 ERROR:  duplicate key value violates unique constraint "unique_tbl_i_key"
 DETAIL:  Key (i)=(3) already exists.
 COMMIT;
+ERROR:  current transaction failed, rolling back
 -- test deferrable UNIQUE with a partitioned table
 CREATE TABLE parted_uniq_tbl (i int UNIQUE DEFERRABLE) partition by range (i);
 CREATE TABLE parted_uniq_tbl_1 PARTITION OF parted_uniq_tbl FOR VALUES FROM (0) TO (10);
-- 
2.20.1 (Apple Git-117)

