ndb - bug#24914

  Fix start transaction with hint from ndbapi
parent a460d5f2
...@@ -479,7 +479,7 @@ Dbdict::packTableIntoPages(SimpleProperties::Writer & w, ...@@ -479,7 +479,7 @@ Dbdict::packTableIntoPages(SimpleProperties::Writer & w,
CreateFragmentationReq::SignalLength); CreateFragmentationReq::SignalLength);
ndbrequire(signal->theData[0] == 0); ndbrequire(signal->theData[0] == 0);
Uint16 *data = (Uint16*)&signal->theData[25]; Uint16 *data = (Uint16*)&signal->theData[25];
Uint32 count = 2 + data[0] * data[1]; Uint32 count = 2 + (1 + data[0]) * data[1];
w.add(DictTabInfo::ReplicaDataLen, 2*count); w.add(DictTabInfo::ReplicaDataLen, 2*count);
for (Uint32 i = 0; i < count; i++) for (Uint32 i = 0; i < count; i++)
data[i] = htons(data[i]); data[i] = htons(data[i]);
......
...@@ -6728,7 +6728,7 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal) ...@@ -6728,7 +6728,7 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal)
FragmentstorePtr fragPtr; FragmentstorePtr fragPtr;
ReplicaRecordPtr replicaPtr; ReplicaRecordPtr replicaPtr;
getFragstore(primTabPtr.p, fragNo, fragPtr); getFragstore(primTabPtr.p, fragNo, fragPtr);
fragments[count++] = c_nextLogPart++; fragments[count++] = fragPtr.p->m_log_part_id;
fragments[count++] = fragPtr.p->preferredPrimary; fragments[count++] = fragPtr.p->preferredPrimary;
for (replicaPtr.i = fragPtr.p->storedReplicas; for (replicaPtr.i = fragPtr.p->storedReplicas;
replicaPtr.i != RNIL; replicaPtr.i != RNIL;
......
...@@ -2191,9 +2191,14 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret, ...@@ -2191,9 +2191,14 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret,
impl->m_replicaCount = replicaCount; impl->m_replicaCount = replicaCount;
impl->m_fragmentCount = fragCount; impl->m_fragmentCount = fragCount;
DBUG_PRINT("info", ("replicaCount=%x , fragCount=%x",replicaCount,fragCount)); DBUG_PRINT("info", ("replicaCount=%x , fragCount=%x",replicaCount,fragCount));
for(i = 0; i < (Uint32) (fragCount*replicaCount); i++) Uint32 pos = 2;
for(i = 0; i < (Uint32) fragCount;i++)
{ {
impl->m_fragments.push_back(ntohs(tableDesc->ReplicaData[i+2])); pos++; // skip logpart
for (Uint32 j = 0; j<(Uint32)replicaCount; j++)
{
impl->m_fragments.push_back(ntohs(tableDesc->ReplicaData[pos++]));
}
} }
Uint32 topBit = (1 << 31); Uint32 topBit = (1 << 31);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment