From: jonas Date: November 24 2005 3:11pm Subject: bk commit into 5.1 tree (jonas:1.1963) List-Archive: http://lists.mysql.com/internals/32680 Message-Id: <20051124151139.1003621C1EE@perch.ndb.mysql.com> Below is the list of changes that have just been committed into a local 5.1 repository of jonas. When jonas does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet 1.1963 05/11/24 16:11:34 jonas@stripped +5 -0 ndb - fix various tup scan issues storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp 1.95 05/11/24 16:11:31 jonas@stripped +1 -0 Make pseudo column mm columns storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp 1.11 05/11/24 16:11:31 jonas@stripped +3 -2 Impl. NoDiskScan for TupScan storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp 1.4 05/11/24 16:11:31 jonas@stripped +1 -0 Init m_first_page_no also during SR storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 1.84 05/11/24 16:11:31 jonas@stripped +2 -0 Impl. NoDiskScan for TupScan storage/ndb/include/kernel/signaldata/AccScan.hpp 1.7 05/11/24 16:11:31 jonas@stripped +19 -1 Impl. NoDiskScan for TupScan # This is a BitKeeper patch. What follows are the unified diffs for the # set of deltas contained in the patch. The rest of the patch, the part # that BitKeeper cares about, is below these diffs. # User: jonas # Host: perch.ndb.mysql.com # Root: /home/jonas/src/51-ndb --- 1.3/storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp 2005-11-10 12:04:37 +01:00 +++ 1.4/storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp 2005-11-24 16:11:31 +01:00 @@ -1062,6 +1062,7 @@ ext.p->m_key = *key; ndbout << "allocated " << pages << " pages: " << ext.p->m_key << endl; + ext.p->m_first_page_no = ext.p->m_key.m_page_no; bzero(ext.p->m_free_page_count, sizeof(ext.p->m_free_page_count)); ext.p->m_free_space= alloc.m_page_free_bits_map[0] * pages; ext.p->m_free_page_count[0]= pages; // All pages are "free"-est --- 1.6/storage/ndb/include/kernel/signaldata/AccScan.hpp 2005-05-02 13:19:44 +02:00 +++ 1.7/storage/ndb/include/kernel/signaldata/AccScan.hpp 2005-11-24 16:11:31 +01:00 @@ -58,6 +58,9 @@ static void setLockMode(Uint32 & requestInfo, Uint32 lockMode); static void setReadCommittedFlag(Uint32 & requestInfo, Uint32 readCommitted); static void setDescendingFlag(Uint32 & requestInfo, Uint32 descending); + + static Uint32 getNoDiskScanFlag(const Uint32 & requestInfo); + static void setNoDiskScanFlag(Uint32 & requestInfo, Uint32 nodisk); }; /** @@ -66,15 +69,17 @@ * l = Lock Mode - 1 Bit 2 * h = Read Committed - 1 Bit 5 * z = Descending (TUX) - 1 Bit 6 + * d = No disk scan - 1 Bit 7 * * 1111111111222222222233 * 01234567890123456789012345678901 - * l hz + * l hzd */ #define AS_LOCK_MODE_SHIFT (2) #define AS_LOCK_MODE_MASK (1) #define AS_READ_COMMITTED_SHIFT (5) #define AS_DESCENDING_SHIFT (6) +#define AS_NO_DISK_SCAN (7) inline Uint32 @@ -113,6 +118,19 @@ AccScanReq::setDescendingFlag(UintR & requestInfo, UintR val){ ASSERT_BOOL(val, "AccScanReq::setDescendingFlag"); requestInfo |= (val << AS_DESCENDING_SHIFT); +} + +inline +Uint32 +AccScanReq::getNoDiskScanFlag(const Uint32 & requestInfo){ + return (requestInfo >> AS_NO_DISK_SCAN) & 1; +} + +inline +void +AccScanReq::setNoDiskScanFlag(UintR & requestInfo, UintR val){ + ASSERT_BOOL(val, "AccScanReq::setNoDiskScanFlag"); + requestInfo |= (val << AS_NO_DISK_SCAN); } class AccScanConf { --- 1.83/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2005-11-23 10:12:40 +01:00 +++ 1.84/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp 2005-11-24 16:11:31 +01:00 @@ -7616,6 +7616,8 @@ AccScanReq::setLockMode(req->requestInfo, scanptr.p->scanLockMode); AccScanReq::setReadCommittedFlag(req->requestInfo, scanptr.p->readCommitted); AccScanReq::setDescendingFlag(req->requestInfo, scanptr.p->descending); + AccScanReq::setNoDiskScanFlag(req->requestInfo, + !tcConnectptr.p->m_disk_table); req->transId1 = tcConnectptr.p->transid[0]; req->transId2 = tcConnectptr.p->transid[1]; req->savePointId = tcConnectptr.p->savePointId; --- 1.94/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp 2005-11-23 07:50:51 +01:00 +++ 1.95/storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp 2005-11-24 16:11:31 +01:00 @@ -328,6 +328,7 @@ } else { abort(); } + col->m_impl.m_storageType = NDB_STORAGETYPE_MEMORY; return col; } --- 1.10/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp 2005-11-24 12:03:22 +01:00 +++ 1.11/storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp 2005-11-24 16:11:31 +01:00 @@ -60,8 +60,9 @@ jam(); break; } - if (tablePtr.p->m_attributes[DD].m_no_of_fixsize + - tablePtr.p->m_attributes[DD].m_no_of_varsize > 0) { + if (!AccScanReq::getNoDiskScanFlag(req->requestInfo) + && tablePtr.p->m_no_of_disk_attributes) + { bits |= ScanOp::SCAN_DD; } bool mm = (bits & ScanOp::SCAN_DD);