Avoid assertion failure if a setop leaf query contains setops. 94131cd53c1552efe85c3e8120356c22cd658163

m3hm3t/pg18_dev_relation_oid_0
Mehmet Yilmaz 2025-05-30 08:44:29 +00:00
parent d0aeed28ed
commit 0280fd7272
1 changed files with 8 additions and 3 deletions

View File

@ -2812,13 +2812,18 @@ get_setop_query(Node *setOp, Query *query, deparse_context *context)
Query *subquery = rte->subquery; Query *subquery = rte->subquery;
Assert(subquery != NULL); Assert(subquery != NULL);
Assert(subquery->setOperations == NULL); /*
/* Need parens if WITH, ORDER BY, FOR UPDATE, or LIMIT; see gram.y */ * We need parens if WITH, ORDER BY, FOR UPDATE, or LIMIT; see gram.y.
* Also add parens if the leaf query contains its own set operations.
* (That shouldn't happen unless one of the other clauses is also
* present, see transformSetOperationTree; but let's be safe.)
*/
need_paren = (subquery->cteList || need_paren = (subquery->cteList ||
subquery->sortClause || subquery->sortClause ||
subquery->rowMarks || subquery->rowMarks ||
subquery->limitOffset || subquery->limitOffset ||
subquery->limitCount); subquery->limitCount ||
subquery->setOperations);
if (need_paren) if (need_paren)
appendStringInfoChar(buf, '('); appendStringInfoChar(buf, '(');
get_query_def(subquery, buf, context->namespaces, get_query_def(subquery, buf, context->namespaces,