diff --git a/src/backend/parser/analyze.c b/src/backend/parser/analyze.c index efc11a29d63..8d5e6dfea21 100644 --- a/src/backend/parser/analyze.c +++ b/src/backend/parser/analyze.c @@ -26,6 +26,7 @@ #include "access/sysattr.h" #include "catalog/pg_type.h" +#include "miscadmin.h" #include "nodes/makefuncs.h" #include "nodes/nodeFuncs.h" #include "optimizer/var.h" @@ -1380,6 +1381,9 @@ transformSetOperationTree(ParseState *pstate, SelectStmt *stmt, Assert(stmt && IsA(stmt, SelectStmt)); + /* Guard against stack overflow due to overly complex set-expressions */ + check_stack_depth(); + /* * Validity-check both leaf and internal SELECTs for disallowed ops. */