Pb with ecpg and include file on PG 8.0.0
Hi,
I have a set of libraries and C/C++ programs with embedded access to
a PG database. I'm using ecpg. I'm working on a Linux RedHat9 platform.
Until now I was in PG 7.4.2 :
[clipg@li SrcLib]$ ecpg --version
ecpg (PostgreSQL 7.4.2) 3.1.1
[clipg@li SrcLib]$ g++ --version
g++ (GCC) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
Copyright (C) 2002 Free Software Foundation, Inc.
and without any problem.
I installed PG 8.0.0beta2 :
[clipg@li SrcLib]$ ecpg --version
ecpg (PostgreSQL 8.0.0beta2) 3.2.0
And if I try to recompile I find pre-compiled errors, variables which
are defined in an include file are not "seen".
Is there any known problem or bug about this ?
Detail :
======= Precompiling DbTablesFk.pgc =======
ecpg DbTablesFk.pgc -I/VALE/users/clipg/Server/Include -o DbTablesFk.cc
DbTablesFk.pgc:144: ERROR: trying to access an undeclared cursor MAX_FK
DbTablesFk.pgc:144: ERROR: syntax error at or near "IN"
and in the program :
...
EXEC SQL INCLUDE DbTablesUtilPg.hh;
...
EXEC SQL PREPARE S FROM :sqlstmt;
EXEC SQL DECLARE C_FK_COL CURSOR FOR S;
EXEC SQL OPEN C_FK_COL;
EXEC SQL FETCH MAX_FK IN C_FK_COL INTO :fk_id_L , :valid_L, :target_t_L;
with MAX_FK a variable defined in the file
/VALE/users/clipg/Server/Include/DbTablesUtilPg.hh :
exec sql define MAX_FK 100;
If I replace the MAX_FK variable by its value it's OK.
If I define the MAX_FK variable directly in the program (and not
in an include file) it's OK.
Any idea ? Thanks for all, Valerie.
--
********************************************************************
* Les points de vue exprimes sont strictement personnels et *
* n'engagent pas la responsabilite de METEO-FRANCE. *
********************************************************************
* Valerie SCHNEIDER Tel : +33 (0)5 61 07 81 91 *
* METEO-FRANCE / DSI/DEV Fax : +33 (0)5 61 07 81 09 *
* 42, avenue G. Coriolis Email : Valerie.Schneider@meteo.fr *
* 31057 TOULOUSE Cedex - FRANCE http://www.meteo.fr *
********************************************************************
Valerie Schneider DSI/DEV wrote:
...
EXEC SQL INCLUDE DbTablesUtilPg.hh;
...EXEC SQL PREPARE S FROM :sqlstmt;
EXEC SQL DECLARE C_FK_COL CURSOR FOR S;
EXEC SQL OPEN C_FK_COL;
EXEC SQL FETCH MAX_FK IN C_FK_COL INTO :fk_id_L , :valid_L, :target_t_L;with MAX_FK a variable defined in the file
/VALE/users/clipg/Server/Include/DbTablesUtilPg.hh :
exec sql define MAX_FK 100;
^
I think your problem is the semicolon.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
I received this bug report and will take care of it as soon as I find
time. Since I am travelling next week to give PostgreSQL training, this
will take at least a week or so.
Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
On Fri, Sep 10, 2004 at 08:09:55AM +0000, Valerie Schneider DSI/DEV wrote:
I installed PG 8.0.0beta2 :
[clipg@li SrcLib]$ ecpg --version
ecpg (PostgreSQL 8.0.0beta2) 3.2.0
This works nicely for me with ecpg 3.2.0. It may be that ecpg
does not find the include file. But then it should also print that.
I had the file in "." where ecpg found it and the constant was correctly
translated.
Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
Date: Tue, 14 Sep 2004 09:27:41 +0200
From: Michael Meskes <meskes@postgresql.org>
To: Valerie Schneider DSI/DEV <valerie.schneider@meteo.fr>
Cc: pgsql-bugs@postgresql.org
Subject: Re: [BUGS] Pb with ecpg and include file on PG 8.0.0
Mime-Version: 1.0
Content-Disposition: inline
User-Agent: Mutt/1.5.6+20040722i
X-Provags-ID: kundenserver.de abuse@kundenserver.de
auth:da5cff6069dd6897c77170232368d0ba
On Fri, Sep 10, 2004 at 08:09:55AM +0000, Valerie Schneider DSI/DEV wrote:
I installed PG 8.0.0beta2 :
[clipg@li SrcLib]$ ecpg --version
ecpg (PostgreSQL 8.0.0beta2) 3.2.0This works nicely for me with ecpg 3.2.0. It may be that ecpg
does not find the include file. But then it should also print that.
But why ecpg found it in the 7.4 version ?
Following a remark I removed the semi-colon at the end of each
exec sql define xxxxxx
(I had : exec sql define xxxxxx ; )
in the include file. No result.
Someone from the pgsql-fr-generale list seems to have the same problem.
Thanks for your reply, Valerie.
I had the file in "." where ecpg found it and the constant was correctly
translated.Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!
********************************************************************
* Les points de vue exprimes sont strictement personnels et *
* n'engagent pas la responsabilite de METEO-FRANCE. *
********************************************************************
* Valerie SCHNEIDER Tel : +33 (0)5 61 07 81 91 *
* METEO-FRANCE / DSI/DEV Fax : +33 (0)5 61 07 81 09 *
* 42, avenue G. Coriolis Email : Valerie.Schneider@meteo.fr *
* 31057 TOULOUSE Cedex - FRANCE http://www.meteo.fr *
********************************************************************
Import Notes
Resolved by subject fallback
On Tue, Sep 14, 2004 at 08:35:52AM +0000, Valerie Schneider DSI/DEV wrote:
But why ecpg found it in the 7.4 version ?
I'm not even sure this is the reason. Could you please try moving the
file to "." to see if it works?
Michael
--
Michael Meskes
Email: Michael at Fam-Meskes dot De
ICQ: 179140304, AIM/Yahoo: michaelmeskes, Jabber: meskes@jabber.org
Go SF 49ers! Go Rhein Fire! Use Debian GNU/Linux! Use PostgreSQL!