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-Url: http://waps.l3s.uni-hannover.de/gitweb/?a=commitdiff_plain;h=945f9c91acebed26f8cb1834a6e0827bd9014a91;p=users%2Fbernd%2Fpostgres.git 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 4688b2abcc..1087e7a127 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -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); }