MySQL Lists are EOL. Please join:

List:Internals« Previous MessageNext Message »
From:holyfoot Date:November 1 2005 12:14pm
Subject:bk commit into 5.0 tree (hf:1.1961) BUG#14445
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of hf. When hf does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet
  1.1961 05/11/01 16:14:26 hf@deer.(none) +3 -0
  Additional fix for bug #14445 (analyse.test fails)

  sql/sql_analyse.cc
    1.65 05/11/01 16:14:13 hf@deer.(none) +14 -3
    rounding added

  mysql-test/t/disabled.def
    1.10 05/11/01 16:14:13 hf@deer.(none) +1 -0
    user_var disabled

  mysql-test/r/analyse.result
    1.25 05/11/01 16:14:13 hf@deer.(none) +3 -3
    test result fixed

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	hf
# Host:	deer.(none)
# Root:	/home/hf/work/mysql-5.0.clean

--- 1.64/sql/sql_analyse.cc	Tue Nov  1 13:08:06 2005
+++ 1.65/sql/sql_analyse.cc	Tue Nov  1 16:14:13 2005
@@ -466,7 +466,9 @@
 
 void field_decimal::add()
 {
+  /*TODO - remove rounding stuff after decimal_div returns proper frac */
   my_decimal dec_buf, *dec= item->val_decimal(&dec_buf);
+  my_decimal rounded;
   uint length;
   TREE_ELEMENT *element;
 
@@ -476,6 +478,9 @@
     return;
   }
 
+  my_decimal_round(E_DEC_FATAL_ERROR, dec, item->decimals, FALSE,&rounded);
+  dec= &rounded;
+
   length= my_decimal_string_length(dec);
 
   if (decimal_is_zero(dec))
@@ -1021,10 +1026,16 @@
     s->set((double) 0.0, 1,my_thd_charset);
     return s;
   }
-  my_decimal num, avg_val;
+  my_decimal num, avg_val, rounded_avg;
+  int prec_increment= current_thd->variables.div_precincrement;
+
   int2my_decimal(E_DEC_FATAL_ERROR, rows - nulls, FALSE, &num);
-  my_decimal_div(E_DEC_FATAL_ERROR, &avg_val, sum+cur_sum, &num, 0);
-  my_decimal2string(E_DEC_FATAL_ERROR, &avg_val, 0, 0, '0', s);
+  my_decimal_div(E_DEC_FATAL_ERROR, &avg_val, sum+cur_sum, &num, prec_increment);
+  /* TODO remove this after decimal_div returns proper frac */
+  my_decimal_round(E_DEC_FATAL_ERROR, &avg_val,
+                   min(sum[cur_sum].frac + prec_increment, DECIMAL_MAX_SCALE),
+                   FALSE,&rounded_avg);
+  my_decimal2string(E_DEC_FATAL_ERROR, &rounded_avg, 0, 0, '0', s);
   return s;
 }
 

--- 1.9/mysql-test/t/disabled.def	Fri Oct 28 23:31:40 2005
+++ 1.10/mysql-test/t/disabled.def	Tue Nov  1 16:14:13 2005
@@ -16,3 +16,4 @@
 rpl_deadlock    : Unstable test case, bug#12429
 kill            : Unstable test case, bug#9712
 archive_gis     : The test fails on 32bit Linux
+user_var        : Ramil should fix this soon

--- 1.24/mysql-test/r/analyse.result	Tue Nov  1 13:08:06 2005
+++ 1.25/mysql-test/r/analyse.result	Tue Nov  1 16:14:13 2005
@@ -107,7 +107,7 @@
 insert into t1 values(2.2);
 select * from t1 procedure analyse();
 Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
-test.t1.df	1.1	2.2	8	8	0	0	1.650000000	0.55000	ENUM('1.1','2.2') NOT NULL
+test.t1.df	1.1	2.2	13	13	0	0	1.65000	0.55000	ENUM('1.1','2.2') NOT NULL
 drop table t1;
 create table t1 (d double);
 insert into t1 values (100000);
@@ -138,6 +138,6 @@
 select product, sum(profit),avg(profit) from t1 group by product with rollup procedure analyse();
 Field_name	Min_value	Max_value	Min_length	Max_length	Empties_or_zeros	Nulls	Avg_value_or_avg_length	Std	Optimal_fieldtype
 test.t1.product	Computer	TV	2	8	0	0	4.2500	NULL	ENUM('Computer','Phone','TV') NOT NULL
-sum(profit)	10	6900	11	11	0	0	1946	2867.6719	ENUM('10','275','600','6900') NOT NULL
-avg(profit)	10.000000000	1380.000000000	21	21	0	0	394.687500000	570.20033144	ENUM('10.0000','68.7500','120.0000','1380.0000') NOT NULL
+sum(profit)	10	6900	11	11	0	0	1946.2500	2867.6719	ENUM('10','275','600','6900') NOT NULL
+avg(profit)	10.0000	1380.0000	16	16	0	0	394.68750000	570.20033144	ENUM('10.0000','68.7500','120.0000','1380.0000') NOT NULL
 drop table t1,t2;
Thread
bk commit into 5.0 tree (hf:1.1961) BUG#14445holyfoot1 Nov