MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:msvensson Date:February 28 2007 1:39pm
Subject:bk commit into 5.1 tree (msvensson:1.2473)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 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@stripped, 2007-02-28 14:39:06+01:00, msvensson@stripped +6 -0
  Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
  into  pilot.blaudden:/home/msvensson/mysql/mysql-5.1-new-maint
  MERGE: 1.1810.2590.6

  client/mysqltest.c@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.155.32.12

  mysql-test/lib/mtr_process.pl@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.25.2.24

  mysql-test/mysql-test-run.pl@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.30.74.2

  mysql-test/r/func_str.result@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.110.1.17

  mysql-test/t/func_str.test@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.92.1.8

  sql/item_strfunc.cc@stripped, 2007-02-28 14:39:03+01:00, msvensson@stripped +0 -0
    Auto merged
    MERGE: 1.261.20.3

# 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:	pilot.blaudden
# Root:	/home/msvensson/mysql/mysql-5.1-new-maint/RESYNC

--- 1.310/sql/item_strfunc.cc	2007-02-14 14:46:09 +01:00
+++ 1.311/sql/item_strfunc.cc	2007-02-28 14:39:03 +01:00
@@ -2274,8 +2274,10 @@ String *Item_func_repeat::val_str(String
   if (args[0]->null_value || args[1]->null_value)
     goto err;				// string and/or delim are null
   null_value= 0;
-  if ((count <= 0) && !args[1]->unsigned_flag)	// For nicer SQL code
+
+  if (count == 0 || count < 0 && !args[1]->unsigned_flag)
     return &my_empty_string;
+
   /* Assumes that the maximum length of a String is < INT_MAX32. */
   /* Bounds check on count:  If this is triggered, we will error. */
   if ((ulonglong) count > INT_MAX32)

--- 1.67/mysql-test/lib/mtr_process.pl	2007-01-18 16:33:29 +01:00
+++ 1.68/mysql-test/lib/mtr_process.pl	2007-02-28 14:39:03 +01:00
@@ -22,7 +22,7 @@ use Socket;
 use Errno;
 use strict;
 
-use POSIX 'WNOHANG';
+use POSIX qw(WNOHANG SIGHUP);
 
 sub mtr_run ($$$$$$;$);
 sub mtr_spawn ($$$$$$;$);
@@ -139,19 +139,18 @@ sub spawn_impl ($$$$$$$$) {
     {
       if ( $! == $!{EAGAIN} )           # See "perldoc Errno"
       {
-        mtr_debug("Got EAGAIN from fork(), sleep 1 second and redo");
+        mtr_warning("Got EAGAIN from fork(), sleep 1 second and redo");
         sleep(1);
         redo FORK;
       }
-      else
-      {
-        mtr_error("$path ($pid) can't be forked");
-      }
+
+      mtr_error("$path ($pid) can't be forked, error: $!");
+
     }
 
     if ( $pid )
     {
-      spawn_parent_impl($pid,$mode,$path);
+      return spawn_parent_impl($pid,$mode,$path);
     }
     else
     {
@@ -216,8 +215,11 @@ sub spawn_impl ($$$$$$$$) {
       {
         mtr_child_error("failed to execute \"$path\": $!");
       }
+      mtr_error("Should never come here 1!");
     }
+    mtr_error("Should never come here 2!");
   }
+  mtr_error("Should never come here 3!");
 }
 
 
@@ -230,12 +232,21 @@ sub spawn_parent_impl {
   {
     if ( $mode eq 'run' )
     {
-      # Simple run of command, we wait for it to return
+      # Simple run of command, wait blocking for it to return
       my $ret_pid= waitpid($pid,0);
       if ( $ret_pid != $pid )
       {
-        mtr_error("waitpid($pid, 0) returned $ret_pid " .
-		  "when waiting for '$path'");
+	# The "simple" waitpid has failed, print debug info
+	# and try to handle the error
+        mtr_warning("waitpid($pid, 0) returned $ret_pid " .
+		    "when waiting for '$path', error: '$!'");
+	if ( $ret_pid == -1 )
+	{
+	  # waitpid returned -1, that would indicate the process
+	  # no longer exist and waitpid couldn't wait for it.
+	  return 1;
+	}
+	mtr_error("Error handling failed");
       }
 
       return mtr_process_exit_status($?);
@@ -1109,12 +1120,6 @@ sub mtr_kill_processes ($) {
 #
 ##############################################################################
 
-# FIXME something is wrong, we sometimes terminate with "Hangup" written
-# to tty, and no STDERR output telling us why.
-
-# FIXME for some reason, setting HUP to 'IGNORE' will cause exit() to
-# write out "Hangup", and maybe loose some output. We insert a sleep...
-
 sub mtr_exit ($) {
   my $code= shift;
   mtr_timer_stop_all($::glob_timers);
@@ -1126,7 +1131,7 @@ sub mtr_exit ($) {
   # set ourselves as the group leader at startup (with
   # POSIX::setpgrp(0,0)), but then care must be needed to always do
   # proper child process cleanup.
-  kill('HUP', -$$) if !$::glob_win32_perl and $$ == getpgrp();
+  POSIX::kill(SIGHUP, -$$) if !$::glob_win32_perl and $$ == getpgrp();
 
   exit($code);
 }

--- 1.276/mysql-test/mysql-test-run.pl	2007-02-27 15:29:41 +01:00
+++ 1.277/mysql-test/mysql-test-run.pl	2007-02-28 14:39:03 +01:00
@@ -2136,6 +2136,16 @@ sub remove_stale_vardir () {
       mtr_verbose("Removing $opt_vardir/");
       rmtree("$opt_vardir/");
     }
+
+    if ( $opt_mem )
+    {
+      # A symlink from var/ to $opt_mem will be set up
+      # remove the $opt_mem dir to assure the symlink
+      # won't point at an old directory
+      mtr_verbose("Removing $opt_mem");
+      rmtree($opt_mem);
+    }
+
   }
   else
   {

--- 1.136/mysql-test/r/func_str.result	2007-01-24 14:54:59 +01:00
+++ 1.137/mysql-test/r/func_str.result	2007-02-28 14:39:03 +01:00
@@ -2273,4 +2273,18 @@ abcxx
 select lpad('abc', cast(5 as unsigned integer), 'x');
 lpad('abc', cast(5 as unsigned integer), 'x')
 xxabc
+DROP TABLE IF EXISTS t1;
+CREATE TABLE `t1` (
+`id` varchar(20) NOT NULL,
+`tire` tinyint(3) unsigned NOT NULL,
+PRIMARY KEY (`id`)
+);
+INSERT INTO `t1` (`id`, `tire`) VALUES ('A', 0), ('B', 1),('C', 2);
+SELECT REPEAT( '#', tire ) AS A,
+REPEAT( '#', tire % 999 ) AS B, tire FROM `t1`;
+A	B	tire
+		0
+#	#	1
+##	##	2
+DROP TABLE t1;
 End of 5.0 tests

--- 1.102/mysql-test/t/func_str.test	2007-01-23 10:56:45 +01:00
+++ 1.103/mysql-test/t/func_str.test	2007-02-28 14:39:03 +01:00
@@ -1115,4 +1115,26 @@ select repeat('a', cast(2 as unsigned in
 select rpad('abc', cast(5 as unsigned integer), 'x');
 select lpad('abc', cast(5 as unsigned integer), 'x');
 
+
+#
+# Bug #25197 :repeat function returns null when using table field directly as count
+#
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE `t1` (
+  `id` varchar(20) NOT NULL,
+  `tire` tinyint(3) unsigned NOT NULL,
+  PRIMARY KEY (`id`)
+);
+
+INSERT INTO `t1` (`id`, `tire`) VALUES ('A', 0), ('B', 1),('C', 2);
+
+SELECT REPEAT( '#', tire ) AS A,
+       REPEAT( '#', tire % 999 ) AS B, tire FROM `t1`;
+
+DROP TABLE t1;
+
 --echo End of 5.0 tests

--- 1.277/client/mysqltest.c	2007-02-20 18:22:47 +01:00
+++ 1.278/client/mysqltest.c	2007-02-28 14:39:03 +01:00
@@ -60,6 +60,11 @@
 # endif
 #endif
 
+/* Use cygwin for --exec and --system before 5.0 */
+#if MYSQL_VERSION_ID < 50000
+#define USE_CYGWIN
+#endif
+
 #define MAX_VAR_NAME_LENGTH    256
 #define MAX_COLUMNS            256
 #define MAX_EMBEDDED_SERVER_ARGS 64
@@ -5355,8 +5360,9 @@ void run_query_stmt(MYSQL *mysql, struct
   /*
     If we got here the statement succeeded and was expected to do so,
     get data. Note that this can still give errors found during execution!
+    Store the result of the query if if will return any fields
   */
-  if (mysql_stmt_store_result(stmt))
+  if (mysql_stmt_field_count(stmt) && mysql_stmt_store_result(stmt))
   {
     handle_error(command, mysql_stmt_errno(stmt),
                  mysql_stmt_error(stmt), mysql_stmt_sqlstate(stmt), ds);
Thread
bk commit into 5.1 tree (msvensson:1.2473)msvensson28 Feb