too-much-nesting.patch.nocfbot
application/octet-stream
Filename: too-much-nesting.patch.nocfbot
Type: application/octet-stream
Part: 0
Message:
Re: pg_plan_advice
commit 6b2affcc0cf4f7badb47892037e392fe12288995
Author: Robert Haas <rhaas@postgresql.org>
Date: Mon Jan 19 13:53:19 2026 -0500
generic_sublist should contain a simple_target_list, not a generic_target_list
diff --git a/contrib/pg_plan_advice/expected/syntax.out b/contrib/pg_plan_advice/expected/syntax.out
index cc760d5574a..3a943a8c608 100644
--- a/contrib/pg_plan_advice/expected/syntax.out
+++ b/contrib/pg_plan_advice/expected/syntax.out
@@ -111,6 +111,12 @@ DETAIL: Could not parse advice: syntax error at or near "("
SET pg_plan_advice.advice = '123';
ERROR: invalid value for parameter "pg_plan_advice.advice": "123"
DETAIL: Could not parse advice: syntax error at or near "123"
+SET pg_plan_advice.advice = 'SEQ_SCAN((x))';
+ERROR: invalid value for parameter "pg_plan_advice.advice": "SEQ_SCAN((x))"
+DETAIL: Could not parse advice: syntax error at or near "("
+SET pg_plan_advice.advice = 'GATHER(((x)))';
+ERROR: invalid value for parameter "pg_plan_advice.advice": "GATHER(((x)))"
+DETAIL: Could not parse advice: syntax error at or near "("
-- Legal comments.
SET pg_plan_advice.advice = '/**/';
EXPLAIN SELECT 1;
diff --git a/contrib/pg_plan_advice/pgpa_parser.y b/contrib/pg_plan_advice/pgpa_parser.y
index 6197d1773c9..bf33724de02 100644
--- a/contrib/pg_plan_advice/pgpa_parser.y
+++ b/contrib/pg_plan_advice/pgpa_parser.y
@@ -262,7 +262,7 @@ generic_target_list: generic_target_list relation_identifier
{ $$ = NIL; }
;
-generic_sublist: '(' generic_target_list ')'
+generic_sublist: '(' simple_target_list ')'
{
$$ = palloc0_object(pgpa_advice_target);
$$->ttype = PGPA_TARGET_ORDERED_LIST;
diff --git a/contrib/pg_plan_advice/sql/syntax.sql b/contrib/pg_plan_advice/sql/syntax.sql
index 429f4679819..195ed694ee9 100644
--- a/contrib/pg_plan_advice/sql/syntax.sql
+++ b/contrib/pg_plan_advice/sql/syntax.sql
@@ -35,6 +35,8 @@ SET pg_plan_advice.advice = 'SEQ_SCAN("a"';
SET pg_plan_advice.advice = 'SEQ_SCAN(#';
SET pg_plan_advice.advice = '()';
SET pg_plan_advice.advice = '123';
+SET pg_plan_advice.advice = 'SEQ_SCAN((x))';
+SET pg_plan_advice.advice = 'GATHER(((x)))';
-- Legal comments.
SET pg_plan_advice.advice = '/**/';