summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2005-09-01 10:53:33 +0200
committerunknown <msvensson@neptunus.(none)>2005-09-01 10:53:33 +0200
commit772843ba41a7a10aaaed6d37a7544907be38d443 (patch)
treec9c4d317c11fe2b6421a62743b37e517715ad912
parent50cc21ea3e5f4ebcd3f9185c5f64746d5b0b7a98 (diff)
downloadmariadb-git-772843ba41a7a10aaaed6d37a7544907be38d443.tar.gz
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
-rw-r--r--client/mysqltest.c22
-rw-r--r--mysql-test/r/mysqltest.result7
-rw-r--r--mysql-test/t/mysqltest.test20
3 files changed, 42 insertions, 7 deletions
diff --git a/client/mysqltest.c b/client/mysqltest.c
index 3b13084081e..6c7d51c393d 100644
--- a/client/mysqltest.c
+++ b/client/mysqltest.c
@@ -1147,16 +1147,24 @@ int var_query_set(VAR* v, const char *p, const char** p_end)
return 0;
}
-void var_copy(VAR* dest, VAR* src)
+void var_copy(VAR *dest, VAR *src)
{
- dest->int_val=src->int_val;
- dest->int_dirty=src->int_dirty;
+ dest->int_val= src->int_val;
+ dest->int_dirty= src->int_dirty;
+
+ /* Alloc/realloc data for str_val in dest */
if (dest->alloced_len < src->alloced_len &&
- !(dest->str_val=my_realloc(dest->str_val,src->alloced_len+1,
- MYF(MY_WME))))
+ !(dest->str_val= dest->str_val
+ ? my_realloc(dest->str_val, src->alloced_len, MYF(MY_WME))
+ : my_malloc(src->alloced_len, MYF(MY_WME))))
die("Out of memory");
- dest->str_val_len=src->str_val_len;
- memcpy(dest->str_val,src->str_val,src->str_val_len+1);
+ else
+ 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)
diff --git a/mysql-test/r/mysqltest.result b/mysql-test/r/mysqltest.result
index 36dc09b9e24..80c54f589da 100644
--- a/mysql-test/r/mysqltest.result
+++ b/mysql-test/r/mysqltest.result
@@ -206,6 +206,13 @@ source database
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 variable name in let
mysqltest: At line 1: Variable name in hi=hi does not start with '$'
diff --git a/mysql-test/t/mysqltest.test b/mysql-test/t/mysqltest.test
index c1ebbb7fb3b..e58f07d7a4a 100644
--- a/mysql-test/t/mysqltest.test
+++ b/mysql-test/t/mysqltest.test
@@ -473,6 +473,26 @@ echo $1;
let $1 = hej;
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