#At file:///home/hf/work/mysql_common/51mrg/
2710 Alexey Botchkov 2008-11-17 [merge]
merging
modified:
mysql-test/r/type_newdecimal.result
mysql-test/t/type_newdecimal.test
sql/item_func.cc
=== modified file 'mysql-test/r/type_newdecimal.result'
--- a/mysql-test/r/type_newdecimal.result 2008-08-15 19:49:43 +0000
+++ b/mysql-test/r/type_newdecimal.result 2008-11-17 15:43:10 +0000
@@ -1534,6 +1534,21 @@ select (1.20396873 * 0.89550000 * 0.6800
(1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
1.01500000 * 1.01500000 * 0.99500000)
0.812988073953673124592306939480
+create table t1 as select 5.05 / 0.014;
+Warnings:
+Note 1265 Data truncated for column '5.05 / 0.014' at row 1
+show warnings;
+Level Code Message
+Note 1265 Data truncated for column '5.05 / 0.014' at row 1
+show create table t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `5.05 / 0.014` decimal(10,6) default NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1
+select * from t1;
+5.05 / 0.014
+360.714286
+DROP TABLE t1;
End of 5.0 tests
select cast(143.481 as decimal(4,1));
cast(143.481 as decimal(4,1))
=== modified file 'mysql-test/t/type_newdecimal.test'
--- a/mysql-test/t/type_newdecimal.test 2008-08-15 19:49:43 +0000
+++ b/mysql-test/t/type_newdecimal.test 2008-11-17 15:43:10 +0000
@@ -1235,6 +1235,16 @@ DROP TABLE t1;
select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 *
1.01500000 * 1.01500000 * 0.99500000);
+#
+# Bug #31616 div_precision_increment description looks wrong
+#
+
+create table t1 as select 5.05 / 0.014;
+show warnings;
+show create table t1;
+select * from t1;
+DROP TABLE t1;
+
--echo End of 5.0 tests
#
=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc 2008-10-10 09:52:23 +0000
+++ b/sql/item_func.cc 2008-11-17 15:43:10 +0000
@@ -1301,8 +1301,10 @@ my_decimal *Item_func_div::decimal_op(my
void Item_func_div::result_precision()
{
- uint arg_prec= args[0]->decimal_precision() + prec_increment;
- uint precision=min(arg_prec, DECIMAL_MAX_PRECISION);
+ uint precision=min(args[0]->decimal_precision() +
+ args[1]->decimals + prec_increment,
+ DECIMAL_MAX_PRECISION);
+
/* Integer operations keep unsigned_flag if one of arguments is unsigned */
if (result_type() == INT_RESULT)
unsigned_flag= args[0]->unsigned_flag | args[1]->unsigned_flag;
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (holyfoot:2710) | Alexey Botchkov | 17 Nov |