Commit d0477d87 authored by unknown's avatar unknown
Browse files

Merge tulin@bk-internal.mysql.com:/home/bk/mysql-4.1

into poseidon.ndb.mysql.com:/home/tomas/mysql-4.1-ndb-merge


mysql-test/mysql-test-run.sh:
  Auto merged
parents 22cca358 f1521dec
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2,3 +2,6 @@
disable_query_log;
show variables like "have_ndbcluster";
enable_query_log;
connect (server1,127.0.0.1,root,,test,$MASTER_MYPORT,$MASTER_MYSOCK);
connect (server2,127.0.0.1,root,,test,$MASTER_MYPORT1,$MASTER_MYSOCK1);
connection server1;
+7 −2
Original line number Diff line number Diff line
@@ -35,9 +35,14 @@ then
 shift 1
 data=var/slave-data
 ldata=$fix_bin/var/slave-data
else
 if [ x$1 = x"-1" ] 
 then
   data=var/master-data1
 else
   data=var/master-data
 ldata=$fix_bin/var/master-data
 fi
 ldata=$fix_bin/$data
fi

mdata=$data/mysql
+71 −40
Original line number Diff line number Diff line
@@ -198,9 +198,11 @@ DYLD_LIBRARY_PATH="$BASEDIR/lib:$BASEDIR/libmysql/.libs:$DYLD_LIBRARY_PATH"
export LD_LIBRARY_PATH DYLD_LIBRARY_PATH

MASTER_RUNNING=0
MASTER1_RUNNING=0
MASTER_MYPORT=9306
MASTER_MYPORT1=9307
SLAVE_RUNNING=0
SLAVE_MYPORT=9307
SLAVE_MYPORT=9308 # leave room for 2 masters for cluster tests
MYSQL_MANAGER_PORT=9305 # needs to be out of the way of slaves
NDBCLUSTER_PORT=9350
MYSQL_MANAGER_PW_FILE=$MYSQL_TEST_DIR/var/tmp/manager.pwd
@@ -254,9 +256,9 @@ while test $# -gt 0; do
    --extern)  USE_RUNNING_SERVER="1" ;;
    --with-ndbcluster)
      USE_NDBCLUSTER="--ndbcluster" ;;
    --ndbconnectstring=*)
    --ndb-connectstring=*)
      USE_NDBCLUSTER="--ndbcluster" ;
      USE_RUNNING_NDBCLUSTER=`$ECHO "$1" | $SED -e "s;--ndbconnectstring=;;"` ;;
      USE_RUNNING_NDBCLUSTER=`$ECHO "$1" | $SED -e "s;--ndb-connectstring=;;"` ;;
    --tmpdir=*) MYSQL_TMP_DIR=`$ECHO "$1" | $SED -e "s;--tmpdir=;;"` ;;
    --local-master)
      MASTER_MYPORT=3306;
@@ -437,6 +439,7 @@ MANAGER_PID_FILE="$MYRUN_DIR/manager.pid"

MASTER_MYDDIR="$MYSQL_TEST_DIR/var/master-data"
MASTER_MYSOCK="$MYSQL_TMP_DIR/master.sock"
MASTER_MYSOCK1=$MYSQL_MYSOCK"1"
MASTER_MYPID="$MYRUN_DIR/master.pid"
MASTER_MYLOG="$MYSQL_TEST_DIR/var/log/master.log"
MASTER_MYERR="$MYSQL_TEST_DIR/var/log/master.err"
@@ -450,7 +453,7 @@ SLAVE_MYERR="$MYSQL_TEST_DIR/var/log/slave.err"
CURRENT_TEST="$MYSQL_TEST_DIR/var/log/current_test"
SMALL_SERVER="--key_buffer_size=1M --sort_buffer=256K --max_heap_table_size=1M"

export MASTER_MYPORT SLAVE_MYPORT MYSQL_TCP_PORT MASTER_MYSOCK
export MASTER_MYPORT MASTER_MYPORT1 SLAVE_MYPORT MYSQL_TCP_PORT MASTER_MYSOCK MASTER_MYSOCK1

if [ x$SOURCE_DIST = x1 ] ; then
 MY_BASEDIR=$MYSQL_TEST_DIR
@@ -749,13 +752,22 @@ report_stats () {

mysql_install_db () {
    $ECHO "Removing Stale Files"
    $RM -rf $MASTER_MYDDIR $SLAVE_MYDDIR $MY_LOG_DIR/* 
    $RM -rf $MASTER_MYDDIR $MASTER_MYDDIR"1" $SLAVE_MYDDIR $MY_LOG_DIR/* 
    $ECHO "Installing Master Databases"
    $INSTALL_DB
    if [ $? != 0 ]; then
	error "Could not install master test DBs"
	exit 1
    fi
    if [ ! -z "$USE_NDBCLUSTER" ]
    then
      $ECHO "Installing Master Databases 1"
      $INSTALL_DB -1
      if [ $? != 0 ]; then
	error "Could not install master test DBs 1"
	exit 1
      fi
    fi
    $ECHO "Installing Slave Databases"
    $INSTALL_DB -slave
    if [ $? != 0 ]; then
@@ -894,10 +906,10 @@ manager_term()
  ident=$2
  if [ $USE_MANAGER = 0 ] ; then
    # Shutdown time must be high as slave may be in reconnect
    $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=5 --shutdown_timeout=70 shutdown >> $MYSQL_MANAGER_LOG 2>&1
    $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock$3 --connect_timeout=5 --shutdown_timeout=70 shutdown >> $MYSQL_MANAGER_LOG 2>&1
    res=$?
    # Some systems require an extra connect
    $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock --connect_timeout=1 ping >> $MYSQL_MANAGER_LOG 2>&1
    $MYSQLADMIN --no-defaults -uroot --socket=$MYSQL_TMP_DIR/$ident.sock$3 --connect_timeout=1 ping >> $MYSQL_MANAGER_LOG 2>&1
    if test $res = 0
    then
      wait_for_pid $pid
@@ -916,17 +928,18 @@ EOF

start_master()
{
  if [ x$MASTER_RUNNING = x1 ] || [ x$LOCAL_MASTER = x1 ] ; then
  eval "this_master_running=\$MASTER$1_RUNNING"
  if [ x$this_master_running = x1 ] || [ x$LOCAL_MASTER = x1 ] ; then
    return
  fi
  # Remove stale binary logs except for 2 tests which need them
  if [ "$tname" != "rpl_crash_binlog_ib_1b" ] && [ "$tname" != "rpl_crash_binlog_ib_2b" ] && [ "$tname" != "rpl_crash_binlog_ib_3b" ] 
  then
    $RM -f $MYSQL_TEST_DIR/var/log/master-bin.*
    $RM -f $MYSQL_TEST_DIR/var/log/master-bin$1.*
  fi

  # Remove old master.info and relay-log.info files
  $RM -f $MYSQL_TEST_DIR/var/master-data/master.info $MYSQL_TEST_DIR/var/master-data/relay-log.info
  $RM -f $MYSQL_TEST_DIR/var/master-data$1/master.info $MYSQL_TEST_DIR/var/master-data$1/relay-log.info

  #run master initialization shell script if one exists

@@ -935,20 +948,27 @@ start_master()
      /bin/sh $master_init_script
  fi
  cd $BASEDIR # for gcov
  if [ -n "$1" ] ; then
   id=`$EXPR $1 + 101`;
   this_master_myport=`$EXPR $MASTER_MYPORT + $1`
  else
   id=1;
   this_master_myport=$MASTER_MYPORT
  fi
  if [ -z "$DO_BENCH" ]
  then
    master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
  	    --server-id=1  \
    master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
  	    --server-id=$id  \
          --basedir=$MY_BASEDIR \
          --port=$MASTER_MYPORT \
          --port=$this_master_myport \
          --local-infile \
          --exit-info=256 \
          --core \
          $USE_NDBCLUSTER \
          --datadir=$MASTER_MYDDIR \
          --pid-file=$MASTER_MYPID \
          --socket=$MASTER_MYSOCK \
          --log=$MASTER_MYLOG \
          --datadir=$MASTER_MYDDIR$1 \
          --pid-file=$MASTER_MYPID$1 \
          --socket=$MASTER_MYSOCK$1 \
          --log=$MASTER_MYLOG$1 \
          --character-sets-dir=$CHARSETSDIR \
          --default-character-set=$CHARACTER_SET \
          --tmpdir=$MYSQL_TMP_DIR \
@@ -959,14 +979,14 @@ start_master()
           $SMALL_SERVER \
           $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
  else
    master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin \
          --server-id=1 --rpl-recovery-rank=1 \
    master_args="--no-defaults --log-bin=$MYSQL_TEST_DIR/var/log/master-bin$1 \
          --server-id=$id --rpl-recovery-rank=1 \
          --basedir=$MY_BASEDIR --init-rpl-role=master \
          --port=$MASTER_MYPORT \
          --port=$this_master_myport \
          --local-infile \
          --datadir=$MASTER_MYDDIR \
          --pid-file=$MASTER_MYPID \
          --socket=$MASTER_MYSOCK \
          --datadir=$MASTER_MYDDIR$1 \
          --pid-file=$MASTER_MYPID$1 \
          --socket=$MASTER_MYSOCK$1 \
          --character-sets-dir=$CHARSETSDIR \
          --default-character-set=$CHARACTER_SET \
          --core \
@@ -1024,9 +1044,9 @@ EOF
  else
    manager_launch master $MASTER_MYSQLD $master_args
  fi
  sleep_until_file_created $MASTER_MYPID $wait_for_master
  sleep_until_file_created $MASTER_MYPID$1 $wait_for_master
  wait_for_master=$SLEEP_TIME_FOR_SECOND_MASTER
  MASTER_RUNNING=1
  eval "MASTER$1_RUNNING=1"
}

start_slave()
@@ -1202,22 +1222,23 @@ stop_slave_threads ()

stop_master ()
{
  if [ x$MASTER_RUNNING = x1 ]
  eval "this_master_running=\$MASTER$1_RUNNING"
  if [ x$this_master_running = x1 ]
  then
    # For embedded server we don't stop anyting but mark that
    # MASTER_RUNNING=0 to get cleanup when calling start_master().
    if [ x$USE_EMBEDDED_SERVER != x1 ] ; then
      pid=`$CAT $MASTER_MYPID`
      manager_term $pid master
      if [ $? != 0 ] && [ -f $MASTER_MYPID ]
      pid=`$CAT $MASTER_MYPID$1`
      manager_term $pid master $1
      if [ $? != 0 ] && [ -f $MASTER_MYPID$1 ]
      then # try harder!
	$ECHO "master not cooperating with mysqladmin, will try manual kill"
	kill $pid
	sleep_until_file_deleted $pid $MASTER_MYPID
	if [ -f $MASTER_MYPID ] ; then
	sleep_until_file_deleted $pid $MASTER_MYPID$1
	if [ -f $MASTER_MYPID$1 ] ; then
	  $ECHO "master refused to die. Sending SIGKILL"
	  kill -9 `$CAT $MASTER_MYPID`
	  $RM -f $MASTER_MYPID
	  kill -9 `$CAT $MASTER_MYPID$1`
	  $RM -f $MASTER_MYPID$1
	else
	  $ECHO "master responded to SIGTERM "
	fi
@@ -1225,7 +1246,7 @@ stop_master ()
	sleep $SLEEP_TIME_AFTER_RESTART
      fi
    fi
    MASTER_RUNNING=0
    eval "MASTER$1_RUNNING=0"
  fi
}

@@ -1235,6 +1256,7 @@ mysql_stop ()
 $ECHO  "Shutting-down MySQL daemon"
 $ECHO  ""
 stop_master
 stop_master 1
 $ECHO "Master shutdown finished"
 stop_slave
 stop_slave 1
@@ -1365,8 +1387,12 @@ run_testcase ()
         ;;
     esac
     stop_master
     stop_master 1
     echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
     start_master
     if [ -n "$USE_NDBCLUSTER" -a -z "$DO_BENCH" ] ; then
       start_master 1
     fi
     TZ=$MY_TZ; export TZ
   else
     # If we had extra master opts to the previous run
@@ -1377,8 +1403,12 @@ run_testcase ()
     then
       EXTRA_MASTER_OPT=""
       stop_master
       stop_master 1
       echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
       start_master
       if [ -n "$USE_NDBCLUSTER"  -a -z "$DO_BENCH" ] ; then
         start_master 1
       fi
     else
       echo "CURRENT_TEST: $tname" >> $MASTER_MYERR
     fi
@@ -1545,6 +1575,7 @@ then

  # Remove old berkeley db log files that can confuse the server
  $RM -f $MASTER_MYDDIR/log.*
  $RM -f $MASTER_MYDDIR"1"/log.*

  wait_for_master=$SLEEP_TIME_FOR_FIRST_MASTER
  wait_for_slave=$SLEEP_TIME_FOR_FIRST_SLAVE
@@ -1556,7 +1587,7 @@ then
  if [ -z "$USE_RUNNING_NDBCLUSTER" ]
  then
    echo "Starting ndbcluster"
    if [ "$DO_BENCH" = 1 ]
    if [ "$DO_BENCH" = 1  -a ! "$DO_SMALL_BENCH" = 1 ]
    then
      NDBCLUSTER_OPTS=""
    else
+30 −15
Original line number Diff line number Diff line
@@ -147,7 +147,25 @@ int execute_no_commit(ha_ndbcluster *h, NdbConnection *trans)
  int m_batch_execute= 0;
  if (false && m_batch_execute)
    return 0;
  return trans->execute(NoCommit);
  return trans->execute(NoCommit,AbortOnError,1);
}

inline
int execute_commit(ha_ndbcluster *h, NdbConnection *trans)
{
  int m_batch_execute= 0;
  if (false && m_batch_execute)
    return 0;
  return trans->execute(Commit,AbortOnError,1);
}

inline
int execute_no_commit_ie(ha_ndbcluster *h, NdbConnection *trans)
{
  int m_batch_execute= 0;
  if (false && m_batch_execute)
    return 0;
  return trans->execute(NoCommit,IgnoreError,1);
}

/*
@@ -801,17 +819,15 @@ void ha_ndbcluster::release_metadata()

int ha_ndbcluster::get_ndb_lock_type(enum thr_lock_type type)
{
  int lm;
  if (type == TL_WRITE_ALLOW_WRITE)
    lm= NdbOperation::LM_Exclusive;
    return NdbOperation::LM_Exclusive;
  else if (uses_blob_value(retrieve_all_fields))
    /*
      TODO use a new scan mode to read + lock + keyinfo
    */
    lm= NdbOperation::LM_Exclusive;
    return NdbOperation::LM_Exclusive;
  else
    lm= NdbOperation::LM_CommittedRead;
  return lm;
    return NdbOperation::LM_CommittedRead;
}

static const ulong index_type_flags[]=
@@ -994,7 +1010,7 @@ int ha_ndbcluster::pk_read(const byte *key, uint key_len, byte *buf)
    }
  }
  
  if (trans->execute(NoCommit, IgnoreError) != 0) 
  if (execute_no_commit_ie(this,trans) != 0) 
  {
    table->status= STATUS_NOT_FOUND;
    DBUG_RETURN(ndb_err(trans));
@@ -1115,7 +1131,7 @@ int ha_ndbcluster::unique_index_read(const byte *key,
    }
  }

  if (trans->execute(NoCommit, IgnoreError) != 0) 
  if (execute_no_commit_ie(this,trans) != 0) 
  {
    table->status= STATUS_NOT_FOUND;
    DBUG_RETURN(ndb_err(trans));
@@ -1192,7 +1208,7 @@ inline int ha_ndbcluster::next_result(byte *buf)
      }
      else
      {
	if (ops_pending && (trans->execute(Commit) != 0))
	if (ops_pending && (execute_commit(this,trans) != 0))
	  DBUG_RETURN(ndb_err(trans));
	trans->restart();
      }
@@ -1626,7 +1642,7 @@ int ha_ndbcluster::write_row(byte *record)
    }
    else
    {
      if (trans->execute(Commit) != 0)
      if (execute_commit(this,trans) != 0)
      {
	skip_auto_increment= true;
	no_uncommitted_rows_execute_failure();
@@ -2668,14 +2684,13 @@ THR_LOCK_DATA **ha_ndbcluster::store_lock(THD *thd,
                                          enum thr_lock_type lock_type)
{
  DBUG_ENTER("store_lock");
  
  if (lock_type != TL_IGNORE && m_lock.type == TL_UNLOCK) 
  {

    /* If we are not doing a LOCK TABLE, then allow multiple
       writers */
    
    if ((lock_type >= TL_WRITE_CONCURRENT_INSERT &&
    if ((lock_type >= TL_WRITE_ALLOW_WRITE &&
         lock_type <= TL_WRITE) && !thd->in_lock_tables)      
      lock_type= TL_WRITE_ALLOW_WRITE;
    
@@ -2913,7 +2928,7 @@ int ndbcluster_commit(THD *thd, void *ndb_transaction)
                            "stmt" : "all"));
  DBUG_ASSERT(ndb && trans);

  if (trans->execute(Commit) != 0)
  if (execute_commit(0,trans) != 0)
  {
    const NdbError err= trans->getNdbError();
    const NdbOperation *error_op= trans->getNdbErrorOperation();
@@ -4118,7 +4133,7 @@ ndb_get_table_statistics(Ndb* ndb, const char * table,
    if (pOp == NULL)
      break;
    
    NdbResultSet* rs= pOp->readTuples(NdbScanOperation::LM_Dirty); 
    NdbResultSet* rs= pOp->readTuples(NdbOperation::LM_CommittedRead); 
    if (rs == 0)
      break;