Thread: Pb with ecpg and include file on PG 8.0.0

Pb with ecpg and include file on PG 8.0.0

From
Valerie Schneider DSI/DEV
Date:
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        *
********************************************************************

Re: Pb with ecpg and include file on PG 8.0.0

From
Bruce Momjian
Date:
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

Re: Pb with ecpg and include file on PG 8.0.0

From
Michael Meskes
Date:
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!

Re: Pb with ecpg and include file on PG 8.0.0

From
Michael Meskes
Date:
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!

Re: Pb with ecpg and include file on PG 8.0.0

From
Michael Meskes
Date:
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!

Re: Pb with ecpg and include file on PG 8.0.0

From
Valerie Schneider DSI/DEV
Date:
>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.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.

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        *
********************************************************************