⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scantab.hpp

📁 mysql-5.0.22.tar.gz源码包
💻 HPP
字号:
/* Copyright (C) 2003 MySQL AB   This program is free software; you can redistribute it and/or modify   it under the terms of the GNU General Public License as published by   the Free Software Foundation; either version 2 of the License, or   (at your option) any later version.   This program is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the   GNU General Public License for more details.   You should have received a copy of the GNU General Public License   along with this program; if not, write to the Free Software   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */#ifndef SCAN_TAB_H#define SCAN_TAB_H#include "SignalData.hpp"/** *  * SENDER:  API * RECIVER: Dbtc */class ScanTabReq {  /**   * Reciver(s)   */  friend class Dbtc;         // Reciver  /**   * Sender(s)   */  friend class NdbTransaction;  friend class NdbScanOperation;  friend class NdbIndexScanOperation;  /**   * For printing   */  friend bool printSCANTABREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo);public:  /**   * Length of signal   */  STATIC_CONST( StaticLength = 11 );private:  // Type definitions  /**   * DATA VARIABLES   */  UintR apiConnectPtr;        // DATA 0  UintR attrLenKeyLen;        // DATA 1  UintR requestInfo;          // DATA 2  UintR tableId;              // DATA 3  UintR tableSchemaVersion;   // DATA 4  UintR storedProcId;         // DATA 5  UintR transId1;             // DATA 6  UintR transId2;             // DATA 7  UintR buddyConPtr;          // DATA 8  UintR batch_byte_size;      // DATA 9  UintR first_batch_size;     // DATA 10  /**   * Optional   */  Uint32 distributionKey;  /**   * Get:ers for requestInfo   */  static Uint8 getParallelism(const UintR & requestInfo);  static Uint8 getLockMode(const UintR & requestInfo);  static Uint8 getHoldLockFlag(const UintR & requestInfo);  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);  /**   * Set:ers for requestInfo   */  static void clearRequestInfo(UintR & requestInfo);  static void setParallelism(UintR & requestInfo, Uint32 flag);  static void setLockMode(UintR & requestInfo, Uint32 flag);  static void setHoldLockFlag(UintR & requestInfo, Uint32 flag);  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);};/** * Request Info * p = Parallelism           - 8  Bits -> Max 256 (Bit 0-7) l = Lock mode             - 1  Bit 8 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) d = Distribution key flag           1111111111222222222233 01234567890123456789012345678901 ppppppppl hcktzxbbbbbbbbbb*/#define PARALLELL_SHIFT     (0)#define PARALLELL_MASK      (255)#define LOCK_MODE_SHIFT     (8)#define LOCK_MODE_MASK      (1)#define HOLD_LOCK_SHIFT     (10)#define HOLD_LOCK_MASK      (1)#define KEYINFO_SHIFT       (12)#define KEYINFO_MASK        (1)#define READ_COMMITTED_SHIFT     (11)#define READ_COMMITTED_MASK      (1)#define RANGE_SCAN_SHIFT        (15)#define RANGE_SCAN_MASK         (1)#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)#define SCAN_DISTR_KEY_SHIFT (26)inlineUint8ScanTabReq::getParallelism(const UintR & requestInfo){  return (Uint8)((requestInfo >> PARALLELL_SHIFT) & PARALLELL_MASK);}inlineUint8ScanTabReq::getLockMode(const UintR & requestInfo){  return (Uint8)((requestInfo >> LOCK_MODE_SHIFT) & LOCK_MODE_MASK);}inlineUint8ScanTabReq::getHoldLockFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> HOLD_LOCK_SHIFT) & HOLD_LOCK_MASK);}inlineUint8ScanTabReq::getReadCommittedFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> READ_COMMITTED_SHIFT) & READ_COMMITTED_MASK);}inlineUint8ScanTabReq::getRangeScanFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> RANGE_SCAN_SHIFT) & RANGE_SCAN_MASK);}inlineUint8ScanTabReq::getDescendingFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> DESCENDING_SHIFT) & DESCENDING_MASK);}inlineUint8ScanTabReq::getTupScanFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> TUP_SCAN_SHIFT) & TUP_SCAN_MASK);}inlineUint16ScanTabReq::getScanBatch(const Uint32 & requestInfo){  return (Uint16)((requestInfo >> SCAN_BATCH_SHIFT) & SCAN_BATCH_MASK);}inlinevoid ScanTabReq::clearRequestInfo(UintR & requestInfo){  requestInfo = 0;}inlinevoid ScanTabReq::setParallelism(UintR & requestInfo, Uint32 type){  ASSERT_MAX(type, PARALLELL_MASK, "ScanTabReq::setParallellism");  requestInfo |= (type << PARALLELL_SHIFT);}inlinevoid ScanTabReq::setLockMode(UintR & requestInfo, Uint32 mode){  ASSERT_MAX(mode, LOCK_MODE_MASK,  "ScanTabReq::setLockMode");  requestInfo |= (mode << LOCK_MODE_SHIFT);}inlinevoid ScanTabReq::setHoldLockFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setHoldLockFlag");  requestInfo |= (flag << HOLD_LOCK_SHIFT);}inlinevoid ScanTabReq::setReadCommittedFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setReadCommittedFlag");  requestInfo |= (flag << READ_COMMITTED_SHIFT);}inlinevoid ScanTabReq::setRangeScanFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setRangeScanFlag");  requestInfo |= (flag << RANGE_SCAN_SHIFT);}inlinevoid ScanTabReq::setDescendingFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setDescendingFlag");  requestInfo |= (flag << DESCENDING_SHIFT);}inlinevoid ScanTabReq::setTupScanFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setTupScanFlag");  requestInfo |= (flag << TUP_SCAN_SHIFT);}inlinevoidScanTabReq::setScanBatch(Uint32 & requestInfo, Uint32 flag){  ASSERT_MAX(flag, SCAN_BATCH_MASK,  "ScanTabReq::setScanBatch");  requestInfo &= ~(SCAN_BATCH_MASK << SCAN_BATCH_SHIFT);  requestInfo |= (flag << SCAN_BATCH_SHIFT);}inlineUint8ScanTabReq::getKeyinfoFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> KEYINFO_SHIFT) & KEYINFO_MASK);}inlinevoid ScanTabReq::setKeyinfoFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setKeyinfoFlag");  requestInfo |= (flag << KEYINFO_SHIFT);}inlineUint8ScanTabReq::getDistributionKeyFlag(const UintR & requestInfo){  return (Uint8)((requestInfo >> SCAN_DISTR_KEY_SHIFT) & 1);}inlinevoid ScanTabReq::setDistributionKeyFlag(UintR & requestInfo, Uint32 flag){  ASSERT_BOOL(flag, "ScanTabReq::setKeyinfoFlag");  requestInfo |= (flag << SCAN_DISTR_KEY_SHIFT);}/** *  * SENDER:  Dbtc * RECIVER: API */class ScanTabConf {  /**   * Reciver(s)    */  friend class NdbTransaction;         // Reciver  /**   * Sender(s)   */  friend class Dbtc;   /**   * For printing   */  friend bool printSCANTABCONF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo);public:  /**   * Length of signal   */  STATIC_CONST( SignalLength = 4 );  STATIC_CONST( EndOfData = (1 << 31) );  private:  // Type definitions  /**   * DATA VARIABLES   */  UintR apiConnectPtr;        // DATA 0  UintR requestInfo;          // DATA 1  UintR transId1;             // DATA 2  UintR transId2;             // DATA 3  struct OpData {    Uint32 apiPtrI;    Uint32 tcPtrI;    Uint32 info;  };  static Uint32 getLength(Uint32 opDataInfo) { return opDataInfo >> 10; };  static Uint32 getRows(Uint32 opDataInfo) { return opDataInfo & 1023;}};/** * request info * o = received operations        - 7  Bits -> Max 255 (Bit 0-7) s = status of scan             - 2  Bits -> Max ??? (Bit 8-?)            1111111111222222222233 01234567890123456789012345678901 ooooooooss*/#define OPERATIONS_SHIFT     (0)#define OPERATIONS_MASK      (0xFF)#define STATUS_SHIFT     (8)#define STATUS_MASK      (0xFF)/** *  * SENDER:  Dbtc * RECIVER: API */class ScanTabRef {  /**   * Reciver(s)   */  friend class NdbTransaction;         // Reciver  /**   * Sender(s)   */  friend class Dbtc;   /**   * For printing   */  friend bool printSCANTABREF(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo);public:  /**   * Length of signal   */  STATIC_CONST( SignalLength = 5 );private:  // Type definitions  /**   * DATA VARIABLES   */  UintR apiConnectPtr;        // DATA 0  UintR transId1;             // DATA 1  UintR transId2;             // DATA 2  UintR errorCode;            // DATA 3  UintR closeNeeded;          // DATA 4 };/** *  * SENDER:  API * RECIVER: Dbtc */class ScanNextReq {  /**   * Reciver(s)   */  friend class Dbtc;         // Reciver  /**   * Sender(s)   */  friend class NdbOperation;   /**   * For printing   */  friend bool printSCANNEXTREQ(FILE * output, const Uint32 * theData, Uint32 len, Uint16 receiverBlockNo);public:  /**   * Length of signal   */  STATIC_CONST( SignalLength = 4 );private:  // Type definitions  /**   * DATA VARIABLES   */  UintR apiConnectPtr;        // DATA 0  UintR stopScan;             // DATA 1  UintR transId1;             // DATA 2  UintR transId2;             // DATA 3  // stopScan = 1, stop this scan };#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -