From: Michael Meskes Date: Wed, 20 Aug 2008 14:07:16 +0000 (+0000) Subject: Fixed incorrect argument handling in SET command if argument is a variable. X-Git-Tag: REL8_3_4~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=393dc9bde237edc21591c14c6c90271397c946de;p=postgresql Fixed incorrect argument handling in SET command if argument is a variable. --- diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index aa7413e2bf..2943581676 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -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 */ %{ @@ -1243,7 +1243,16 @@ iso_level: READ UNCOMMITTED { $$ = make_str("read uncommitted"); } ; 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; } ; @@ -2358,7 +2367,7 @@ fetch_direction: NEXT { $$ = make_str("next"); } fetch_count: IntConst { 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"); free($1); }