Problem with ecpg

Started by Carmen Gloria Sepulveda Dedesover 22 years ago4 messagesgeneral
Jump to latest
#1Carmen Gloria Sepulveda Dedes
csepulveda@atichile.com

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

#2Michael Meskes
meskes@postgresql.org
In reply to: Carmen Gloria Sepulveda Dedes (#1)
Re: Problem with ecpg

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!

#3Carmen Gloria Sepulveda Dedes
csepulveda@atichile.com
In reply to: Carmen Gloria Sepulveda Dedes (#1)
Re: Problem with ecpg

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

#4Michael Meskes
meskes@postgresql.org
In reply to: Carmen Gloria Sepulveda Dedes (#3)
Re: Problem with ecpg

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!