Re: ECPG patchset - Mailing list pgsql-hackers

From Boszormenyi Zoltan
Subject Re: ECPG patchset
Date
Msg-id 4AA62B89.2020706@cybertec.at
Whole thread Raw
In response to Re: ECPG patchset  (Boszormenyi Zoltan <zb@cybertec.at>)
Responses Re: ECPG patchset
List pgsql-hackers
New patch, typo fix in pgc.l.

According to our customer who is porting their application
to PostgreSQL, this causes an error currently in ECPG:

========================================

1. within included structures the use of "$else;" is causing an
   precompiler error (tested several times in different programs)
/home/progs/fors_neu/share/include/bwltrec.h:124: ERROR: syntax error at
or near ";"

Example:

mainprog.ec:
EXEC SQL BEGIN DECLARE SECTION;
EXEC SQL INCLUDE share/include/bwltrec.h;      /* record bwlt      */
EXEC SQL END DECLARE SECTION;

bwltrec.h:
   struct record_type_bwlt
   {  int    firmnr;             /* Firmennummer              (2,0)  */
      int    liwerk;             /* Werk - Lieferant          (2,0)  */
...
$ifdef FORS3;
      string besktr[7];           /* Kostentraeger                 */
$else;
      string besktr[13];          /* Kostentraeger                 */
$endif;
   } bwlt;

========================================

It looks to me that "EXEC SQL else;" is expected in the native
syntax, but "$else" (without ";" at the end of the line) is expected
in compat mode. Considering that the ";" seems to be expected
by esql, this must be a typo in ecpg/preproc/pgc.l

Best regards,
Zoltán Böszörményi

--
Bible has answers for everything. Proof:
"But let your communication be, Yea, yea; Nay, nay: for whatsoever is more
than these cometh of evil." (Matthew 5:37) - basics of digital technology.
"May your kingdom come" - superficial description of plate tectonics

----------------------------------
Zoltán Böszörményi
Cybertec Schönig & Schönig GmbH
http://www.postgresql.at/

diff -dcrpN pgsql.locktimeout/src/interfaces/ecpg/preproc/pgc.l pgsql.ifdef/src/interfaces/ecpg/preproc/pgc.l
*** pgsql.locktimeout/src/interfaces/ecpg/preproc/pgc.l    2009-09-03 13:57:48.000000000 +0200
--- pgsql.ifdef/src/interfaces/ecpg/preproc/pgc.l    2009-09-08 11:47:05.000000000 +0200
*************** cppline            {space}*#(.*\\{space})*.*{newl
*** 1000,1006 ****
                              BEGIN(xskip);
                      }
                  }
! <C,xskip>{informix_special}{else}{space}*    {
                      /* are we simulating Informix? */
                      if (INFORMIX_MODE)
                      {
--- 1000,1006 ----
                              BEGIN(xskip);
                      }
                  }
! <C,xskip>{informix_special}{else}{space}*";"    {
                      /* are we simulating Informix? */
                      if (INFORMIX_MODE)
                      {

pgsql-hackers by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: More Snow Leopard fun: multiarch problems while building plperl
Next
From: Jan Otto
Date:
Subject: Re: More Snow Leopard fun: multiarch problems while building plperl