diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 775477c6cf..ef309c7ff6 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -472,7 +472,7 @@ standard_ProcessUtility(PlannedStmt *pstmt,
 							ListCell   *cell;
 							char	   *name = NULL;
 
-							RequireTransactionChain(isTopLevel, "SAVEPOINT");
+							RequireTransactionChain(!IsTransactionBlock(), "SAVEPOINT");
 
 							foreach(cell, stmt->options)
 							{
@@ -489,12 +489,12 @@ standard_ProcessUtility(PlannedStmt *pstmt,
 						break;
 
 					case TRANS_STMT_RELEASE:
-						RequireTransactionChain(isTopLevel, "RELEASE SAVEPOINT");
+						RequireTransactionChain(!IsTransactionBlock(), "RELEASE SAVEPOINT");
 						ReleaseSavepoint(stmt->options);
 						break;
 
 					case TRANS_STMT_ROLLBACK_TO:
-						RequireTransactionChain(isTopLevel, "ROLLBACK TO SAVEPOINT");
+						RequireTransactionChain(!IsTransactionBlock(), "ROLLBACK TO SAVEPOINT");
 						RollbackToSavepoint(stmt->options);
 
 						/*
