Commit 772843ba authored by unknown's avatar unknown

Bug #3131 mysqltest fails on $2=$1 assignment in test


client/mysqltest.c:
  Fix function var_copy to make it possible to assign one variable to another. 
  ex: let $1=$2
mysql-test/r/mysqltest.result:
  Update test result
mysql-test/t/mysqltest.test:
  Add test cases for variable to variable assignment
parent 50cc21ea
...@@ -1147,16 +1147,24 @@ int var_query_set(VAR* v, const char *p, const char** p_end) ...@@ -1147,16 +1147,24 @@ int var_query_set(VAR* v, const char *p, const char** p_end)
return 0; return 0;
} }
void var_copy(VAR* dest, VAR* src) void var_copy(VAR *dest, VAR *src)
{ {
dest->int_val=src->int_val; dest->int_val= src->int_val;
dest->int_dirty=src->int_dirty; dest->int_dirty= src->int_dirty;
/* Alloc/realloc data for str_val in dest */
if (dest->alloced_len < src->alloced_len && if (dest->alloced_len < src->alloced_len &&
!(dest->str_val=my_realloc(dest->str_val,src->alloced_len+1, !(dest->str_val= dest->str_val
MYF(MY_WME)))) ? my_realloc(dest->str_val, src->alloced_len, MYF(MY_WME))
: my_malloc(src->alloced_len, MYF(MY_WME))))
die("Out of memory"); die("Out of memory");
dest->str_val_len=src->str_val_len; else
memcpy(dest->str_val,src->str_val,src->str_val_len+1); dest->alloced_len= src->alloced_len;
/* Copy str_val data to dest */
dest->str_val_len= src->str_val_len;
if (src->str_val_len)
memcpy(dest->str_val, src->str_val, src->str_val_len);
} }
int eval_expr(VAR* v, const char *p, const char** p_end) int eval_expr(VAR* v, const char *p, const char** p_end)
......
...@@ -206,6 +206,13 @@ source database ...@@ -206,6 +206,13 @@ source database
hej hej
hej hej
hej hej
1
a long variable content
a long variable content
a long $where variable content
mysqltest: At line 1: Missing arguments to let mysqltest: At line 1: Missing arguments to let
mysqltest: At line 1: Missing variable name in let mysqltest: At line 1: Missing variable name in let
mysqltest: At line 1: Variable name in hi=hi does not start with '$' mysqltest: At line 1: Variable name in hi=hi does not start with '$'
......
...@@ -473,6 +473,26 @@ echo $1; ...@@ -473,6 +473,26 @@ echo $1;
let $1 = hej; let $1 = hej;
echo $1; echo $1;
let $1=1;
let $2=$1;
echo $2;
let $5=$6;
echo $5;
echo $6;
let $where=a long variable content;
echo $where;
let $where2= $where;
echo $where2;
let $where3=a long $where variable content;
echo $where3;
let $novar1= $novar2;
echo $novar1;
# Test illegal uses of let # Test illegal uses of let
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment