Commit b4d298ac authored by Michael Meskes's avatar Michael Meskes

ECPG's parser now accepts and handles variables as arguments for the FREE command.

Informix allows variables as argument to the embedded SQL command FREE. Given
that we only allow freeing cursors via FREE for compatibility reasons only we
should do the same.
parent 654fff23
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.16 2010/01/29 16:28:13 meskes Exp $ */ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.addons,v 1.17 2010/03/21 11:56:45 meskes Exp $ */
ECPG: stmtClosePortalStmt block ECPG: stmtClosePortalStmt block
{ {
if (INFORMIX_MODE) if (INFORMIX_MODE)
...@@ -106,10 +106,13 @@ ECPG: stmtViewStmt rule ...@@ -106,10 +106,13 @@ ECPG: stmtViewStmt rule
| ECPGFree | ECPGFree
{ {
const char *con = connection ? connection : "NULL"; const char *con = connection ? connection : "NULL";
if (strcmp($1, "all"))
fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1); if (!strcmp($1, "all"))
else
fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con); fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
else if ($1[0] == ':')
fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1);
else
fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1);
whenever_action(2); whenever_action(2);
free($1); free($1);
......
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.22 2010/03/20 18:53:00 meskes Exp $ */ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/ecpg.trailer,v 1.23 2010/03/21 11:56:45 meskes Exp $ */
statements: /*EMPTY*/ statements: /*EMPTY*/
| statements statement | statements statement
...@@ -966,7 +966,7 @@ execstring: char_variable ...@@ -966,7 +966,7 @@ execstring: char_variable
* the exec sql free command to deallocate a previously * the exec sql free command to deallocate a previously
* prepared statement * prepared statement
*/ */
ECPGFree: SQL_FREE name { $$ = $2; } ECPGFree: SQL_FREE cursor_name { $$ = $2; }
| SQL_FREE ALL { $$ = make_str("all"); } | SQL_FREE ALL { $$ = make_str("all"); }
; ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment