diff options
author | unknown <msvensson@neptunus.(none)> | 2005-09-01 10:53:33 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2005-09-01 10:53:33 +0200 |
commit | 772843ba41a7a10aaaed6d37a7544907be38d443 (patch) | |
tree | c9c4d317c11fe2b6421a62743b37e517715ad912 | |
parent | 50cc21ea3e5f4ebcd3f9185c5f64746d5b0b7a98 (diff) | |
download | mariadb-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.c | 22 | ||||
-rw-r--r-- | mysql-test/r/mysqltest.result | 7 | ||||
-rw-r--r-- | mysql-test/t/mysqltest.test | 20 |
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 |