Commit eff21a02 authored by unknown's avatar unknown

ndb - bug#24914

  Fix start transaction with hint from ndbapi


storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  Fix fragments array for API
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
  Fix fragments array for API
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Fix fragments array for API
parent 3806777d
......@@ -479,7 +479,7 @@ Dbdict::packTableIntoPages(SimpleProperties::Writer & w,
CreateFragmentationReq::SignalLength);
ndbrequire(signal->theData[0] == 0);
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);
for (Uint32 i = 0; i < count; i++)
data[i] = htons(data[i]);
......
......@@ -6728,7 +6728,7 @@ void Dbdih::execCREATE_FRAGMENTATION_REQ(Signal * signal)
FragmentstorePtr fragPtr;
ReplicaRecordPtr replicaPtr;
getFragstore(primTabPtr.p, fragNo, fragPtr);
fragments[count++] = c_nextLogPart++;
fragments[count++] = fragPtr.p->m_log_part_id;
fragments[count++] = fragPtr.p->preferredPrimary;
for (replicaPtr.i = fragPtr.p->storedReplicas;
replicaPtr.i != RNIL;
......
......@@ -2191,9 +2191,14 @@ NdbDictInterface::parseTableInfo(NdbTableImpl ** ret,
impl->m_replicaCount = replicaCount;
impl->m_fragmentCount = 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);
......
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