Commit bfe74e69 authored by unknown's avatar unknown
Browse files

Merge mysql.com:/home/jonas/src/mysql-4.1

into mysql.com:/home/jonas/src/mysql-5.0


configure.in:
  Auto merged
ndb/src/common/transporter/TransporterRegistry.cpp:
  Auto merged
sql/ha_ndbcluster.cc:
  Auto merged
parents a8e52500 153160d1
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -1922,7 +1922,7 @@ AC_CHECK_FUNCS(alarm bcmp bfill bmove bzero chsize cuserid fchmod fcntl \
  pthread_key_delete pthread_rwlock_rdlock pthread_setprio \
  pthread_setprio_np pthread_setschedparam pthread_sigmask readlink \
  realpath rename rint rwlock_init setupterm \
  shmget shmat shmdt shmctl sigaction \
  shmget shmat shmdt shmctl sigaction sigemptyset sigaddset \
  sighold sigset sigthreadmask \
  snprintf socket stpcpy strcasecmp strerror strnlen strpbrk strstr strtol \
  strtoll strtoul strtoull tell tempnam thr_setconcurrency vidattr)
@@ -2709,7 +2709,10 @@ if test "$ac_cv_func_shmget" = "yes" &&
   test "$ac_cv_func_shmat" = "yes" &&
   test "$ac_cv_func_shmdt" = "yes" &&
   test "$ac_cv_func_shmctl" = "yes" &&
   test "$ac_cv_func_sigaction" = "yes"
   test "$ac_cv_func_sigaction" = "yes" &&
   test "$ac_cv_func_sigemptyset" = "yes" &&
   test "$ac_cv_func_sigaddset" = "yes" &&
   test "$ac_cv_func_pthread_sigmask" = "yes"
then
   AC_DEFINE([NDB_SHM_TRANSPORTER], [1],
             [Including Ndb Cluster DB shared memory transporter])
+20 −2
Original line number Diff line number Diff line
@@ -28,8 +28,24 @@ struct NdbThread
{ 
  pthread_t thread;
  char thread_name[MAX_THREAD_NAME];
  NDB_THREAD_FUNC * func;
  void * object;
};

static
void*
ndb_thread_wrapper(void* _ss){
  void * ret;
  struct NdbThread * ss = (struct NdbThread *)_ss;
#ifdef NDB_SHM_TRANSPORTER
  sigset_t mask;
  sigemptyset(&mask);
  sigaddset(&mask, SIGUSR1);
  pthread_sigmask(SIG_BLOCK, &mask, 0);
#endif
  ret= (* ss->func)(ss->object);
  return ret;
}


struct NdbThread* NdbThread_Create(NDB_THREAD_FUNC *p_thread_func,
@@ -67,10 +83,12 @@ struct NdbThread* NdbThread_Create(NDB_THREAD_FUNC *p_thread_func,
#ifdef PTHREAD_CREATE_JOINABLE /* needed on SCO */
  pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE);
#endif
  tmpThread->func= p_thread_func;
  tmpThread->object= p_thread_arg;
  result = pthread_create(&tmpThread->thread, 
			  &thread_attr,
  		          p_thread_func,
  		          p_thread_arg);
  		          ndb_thread_wrapper,
  		          tmpThread);
  assert(result==0);

  pthread_attr_destroy(&thread_attr);
+14 −2
Original line number Diff line number Diff line
@@ -157,7 +157,16 @@ TransporterRegistry::init(NodeId nodeId) {
  
  DEBUG("TransporterRegistry started node: " << localNodeId);
  
  //  return allocateLongSignalMemoryPool(nLargeSegments);
#ifdef NDB_SHM_TRANSPORTER
  /**
   * Make sure to block SIGUSR1
   *   TransporterRegistry::init is run from "main" thread
   */
  sigset_t mask;
  sigemptyset(&mask);
  sigaddset(&mask, SIGUSR1);
  pthread_sigmask(SIG_BLOCK, &mask, 0);
#endif
return true;
}

@@ -1347,6 +1356,9 @@ TransporterRegistry::startReceiving()
#ifdef NDB_SHM_TRANSPORTER
  m_shm_own_pid = getpid();
  struct sigaction sa;
  sigemptyset(&sa.sa_mask);
  sigaddset(&sa.sa_mask, SIGUSR1);
  pthread_sigmask(SIG_UNBLOCK, &sa.sa_mask, 0);
  sa.sa_handler = shm_sig_handler;
  sigemptyset(&sa.sa_mask);
  sa.sa_flags = 0;
+2 −2
Original line number Diff line number Diff line
@@ -616,7 +616,7 @@ int ha_ndbcluster::get_ndb_blobs_value(NdbBlob *last_ndb_blob)
          char *buf= m_blobs_buffer + offset;
          uint32 len= 0xffffffff;  // Max uint32
          DBUG_PRINT("value", ("read blob ptr=%x len=%u",
                               (uint)buf, (uint)blob_len));
                               (UintPtr)buf, (uint)blob_len));
          if (ndb_blob->readData(buf, len) != 0)
            DBUG_RETURN(-1);
          DBUG_ASSERT(len == blob_len);
@@ -3222,7 +3222,7 @@ int ha_ndbcluster::start_stmt(THD *thd)
#if 0    
    NdbTransaction *tablock_trans= 
      (NdbTransaction*)thd->transaction.all.ndb_tid;
    DBUG_PRINT("info", ("tablock_trans: %x", (uint)tablock_trans));
    DBUG_PRINT("info", ("tablock_trans: %x", (UintPtr)tablock_trans));
    DBUG_ASSERT(tablock_trans);
//    trans= ndb->hupp(tablock_trans);
#endif