Commit 6cc3eee4 authored by unknown's avatar unknown
Browse files

wl2405.patch


storage/ndb/include/ndbapi/Ndb.hpp:
  Import patch wl2405.patch
storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp:
  Import patch wl2405.patch
storage/ndb/include/ndbapi/NdbScanOperation.hpp:
  Import patch wl2405.patch
storage/ndb/include/portlib/NdbThread.h:
  Import patch wl2405.patch
storage/ndb/src/common/portlib/NdbThread.c:
  Import patch wl2405.patch
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/Ndb.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/NdbWaiter.hpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/Ndbif.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/Ndbinit.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/TransporterFacade.cpp:
  Import patch wl2405.patch
storage/ndb/src/ndbapi/TransporterFacade.hpp:
  Import patch wl2405.patch
parent bc2776d9
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -984,6 +984,8 @@ class BaseString;
class NdbEventOperation;
class NdbBlob;
class NdbReceiver;
class TransporterFacade;
class PollGuard;

typedef void (* NdbEventCallback)(NdbEventOperation*, Ndb*, void*);

@@ -1462,7 +1464,12 @@ public:
/*****************************************************************************
 *	These are service routines used by the other classes in the NDBAPI.
 ****************************************************************************/
 Uint32 get_cond_wait_index() { return cond_wait_index; }
 void set_cond_wait_index(Uint32 index) { cond_wait_index = index; }
private:
  Uint32 cond_wait_index;
  Ndb *cond_signal_ndb;
  void cond_signal();
  
  void setup(Ndb_cluster_connection *ndb_cluster_connection,
	     const char* aCatalogName, const char* aSchemaName);
@@ -1513,13 +1520,11 @@ private:
  // synchronous and asynchronous interface
  void handleReceivedSignal(NdbApiSignal* anApiSignal, struct LinearSectionPtr ptr[3]);
  
  // Receive response signals
  int			receiveResponse(int waitTime = WAITFOR_RESPONSE_TIMEOUT);

  int			sendRecSignal(Uint16 aNodeId,
				      Uint32 aWaitState,
				      NdbApiSignal* aSignal,
                                      Uint32 nodeSequence);
                                      Uint32 nodeSequence,
                                      Uint32 *ret_conn_seq= 0);
  
  // Sets Restart GCI in Ndb object
  void			RestartGCI(int aRestartGCI);
@@ -1576,7 +1581,9 @@ private:
  Uint32  pollCompleted(NdbTransaction** aCopyArray);
  void    sendPrepTrans(int forceSend);
  void    reportCallback(NdbTransaction** aCopyArray, Uint32 aNoOfComplTrans);
  void    waitCompletedTransactions(int milliSecs, int noOfEventsToWaitFor);
  int     poll_trans(int milliSecs, int noOfEventsToWaitFor, PollGuard *pg);
  void    waitCompletedTransactions(int milliSecs, int noOfEventsToWaitFor,
		                    PollGuard *pg);
  void    completedTransaction(NdbTransaction* aTransaction);
  void    completedScanTransaction(NdbTransaction* aTransaction);

+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@ private:

  void fix_get_values();
  int next_result_ordered(bool fetchAllowed, bool forceSend = false);
  int send_next_scan_ordered(Uint32 idx, bool forceSend = false);
  int send_next_scan_ordered(Uint32 idx);
  int compare(Uint32 key, Uint32 cols, const NdbReceiver*, const NdbReceiver*);

  Uint32 m_sort_columns;
+4 −3
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@

class NdbBlob;
class NdbResultSet;
class PollGuard;

/**
 * @class NdbScanOperation
@@ -183,7 +184,8 @@ protected:
  int nextResultImpl(bool fetchAllowed = true, bool forceSend = false);
  virtual void release();
  
  int close_impl(class TransporterFacade*, bool forceSend = false);
  int close_impl(class TransporterFacade*, bool forceSend,
                 PollGuard *poll_guard);

  // Overloaded methods from NdbCursorOperation
  int executeCursor(int ProcessorId);
@@ -192,7 +194,6 @@ protected:
  int init(const NdbTableImpl* tab, NdbTransaction*);
  int prepareSend(Uint32  TC_ConnectPtr, Uint64  TransactionId);
  int doSend(int ProcessorId);
  void checkForceSend(bool forceSend);

  virtual void setErrorCode(int aErrorCode);
  virtual void setErrorCodeAbort(int aErrorCode);
@@ -234,7 +235,7 @@ protected:
  Uint32 m_sent_receivers_count;  // NOTE needs mutex to access
  NdbReceiver** m_sent_receivers; // receive thread puts them here
  
  int send_next_scan(Uint32 cnt, bool close, bool forceSend = false);
  int send_next_scan(Uint32 cnt, bool close);
  void receiver_delivered(NdbReceiver*);
  void receiver_completed(NdbReceiver*);
  void execCLOSE_SCAN_REP();
+8 −0
Original line number Diff line number Diff line
@@ -37,6 +37,14 @@ typedef size_t NDB_THREAD_STACKSIZE;

struct NdbThread;

/*
  Method to block/unblock thread from receiving KILL signal with
  signum set in g_ndb_shm_signum in a portable manner.
*/
#ifdef NDB_SHM_TRANSPORTER
void NdbThread_set_shm_sigmask(bool block);
#endif

/**
 * Create a thread
 *
+22 −8
Original line number Diff line number Diff line
@@ -36,22 +36,36 @@ struct NdbThread
  void * object;
};

static
void*
ndb_thread_wrapper(void* _ss){
  my_thread_init();
  {
    DBUG_ENTER("ndb_thread_wrapper");

#ifdef NDB_SHM_TRANSPORTER
void NdbThread_set_shm_sigmask(bool block)
{
  DBUG_ENTER("NdbThread_set_shm_sigmask");
  if (g_ndb_shm_signum)
  {
    sigset_t mask;
    DBUG_PRINT("info",("Block signum %d",g_ndb_shm_signum));
    sigemptyset(&mask);
    sigaddset(&mask, g_ndb_shm_signum);
    if (block)
      pthread_sigmask(SIG_BLOCK, &mask, 0);
    else
      pthread_sigmask(SIG_UNBLOCK, &mask, 0);
  }
  DBUG_VOID_RETURN;
}
#endif


static
void*
ndb_thread_wrapper(void* _ss){
  my_thread_init();
  {
    DBUG_ENTER("ndb_thread_wrapper");
#ifdef NDB_SHM_TRANSPORTER
    NdbThread_set_shm_sigmask(true);
#endif
    {
      void *ret;
      struct NdbThread * ss = (struct NdbThread *)_ss;
Loading