Loading ndb/include/kernel/AttributeHeader.hpp +5 −5 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public: STATIC_CONST( FRAGMENT_MEMORY= 0xFFF9 ); /** Initialize AttributeHeader at location aHeaderPtr */ static AttributeHeader& init(void* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize); static void init(Uint32* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize); /** Returns size of AttributeHeader (usually one or two words) */ Uint32 getHeaderSize() const; // In 32-bit words Loading Loading @@ -100,10 +99,11 @@ public: */ inline AttributeHeader& AttributeHeader::init(void* aHeaderPtr, Uint32 anAttributeId, void AttributeHeader::init(Uint32* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize) { return * new (aHeaderPtr) AttributeHeader(anAttributeId, aDataSize); AttributeHeader ah(anAttributeId, aDataSize); *aHeaderPtr = ah.m_value; } inline Loading ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -1577,8 +1577,8 @@ int Dbtup::interpreterNextLab(Signal* signal, Uint32 TdataForUpdate[3]; Uint32 Tlen; AttributeHeader& ah = AttributeHeader::init(&TdataForUpdate[0], TattrId, TattrNoOfWords); AttributeHeader ah(TattrId, TattrNoOfWords); TdataForUpdate[0] = ah.m_value; TdataForUpdate[1] = TregMemBuffer[theRegister + 2]; TdataForUpdate[2] = TregMemBuffer[theRegister + 3]; Tlen = TattrNoOfWords + 1; Loading @@ -1594,6 +1594,7 @@ int Dbtup::interpreterNextLab(Signal* signal, // Write a NULL value into the attribute /* --------------------------------------------------------- */ ah.setNULL(); TdataForUpdate[0] = ah.m_value; Tlen = 1; }//if int TnoDataRW= updateAttributes(pagePtr, Loading ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp +5 −6 Original line number Diff line number Diff line Loading @@ -676,8 +676,6 @@ bool Dbtup::checkUpdateOfPrimaryKey(Uint32* updateBuffer, Tablerec* const regTabPtr) { Uint32 keyReadBuffer[MAX_KEY_SIZE_IN_WORDS]; Uint32 attributeHeader; AttributeHeader* ahOut = (AttributeHeader*)&attributeHeader; AttributeHeader ahIn(*updateBuffer); Uint32 attributeId = ahIn.getAttributeId(); Uint32 attrDescriptorIndex = regTabPtr->tabDescriptor + (attributeId << ZAD_LOG_SIZE); Loading @@ -700,16 +698,17 @@ Dbtup::checkUpdateOfPrimaryKey(Uint32* updateBuffer, Tablerec* const regTabPtr) ReadFunction f = regTabPtr->readFunctionArray[attributeId]; AttributeHeader::init(&attributeHeader, attributeId, 0); AttributeHeader attributeHeader(attributeId, 0); tOutBufIndex = 0; tMaxRead = MAX_KEY_SIZE_IN_WORDS; bool tmp = tXfrmFlag; tXfrmFlag = true; ndbrequire((this->*f)(&keyReadBuffer[0], ahOut, attrDescriptor, attributeOffset)); ndbrequire((this->*f)(&keyReadBuffer[0], &attributeHeader, attrDescriptor, attributeOffset)); tXfrmFlag = tmp; ndbrequire(tOutBufIndex == ahOut->getDataSize()); if (ahIn.getDataSize() != ahOut->getDataSize()) { ndbrequire(tOutBufIndex == attributeHeader.getDataSize()); if (ahIn.getDataSize() != attributeHeader.getDataSize()) { ljam(); return true; }//if Loading ndb/src/kernel/blocks/dbutil/DbUtil.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1168,9 +1168,7 @@ DbUtil::prepareOperation(Signal* signal, PreparePtr prepPtr) /************************************************************** * Attribute found - store in mapping (AttributeId, Position) **************************************************************/ AttributeHeader & attrMap = AttributeHeader::init(attrMappingIt.data, attrDesc.AttributeId, // 1. Store AttrId AttributeHeader attrMap(attrDesc.AttributeId, // 1. Store AttrId 0); if (attrDesc.AttributeKeyFlag) { Loading Loading @@ -1199,6 +1197,7 @@ DbUtil::prepareOperation(Signal* signal, PreparePtr prepPtr) return; } } *(attrMappingIt.data) = attrMap.m_value; #if 0 ndbout << "BEFORE: attrLength: " << attrLength << endl; #endif Loading ndb/src/ndbapi/NdbOperationDefine.cpp +6 −8 Original line number Diff line number Diff line Loading @@ -392,9 +392,8 @@ NdbOperation::getValue_impl(const NdbColumnImpl* tAttrInfo, char* aValue) return NULL; }//if }//if Uint32 ah; AttributeHeader::init(&ah, tAttrInfo->m_attrId, 0); if (insertATTRINFO(ah) != -1) { AttributeHeader ah(tAttrInfo->m_attrId, 0); if (insertATTRINFO(ah.m_value) != -1) { // Insert Attribute Id into ATTRINFO part. /************************************************************************ Loading Loading @@ -525,12 +524,11 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, tAttrId = tAttrInfo->m_attrId; const char *aValue = aValuePassed; Uint32 ahValue; if (aValue == NULL) { if (tAttrInfo->m_nullable) { AttributeHeader& ah = AttributeHeader::init(&ahValue, tAttrId, 0); AttributeHeader ah(tAttrId, 0); ah.setNULL(); insertATTRINFO(ahValue); insertATTRINFO(ah.m_value); // Insert Attribute Id with the value // NULL into ATTRINFO part. DBUG_RETURN(0); Loading Loading @@ -563,8 +561,8 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, }//if const Uint32 totalSizeInWords = (sizeInBytes + 3)/4; // Including bits in last word const Uint32 sizeInWords = sizeInBytes / 4; // Excluding bits in last word (void) AttributeHeader::init(&ahValue, tAttrId, totalSizeInWords); insertATTRINFO( ahValue ); AttributeHeader ah(tAttrId, totalSizeInWords); insertATTRINFO( ah.m_value ); /*********************************************************************** * Check if the pointer of the value passed is aligned on a 4 byte boundary. Loading Loading
ndb/include/kernel/AttributeHeader.hpp +5 −5 Original line number Diff line number Diff line Loading @@ -41,8 +41,7 @@ public: STATIC_CONST( FRAGMENT_MEMORY= 0xFFF9 ); /** Initialize AttributeHeader at location aHeaderPtr */ static AttributeHeader& init(void* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize); static void init(Uint32* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize); /** Returns size of AttributeHeader (usually one or two words) */ Uint32 getHeaderSize() const; // In 32-bit words Loading Loading @@ -100,10 +99,11 @@ public: */ inline AttributeHeader& AttributeHeader::init(void* aHeaderPtr, Uint32 anAttributeId, void AttributeHeader::init(Uint32* aHeaderPtr, Uint32 anAttributeId, Uint32 aDataSize) { return * new (aHeaderPtr) AttributeHeader(anAttributeId, aDataSize); AttributeHeader ah(anAttributeId, aDataSize); *aHeaderPtr = ah.m_value; } inline Loading
ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -1577,8 +1577,8 @@ int Dbtup::interpreterNextLab(Signal* signal, Uint32 TdataForUpdate[3]; Uint32 Tlen; AttributeHeader& ah = AttributeHeader::init(&TdataForUpdate[0], TattrId, TattrNoOfWords); AttributeHeader ah(TattrId, TattrNoOfWords); TdataForUpdate[0] = ah.m_value; TdataForUpdate[1] = TregMemBuffer[theRegister + 2]; TdataForUpdate[2] = TregMemBuffer[theRegister + 3]; Tlen = TattrNoOfWords + 1; Loading @@ -1594,6 +1594,7 @@ int Dbtup::interpreterNextLab(Signal* signal, // Write a NULL value into the attribute /* --------------------------------------------------------- */ ah.setNULL(); TdataForUpdate[0] = ah.m_value; Tlen = 1; }//if int TnoDataRW= updateAttributes(pagePtr, Loading
ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp +5 −6 Original line number Diff line number Diff line Loading @@ -676,8 +676,6 @@ bool Dbtup::checkUpdateOfPrimaryKey(Uint32* updateBuffer, Tablerec* const regTabPtr) { Uint32 keyReadBuffer[MAX_KEY_SIZE_IN_WORDS]; Uint32 attributeHeader; AttributeHeader* ahOut = (AttributeHeader*)&attributeHeader; AttributeHeader ahIn(*updateBuffer); Uint32 attributeId = ahIn.getAttributeId(); Uint32 attrDescriptorIndex = regTabPtr->tabDescriptor + (attributeId << ZAD_LOG_SIZE); Loading @@ -700,16 +698,17 @@ Dbtup::checkUpdateOfPrimaryKey(Uint32* updateBuffer, Tablerec* const regTabPtr) ReadFunction f = regTabPtr->readFunctionArray[attributeId]; AttributeHeader::init(&attributeHeader, attributeId, 0); AttributeHeader attributeHeader(attributeId, 0); tOutBufIndex = 0; tMaxRead = MAX_KEY_SIZE_IN_WORDS; bool tmp = tXfrmFlag; tXfrmFlag = true; ndbrequire((this->*f)(&keyReadBuffer[0], ahOut, attrDescriptor, attributeOffset)); ndbrequire((this->*f)(&keyReadBuffer[0], &attributeHeader, attrDescriptor, attributeOffset)); tXfrmFlag = tmp; ndbrequire(tOutBufIndex == ahOut->getDataSize()); if (ahIn.getDataSize() != ahOut->getDataSize()) { ndbrequire(tOutBufIndex == attributeHeader.getDataSize()); if (ahIn.getDataSize() != attributeHeader.getDataSize()) { ljam(); return true; }//if Loading
ndb/src/kernel/blocks/dbutil/DbUtil.cpp +2 −3 Original line number Diff line number Diff line Loading @@ -1168,9 +1168,7 @@ DbUtil::prepareOperation(Signal* signal, PreparePtr prepPtr) /************************************************************** * Attribute found - store in mapping (AttributeId, Position) **************************************************************/ AttributeHeader & attrMap = AttributeHeader::init(attrMappingIt.data, attrDesc.AttributeId, // 1. Store AttrId AttributeHeader attrMap(attrDesc.AttributeId, // 1. Store AttrId 0); if (attrDesc.AttributeKeyFlag) { Loading Loading @@ -1199,6 +1197,7 @@ DbUtil::prepareOperation(Signal* signal, PreparePtr prepPtr) return; } } *(attrMappingIt.data) = attrMap.m_value; #if 0 ndbout << "BEFORE: attrLength: " << attrLength << endl; #endif Loading
ndb/src/ndbapi/NdbOperationDefine.cpp +6 −8 Original line number Diff line number Diff line Loading @@ -392,9 +392,8 @@ NdbOperation::getValue_impl(const NdbColumnImpl* tAttrInfo, char* aValue) return NULL; }//if }//if Uint32 ah; AttributeHeader::init(&ah, tAttrInfo->m_attrId, 0); if (insertATTRINFO(ah) != -1) { AttributeHeader ah(tAttrInfo->m_attrId, 0); if (insertATTRINFO(ah.m_value) != -1) { // Insert Attribute Id into ATTRINFO part. /************************************************************************ Loading Loading @@ -525,12 +524,11 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, tAttrId = tAttrInfo->m_attrId; const char *aValue = aValuePassed; Uint32 ahValue; if (aValue == NULL) { if (tAttrInfo->m_nullable) { AttributeHeader& ah = AttributeHeader::init(&ahValue, tAttrId, 0); AttributeHeader ah(tAttrId, 0); ah.setNULL(); insertATTRINFO(ahValue); insertATTRINFO(ah.m_value); // Insert Attribute Id with the value // NULL into ATTRINFO part. DBUG_RETURN(0); Loading Loading @@ -563,8 +561,8 @@ NdbOperation::setValue( const NdbColumnImpl* tAttrInfo, }//if const Uint32 totalSizeInWords = (sizeInBytes + 3)/4; // Including bits in last word const Uint32 sizeInWords = sizeInBytes / 4; // Excluding bits in last word (void) AttributeHeader::init(&ahValue, tAttrId, totalSizeInWords); insertATTRINFO( ahValue ); AttributeHeader ah(tAttrId, totalSizeInWords); insertATTRINFO( ah.m_value ); /*********************************************************************** * Check if the pointer of the value passed is aligned on a 4 byte boundary. Loading