List:Commits« Previous MessageNext Message »
From:msvensson Date:January 31 2006 3:26pm
Subject:bk commit into 5.0 tree (msvensson:1.2019)
View as plain text  
Below is the list of changes that have just been committed into a local
5.0 repository of msvensson. When msvensson 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.2019 06/01/31 16:26:27 msvensson@neptunus.(none) +5 -0
  Use common function 'append_field' to output the value of one field to the result.
  Fix for extra zero in exponent of double values on windows.

  mysql-test/t/variables.test
    1.52 06/01/31 16:26:20 msvensson@neptunus.(none) +0 -1
    Remove the "replace_result" for extra zero in  exponent

  mysql-test/t/type_float.test
    1.28 06/01/31 16:26:20 msvensson@neptunus.(none) +0 -3
    Remove the "replace_result" for extra zero in  exponent

  mysql-test/t/insert.test
    1.21 06/01/31 16:26:20 msvensson@neptunus.(none) +0 -9
    Remove the "replace_result" for extra zero in  exponent

  mysql-test/r/type_float.result
    1.43 06/01/31 16:26:20 msvensson@neptunus.(none) +2 -2
    One zero too much was removed( I think )

  client/mysqltest.c
    1.197 06/01/31 16:26:20 msvensson@neptunus.(none) +74 -90
    Write new function 'append_field' which takes care of appending one field to the dynamic string.
    Use function 'append_field' from both ps and normal execution
    Add hack to 'append_field' that removes the extra '0' in exponent for double values on Windows.

# 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:	msvensson
# Host:	neptunus.(none)
# Root:	/home/msvensson/mysql/mysqltest_float_result/my50-mysqltest_float_result

--- 1.42/mysql-test/r/type_float.result	2005-10-11 13:38:16 +02:00
+++ 1.43/mysql-test/r/type_float.result	2006-01-31 16:26:20 +01:00
@@ -31,14 +31,14 @@
 f1	f2
 10	10
 100000	100000
-1.23457e+9	1234567890
+1.23457e+09	1234567890
 1e+10	10000000000
 1e+15	1e+15
 1e+20	1e+20
 3.40282e+38	1e+50
 3.40282e+38	1e+150
 -10	-10
-1e-5	1e-5
+1e-05	1e-05
 1e-10	1e-10
 1e-15	1e-15
 1e-20	1e-20

--- 1.20/mysql-test/t/insert.test	2005-07-28 16:09:48 +02:00
+++ 1.21/mysql-test/t/insert.test	2006-01-31 16:26:20 +01:00
@@ -99,27 +99,22 @@
 
 set @value= "aa";
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= "1aa";
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= "aa1";
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= "1e+1111111111a";
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= "-1e+1111111111a";
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 --error 1367
@@ -130,22 +125,18 @@
 
 set @value= 1e+111;
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= -1e+111;
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= 1;
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 set @value= -1;
 insert into t1 values(null,@value,@value,@value,@value,@value,@value,@value,@value,@value);
---replace_result e-0 e- e+0 e+
 --query_vertical select * from t1 where number =last_insert_id()
 
 drop table t1;

--- 1.27/mysql-test/t/type_float.test	2005-10-11 11:43:51 +02:00
+++ 1.28/mysql-test/t/type_float.test	2006-01-31 16:26:20 +01:00
@@ -6,9 +6,7 @@
 drop table if exists t1,t2;
 --enable_warnings
 
---replace_result e-0 e- e+0 e+
 SELECT 10,10.0,10.,.1e+2,100.0e-1;
---replace_result e-00 e-0 
 SELECT 6e-05, -6e-05, --6e-05, -6e-05+1.000000;
 SELECT 1e1,1.e1,1.0e1,1e+1,1.e+1,1.0e+1,1e-1,1.e-1,1.0e-1;
 SELECT 0.001e+1,0.001e-1, -0.001e+01,-0.001e-01;
@@ -21,7 +19,6 @@
 show full columns from t1;
 insert into t1 values(10,10),(1e+5,1e+5),(1234567890,1234567890),(1e+10,1e+10),(1e+15,1e+15),(1e+20,1e+20),(1e+50,1e+50),(1e+150,1e+150);
 insert into t1 values(-10,-10),(1e-5,1e-5),(1e-10,1e-10),(1e-15,1e-15),(1e-20,1e-20),(1e-50,1e-50),(1e-150,1e-150);
---replace_result e-0 e- e+0 e+
 select * from t1;
 drop table t1;
 

--- 1.51/mysql-test/t/variables.test	2005-11-23 00:11:06 +01:00
+++ 1.52/mysql-test/t/variables.test	2006-01-31 16:26:20 +01:00
@@ -20,7 +20,6 @@
 set @select=2,@t5=1.23456;
 select @`select`,@not_used;
 set @test_int=10,@test_double=1e-10,@test_string="abcdeghi",@test_string2="abcdefghij",@select=NULL;
---replace_result e-0 e- e+0 e+
 select @test_int,@test_double,@test_string,@test_string2,@select;
 set @test_int="hello",@test_double="hello",@test_string="hello",@test_string2="hello";
 select @test_int,@test_double,@test_string,@test_string2;

--- 1.196/client/mysqltest.c	2006-01-11 11:10:53 +01:00
+++ 1.197/client/mysqltest.c	2006-01-31 16:26:20 +01:00
@@ -3040,6 +3040,58 @@
 
 
 /*
+  Append the result for one field to the dynamic string ds
+*/
+
+static void append_field(DYNAMIC_STRING *ds, uint col_idx, MYSQL_FIELD* field,
+			 const char* val, ulonglong len, bool is_null)
+{
+
+  char buf[256];
+  if (col_idx < max_replace_column && replace_column[col_idx])
+  {
+    val= replace_column[col_idx];
+    len= strlen(val);
+  }
+  else if (is_null)
+  {
+    val= "NULL";
+    len= 4;
+  }
+#ifdef __WIN__
+  else if (field->type == MYSQL_TYPE_DOUBLE &&
+	   field->decimals >= 31)
+  {
+    /* Convert 1.2e+018 to 1.2e+18 and 1.2e-018 to 1.2e-18 */
+    char *start= strchr(val, 'e');
+    if (start && strlen(start) >= 5 &&
+	(start[1] == '-' || start[1] == '+') && start[2] == '0')
+    {
+      start+=2; /* Now points at first '0' */
+      /* Move all chars after the first '0' one step left */
+      memmove(start, start + 1, strlen(start));
+      len--;
+    }
+  }
+#endif
+
+  if (!display_result_vertically)
+  {
+    if (col_idx)
+      dynstr_append_mem(ds, "\t", 1);
+    replace_dynstr_append_mem(ds, val, (int)len);
+  }
+  else
+  {
+    dynstr_append(ds, field->name);
+    dynstr_append_mem(ds, "\t", 1);
+    replace_dynstr_append_mem(ds, val, (int)len);
+    dynstr_append_mem(ds, "\n", 1);
+  }
+}
+
+
+/*
   Append all results to the dynamic string separated with '\t'
   Values may be converted with 'replace_column'
 */
@@ -3048,41 +3100,16 @@
 {
   MYSQL_ROW row;
   uint num_fields= mysql_num_fields(res);
-  MYSQL_FIELD *fields= !display_result_vertically ? 0 : mysql_fetch_fields(res);
+  MYSQL_FIELD *fields= mysql_fetch_fields(res);
   ulong *lengths;
+
   while ((row = mysql_fetch_row(res)))
   {
     uint i;
     lengths = mysql_fetch_lengths(res);
     for (i = 0; i < num_fields; i++)
-    {
-      const char *val= row[i];
-      ulonglong len= lengths[i];
-
-      if (i < max_replace_column && replace_column[i])
-      {
-	val= replace_column[i];
-	len= strlen(val);
-      }
-      if (!val)
-      {
-	val= "NULL";
-	len= 4;
-      }
-      if (!display_result_vertically)
-      {
-	if (i)
-	  dynstr_append_mem(ds, "\t", 1);
-	replace_dynstr_append_mem(ds, val, (int)len);
-      }
-      else
-      {
-	dynstr_append(ds, fields[i].name);
-	dynstr_append_mem(ds, "\t", 1);
-	replace_dynstr_append_mem(ds, val, (int)len);
-	dynstr_append_mem(ds, "\n", 1);
-      }
-    }
+      append_field(ds, i, &fields[i],
+		   (const char*)row[i], lengths[i], !row[i]);
     if (!display_result_vertically)
       dynstr_append_mem(ds, "\n", 1);
   }
@@ -3096,13 +3123,12 @@
 */
 
 static void append_stmt_result(DYNAMIC_STRING *ds, MYSQL_STMT *stmt,
-			       MYSQL_FIELD *field, uint num_fields)
+			       MYSQL_FIELD *fields, uint num_fields)
 {
   MYSQL_BIND *bind;
   my_bool *is_null;
   ulong *length;
-  ulonglong num_rows;
-  uint col_idx, row_idx;
+  uint i;
 
   /* Allocate array with bind structs, lengths and NULL flags */
   bind= (MYSQL_BIND*) my_malloc(num_fields * sizeof(MYSQL_BIND),
@@ -3112,71 +3138,29 @@
   is_null= (my_bool*) my_malloc(num_fields * sizeof(my_bool),
 				MYF(MY_WME | MY_FAE));
 
-  for (col_idx= 0; col_idx < num_fields; col_idx++)
+  /* Allocate data for the result of each field */
+  for (i= 0; i < num_fields; i++)
   {
-    /* Allocate data for output */
-    uint max_length= field[col_idx].max_length + 1;
-    char *str_data= (char *) my_malloc(max_length, MYF(MY_WME | MY_FAE));
-
-    bind[col_idx].buffer_type= MYSQL_TYPE_STRING;
-    bind[col_idx].buffer= (char *)str_data;
-    bind[col_idx].buffer_length= max_length;
-    bind[col_idx].is_null= &is_null[col_idx];
-    bind[col_idx].length= &length[col_idx];
+    uint max_length= fields[i].max_length + 1;
+    bind[i].buffer_type= MYSQL_TYPE_STRING;
+    bind[i].buffer= (char *)my_malloc(max_length, MYF(MY_WME | MY_FAE));
+    bind[i].buffer_length= max_length;
+    bind[i].is_null= &is_null[i];
+    bind[i].length= &length[i];
 
     DBUG_PRINT("bind", ("col[%d]: buffer_type: %d, buffer_length: %d",
-			col_idx,
-			bind[col_idx].buffer_type,
-			bind[col_idx].buffer_length));
+			i, bind[i].buffer_type, bind[i].buffer_length));
   }
 
-  /* Fill in the data into the structures created above */
   if (mysql_stmt_bind_result(stmt, bind))
     die("mysql_stmt_bind_result failed: %d: %s",
 	mysql_stmt_errno(stmt), mysql_stmt_error(stmt));
 
-  /* Read result from each row */
-  num_rows= mysql_stmt_num_rows(stmt);
-  for (row_idx= 0; row_idx < num_rows; row_idx++)
-  {
-    if (mysql_stmt_fetch(stmt))
-      die("mysql_stmt_fetch failed: %d %s",
-	  mysql_stmt_errno(stmt), mysql_stmt_error(stmt));
-
-    /* Read result from each column */
-    for (col_idx= 0; col_idx < num_fields; col_idx++)
-    {
-      const char *val;
-      ulonglong len;
-      if (col_idx < max_replace_column && replace_column[col_idx])
-      {
-	val= replace_column[col_idx];
-	len= strlen(val);
-      }
-      else if (*bind[col_idx].is_null)
-      {
-	val= "NULL";
-	len= 4;
-      }
-      else
-      {
-	val= (const char *) bind[col_idx].buffer;
-	len= *bind[col_idx].length;
-      }
-      if (!display_result_vertically)
-      {
-	if (col_idx)                      /* No tab before first col */
-	  dynstr_append_mem(ds, "\t", 1);
-	replace_dynstr_append_mem(ds, val, (int)len);
-      }
-      else
-      {
-	dynstr_append(ds, field[col_idx].name);
-	dynstr_append_mem(ds, "\t", 1);
-	replace_dynstr_append_mem(ds, val, (int)len);
-	dynstr_append_mem(ds, "\n", 1);
-      }
-    }
+  while (mysql_stmt_fetch(stmt) == 0)
+  {
+    for (i= 0; i < num_fields; i++)
+      append_field(ds, i, &fields[i], (const char *) bind[i].buffer,
+		   *bind[i].length, *bind[i].is_null);
     if (!display_result_vertically)
       dynstr_append_mem(ds, "\n", 1);
   }
@@ -3187,10 +3171,10 @@
 
   free_replace_column();
 
-  for (col_idx= 0; col_idx < num_fields; col_idx++)
+  for (i= 0; i < num_fields; i++)
   {
     /* Free data for output */
-    my_free((gptr)bind[col_idx].buffer, MYF(MY_WME | MY_FAE));
+    my_free((gptr)bind[i].buffer, MYF(MY_WME | MY_FAE));
   }
   /* Free array with bind structs, lengths and NULL flags */
   my_free((gptr)bind    , MYF(MY_WME | MY_FAE));
Thread
bk commit into 5.0 tree (msvensson:1.2019)msvensson31 Jan