From: Jonas Oreland Date: March 15 2010 8:44pm Subject: bzr commit into mysql-5.1-telco-6.3 branch (jonas:3143) List-Archive: http://lists.mysql.com/commits/103315 Message-Id: <20100315204430.A378CA522CD@perch.localdomain> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_TC8gzYqraJ2tnHU5fcWERA)" --Boundary_(ID_TC8gzYqraJ2tnHU5fcWERA) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/jonas/src/telco-6.3/ based on revid:jonas@stripped 3143 Jonas Oreland 2010-03-15 ndb - as stab at gcc-madness warnings modified: storage/ndb/src/common/util/azio.c storage/ndb/src/kernel/blocks/backup/read.cpp storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp storage/ndb/src/kernel/vm/FastScheduler.cpp storage/ndb/src/kernel/vm/ThreadConfig.cpp storage/ndb/src/kernel/vm/TransporterCallback.cpp storage/ndb/src/ndbapi/NdbInterpretedCode.cpp storage/ndb/test/ndbapi/flexHammer.cpp === modified file 'storage/ndb/src/common/util/azio.c' --- a/storage/ndb/src/common/util/azio.c 2007-12-06 13:44:23 +0000 +++ b/storage/ndb/src/common/util/azio.c 2010-03-15 20:44:25 +0000 @@ -57,7 +57,7 @@ static int const az_magic[3] = {0xfe, 0x int az_open(azio_stream *s, const char *path, int Flags, File fd); int do_flush(azio_stream *file, int flush); int get_byte(azio_stream *s); -char* get_block(azio_stream *s, int blksz); +unsigned char* get_block(azio_stream *s, int blksz); int check_header(azio_stream *s); int write_header(azio_stream *s); int destroy(azio_stream *s); @@ -359,7 +359,7 @@ int get_byte(s) * *MUST* be < buffer size * *MUST* be aligned to IO size (i.e. not be only partially in buffer) */ -char* get_block(azio_stream *s,int blksz) +unsigned char* get_block(azio_stream *s,int blksz) { char *r= s->stream.next_in; if (s->stream.avail_in == 0) @@ -439,7 +439,7 @@ int check_header(azio_stream *s) s->z_err = Z_DATA_ERROR; return s->z_err; } - char *header_block = get_block(s,512); + unsigned char *header_block = get_block(s,512); if(!header_block) return my_errno; read_header(s, header_block); === modified file 'storage/ndb/src/kernel/blocks/backup/read.cpp' --- a/storage/ndb/src/kernel/blocks/backup/read.cpp 2010-03-09 17:15:55 +0000 +++ b/storage/ndb/src/kernel/blocks/backup/read.cpp 2010-03-15 20:44:25 +0000 @@ -334,7 +334,13 @@ readFragFooter(azio_stream* f, BackupFor return true; } -static Uint32 buf[8192]; + +static union { + Uint32 buf[8192]; + BackupFormat::CtlFile::TableList TableList; + BackupFormat::CtlFile::GCPEntry GcpEntry; + BackupFormat::CtlFile::TableDescription TableDescription; +} theData; Int32 readRecord(azio_stream* f, Uint32 **dst){ @@ -344,7 +350,7 @@ readRecord(azio_stream* f, Uint32 **dst) len = ntohl(len); - if(aread(buf, 4, len, f) != len) + if(aread(theData.buf, 4, len, f) != len) { return -1; } @@ -354,7 +360,7 @@ readRecord(azio_stream* f, Uint32 **dst) else ndbout_c("Found %d records", recNo); - * dst = &buf[0]; + * dst = &theData.buf[0]; return len; @@ -368,15 +374,15 @@ readLogEntry(azio_stream* f, Uint32 **ds len = ntohl(len); - if(aread(&buf[1], 4, len, f) != len) + if(aread(&theData.buf[1], 4, len, f) != len) return -1; - buf[0] = len; + theData.buf[0] = len; if(len > 0) logEntryNo++; - * dst = &buf[0]; + * dst = &theData.buf[0]; return len; } @@ -430,8 +436,7 @@ NdbOut & operator<<(NdbOut& ndbout, bool readTableList(azio_stream* f, BackupFormat::CtlFile::TableList **ret){ - BackupFormat::CtlFile::TableList * dst = - (BackupFormat::CtlFile::TableList *)&buf[0]; + BackupFormat::CtlFile::TableList * dst = &theData.TableList; if(aread(dst, 4, 2, f) != 2) RETURN_FALSE(); @@ -457,8 +462,7 @@ readTableList(azio_stream* f, BackupForm bool readTableDesc(azio_stream* f, BackupFormat::CtlFile::TableDescription **ret){ - BackupFormat::CtlFile::TableDescription * dst = - (BackupFormat::CtlFile::TableDescription *)&buf[0]; + BackupFormat::CtlFile::TableDescription * dst = &theData.TableDescription; if(aread(dst, 4, 3, f) != 3) RETURN_FALSE(); @@ -481,8 +485,7 @@ readTableDesc(azio_stream* f, BackupForm bool readGCPEntry(azio_stream* f, BackupFormat::CtlFile::GCPEntry **ret){ - BackupFormat::CtlFile::GCPEntry * dst = - (BackupFormat::CtlFile::GCPEntry *)&buf[0]; + BackupFormat::CtlFile::GCPEntry * dst = &theData.GcpEntry; if(aread(dst, 4, 4, f) != 4) RETURN_FALSE(); === modified file 'storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp' --- a/storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp 2009-12-14 10:58:03 +0000 +++ b/storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp 2010-03-15 20:44:25 +0000 @@ -880,13 +880,13 @@ Dbtux::TreeEnt::cmp(const TreeEnt ent) c */ const unsigned version_wrap_limit = (1 << (ZTUP_VERSION_BITS - 1)); if (m_tupVersion < ent.m_tupVersion) { - if (ent.m_tupVersion - m_tupVersion < version_wrap_limit) + if (unsigned(ent.m_tupVersion - m_tupVersion) < version_wrap_limit) return -1; else return +1; } if (m_tupVersion > ent.m_tupVersion) { - if (m_tupVersion - ent.m_tupVersion < version_wrap_limit) + if (unsigned(m_tupVersion - ent.m_tupVersion) < version_wrap_limit) return +1; else return -1; === modified file 'storage/ndb/src/kernel/vm/FastScheduler.cpp' --- a/storage/ndb/src/kernel/vm/FastScheduler.cpp 2009-10-21 08:40:24 +0000 +++ b/storage/ndb/src/kernel/vm/FastScheduler.cpp 2010-03-15 20:44:25 +0000 @@ -475,18 +475,20 @@ print_restart(FILE * output, Signal* sig */ void FastScheduler::reportDoJobStatistics(Uint32 tMeanLoopCount) { - SignalT<2> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<2> signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = 2; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, 0); + signal.header.theVerId_signalNumber = GSN_EVENT_REP; + signal.header.theReceiversBlockNumber = CMVMI; signal.theData[0] = NDB_LE_JobStatistic; signal.theData[1] = tMeanLoopCount; - - execute(&signal, JBA, CMVMI, GSN_EVENT_REP); + + Uint32 secPtr[3]; + execute(&signal.header, JBA, signal.theData, secPtr); } void @@ -497,13 +499,14 @@ FastScheduler::reportThreadConfigLoop(Ui Uint32 *no_extra_loops, Uint32 *tot_extra_time) { - SignalT<6> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<6> signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = 6; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, 0); + signal.header.theVerId_signalNumber = GSN_EVENT_REP; + signal.header.theReceiversBlockNumber = CMVMI; signal.theData[0] = NDB_LE_ThreadConfigLoop; signal.theData[1] = expired_time; @@ -520,6 +523,7 @@ FastScheduler::reportThreadConfigLoop(Ui *no_extra_loops = 0; *tot_extra_time = 0; - execute(&signal, JBA, CMVMI, GSN_EVENT_REP); + Uint32 secPtr[3]; + execute(&signal.header, JBA, signal.theData, secPtr); } === modified file 'storage/ndb/src/kernel/vm/ThreadConfig.cpp' --- a/storage/ndb/src/kernel/vm/ThreadConfig.cpp 2009-10-20 19:19:19 +0000 +++ b/storage/ndb/src/kernel/vm/ThreadConfig.cpp 2010-03-15 20:44:25 +0000 @@ -308,9 +308,11 @@ ThreadConfig::doStart(NodeState::StartLe sh.theSignalId = 0; sh.theLength = StartOrd::SignalLength; - Uint32 theData[25]; - StartOrd * const startOrd = (StartOrd *)&theData[0]; - startOrd->restartInfo = 0; + union { + Uint32 theData[25]; + StartOrd startOrd; + }; + startOrd.restartInfo = 0; Uint32 secPtrI[3]; globalScheduler.execute(&sh, JBA, theData, secPtrI); === modified file 'storage/ndb/src/kernel/vm/TransporterCallback.cpp' --- a/storage/ndb/src/kernel/vm/TransporterCallback.cpp 2010-03-05 12:15:04 +0000 +++ b/storage/ndb/src/kernel/vm/TransporterCallback.cpp 2010-03-15 20:44:25 +0000 @@ -442,8 +442,7 @@ reportError(void * callbackObj, NodeId n reportDisconnect(callbackObj, nodeId, errorCode); } - SignalT<3> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<3> signal; memset(&signal.header, 0, sizeof(signal.header)); @@ -458,7 +457,11 @@ reportError(void * callbackObj, NodeId n signal.header.theLength = 3; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, globalData.ownId); - globalScheduler.execute(&signal, JBA, CMVMI, GSN_EVENT_REP); + signal.header.theReceiversBlockNumber = CMVMI; + signal.header.theVerId_signalNumber = GSN_EVENT_REP; + + Uint32 secPtr[3]; + globalScheduler.execute(&signal.header, JBA, signal.theData, secPtr); DBUG_VOID_RETURN; } @@ -470,17 +473,21 @@ void reportSendLen(void * callbackObj, NodeId nodeId, Uint32 count, Uint64 bytes){ - SignalT<3> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<3> signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = 3; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, globalData.ownId); + signal.header.theReceiversBlockNumber = CMVMI; + signal.header.theVerId_signalNumber = GSN_EVENT_REP; + signal.theData[0] = NDB_LE_SendBytesStatistic; signal.theData[1] = nodeId; signal.theData[2] = (bytes/count); - globalScheduler.execute(&signal, JBA, CMVMI, GSN_EVENT_REP); + + Uint32 secPtr[3]; + globalScheduler.execute(&signal.header, JBA, signal.theData, secPtr); } /** @@ -490,17 +497,21 @@ void reportReceiveLen(void * callbackObj, NodeId nodeId, Uint32 count, Uint64 bytes){ - SignalT<3> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<3> signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = 3; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, globalData.ownId); + signal.header.theReceiversBlockNumber = CMVMI; + signal.header.theVerId_signalNumber = GSN_EVENT_REP; + signal.theData[0] = NDB_LE_ReceiveBytesStatistic; signal.theData[1] = nodeId; signal.theData[2] = (bytes/count); - globalScheduler.execute(&signal, JBA, CMVMI, GSN_EVENT_REP); + + Uint32 secPtr[3]; + globalScheduler.execute(&signal.header, JBA, signal.theData, secPtr); } /** @@ -510,16 +521,19 @@ reportReceiveLen(void * callbackObj, void reportConnect(void * callbackObj, NodeId nodeId){ - SignalT<1> signalT; - Signal &signal= *(Signal*)&signalT; + SignalT<1> signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = 1; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, globalData.ownId); + signal.header.theReceiversBlockNumber = CMVMI; + signal.header.theVerId_signalNumber = GSN_CONNECT_REP; + signal.theData[0] = nodeId; - globalScheduler.execute(&signal, JBA, CMVMI, GSN_CONNECT_REP); + Uint32 secPtr[3]; + globalScheduler.execute(&signal.header, JBA, signal.theData, secPtr); } /** @@ -530,20 +544,22 @@ reportDisconnect(void * callbackObj, Nod DBUG_ENTER("reportDisconnect"); - SignalT signalT; - Signal &signal= *(Signal*)&signalT; + SignalT signal; memset(&signal.header, 0, sizeof(signal.header)); signal.header.theLength = DisconnectRep::SignalLength; signal.header.theSendersSignalId = 0; signal.header.theSendersBlockRef = numberToRef(0, globalData.ownId); signal.header.theTrace = TestOrd::TraceDisconnect; + signal.header.theVerId_signalNumber = GSN_DISCONNECT_REP; + signal.header.theReceiversBlockNumber = CMVMI; DisconnectRep * const rep = (DisconnectRep *)&signal.theData[0]; rep->nodeId = nodeId; rep->err = errNo; - globalScheduler.execute(&signal, JBA, CMVMI, GSN_DISCONNECT_REP); + Uint32 secPtr[3]; + globalScheduler.execute(&signal.header, JBA, signal.theData, secPtr); DBUG_VOID_RETURN; } === modified file 'storage/ndb/src/ndbapi/NdbInterpretedCode.cpp' --- a/storage/ndb/src/ndbapi/NdbInterpretedCode.cpp 2009-05-27 12:11:46 +0000 +++ b/storage/ndb/src/ndbapi/NdbInterpretedCode.cpp 2010-03-15 20:44:25 +0000 @@ -244,8 +244,12 @@ NdbInterpretedCode::load_const_u32(Uint3 int NdbInterpretedCode::load_const_u64(Uint32 RegDest, Uint64 Constant) { - const Uint32* p= (const Uint32 *)(&Constant); - return add3(Interpreter::LoadConst64(RegDest % MaxReg), p[0], p[1]); + union { + Uint64 val64; + Uint32 val32[2]; + }; + val64 = Constant; + return add3(Interpreter::LoadConst64(RegDest % MaxReg), val32[0], val32[1]); } int === modified file 'storage/ndb/test/ndbapi/flexHammer.cpp' --- a/storage/ndb/test/ndbapi/flexHammer.cpp 2009-09-25 12:49:37 +0000 +++ b/storage/ndb/test/ndbapi/flexHammer.cpp 2010-03-15 20:44:25 +0000 @@ -352,7 +352,7 @@ flexHammerThread(void* pArg) int tThreadResult = 0; MyOpType tMyOpType = otLast; int pkValue = 0; - int readValue[MAXATTR][MAXATTRSIZE] = {0}; + int readValue[MAXATTR][MAXATTRSIZE]; bzero(readValue, sizeof(readValue)); int attrValue[MAXATTRSIZE]; NdbRecAttr* tTmp = NULL; int tNoOfAttempts = 0; --Boundary_(ID_TC8gzYqraJ2tnHU5fcWERA) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/jonas@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/jonas@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: jonas@stripped # target_branch: file:///home/jonas/src/telco-6.3/ # testament_sha1: 824c96445d52add8eab445e293165d4637f18418 # timestamp: 2010-03-15 21:44:30 +0100 # source_branch: file:///home/jonas/src/63-local/ # base_revision_id: jonas@stripped # # Begin bundle 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 UjpIFfMy0sf8XckU4UJDTQ1hsA== --Boundary_(ID_TC8gzYqraJ2tnHU5fcWERA)--