Thread: ecpg -D SYMBOL
Hi I'm running postgresql 7.4.1 and ecpg 3.1.0. When defining a symbol on the command line with ecpg -D SYMBOL the ecpg preprocessor will replace that symbol with empty space in 'C' program space rather than limiting it to 'SQL' program space. For example: EXEC SQL IFDEF SYMBOL; EXEC SQL ... EXEC SQL ENDIF; #ifdef SYMBOL ... #endif compiling with ecpg -D SYMBOL results in EXEC SQL IFDEF SYMBOL; EXEC SQL ... EXEC SQL ENDIF; #ifdef ... #endif It shouldn't touch anything outside EXEC SQL. Also, if you try to fool ecpg by compiling with ecpg -D SYMBOL=SYMBOL it will sit in an infinite loop gobbling as much virtual memory as it sees fit. Luke
On Tue, Jul 06, 2004 at 03:49:14PM +1000, Luke McFarlane wrote: > When defining a symbol on the command line with ecpg -D SYMBOL the ecpg > preprocessor will replace that symbol with empty space in 'C' program > space rather than limiting it to 'SQL' program space. This indeed is a bug, but ecpg has never been designed to limit symbols to SQL space. You're absolutely right that it should not use empty space. I just fixed that in CVS. Now it correctly uses "1". > It shouldn't touch anything outside EXEC SQL. Why? That means you have to define most things twice. > Also, if you try to fool ecpg by compiling with ecpg -D SYMBOL=SYMBOL it > will sit in an infinite loop gobbling as much virtual memory as it sees fit. Ah yes, another bug. I just committed a fix for this as well. All fixes went into HEAD and 7.4. 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!
Defining things twice - once in 'SQL' space and once in 'C' space is something I struggled with when using Informix ESQL/C. I like the idea of having it apply to both. Although if you are to support INFORMIX or INFORMIX_SE mode in ecpg you will need limit it to 'SQL' space (for these modes anyway). Michael Meskes wrote: >On Tue, Jul 06, 2004 at 03:49:14PM +1000, Luke McFarlane wrote: > > >>When defining a symbol on the command line with ecpg -D SYMBOL the ecpg >>preprocessor will replace that symbol with empty space in 'C' program >>space rather than limiting it to 'SQL' program space. >> >> > >This indeed is a bug, but ecpg has never been designed to limit symbols >to SQL space. You're absolutely right that it should not use empty >space. I just fixed that in CVS. Now it correctly uses "1". > > > >>It shouldn't touch anything outside EXEC SQL. >> >> > >Why? That means you have to define most things twice. > > > >>Also, if you try to fool ecpg by compiling with ecpg -D SYMBOL=SYMBOL it >>will sit in an infinite loop gobbling as much virtual memory as it sees fit. >> >> > >Ah yes, another bug. > >I just committed a fix for this as well. > >All fixes went into HEAD and 7.4. > >Michael > > >
On Fri, Jul 23, 2004 at 03:49:30PM +1000, Luke McFarlane wrote: > Although if you are to support INFORMIX or INFORMIX_SE mode in ecpg you > will need limit it to 'SQL' space (for these modes anyway). Didn't know that. Thanks for the info. Patch committed to CVS. 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!