diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index b5804f64ad46cbb95991dfbfaf572e4ae4bc34b4..ad3a68a79b7ea7596c5790548eaedba9ffe3ec71 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -387,6 +387,9 @@ standard_ProcessUtility(PlannedStmt *pstmt,
 	bool		isAtomicContext = (!(context == PROCESS_UTILITY_TOPLEVEL || context == PROCESS_UTILITY_QUERY_NONATOMIC) || IsTransactionBlock());
 	ParseState *pstate;
 
+	/* This can recurse, so check for excessive recursion */
+	check_stack_depth();
+
 	check_xact_readonly(parsetree);
 
 	if (completionTag)