summaryrefslogtreecommitdiff
path: root/mysql-test/t/user_var.test
diff options
context:
space:
mode:
authorunknown <msvensson@neptunus.(none)>2006-06-09 19:35:54 +0200
committerunknown <msvensson@neptunus.(none)>2006-06-09 19:35:54 +0200
commitf067dfe1c6298985d2c1831c52d9910f233bc5da (patch)
treeb1300cd60bda26bcc40739b2f17fcceb8059cf88 /mysql-test/t/user_var.test
parent889e60dae8397f673212b1911e7a776ad512588a (diff)
downloadmariadb-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.test31
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;