summaryrefslogtreecommitdiff
path: root/client/mysqltest.c
diff options
context:
space:
mode:
Diffstat (limited to 'client/mysqltest.c')
-rw-r--r--client/mysqltest.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 27104282dd4..f9c4ae617fd 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1784,8 +1784,12 @@ int do_save_master_pos()
int do_let(struct st_query *query)
{
+ int ret;
char *p= query->first_argument;
- char *var_name, *var_name_end, *var_val_start;
+ char *var_name, *var_name_end;
+ DYNAMIC_STRING let_rhs_expr;
+
+ init_dynamic_string(&let_rhs_expr, "", 512, 2048);
/* Find <var_name> */
if (!*p)
@@ -1805,10 +1809,16 @@ int do_let(struct st_query *query)
/* Find start of <var_val> */
while (*p && my_isspace(charset_info,*p))
p++;
- var_val_start= p;
+
+ do_eval(&let_rhs_expr, p, FALSE);
+
query->last_argument= query->end;
/* Assign var_val to var_name */
- return var_set(var_name, var_name_end, var_val_start, query->end);
+ ret= var_set(var_name, var_name_end, let_rhs_expr.str,
+ (let_rhs_expr.str + let_rhs_expr.length));
+ dynstr_free(&let_rhs_expr);
+
+ return(ret);
}