Thread: Problem with ecpg
Hello. I have a problem with ecpg precompiler. In a code like: **** main() { .... some calls to EXEC SQL .... printf(" ... % ... \n, var_x); .... } **** ... we omited a " at the printf statement (syntax error). To compile, we do"ecpg code.pgc" and the standart output prints: .... prueba.pgc:19: ERROR: Unterminated quoted identifier prueba.pgc:19: ERROR: Unterminated quoted identifier prueba.pgc:19: ERROR: Unterminated quoted identifier prueba.pgc:19: ERROR: Unterminated quoted identifier prueba.pgc:19: ERROR: Unterminated quoted identifier .... in a loop (stop with ctrl-d). When we compile with Workshop, this output go to a file in the /tmp directory (a very big file). The questions are: It's a bug of ecpg o it's normal? How can I resolve this? Thanks. CG
On Fri, Oct 31, 2003 at 10:26:28AM -0300, Carmen Gloria Sepulveda Dedes wrote: > To compile, we do"ecpg code.pgc" and the standart output prints: > .... > prueba.pgc:19: ERROR: Unterminated quoted identifier > prueba.pgc:19: ERROR: Unterminated quoted identifier > prueba.pgc:19: ERROR: Unterminated quoted identifier > prueba.pgc:19: ERROR: Unterminated quoted identifier > prueba.pgc:19: ERROR: Unterminated quoted identifier > .... Yes, it doesn't make sense to try to keep on parsing when finding an EOF inside a string. :-) I just fixed this in CVS, Version 3.0.0 coming with pgsql 7.4 will no longer run this endless loop. Thanks for reporting this bug. 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!
> Yes, it doesn't make sense to try to keep on parsing when finding an EOF > inside a string. :-) > > I just fixed this in CVS, Version 3.0.0 coming with pgsql 7.4 will no > longer run this endless loop. I have pgsql 7.3.4 and ecpg 2.10.0 Does exists a patch for this version? Thanks. CG
On Fri, Oct 31, 2003 at 11:20:27AM -0300, Carmen Gloria Sepulveda Dedes wrote: > I have pgsql 7.3.4 and ecpg 2.10.0 > > Does exists a patch for this version? No, but it is rather simple. Just search for "Unterminated" in preproc/pgc.l and you'll find some mmerror() calls. In these calls just replace the ET_ERROR with ET_FATAL. That's it. 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!