diff options
author | unknown <pekka@mysql.com> | 2005-04-07 11:15:34 +0200 |
---|---|---|
committer | unknown <pekka@mysql.com> | 2005-04-07 11:15:34 +0200 |
commit | 19cedc5e3d0d6afe7b8a554ca40744d6dbb8eb9c (patch) | |
tree | b9b99bca2fec8601d5dab8bc93bed881d496de32 /ndb/include | |
parent | 5810ee1c9147e8aa0547c7241b3b701fb3915b90 (diff) | |
download | mariadb-git-19cedc5e3d0d6afe7b8a554ca40744d6dbb8eb9c.tar.gz |
ndb - wl-2455 TUP scan for testing in 5.0
ndb/include/ndbapi/NdbIndexScanOperation.hpp:
fix readTuples signature
ndb/include/ndbapi/NdbScanOperation.hpp:
fix readTuples signature
ndb/src/ndbapi/NdbScanOperation.cpp:
fix readTuples signature
ndb/test/include/HugoTransactions.hpp:
fix readTuples signature
ndb/test/ndbapi/testScanPerf.cpp:
fix readTuples signature
ndb/test/src/HugoOperations.cpp:
fix readTuples signature
ndb/test/src/HugoTransactions.cpp:
fix readTuples signature
ndb/test/ndbapi/testOIBasic.cpp:
fix readTuples signature
ndb/include/kernel/signaldata/AccScan.hpp:
TUP scan for testing in 5.0
ndb/include/kernel/signaldata/NextScan.hpp:
TUP scan for testing in 5.0
ndb/include/kernel/signaldata/ScanFrag.hpp:
TUP scan for testing in 5.0
ndb/include/kernel/signaldata/ScanTab.hpp:
TUP scan for testing in 5.0
ndb/src/common/debugger/signaldata/ScanTab.cpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dbtup/DbtupGen.cpp:
TUP scan for testing in 5.0
ndb/src/kernel/blocks/dbtup/Makefile.am:
TUP scan for testing in 5.0
ndb/test/ndbapi/testScan.cpp:
TUP scan for testing in 5.0
Diffstat (limited to 'ndb/include')
-rw-r--r-- | ndb/include/kernel/signaldata/AccScan.hpp | 3 | ||||
-rw-r--r-- | ndb/include/kernel/signaldata/NextScan.hpp | 2 | ||||
-rw-r--r-- | ndb/include/kernel/signaldata/ScanFrag.hpp | 19 | ||||
-rw-r--r-- | ndb/include/kernel/signaldata/ScanTab.hpp | 21 | ||||
-rw-r--r-- | ndb/include/ndbapi/NdbIndexScanOperation.hpp | 32 | ||||
-rw-r--r-- | ndb/include/ndbapi/NdbScanOperation.hpp | 26 |
6 files changed, 93 insertions, 10 deletions
diff --git a/ndb/include/kernel/signaldata/AccScan.hpp b/ndb/include/kernel/signaldata/AccScan.hpp index d1ca4424d1a..d94d4da8cca 100644 --- a/ndb/include/kernel/signaldata/AccScan.hpp +++ b/ndb/include/kernel/signaldata/AccScan.hpp @@ -34,6 +34,7 @@ class AccScanReq { */ friend class Dbacc; friend class Dbtux; + friend class Dbtup; public: STATIC_CONST( SignalLength = 8 ); @@ -120,6 +121,7 @@ class AccScanConf { */ friend class Dbacc; friend class Dbtux; + friend class Dbtup; /** * Reciver(s) @@ -148,6 +150,7 @@ private: class AccCheckScan { friend class Dbacc; friend class Dbtux; + friend class Dbtup; friend class Dblqh; enum { ZCHECK_LCP_STOP = 0, diff --git a/ndb/include/kernel/signaldata/NextScan.hpp b/ndb/include/kernel/signaldata/NextScan.hpp index 3a1882f94e8..a502a89108c 100644 --- a/ndb/include/kernel/signaldata/NextScan.hpp +++ b/ndb/include/kernel/signaldata/NextScan.hpp @@ -23,6 +23,7 @@ class NextScanReq { friend class Dblqh; friend class Dbacc; friend class Dbtux; + friend class Dbtup; public: // two sets of defs picked from lqh/acc enum ScanFlag { @@ -50,6 +51,7 @@ private: class NextScanConf { friend class Dbacc; friend class Dbtux; + friend class Dbtup; friend class Dblqh; public: // length is less if no keyinfo or no next result diff --git a/ndb/include/kernel/signaldata/ScanFrag.hpp b/ndb/include/kernel/signaldata/ScanFrag.hpp index e4b774f1416..f21a3eef7ac 100644 --- a/ndb/include/kernel/signaldata/ScanFrag.hpp +++ b/ndb/include/kernel/signaldata/ScanFrag.hpp @@ -57,6 +57,7 @@ public: static Uint32 getReadCommittedFlag(const Uint32 & requestInfo); static Uint32 getRangeScanFlag(const Uint32 & requestInfo); static Uint32 getDescendingFlag(const Uint32 & requestInfo); + static Uint32 getTupScanFlag(const Uint32 & requestInfo); static Uint32 getAttrLen(const Uint32 & requestInfo); static Uint32 getScanPrio(const Uint32 & requestInfo); @@ -66,6 +67,7 @@ public: static void setReadCommittedFlag(Uint32 & requestInfo, Uint32 readCommitted); static void setRangeScanFlag(Uint32 & requestInfo, Uint32 rangeScan); static void setDescendingFlag(Uint32 & requestInfo, Uint32 descending); + static void setTupScanFlag(Uint32 & requestInfo, Uint32 tupScan); static void setAttrLen(Uint32 & requestInfo, Uint32 attrLen); static void setScanPrio(Uint32& requestInfo, Uint32 prio); }; @@ -200,11 +202,12 @@ public: * r = read committed - 1 Bit 9 * x = range scan - 1 Bit 6 * z = descending - 1 Bit 10 + * t = tup scan -1 Bit 11 (implies x=z=0) * p = Scan prio - 4 Bits (12-15) -> max 15 * * 1111111111222222222233 * 01234567890123456789012345678901 - * lxhkrz ppppaaaaaaaaaaaaaaaa + * lxhkrztppppaaaaaaaaaaaaaaaa */ #define SF_LOCK_MODE_SHIFT (5) #define SF_LOCK_MODE_MASK (1) @@ -214,6 +217,7 @@ public: #define SF_READ_COMMITTED_SHIFT (9) #define SF_RANGE_SCAN_SHIFT (6) #define SF_DESCENDING_SHIFT (10) +#define SF_TUP_SCAN_SHIFT (11) #define SF_ATTR_LEN_SHIFT (16) #define SF_ATTR_LEN_MASK (65535) @@ -253,6 +257,12 @@ ScanFragReq::getDescendingFlag(const Uint32 & requestInfo){ inline Uint32 +ScanFragReq::getTupScanFlag(const Uint32 & requestInfo){ + return (requestInfo >> SF_TUP_SCAN_SHIFT) & 1; +} + +inline +Uint32 ScanFragReq::getReadCommittedFlag(const Uint32 & requestInfo){ return (requestInfo >> SF_READ_COMMITTED_SHIFT) & 1; } @@ -320,6 +330,13 @@ ScanFragReq::setDescendingFlag(UintR & requestInfo, UintR val){ inline void +ScanFragReq::setTupScanFlag(UintR & requestInfo, UintR val){ + ASSERT_BOOL(val, "ScanFragReq::setTupScanFlag"); + requestInfo |= (val << SF_TUP_SCAN_SHIFT); +} + +inline +void ScanFragReq::setAttrLen(UintR & requestInfo, UintR val){ ASSERT_MAX(val, SF_ATTR_LEN_MASK, "ScanFragReq::setAttrLen"); requestInfo |= (val << SF_ATTR_LEN_SHIFT); diff --git a/ndb/include/kernel/signaldata/ScanTab.hpp b/ndb/include/kernel/signaldata/ScanTab.hpp index 894f973145c..8cb282270ff 100644 --- a/ndb/include/kernel/signaldata/ScanTab.hpp +++ b/ndb/include/kernel/signaldata/ScanTab.hpp @@ -81,6 +81,7 @@ private: static Uint8 getReadCommittedFlag(const UintR & requestInfo); static Uint8 getRangeScanFlag(const UintR & requestInfo); static Uint8 getDescendingFlag(const UintR & requestInfo); + static Uint8 getTupScanFlag(const UintR & requestInfo); static Uint8 getKeyinfoFlag(const UintR & requestInfo); static Uint16 getScanBatch(const UintR & requestInfo); static Uint8 getDistributionKeyFlag(const UintR & requestInfo); @@ -95,6 +96,7 @@ private: static void setReadCommittedFlag(UintR & requestInfo, Uint32 flag); static void setRangeScanFlag(UintR & requestInfo, Uint32 flag); static void setDescendingFlag(UintR & requestInfo, Uint32 flag); + static void setTupScanFlag(UintR & requestInfo, Uint32 flag); static void setKeyinfoFlag(UintR & requestInfo, Uint32 flag); static void setScanBatch(Uint32& requestInfo, Uint32 sz); static void setDistributionKeyFlag(Uint32& requestInfo, Uint32 flag); @@ -108,6 +110,7 @@ private: h = Hold lock mode - 1 Bit 10 c = Read Committed - 1 Bit 11 k = Keyinfo - 1 Bit 12 + t = Tup scan - 1 Bit 13 z = Descending (TUX) - 1 Bit 14 x = Range Scan (TUX) - 1 Bit 15 b = Scan batch - 10 Bit 16-25 (max 1023) @@ -115,7 +118,7 @@ private: 1111111111222222222233 01234567890123456789012345678901 - ppppppppl hck zxbbbbbbbbbb + ppppppppl hcktzxbbbbbbbbbb */ #define PARALLELL_SHIFT (0) @@ -139,6 +142,9 @@ private: #define DESCENDING_SHIFT (14) #define DESCENDING_MASK (1) +#define TUP_SCAN_SHIFT (13) +#define TUP_SCAN_MASK (1) + #define SCAN_BATCH_SHIFT (16) #define SCAN_BATCH_MASK (1023) @@ -181,6 +187,12 @@ ScanTabReq::getDescendingFlag(const UintR & requestInfo){ } inline +Uint8 +ScanTabReq::getTupScanFlag(const UintR & requestInfo){ + return (Uint8)((requestInfo >> TUP_SCAN_SHIFT) & TUP_SCAN_MASK); +} + +inline Uint16 ScanTabReq::getScanBatch(const Uint32 & requestInfo){ return (Uint16)((requestInfo >> SCAN_BATCH_SHIFT) & SCAN_BATCH_MASK); @@ -235,6 +247,13 @@ ScanTabReq::setDescendingFlag(UintR & requestInfo, Uint32 flag){ } inline +void +ScanTabReq::setTupScanFlag(UintR & requestInfo, Uint32 flag){ + ASSERT_BOOL(flag, "ScanTabReq::setTupScanFlag"); + requestInfo |= (flag << TUP_SCAN_SHIFT); +} + +inline void ScanTabReq::setScanBatch(Uint32 & requestInfo, Uint32 flag){ ASSERT_MAX(flag, SCAN_BATCH_MASK, "ScanTabReq::setScanBatch"); diff --git a/ndb/include/ndbapi/NdbIndexScanOperation.hpp b/ndb/include/ndbapi/NdbIndexScanOperation.hpp index b91a2a90d11..0a31f228921 100644 --- a/ndb/include/ndbapi/NdbIndexScanOperation.hpp +++ b/ndb/include/ndbapi/NdbIndexScanOperation.hpp @@ -37,6 +37,17 @@ public: * readTuples using ordered index * * @param lock_mode Lock mode + * @param scan_flags see @ref ScanFlag + * @param parallel No of fragments to scan in parallel (0=max) + */ + virtual int readTuples(LockMode lock_mode = LM_Read, + Uint32 scan_flags = 0, Uint32 parallel = 0); + +#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL + /** + * readTuples using ordered index + * + * @param lock_mode Lock mode * @param batch No of rows to fetch from each fragment at a time * @param parallel No of fragments to scan in parallel * @param order_by Order result set in index order @@ -45,13 +56,20 @@ public: * @returns 0 for success and -1 for failure * @see NdbScanOperation::readTuples */ - int readTuples(LockMode lock_mode = LM_Read, - Uint32 batch = 0, - Uint32 parallel = 0, - bool order_by = false, - bool order_desc = false, - bool read_range_no = false); - + inline int readTuples(LockMode lock_mode, + Uint32 batch, + Uint32 parallel, + bool order_by, + bool order_desc = false, + bool read_range_no = false) { + Uint32 scan_flags = + (SF_OrderBy & -(Int32)order_by) | + (SF_Descending & -(Int32)order_desc) | + (SF_ReadRangeNo & -(Int32)read_range_no); + return readTuples(lock_mode, scan_flags, parallel); + } +#endif + /** * Type of ordered index key bound. The values (0-4) will not change * and can be used explicitly (e.g. they could be computed). diff --git a/ndb/include/ndbapi/NdbScanOperation.hpp b/ndb/include/ndbapi/NdbScanOperation.hpp index 5da717148b5..ef1bbcd185b 100644 --- a/ndb/include/ndbapi/NdbScanOperation.hpp +++ b/ndb/include/ndbapi/NdbScanOperation.hpp @@ -37,6 +37,29 @@ class NdbScanOperation : public NdbOperation { public: /** + * Scan flags. OR-ed together and passed as second argument to + * readTuples. + */ + enum ScanFlag { + SF_TupScan = (1 << 16), // scan TUP - only LM_CommittedRead + SF_OrderBy = (1 << 24), // index scan in order + SF_Descending = (2 << 24), // index scan in descending order + SF_ReadRangeNo = (4 << 24) // enable @ref get_range_no + }; + + /** + * readTuples + * + * @param lock_mode Lock mode + * @param scan_flags see @ref ScanFlag + * @param parallel No of fragments to scan in parallel (0=max) + */ + virtual + int readTuples(LockMode lock_mode = LM_Read, + Uint32 scan_flags = 0, Uint32 parallel = 0); + +#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED + /** * readTuples * * @param lock_mode Lock mode @@ -44,10 +67,11 @@ public: * @param parallel No of fragments to scan in parallell * @note specifying 0 for batch and parallall means max performance */ +#ifdef ndb_readtuples_impossible_overload int readTuples(LockMode lock_mode = LM_Read, Uint32 batch = 0, Uint32 parallel = 0); +#endif -#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED inline int readTuples(int parallell){ return readTuples(LM_Read, 0, parallell); } |