From f1ff0b2ac9b2834d3954b3704866cb97abdc6637 Mon Sep 17 00:00:00 2001
From: "kamura.masashi" <kamura.masashi@jp.fujitsu.com>
Date: Wed, 11 Mar 2026 17:30:40 +0900
Subject: [PATCH] ECPG: Reject multiple headers in GET/SET DESCRIPTOR at
 precompile phase

---
 doc/src/sgml/ecpg.sgml                   |  4 ++--
 src/interfaces/ecpg/preproc/ecpg.trailer | 12 ++----------
 2 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/doc/src/sgml/ecpg.sgml b/doc/src/sgml/ecpg.sgml
index 6203b2518cf..14848903bea 100644
--- a/doc/src/sgml/ecpg.sgml
+++ b/doc/src/sgml/ecpg.sgml
@@ -7312,7 +7312,7 @@ EXEC SQL EXECUTE IMMEDIATE :command;
 
    <refsynopsisdiv>
 <synopsis>
-GET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> <replaceable class="parameter">:cvariable</replaceable> = <replaceable class="parameter">descriptor_header_item</replaceable> [, ... ]
+GET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> <replaceable class="parameter">:cvariable</replaceable> = <replaceable class="parameter">descriptor_header_item</replaceable>
 GET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> VALUE <replaceable class="parameter">column_number</replaceable> <replaceable class="parameter">:cvariable</replaceable> = <replaceable class="parameter">descriptor_item</replaceable> [, ... ]
 </synopsis>
    </refsynopsisdiv>
@@ -7807,7 +7807,7 @@ EXEC SQL SET CONNECTION = con1;
 
    <refsynopsisdiv>
 <synopsis>
-SET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> <replaceable class="parameter">descriptor_header_item</replaceable> = <replaceable>value</replaceable> [, ... ]
+SET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> <replaceable class="parameter">descriptor_header_item</replaceable> = <replaceable>value</replaceable>
 SET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> VALUE <replaceable class="parameter">number</replaceable> <replaceable class="parameter">descriptor_item</replaceable> = <replaceable>value</replaceable> [, ...]
 </synopsis>
    </refsynopsisdiv>
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index e4c13fdd2b6..ed6fa1d3657 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -1421,32 +1421,24 @@ ECPGDeallocateDescr: DEALLOCATE SQL_DESCRIPTOR quoted_ident_stringvar
  * manipulate a descriptor header
  */
 
-ECPGGetDescriptorHeader: SQL_GET SQL_DESCRIPTOR quoted_ident_stringvar ECPGGetDescHeaderItems
+ECPGGetDescriptorHeader: SQL_GET SQL_DESCRIPTOR quoted_ident_stringvar ECPGGetDescHeaderItem
 	{
 		@$ = @3;
 	}
 	;
 
-ECPGGetDescHeaderItems: ECPGGetDescHeaderItem
-	| ECPGGetDescHeaderItems ',' ECPGGetDescHeaderItem
-	;
-
 ECPGGetDescHeaderItem: cvariable '=' desc_header_item
 	{
 		push_assignment(@1, $3);
 	}
 	;
 
-ECPGSetDescriptorHeader: SET SQL_DESCRIPTOR quoted_ident_stringvar ECPGSetDescHeaderItems
+ECPGSetDescriptorHeader: SET SQL_DESCRIPTOR quoted_ident_stringvar ECPGSetDescHeaderItem
 	{
 		@$ = @3;
 	}
 	;
 
-ECPGSetDescHeaderItems: ECPGSetDescHeaderItem
-	| ECPGSetDescHeaderItems ',' ECPGSetDescHeaderItem
-	;
-
 ECPGSetDescHeaderItem: desc_header_item '=' IntConstVar
 	{
 		push_assignment(@3, $1);
-- 
2.43.5

