I've noticed general buggyness with ecpg on one of my source files for
a while now but it only got really annoying after setting up overnight
build on Linux (output corrupt code), Solaris (output correct code),
AIX (crashed) and HPUX (crashed).
After comparing the output from ecpg on Linux and Solaris the
following type of statement was the root of the crash:
EXEC SQL GRANT ALL ON exampletable TO PUBLIC;
When the parser code was rebuilding the query to pass onto the server
it was trying to include an extra, non-existent, parameter...
The bug is present in 7.1.2, 7.1.3 and the current CVS sources. The
following patch (against CVS version) corrects this bug:
./interfaces/ecpg/preproc/preproc.y
*** ./interfaces/ecpg/preproc/preproc.y.orig Fri Oct 12 16:22:05 2001
--- ./interfaces/ecpg/preproc/preproc.y Fri Oct 12 16:22:09 2001
***************
*** 1693,1699 ****
GrantStmt: GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant
{
! $$ = cat_str(8, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7);
}
;
--- 1693,1699 ----
GrantStmt: GRANT privileges ON opt_table relation_name_list TO grantee_list opt_with_grant
{
! $$ = cat_str(7, make_str("grant"), $2, make_str("on"), $4, $5, make_str("to"), $7);
}
;