[Commits] bzr commit into Mariadb 5.2, with Maria 2.0:maria/5.2 branch (igor:2833)

Igor Babaev igor at askmonty.org
Tue Jul 27 01:01:36 EEST 2010


#At lp:maria/5.2 based on revid:igor at askmonty.org-20100726173415-tkk3534ie8bzeleb

 2833 Igor Babaev	2010-07-26 [merge]
      Merge
      modified:
        mysql-test/suite/vcol/r/vcol_misc.result
        mysql-test/suite/vcol/t/vcol_misc.test
        sql/item_func.cc

=== modified file 'mysql-test/suite/vcol/r/vcol_misc.result'
--- a/mysql-test/suite/vcol/r/vcol_misc.result	2010-07-21 18:10:12 +0000
+++ b/mysql-test/suite/vcol/r/vcol_misc.result	2010-07-26 22:00:56 +0000
@@ -105,3 +105,23 @@ t2	CREATE TABLE `t2` (
   `v1` int(11) DEFAULT NULL
 ) ENGINE=MyISAM DEFAULT CHARSET=latin1
 DROP TABLE t1,t2;
+CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL);
+INSERT INTO t1 VALUES (0,1,0);
+Warnings:
+Warning	1645	The value specified for computed column 'v' in table 't1' ignored
+INSERT INTO t1 VALUES (NULL,0,0);
+Warnings:
+Warning	1645	The value specified for computed column 'v' in table 't1' ignored
+SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+a	p	v	ROUND(a,p)	ROUND(a,p+NULL)
+1	0	1	1	NULL
+0	NULL	NULL	NULL	NULL
+DROP TABLE t1;
+CREATE TABLE t1 (p int, a double NOT NULL);
+INSERT INTO t1(p,a) VALUES (0,1);
+INSERT INTO t1(p,a) VALUES (NULL,0);
+SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+a	p	ROUND(a,p)	ROUND(a,p+NULL)
+1	0	1	NULL
+0	NULL	NULL	NULL
+DROP TABLE t1;

=== modified file 'mysql-test/suite/vcol/t/vcol_misc.test'
--- a/mysql-test/suite/vcol/t/vcol_misc.test	2010-07-21 18:10:12 +0000
+++ b/mysql-test/suite/vcol/t/vcol_misc.test	2010-07-26 22:00:56 +0000
@@ -112,3 +112,19 @@ CREATE TABLE t2 AS SELECT v1 FROM t1;
 SHOW CREATE TABLE t2;
 
 DROP TABLE t1,t2;
+
+#
+# Bug#607177: ROUND function in the expression for a virtual function
+#
+
+CREATE TABLE t1 (p int, a double NOT NULL, v double AS (ROUND(a,p)) VIRTUAL);
+INSERT INTO t1 VALUES (0,1,0);
+INSERT INTO t1 VALUES (NULL,0,0);
+SELECT a, p, v, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+DROP TABLE t1;
+
+CREATE TABLE t1 (p int, a double NOT NULL);
+INSERT INTO t1(p,a) VALUES (0,1);
+INSERT INTO t1(p,a) VALUES (NULL,0);
+SELECT a, p, ROUND(a,p), ROUND(a,p+NULL) FROM t1;
+DROP TABLE t1;

=== modified file 'sql/item_func.cc'
--- a/sql/item_func.cc	2010-06-01 19:52:20 +0000
+++ b/sql/item_func.cc	2010-07-21 04:59:47 +0000
@@ -2040,10 +2040,12 @@ double Item_func_round::real_op()
 {
   double value= args[0]->val_real();
 
-  if (!(null_value= args[0]->null_value || args[1]->null_value))
-    return my_double_round(value, args[1]->val_int(), args[1]->unsigned_flag,
-                           truncate);
-
+  if (!(null_value= args[0]->null_value))
+  {
+    longlong dec= args[1]->val_int();
+    if (!(null_value= args[1]->null_value))
+      return my_double_round(value, dec, args[1]->unsigned_flag, truncate);
+  }
   return 0.0;
 }
 



More information about the commits mailing list