From a91d664d51c0e702bd878a40457fc8440ebfd0b9 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 18 Sep 2026 11:02:10 -0400 Subject: [PATCH] Use default limitOption in subquery generated for MIN/MAX index scan. We unintentionally copied the original query's limitOption field while building the modified subquery. If it was LIMIT_OPTION_WITH_TIES, that behavior would propagate through to execution, potentially causing a "more than one row returned by a subquery used as an expression" error. Fix by resetting to the default LIMIT_OPTION_COUNT. This bug dates back to the introduction of WITH TIES. Bug: #19694 Reported-by: Chaitanya Choudhary Author: Chaitanya Choudhary Reviewed-by: Tom Lane Discussion: https://postgr.es/m/19694-4e61bd0475398eef@postgresql.org Backpatch-through: 14 --- src/backend/optimizer/plan/planagg.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/backend/optimizer/plan/planagg.c b/src/backend/optimizer/plan/planagg.c index a6090167f5a..b0611129adf 100644 --- a/src/backend/optimizer/plan/planagg.c +++ b/src/backend/optimizer/plan/planagg.c @@ -410,6 +410,7 @@ build_minmax_path(PlannerInfo *root, MinMaxAggInfo *mminfo, sizeof(int64), Int64GetDatum(1), false, FLOAT8PASSBYVAL); + parse->limitOption = LIMIT_OPTION_COUNT; /* * Generate the best paths for this query, telling query_planner that we