diff options
author | unknown <joreland@mysql.com> | 2004-10-31 22:21:51 +0100 |
---|---|---|
committer | unknown <joreland@mysql.com> | 2004-10-31 22:21:51 +0100 |
commit | 397a2a17bcfb3eca700eab2c8bb8457d268ea25c (patch) | |
tree | 460813cb1c0c571fe5b464b1e93319f07bf21f96 /ndb/include | |
parent | bc26963aa132e41ed349fccd8307e1b3ff556215 (diff) | |
download | mariadb-git-397a2a17bcfb3eca700eab2c8bb8457d268ea25c.tar.gz |
wl1540, 1802
Index scan/lookup (only scan specific fragment)
ndb/include/kernel/signaldata/TcIndx.hpp:
Removed TxIndxReq
ndb/include/ndbapi/NdbDictionary.hpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/include/ndbapi/NdbOperation.hpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/include/util/md5_hash.hpp:
Added possibility to get all 4 32-bit hash values
ndb/src/common/debugger/signaldata/SignalDataPrint.cpp:
Removed TxIndxReq
ndb/src/common/debugger/signaldata/TcIndx.cpp:
Removed TxIndxReq
ndb/src/common/util/md5_hash.cpp:
Added possibility to get all 4 32-bit hash values
ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
removed fragbits from hash value
ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
removed unused frag offset (k+fragbits)
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
removed unused frag offset (k+fragbits)
ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
Removed TxIndxReq
Removed distribution group
Added possibility for API to set fragment hash value
Split hashvalue into 2 32bit words
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
Removed TxIndxReq
Removed distribution group
Added possibility for API to set fragment hash value
Split hashvalue into 2 32bit words
ndb/src/kernel/blocks/dbtux/Dbtux.hpp:
removed unused frag offset (k+fragbits)
ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp:
removed unused frag offset (k+fragbits)
ndb/src/ndbapi/NdbApiSignal.cpp:
Removed TxIndxReq
ndb/src/ndbapi/NdbDictionary.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbDictionaryImpl.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbDictionaryImpl.hpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbIndexOperation.cpp:
Removed TxIndxReq
ndb/src/ndbapi/NdbOperation.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbOperationDefine.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbOperationExec.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/src/ndbapi/NdbOperationSearch.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/test/src/HugoOperations.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
ndb/test/src/NdbSchemaOp.cpp:
Removed
1) Tuple key
2) Distribution group
3) index only storage
Diffstat (limited to 'ndb/include')
-rw-r--r-- | ndb/include/kernel/signaldata/TcIndx.hpp | 374 | ||||
-rw-r--r-- | ndb/include/ndbapi/NdbDictionary.hpp | 10 | ||||
-rw-r--r-- | ndb/include/ndbapi/NdbOperation.hpp | 11 | ||||
-rw-r--r-- | ndb/include/util/md5_hash.hpp | 11 |
4 files changed, 18 insertions, 388 deletions
diff --git a/ndb/include/kernel/signaldata/TcIndx.hpp b/ndb/include/kernel/signaldata/TcIndx.hpp index 764d4e9fcd7..f82cd95878e 100644 --- a/ndb/include/kernel/signaldata/TcIndx.hpp +++ b/ndb/include/kernel/signaldata/TcIndx.hpp @@ -18,379 +18,7 @@ #define TC_INDX_H #include "SignalData.hpp" - -class TcIndxReq { - /** - * Reciver(s) - */ - friend class Dbtc; // Reciver - - /** - * Sender(s) - */ - friend class NdbIndexOperation; - - /** - * For printing - */ - friend bool printTCINDXREQ(FILE *, const Uint32 *, Uint32, Uint16); - -public: - /** - * Length of signal - */ - STATIC_CONST( StaticLength = 8 ); - STATIC_CONST( SignalLength = 25 ); - STATIC_CONST( MaxKeyInfo = 8 ); - STATIC_CONST( MaxAttrInfo = 5 ); - -private: - - enum CommitType { - CommitIfFailFree = 0, - TryCommit = 1, - CommitAsMuchAsPossible = 2 - }; - - /** - * DATA VARIABLES - */ -//------------------------------------------------------------- -// Unconditional part. First 8 words -//------------------------------------------------------------- - UintR apiConnectPtr; // DATA 0 - UintR senderData; // DATA 1 - UintR attrLen; // DATA 2 (including API Version) - UintR indexId; // DATA 3 - UintR requestInfo; // DATA 4 - UintR indexSchemaVersion; // DATA 5 - UintR transId1; // DATA 6 - UintR transId2; // DATA 7 -//------------------------------------------------------------- -// Conditional part. Those four words will be sent only if their -// indicator is set. -//------------------------------------------------------------- - UintR scanInfo; // DATA 8 - UintR distrGroupHashValue; // DATA 9 - UintR distributionKeySize; // DATA 10 - UintR storedProcId; // DATA 11 - -//------------------------------------------------------------- -// Variable sized key and attrinfo part. Those will be placed to -// pack the signal in an appropriate manner. -//------------------------------------------------------------- - UintR keyInfo[MaxKeyInfo]; // DATA 12 - 19 - UintR attrInfo[MaxAttrInfo]; // DATA 20 - 24 - - static Uint8 getAPIVersion(const UintR & attrLen); - - /** - * Get:ers for requestInfo - */ - static Uint8 getCommitFlag(const UintR & requestInfo); - static Uint8 getCommitType(const UintR & requestInfo); - static Uint8 getStartFlag(const UintR & requestInfo); - static Uint8 getSimpleFlag(const UintR & requestInfo); - static Uint8 getDirtyFlag(const UintR & requestInfo); - static Uint8 getInterpretedFlag(const UintR & requestInfo); - static Uint8 getDistributionGroupFlag(const UintR & requestInfo); - static Uint8 getDistributionGroupTypeFlag(const UintR & requestInfo); - static Uint8 getDistributionKeyFlag(const UintR & requestInfo); - static Uint8 getScanIndFlag(const UintR & requestInfo); - - static Uint8 getOperationType(const UintR & requestInfo); - - static Uint16 getIndexLength(const UintR & requestInfo); - static Uint8 getAIInTcIndxReq(const UintR & requestInfo); - - /** - * Get:ers for scanInfo - */ - - static void setAPIVersion(UintR & attrLen, Uint16 apiVersion); - - /** - * Set:ers for requestInfo - */ - static void clearRequestInfo(UintR & requestInfo); - static void setCommitType(UintR & requestInfo, Uint32 type); - static void setCommitFlag(UintR & requestInfo, Uint32 flag); - static void setStartFlag(UintR & requestInfo, Uint32 flag); - static void setSimpleFlag(UintR & requestInfo, Uint32 flag); - static void setDirtyFlag(UintR & requestInfo, Uint32 flag); - static void setInterpretedFlag(UintR & requestInfo, Uint32 flag); - static void setDistributionGroupFlag(UintR & requestInfo, Uint32 flag); - static void setDistributionGroupTypeFlag(UintR & requestInfo, Uint32 flag); - static void setDistributionKeyFlag(UintR & requestInfo, Uint32 flag); - static void setScanIndFlag(UintR & requestInfo, Uint32 flag); - - static void setOperationType(UintR & requestInfo, Uint32 type); - - static void setIndexLength(UintR & requestInfo, Uint32 len); - static void setAIInTcIndxReq(UintR & requestInfo, Uint32 len); - - /** - * Set:ers for scanInfo - */ - -}; - -#define API_VER_NO_SHIFT (16) -#define API_VER_NO_MASK (65535) - -/** - * Request Info - * - a = Attr Info in TCINDXREQ - 3 Bits -> Max 7 (Bit 16-18) - b = Distribution Key Ind - 1 Bit 2 - c = Commit Indicator - 1 Bit 4 - d = Dirty Indicator - 1 Bit 0 - e = Scan Indicator - 1 Bit 14 - g = Distribution Group Ind - 1 Bit 1 - i = Interpreted Indicator - 1 Bit 15 - k = Index lengt - 12 Bits -> Max 4095 (Bit 20 - 31) - o = Operation Type - 3 Bits -> Max 7 (Bit 5-7) - p = Simple Indicator - 1 Bit 8 - s = Start Indicator - 1 Bit 11 - t = Distribution GroupType - 1 Bit 3 - y = Commit Type - 2 Bit 12-13 - x = Last Op in execute - 1 Bit 19 - - 1111111111222222222233 - 01234567890123456789012345678901 - dgbtcooop syyeiaaa-kkkkkkkkkkkk -*/ - -#define COMMIT_SHIFT (4) -#define START_SHIFT (11) -#define SIMPLE_SHIFT (8) -#define DIRTY_SHIFT (0) -#define INTERPRETED_SHIFT (15) -#define DISTR_GROUP_SHIFT (1) -#define DISTR_GROUP_TYPE_SHIFT (3) -#define DISTR_KEY_SHIFT (2) -#define SCAN_SHIFT (14) - -#define OPERATION_SHIFT (5) -#define OPERATION_MASK (7) - -#define AINFO_SHIFT (16) -#define AINFO_MASK (7) - -#define INDEX_LEN_SHIFT (20) -#define INDEX_LEN_MASK (4095) - -#define COMMIT_TYPE_SHIFT (12) -#define COMMIT_TYPE_MASK (3) - -#define LAST_OP_IN_EXEC_SHIFT (19) - -/** - * Scan Info - * - - - 1111111111222222222233 - 01234567890123456789012345678901 - -*/ - -inline -Uint8 -TcIndxReq::getCommitFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> COMMIT_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getCommitType(const UintR & requestInfo){ - return (Uint8)((requestInfo >> COMMIT_TYPE_SHIFT) & COMMIT_TYPE_MASK); -} - -inline -Uint8 -TcIndxReq::getStartFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> START_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getSimpleFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> SIMPLE_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getDirtyFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> DIRTY_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getInterpretedFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> INTERPRETED_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getDistributionGroupFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> DISTR_GROUP_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getDistributionGroupTypeFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> DISTR_GROUP_TYPE_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getDistributionKeyFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> DISTR_KEY_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getScanIndFlag(const UintR & requestInfo){ - return (Uint8)((requestInfo >> SCAN_SHIFT) & 1); -} - -inline -Uint8 -TcIndxReq::getOperationType(const UintR & requestInfo){ - return (Uint8)((requestInfo >> OPERATION_SHIFT) & OPERATION_MASK); -} - -inline -Uint16 -TcIndxReq::getIndexLength(const UintR & requestInfo){ - return (Uint16)((requestInfo >> INDEX_LEN_SHIFT) & INDEX_LEN_MASK); -} - -inline -Uint8 -TcIndxReq::getAIInTcIndxReq(const UintR & requestInfo){ - return (Uint8)((requestInfo >> AINFO_SHIFT) & AINFO_MASK); -} - -inline -void -TcIndxReq::clearRequestInfo(UintR & requestInfo){ - requestInfo = 0; -} - -inline -void -TcIndxReq::setCommitType(UintR & requestInfo, Uint32 type){ - ASSERT_MAX(type, COMMIT_TYPE_MASK, "TcIndxReq::setCommitType"); - requestInfo |= (type << COMMIT_TYPE_SHIFT); -} - -inline -void -TcIndxReq::setCommitFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setCommitFlag"); - requestInfo &= ~(1 << COMMIT_SHIFT); - requestInfo |= (flag << COMMIT_SHIFT); -} - -inline -void -TcIndxReq::setStartFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setStartFlag"); - requestInfo &= ~(1 << START_SHIFT); - requestInfo |= (flag << START_SHIFT); -} - -inline -void -TcIndxReq::setSimpleFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setSimpleFlag"); - requestInfo &= ~(1 << SIMPLE_SHIFT); - requestInfo |= (flag << SIMPLE_SHIFT); -} - -inline -void -TcIndxReq::setDirtyFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setDirtyFlag"); - requestInfo &= ~(1 << DIRTY_SHIFT); - requestInfo |= (flag << DIRTY_SHIFT); -} - -inline -void -TcIndxReq::setInterpretedFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setInterpretedFlag"); - requestInfo &= ~(1 << INTERPRETED_SHIFT); - requestInfo |= (flag << INTERPRETED_SHIFT); -} - -inline -void -TcIndxReq::setDistributionGroupTypeFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setDistributionGroupTypeFlag"); - requestInfo &= ~(1 << DISTR_GROUP_TYPE_SHIFT); - requestInfo |= (flag << DISTR_GROUP_TYPE_SHIFT); -} - -inline -void -TcIndxReq::setDistributionGroupFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setDistributionGroupFlag"); - requestInfo &= ~(1 << DISTR_GROUP_SHIFT); - requestInfo |= (flag << DISTR_GROUP_SHIFT); -} - -inline -void -TcIndxReq::setDistributionKeyFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setDistributionKeyFlag"); - requestInfo &= ~(1 << DISTR_KEY_SHIFT); - requestInfo |= (flag << DISTR_KEY_SHIFT); -} - -inline -void -TcIndxReq::setScanIndFlag(UintR & requestInfo, Uint32 flag){ - ASSERT_BOOL(flag, "TcIndxReq::setScanIndFlag"); - requestInfo &= ~(1 << SCAN_SHIFT); - requestInfo |= (flag << SCAN_SHIFT); -} - -inline -void -TcIndxReq::setOperationType(UintR & requestInfo, Uint32 type){ - ASSERT_MAX(type, OPERATION_MASK, "TcIndxReq::setOperationType"); - requestInfo |= (type << OPERATION_SHIFT); -} - -inline -void -TcIndxReq::setIndexLength(UintR & requestInfo, Uint32 len){ - ASSERT_MAX(len, INDEX_LEN_MASK, "TcIndxReq::setKeyLength"); - requestInfo |= (len << INDEX_LEN_SHIFT); -} - -inline -void -TcIndxReq::setAIInTcIndxReq(UintR & requestInfo, Uint32 len){ - ASSERT_MAX(len, AINFO_MASK, "TcIndxReq::setAIInTcIndxReq"); - requestInfo |= (len << AINFO_SHIFT); -} - -inline -Uint8 -TcIndxReq::getAPIVersion(const UintR & anAttrLen){ - return (Uint16)((anAttrLen >> API_VER_NO_SHIFT) & API_VER_NO_MASK); -} - -inline -void -TcIndxReq::setAPIVersion(UintR & anAttrLen, Uint16 apiVersion){ -// ASSERT_MAX(apiVersion, API_VER_NO_MASK, "TcIndxReq::setAPIVersion"); - anAttrLen |= (apiVersion << API_VER_NO_SHIFT); -} +#include "TcKeyReq.hpp" class TcIndxConf { diff --git a/ndb/include/ndbapi/NdbDictionary.hpp b/ndb/include/ndbapi/NdbDictionary.hpp index 51a6895648f..0444b565a16 100644 --- a/ndb/include/ndbapi/NdbDictionary.hpp +++ b/ndb/include/ndbapi/NdbDictionary.hpp @@ -371,16 +371,6 @@ public: /** @} *******************************************************************/ #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL - void setTupleKey(bool); - bool getTupleKey() const; - - void setDistributionGroup(bool, int bits = 16); - bool getDistributionGroup() const; - int getDistributionGroupBits() const; - - void setIndexOnlyStorage(bool); - bool getIndexOnlyStorage() const; - const Table * getBlobTable() const; /** diff --git a/ndb/include/ndbapi/NdbOperation.hpp b/ndb/include/ndbapi/NdbOperation.hpp index 8e0294e41e6..72ab2c879cf 100644 --- a/ndb/include/ndbapi/NdbOperation.hpp +++ b/ndb/include/ndbapi/NdbOperation.hpp @@ -719,6 +719,12 @@ public: LockMode getLockMode() const { return theLockMode; } + /** + * Set/get distribution key + */ + void setDistributionKey(Uint32 key); + Uint32 getDistributionKey() const; + protected: /****************************************************************************** * These are the methods used to create and delete the NdbOperation objects. @@ -893,8 +899,7 @@ protected: Uint32 theMagicNumber; // Magic number to verify that object // is correct Uint32 theScanInfo; // Scan info bits (take over flag etc) - Uint32 theDistrKeySize; // Distribution Key size if used - Uint32 theDistributionGroup; // Distribution Group if used + Uint32 theDistributionKey; // Distribution Key size if used Uint32 theSubroutineSize; // Size of subroutines for interpretation Uint32 theInitialReadSize; // Size of initial reads for interpretation @@ -907,8 +912,6 @@ protected: Uint8 theSimpleIndicator; // Indicator of whether simple operation Uint8 theDirtyIndicator; // Indicator of whether dirty operation Uint8 theInterpretIndicator; // Indicator of whether interpreted operation - Uint8 theDistrGroupIndicator; // Indicates whether distribution grp is used - Uint8 theDistrGroupType; // Type of distribution group used Uint8 theDistrKeyIndicator; // Indicates whether distr. key is used Uint16 m_tcReqGSN; diff --git a/ndb/include/util/md5_hash.hpp b/ndb/include/util/md5_hash.hpp index 4c3cf239881..b79dce3b5a9 100644 --- a/ndb/include/util/md5_hash.hpp +++ b/ndb/include/util/md5_hash.hpp @@ -20,6 +20,15 @@ #include <ndb_types.h> // External declaration of hash function -Uint32 md5_hash(const Uint64* keybuf, Uint32 no_of_32_words); +void md5_hash(Uint32 result[4], const Uint64* keybuf, Uint32 no_of_32_words); + +inline +Uint32 +md5_hash(const Uint64* keybuf, Uint32 no_of_32_words) +{ + Uint32 result[4]; + md5_hash(result, keybuf, no_of_32_words); + return result[0]; +} #endif |