diff --git a/src/backend/executor/execSRF.c b/src/backend/executor/execSRF.c
index 138e86ac67..9d257d4d88 100644
--- a/src/backend/executor/execSRF.c
+++ b/src/backend/executor/execSRF.c
@@ -117,6 +117,9 @@ ExecMakeTableFunctionResult(SetExprState *setexpr,
 	MemoryContext oldcontext;
 	bool		first_time = true;
 
+	/* Guard against stack overflow due to overly nested functions call */
+	check_stack_depth();
+
 	callerContext = CurrentMemoryContext;
 
 	funcrettype = exprType((Node *) setexpr->expr);
