3332 Sergey Glukhov 2011-03-28 [merge]
5.5 -> trunk merge
3331 Sergey Glukhov 2011-03-28 [merge]
automerge
=== modified file 'mysql-test/r/func_math.result'
--- a/mysql-test/r/func_math.result 2011-03-18 12:25:56 +0000
+++ b/mysql-test/r/func_math.result 2011-03-28 09:04:13 +0000
@@ -514,6 +514,13 @@ t1 CREATE TABLE `t1` (
`C` varchar(23) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
+#
+# Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR
+#
+CREATE TABLE t1 SELECT CEIL(LINESTRINGFROMWKB(1) DIV NULL);
+DROP TABLE t1;
+CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL);
+DROP TABLE t1;
End of 5.1 tests
#
# Bug #8433: Overflow must be an error
=== modified file 'mysql-test/r/variables.result'
--- a/mysql-test/r/variables.result 2011-03-25 14:35:13 +0000
+++ b/mysql-test/r/variables.result 2011-03-28 09:04:13 +0000
@@ -1535,6 +1535,22 @@ Warning 1292 Truncated incorrect key_cac
select @@max_long_data_size;
@@max_long_data_size
1048576
+#
+# Bug#11766424 59527: DECIMAL_BIN_SIZE: ASSERTION `SCALE >= 0 && PRECISION > 0 && SCALE <= PRE
+#
+CREATE TABLE t1(f1 DECIMAL(1,1) UNSIGNED);
+INSERT INTO t1 VALUES (0.2),(0.1);
+SELECT 1 FROM t1 GROUP BY @a:= (SELECT ROUND(f1) FROM t1 WHERE @a=f1);
+1
+1
+DROP TABLE t1;
+CREATE TABLE t1 AS SELECT @a:= CAST(1 AS UNSIGNED) AS a;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(1) unsigned NOT NULL DEFAULT '0'
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+DROP TABLE t1;
SET @@global.max_binlog_cache_size=DEFAULT;
SET @@global.binlog_cache_size=DEFAULT;
SET @@global.max_join_size=DEFAULT;
=== modified file 'mysql-test/t/func_math.test'
--- a/mysql-test/t/func_math.test 2011-03-18 12:25:56 +0000
+++ b/mysql-test/t/func_math.test 2011-03-28 09:04:13 +0000
@@ -345,6 +345,15 @@ CREATE TABLE t1 SELECT CAST((CASE((''))
SHOW CREATE TABLE t1;
DROP TABLE t1;
+--echo #
+--echo # Bug#11764994 57900: CREATE TABLE .. SELECT ASSERTS SCALE >= 0 && PRECISION > 0 && SCALE <= PR
+--echo #
+
+CREATE TABLE t1 SELECT CEIL(LINESTRINGFROMWKB(1) DIV NULL);
+DROP TABLE t1;
+CREATE TABLE t1 SELECT FLOOR(LINESTRINGFROMWKB(1) DIV NULL);
+DROP TABLE t1;
+
--echo End of 5.1 tests
--echo #
=== modified file 'mysql-test/t/variables.test'
--- a/mysql-test/t/variables.test 2011-03-25 14:35:13 +0000
+++ b/mysql-test/t/variables.test 2011-03-28 09:04:13 +0000
@@ -1273,6 +1273,19 @@ SET @@global.key_cache_block_size=0;
#
select @@max_long_data_size;
+--echo #
+--echo # Bug#11766424 59527: DECIMAL_BIN_SIZE: ASSERTION `SCALE >= 0 && PRECISION > 0 && SCALE <= PRE
+--echo #
+
+CREATE TABLE t1(f1 DECIMAL(1,1) UNSIGNED);
+INSERT INTO t1 VALUES (0.2),(0.1);
+SELECT 1 FROM t1 GROUP BY @a:= (SELECT ROUND(f1) FROM t1 WHERE @a=f1);
+DROP TABLE t1;
+
+CREATE TABLE t1 AS SELECT @a:= CAST(1 AS UNSIGNED) AS a;
+SHOW CREATE TABLE t1;
+DROP TABLE t1;
+
# cleanup
SET @@global.max_binlog_cache_size=DEFAULT;
SET @@global.binlog_cache_size=DEFAULT;
=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc 2011-03-24 08:00:03 +0000
+++ b/sql/item_func.cc 2011-03-28 09:04:13 +0000
@@ -2101,9 +2101,10 @@ void Item_func_integer::fix_length_and_d
void Item_func_int_val::fix_num_length_and_dec()
{
- max_length= args[0]->max_length - (args[0]->decimals ?
- args[0]->decimals + 1 :
- 0) + 2;
+ ulonglong tmp_max_length= (ulonglong ) args[0]->max_length -
+ (args[0]->decimals ? args[0]->decimals + 1 : 0) + 2;
+ max_length= tmp_max_length > (ulonglong) 4294967295U ?
+ (uint32) 4294967295U : (uint32) tmp_max_length;
uint tmp= float_length(decimals);
set_if_smaller(max_length,tmp);
decimals= 0;
@@ -4272,6 +4273,7 @@ Item_func_set_user_var::fix_length_and_d
fix_length_and_charset(args[0]->max_char_length(),
args[0]->collation.collation);
}
+ unsigned_flag= args[0]->unsigned_flag;
}
No bundle (reason: useless for push emails).
| Thread |
|---|
| • bzr push into mysql-trunk branch (sergey.glukhov:3331 to 3332) | Sergey Glukhov | 28 Mar |