Fixed incorrect argument handling in SET command if argument is a variable.
This commit is contained in:
parent
1852a73c7a
commit
393dc9bde2
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user