Commit 655650f5 authored by unknown's avatar unknown
Browse files

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

into  poseidon.mysql.com:/home/tomas/mysql-5.0-ndb


ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
  Auto merged
ndb/src/mgmsrv/MgmtSrvr.cpp:
  Auto merged
ndb/src/ndbapi/NdbTransaction.cpp:
  Auto merged
ndb/src/ndbapi/Ndbif.cpp:
  Auto merged
ndb/test/ndbapi/testBasic.cpp:
  Auto merged
ndb/test/ndbapi/testIndex.cpp:
  Auto merged
parents 5d68cff0 da5a8043
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -133,6 +133,21 @@ a b c
6	7	2
7	8	3
8	2	3
create unique index bi using hash on t2(b);
insert into t2 values(9, 3, 1);
ERROR 23000: Duplicate entry '' for key 0
alter table t2 drop index bi;
insert into t2 values(9, 3, 1);
select * from t2 order by a;
a	b	c
2	3	5
3	4	6
4	5	8
5	6	2
6	7	2
7	8	3
8	2	3
9	3	1
drop table t2;
CREATE TABLE t2 (
a int unsigned NOT NULL PRIMARY KEY,
+8 −0
Original line number Diff line number Diff line
@@ -83,6 +83,14 @@ delete from t2 where a = 1;
insert into t2 values(8, 2, 3);
select * from t2 order by a;

# Bug #24818 CREATE UNIQUE INDEX (...) USING HASH on a NDB table crashes mysqld
create unique index bi using hash on t2(b);
-- error 1062
insert into t2 values(9, 3, 1);
alter table t2 drop index bi;
insert into t2 values(9, 3, 1);
select * from t2 order by a;

drop table t2;

CREATE TABLE t2 (
+4 −13
Original line number Diff line number Diff line
@@ -5083,7 +5083,7 @@ void Dbtc::execLQHKEYREF(Signal* signal)
    ptrAss(tcConnectptr, tcConnectRecord);
    TcConnectRecord * const regTcPtr = tcConnectptr.p;
    if (regTcPtr->tcConnectstate == OS_OPERATING) {
      apiConnectptr.i = regTcPtr->apiConnect;
      Uint32 save = apiConnectptr.i = regTcPtr->apiConnect;
      ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
      ApiConnectRecord * const regApiPtr = apiConnectptr.p;
      compare_transid1 = regApiPtr->transid[0] ^ lqhKeyRef->transId1;
@@ -5194,7 +5194,7 @@ void Dbtc::execLQHKEYREF(Signal* signal)
	regApiPtr->lqhkeyreqrec--; // Compensate for extra during read
	tcKeyRef->connectPtr = indexOp;
	EXECUTE_DIRECT(DBTC, GSN_TCKEYREF, signal, TcKeyRef::SignalLength);
	apiConnectptr.i = regTcPtr->apiConnect;
	apiConnectptr.i = save;
	apiConnectptr.p = regApiPtr;
      } else {
        jam();
@@ -5219,6 +5219,8 @@ void Dbtc::execLQHKEYREF(Signal* signal)
	    jam();
	    sendtckeyconf(signal, 1);
	    regApiPtr->apiConnectstate = CS_CONNECTED;
	    regApiPtr->m_transaction_nodes.clear();
	    setApiConTimer(apiConnectptr.i, 0,__LINE__);
	  }
	  return;
	} else if (regApiPtr->tckeyrec > 0 || regApiPtr->m_exec_flag) {
@@ -11877,17 +11879,6 @@ void Dbtc::execTCKEYREF(Signal* signal)
  case(IOS_INDEX_ACCESS_WAIT_FOR_TRANSID_AI):
  case(IOS_INDEX_ACCESS_WAIT_FOR_TCKEYCONF): {
    jam();    
    // If we fail index access for a non-read operation during commit 
    // we abort transaction
    if (commitFlg == 1) {
      jam();
      releaseIndexOperation(regApiPtr, indexOp);
      apiConnectptr.i = indexOp->connectionIndex;
      ptrCheckGuard(apiConnectptr, capiConnectFilesize, apiConnectRecord);
      terrorCode = tcKeyRef->errorCode;
      abortErrorLab(signal);
      break;
    }
    /**
     * Increase count as it will be decreased below...
     *   (and the code is written to handle failing lookup on "real" table
+1 −1
Original line number Diff line number Diff line
@@ -1912,7 +1912,7 @@ MgmtSrvr::handleStatus(NodeId nodeId, bool alive, bool nfComplete)
    m_started_nodes.push_back(nodeId);
    rep->setEventType(NDB_LE_Connected);
  } else {
    rep->setEventType(NDB_LE_Connected);
    rep->setEventType(NDB_LE_Disconnected);
    if(nfComplete)
    {
      DBUG_VOID_RETURN;
+9 −0
Original line number Diff line number Diff line
@@ -473,6 +473,7 @@ NdbTransaction::executeNoBlobs(ExecType aTypeOfExec,
         * This timeout situation can occur if NDB crashes.
         */
        ndbout << "This timeout should never occur, execute(..)" << endl;
	theError.code = 4012;
        setOperationErrorCodeAbort(4012);  // Error code for "Cluster Failure"
        DBUG_RETURN(-1);
      }//if
@@ -1965,6 +1966,14 @@ NdbTransaction::receiveTCINDXCONF(const TcIndxConf * indxConf,
      theGlobalCheckpointId = tGCI;
    } else if ((tNoComp >= tNoSent) &&
               (theLastExecOpInList->theCommitIndicator == 1)){

      if (m_abortOption == AO_IgnoreError && theError.code != 0){
	/**
	 * There's always a TCKEYCONF when using IgnoreError
	 */
	return -1;
      }

      /**********************************************************************/
      // We sent the transaction with Commit flag set and received a CONF with
      // no Commit flag set. This is clearly an anomaly.
Loading