Fixed incorrect argument handling in SET command if argument is a variable.

This commit is contained in:
Michael Meskes 2008-08-20 14:07:16 +00:00
parent 1852a73c7a
commit 393dc9bde2

View File

@ -1,4 +1,4 @@
/* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.359.2.4 2008/06/04 12:26:14 meskes Exp $ */ /* $PostgreSQL: pgsql/src/interfaces/ecpg/preproc/preproc.y,v 1.359.2.5 2008/08/20 14:07:16 meskes Exp $ */
/* Copyright comment */ /* Copyright comment */
%{ %{
@ -1243,7 +1243,16 @@ iso_level: READ UNCOMMITTED { $$ = make_str("read uncommitted"); }
; ;
var_value: opt_boolean { $$ = $1; } var_value: opt_boolean { $$ = $1; }
| AllConst { $$ = $1; } | AllConst { /* we have to check for a variable here because it has to be
replaced with its value on the client side */
if ($1[1] == '$')
{
$$ = make_str("$0");
free($1);
}
else
$$ = $1;
}
| ColId { $$ = $1; } | ColId { $$ = $1; }
; ;
@ -2358,7 +2367,7 @@ fetch_direction: NEXT { $$ = make_str("next"); }
fetch_count: IntConst { fetch_count: IntConst {
if ($1[1] == '$') if ($1[1] == '$')
{ {
/* a variable here has to be replaced on the client side, thus we have to use '?' here */ /* a variable here has to be replaced on the client side, thus we have to use '$0' here */
$$ = make_str("$0"); $$ = make_str("$0");
free($1); free($1);
} }