diff options
author | unknown <msvensson@neptunus.(none)> | 2006-06-09 19:35:54 +0200 |
---|---|---|
committer | unknown <msvensson@neptunus.(none)> | 2006-06-09 19:35:54 +0200 |
commit | f067dfe1c6298985d2c1831c52d9910f233bc5da (patch) | |
tree | b1300cd60bda26bcc40739b2f17fcceb8059cf88 /mysql-test/t/user_var.test | |
parent | 889e60dae8397f673212b1911e7a776ad512588a (diff) | |
download | mariadb-git-f067dfe1c6298985d2c1831c52d9910f233bc5da.tar.gz |
Bug #7498 User variable SET saves SIGNED BIGINT as UNSIGNED BIGINT
- Add unsigned flag to user_var_entry, used when 'type' is INT_RESULT
- Propagate unsigned flag from the query executed by Item_single_row_subselect
mysql-test/r/user_var.result:
Update test results
mysql-test/t/user_var.test:
Add test case
sql/item_func.cc:
Add unsigned_flag to user_var_entry. Used when 'type' is INT_RESULT
Pass unsigned_flag to 'update_hash' if type is INT_RESULT
sql/item_func.h:
Removed unused variable save_buff
Add parameter unsigned_arg to 'update_hash'
sql/item_subselect.cc:
Propagate unsigned_flag to Item_singlerow_subselect from the items in the select to the cached items.
sql/sql_class.h:
Add unsigned_flag to user_var_entry. Used when 'type' is INT_RESULT
Diffstat (limited to 'mysql-test/t/user_var.test')
-rw-r--r-- | mysql-test/t/user_var.test | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mysql-test/t/user_var.test b/mysql-test/t/user_var.test index e1b23a1782f..58c52b59a5a 100644 --- a/mysql-test/t/user_var.test +++ b/mysql-test/t/user_var.test @@ -171,3 +171,34 @@ set @first_var= cast(NULL as CHAR); create table t1 select @first_var; show create table t1; drop table t1; + +# +# Bug #7498 User variable SET saves SIGNED BIGINT as UNSIGNED BIGINT +# + +# First part, set user var to large number and select it +set @a=18446744071710965857; +select @a; + +# Second part, set user var from large number in table +# then select it +CREATE TABLE `bigfailure` ( + `afield` BIGINT UNSIGNED NOT NULL +); +INSERT INTO `bigfailure` VALUES (18446744071710965857); +SELECT * FROM bigfailure; +select * from (SELECT afield FROM bigfailure) as b; +select * from bigfailure where afield = (SELECT afield FROM bigfailure); +select * from bigfailure where afield = 18446744071710965857; +# This is fixed in 5.0, to be uncommented there +#select * from bigfailure where afield = '18446744071710965857'; +select * from bigfailure where afield = 18446744071710965856+1; + +SET @a := (SELECT afield FROM bigfailure); +SELECT @a; +SET @a := (select afield from (SELECT afield FROM bigfailure) as b); +SELECT @a; +SET @a := (select * from bigfailure where afield = (SELECT afield FROM bigfailure)); +SELECT @a; + +drop table bigfailure; |