mirror of
https://github.com/postgres/postgres.git
synced 2026-06-09 00:32:10 -04:00
ecpg: Reject multiple header items in GET/SET DESCRIPTOR
Previously, ecpg accepted multiple descriptor header items in GET DESCRIPTOR and SET DESCRIPTOR, but generated broken C code when they were used. Although the grammar allowed this syntax, the implementation did not actually support it. This commit tightens the ecpg grammar so the header form of GET/SET DESCRIPTOR accepts only a single header item, matching the implementation and preventing generation of broken C code. Also update the documentation synopsis accordingly. Backpatch to all supported versions. Author: Masashi Kamura <kamura.masashi@fujitsu.com> Reviewed-by: Hayato Kuroda <kuroda.hayato@fujitsu.com> Reviewed-by: Lakshmi G <lakshmigcdac@gmail.com> Reviewed-by: Fujii Masao <masao.fujii@gmail.com> Discussion: https://postgr.es/m/OS9PR01MB13174AD7D1829D0644B6BB90E9447A@OS9PR01MB13174.jpnprd01.prod.outlook.com Backpatch-through: 14
This commit is contained in:
parent
022ba5c614
commit
bfeddcf09b
2 changed files with 5 additions and 13 deletions
|
|
@ -7274,7 +7274,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>
|
||||
|
|
@ -7293,7 +7293,7 @@ GET DESCRIPTOR <replaceable class="parameter">descriptor_name</replaceable> VALU
|
|||
|
||||
<para>
|
||||
This command has two forms: The first form retrieves
|
||||
descriptor <quote>header</quote> items, which apply to the result
|
||||
descriptor <quote>header</quote> item, which applies to the result
|
||||
set in its entirety. One example is the row count. The second
|
||||
form, which requires the column number as additional parameter,
|
||||
retrieves information about a particular column. Examples are
|
||||
|
|
@ -7769,7 +7769,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>
|
||||
|
|
|
|||
|
|
@ -1178,27 +1178,19 @@ 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);
|
||||
|
|
|
|||
Loading…
Reference in a new issue