Обсуждение: BUG #6309: ECPG pre-processor issue

Поиск
Список
Период
Сортировка

BUG #6309: ECPG pre-processor issue

От
"Andrew Milne"
Дата:
The following bug has been logged online:

Bug reference:      6309
Logged by:          Andrew Milne
Email address:      Andrew.Milne@iongeo.com
PostgreSQL version: 8.4.9
Operating system:   Red Hat Enterprise Linux Workstation release 6.1
(Santiago)
Description:        ECPG pre-processor issue
Details:

NOTE: While I've not tested on 9.1 I can see the same code exists in that
release and as such the error will most likely still occur.  Unfortunately I
can't upgrade from 8.4.9 due to project wide considerations.

The ECPG pre-processor seems to be incorrectly reporting an error when
parsing "EXEC SQL AT :cnx DEALLOCATE..." style commands.

For example:

===============================================
EXEC SQL AT :cnx DEALLOCATE thestatementname;
===============================================

results in the pre-processor outputting an error:

===============================================
src.pcpp:1000: ERROR: AT option not allowed in DEALLOCATE statement
===============================================

However if you examine the generated src.cpp file it appears to have
correctly generated code that uses the connection:

===============================================
{ ECPGdeallocate(__LINE__, 0, cnx, "thestatementname");
===============================================

And examining the source code for ECPGdeallocate it correctly handles the
supplied connection.

Examining the pre-processor (preproc.y) seems to show this error has no
impact on the actual processing of the file and is probably just a holdover
from earlier versions of ECPG.

The project I'm working on has multiple ECPG connections open and we need to
be able to prepare and deallocate to the correct connection.  Our intention
is to simply ignore the preprocessor error at this time but it would be good
to:

1. Get some confirmation that this is safe to do
2. If someone with a decent knowledge of postgress could actually look into
fixing the issue it would be appreciated (my understanding is limited and I
wouldn't be confident putting forward a patch myself).

Thanks

A Milne

Re: BUG #6309: ECPG pre-processor issue

От
Michael Meskes
Дата:
On Fri, Nov 25, 2011 at 12:51:51PM +0000, Andrew Milne wrote:
> The ECPG pre-processor seems to be incorrectly reporting an error when
> parsing "EXEC SQL AT :cnx DEALLOCATE..." style commands.

Thanks for bringing this up. These checks seem to be leftovers from the old
code that only emulated prepare statments. I've removed the checks for all
versions starting at 8.4. The next release should be fine for you.

Michael
--=20
Michael Meskes
Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
Michael at BorussiaFan dot De, Meskes at (Debian|Postgresql) dot Org
Jabber: michael.meskes at googlemail dot com
VfL Borussia! For=C3=A7a Bar=C3=A7a! Go SF 49ers! Use Debian GNU/Linux, Pos=
tgreSQL

Re: BUG #6309: ECPG pre-processor issue

От
Andrew Milne
Дата:
That's great.

Thanks for doing this and getting back to us.

Andrew Milne

On 18/12/11 17:50, Michael Meskes wrote:
> On Fri, Nov 25, 2011 at 12:51:51PM +0000, Andrew Milne wrote:
>> The ECPG pre-processor seems to be incorrectly reporting an error when
>> parsing "EXEC SQL AT :cnx DEALLOCATE..." style commands.
> Thanks for bringing this up. These checks seem to be leftovers from the old
> code that only emulated prepare statments. I've removed the checks for all
> versions starting at 8.4. The next release should be fine for you.
>
> Michael