Loading storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -7295,7 +7295,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) if(objEntry->m_tableType==DictTabInfo::Datafile) { jam(); GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; Loading @@ -7307,7 +7307,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) else if(objEntry->m_tableType==DictTabInfo::LogfileGroup) { jam(); GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; Loading storage/ndb/src/kernel/blocks/restore.cpp +19 −21 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ Restore::Restore(Block_context& ctx) : addRecSignal(GSN_LQHKEYREF, &Restore::execLQHKEYREF); addRecSignal(GSN_LQHKEYCONF, &Restore::execLQHKEYCONF); ndbrequire(sizeof(Column) == 8); } Restore::~Restore() Loading Loading @@ -794,10 +796,10 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, return; } DataBuffer<15> variable(m_databuffer_pool); Uint32 null_offset = 0; union { Column c; Uint32 _align[2];}; Column c; Uint32 colstore[sizeof(Column)/sizeof(Uint32)]; for(Uint32 i = 0; i<tmpTab.NoOfAttributes; i++) { jam(); DictTabInfo::Attribute tmp; tmp.init(); Loading @@ -814,10 +816,6 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, const Uint32 sz32 = (sz * arr + 31) >> 5; const bool varsize = tmp.AttributeArrayType != NDB_ARRAYTYPE_FIXED; union { Column c; Uint32 _align[2]; }; c.m_id = tmp.AttributeId; c.m_size = sz32; c.m_flags = (tmp.AttributeKeyFlag ? Column::COL_KEY : 0); Loading @@ -836,23 +834,20 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, if(!tmp.AttributeNullableFlag && !varsize) { if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, i); return; } } else if (true) // null mask dropped in 5.1 { c.m_flags |= (varsize ? Column::COL_VAR : 0); c.m_flags |= (tmp.AttributeNullableFlag ? Column::COL_NULL : 0); if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) } memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, i); return; } } } if(lcp) { Loading @@ -861,7 +856,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::DISK_REF; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading @@ -872,7 +868,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::ROWID; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading @@ -884,7 +881,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::ROW_GCI; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading Loading @@ -942,7 +940,7 @@ Restore::parse_record(Signal* signal, FilePtr file_ptr, Uint32 *attrData = attr_start; union { Column c; Uint32 _align[2]; Uint32 _align[sizeof(Column)/sizeof(Uint32)]; }; bool disk = false; bool rowid = false; Loading storage/ndb/src/kernel/vm/KeyTable2Ref.hpp +18 −4 Original line number Diff line number Diff line Loading @@ -32,19 +32,33 @@ public: bool find(Ptr<T>& ptr, Uint32 key) const { U rec; rec.key = key; return m_ref.find(*(Ptr<U>*)&ptr, rec); Ptr<U> tmp; bool ret = m_ref.find(tmp, rec); ptr.i = tmp.i; ptr.p = static_cast<T*>(tmp.p); return ret; } bool seize(Ptr<T> & ptr) { return m_ref.seize(*(Ptr<U>*)&ptr); Ptr<U> tmp; bool ret = m_ref.seize(tmp); ptr.i = tmp.i; ptr.p = static_cast<T*>(tmp.p); return ret; } void add(Ptr<T> & ptr) { m_ref.add(*(Ptr<U>*)&ptr); Ptr<U> tmp; tmp.i = ptr.i; tmp.p = static_cast<U*>(ptr.p); m_ref.add(tmp); } void release(Ptr<T> & ptr) { m_ref.release(*(Ptr<U>*)&ptr); Ptr<U> tmp; tmp.i = ptr.i; tmp.p = static_cast<U*>(ptr.p); m_ref.release(tmp); } }; Loading storage/ndb/src/kernel/vm/Pool.hpp +4 −1 Original line number Diff line number Diff line Loading @@ -324,7 +324,10 @@ inline void RecordPool<T, P>::release(Ptr<T> ptr) { m_pool.release(*(Ptr<void>*)&ptr); Ptr<void> tmp; tmp.i = ptr.i; tmp.p = ptr.p; m_pool.release(tmp); } #endif Loading
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp +2 −2 Original line number Diff line number Diff line Loading @@ -7295,7 +7295,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) if(objEntry->m_tableType==DictTabInfo::Datafile) { jam(); GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; Loading @@ -7307,7 +7307,7 @@ void Dbdict::execGET_TABINFOREQ(Signal* signal) else if(objEntry->m_tableType==DictTabInfo::LogfileGroup) { jam(); GetTabInfoReq *req= (GetTabInfoReq*)signal->theData; GetTabInfoReq *req= (GetTabInfoReq*)signal->getDataPtrSend(); req->senderData= c_retrieveRecord.retrievePage; req->senderRef= reference(); req->requestType= GetTabInfoReq::RequestById; Loading
storage/ndb/src/kernel/blocks/restore.cpp +19 −21 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ Restore::Restore(Block_context& ctx) : addRecSignal(GSN_LQHKEYREF, &Restore::execLQHKEYREF); addRecSignal(GSN_LQHKEYCONF, &Restore::execLQHKEYCONF); ndbrequire(sizeof(Column) == 8); } Restore::~Restore() Loading Loading @@ -794,10 +796,10 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, return; } DataBuffer<15> variable(m_databuffer_pool); Uint32 null_offset = 0; union { Column c; Uint32 _align[2];}; Column c; Uint32 colstore[sizeof(Column)/sizeof(Uint32)]; for(Uint32 i = 0; i<tmpTab.NoOfAttributes; i++) { jam(); DictTabInfo::Attribute tmp; tmp.init(); Loading @@ -814,10 +816,6 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, const Uint32 sz32 = (sz * arr + 31) >> 5; const bool varsize = tmp.AttributeArrayType != NDB_ARRAYTYPE_FIXED; union { Column c; Uint32 _align[2]; }; c.m_id = tmp.AttributeId; c.m_size = sz32; c.m_flags = (tmp.AttributeKeyFlag ? Column::COL_KEY : 0); Loading @@ -836,23 +834,20 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, if(!tmp.AttributeNullableFlag && !varsize) { if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, i); return; } } else if (true) // null mask dropped in 5.1 { c.m_flags |= (varsize ? Column::COL_VAR : 0); c.m_flags |= (tmp.AttributeNullableFlag ? Column::COL_NULL : 0); if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) } memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, i); return; } } } if(lcp) { Loading @@ -861,7 +856,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::DISK_REF; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading @@ -872,7 +868,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::ROWID; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading @@ -884,7 +881,8 @@ Restore::parse_table_description(Signal* signal, FilePtr file_ptr, c.m_id = AttributeHeader::ROW_GCI; c.m_size = 2; c.m_flags = 0; if(!columns.append(_align, sizeof(Column)/sizeof(Uint32))) memcpy(colstore, &c, sizeof(Column)); if(!columns.append(colstore, sizeof(Column)/sizeof(Uint32))) { parse_error(signal, file_ptr, __LINE__, 0); return; Loading Loading @@ -942,7 +940,7 @@ Restore::parse_record(Signal* signal, FilePtr file_ptr, Uint32 *attrData = attr_start; union { Column c; Uint32 _align[2]; Uint32 _align[sizeof(Column)/sizeof(Uint32)]; }; bool disk = false; bool rowid = false; Loading
storage/ndb/src/kernel/vm/KeyTable2Ref.hpp +18 −4 Original line number Diff line number Diff line Loading @@ -32,19 +32,33 @@ public: bool find(Ptr<T>& ptr, Uint32 key) const { U rec; rec.key = key; return m_ref.find(*(Ptr<U>*)&ptr, rec); Ptr<U> tmp; bool ret = m_ref.find(tmp, rec); ptr.i = tmp.i; ptr.p = static_cast<T*>(tmp.p); return ret; } bool seize(Ptr<T> & ptr) { return m_ref.seize(*(Ptr<U>*)&ptr); Ptr<U> tmp; bool ret = m_ref.seize(tmp); ptr.i = tmp.i; ptr.p = static_cast<T*>(tmp.p); return ret; } void add(Ptr<T> & ptr) { m_ref.add(*(Ptr<U>*)&ptr); Ptr<U> tmp; tmp.i = ptr.i; tmp.p = static_cast<U*>(ptr.p); m_ref.add(tmp); } void release(Ptr<T> & ptr) { m_ref.release(*(Ptr<U>*)&ptr); Ptr<U> tmp; tmp.i = ptr.i; tmp.p = static_cast<U*>(ptr.p); m_ref.release(tmp); } }; Loading
storage/ndb/src/kernel/vm/Pool.hpp +4 −1 Original line number Diff line number Diff line Loading @@ -324,7 +324,10 @@ inline void RecordPool<T, P>::release(Ptr<T> ptr) { m_pool.release(*(Ptr<void>*)&ptr); Ptr<void> tmp; tmp.i = ptr.i; tmp.p = ptr.p; m_pool.release(tmp); } #endif