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

📄 trix.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 TRIX_H#define TRIX_H#include <SimulatedBlock.hpp>#include <trigger_definitions.h>#include <DataBuffer.hpp>#include <ArrayList.hpp>#include <SimpleProperties.hpp>#include <signaldata/DictTabInfo.hpp>#include <signaldata/CreateTrig.hpp>#include <signaldata/BuildIndx.hpp>// Error codes#define INTERNAL_ERROR_ILLEGAL_CALL 4344#define INTERNAL_ERROR_TRIX_BUSY 4345/** * TRIX - This block manages triggers and index (in coop with DICT) */class Trix : public SimulatedBlock{public:  Trix(const class Configuration & conf);  virtual ~Trix();public:  // Subscription data, when communicating with SUMA  enum RequestType {    TABLE_REORG = 0,    INDEX_BUILD = 1  };  typedef DataBuffer<11> AttrOrderBuffer;private:  // Private attributes    BLOCK_DEFINES(Trix);  // Declared but not defined  //DBtrix(const Trix &obj);  //void operator = (const Trix &);  // Block state  enum BlockState {    NOT_STARTED,    STARTED,    NODE_FAILURE,    IDLE,    BUSY  };  BlockState c_blockState;  // Node data needed when communicating with remote TRIX:es  struct NodeRecord {    bool alive;    BlockReference trixRef;    union {      Uint32 nextPool;      Uint32 nextList;    };    Uint32 prevList;  };    typedef Ptr<NodeRecord> NodeRecPtr;  /**   * The pool of node records   */  ArrayPool<NodeRecord> c_theNodeRecPool;  /**   * The list of other NDB nodes   */    ArrayList<NodeRecord> c_theNodes;  Uint32 c_masterNodeId;  BlockReference c_masterTrixRef;  Uint16 c_noNodesFailed;  Uint16 c_noActiveNodes;  AttrOrderBuffer::DataBufferPool c_theAttrOrderBufferPool;  struct SubscriptionRecord {    SubscriptionRecord(AttrOrderBuffer::DataBufferPool & aop):      attributeOrder(aop)    {}    RequestType requestType;    BlockReference userReference; // For user    Uint32 connectionPtr; // For user    Uint32 subscriptionId; // For Suma    Uint32 subscriptionKey; // For Suma    Uint32 prepareId; // For DbUtil    Uint32 indexType;    Uint32 sourceTableId;    Uint32 targetTableId;    AttrOrderBuffer attributeOrder;    Uint32 noOfIndexColumns;    Uint32 noOfKeyColumns;    Uint32 parallelism;    BuildIndxRef::ErrorCode errorCode;    bool subscriptionCreated;    bool pendingSubSyncContinueConf;    Uint32 expectedConf; // Count in n UTIL_EXECUTE_CONF + 1 SUB_SYNC_CONF    union {      Uint32 nextPool;      Uint32 nextList;    };    Uint32 prevList;  };    typedef Ptr<SubscriptionRecord> SubscriptionRecPtr;  /**   * The pool of node records   */  ArrayPool<SubscriptionRecord> c_theSubscriptionRecPool;  /**   * The list of other subscriptions   */    ArrayList<SubscriptionRecord> c_theSubscriptions;  // System start  void execREAD_CONFIG_REQ(Signal* signal);  void execSTTOR(Signal* signal);  void execNDB_STTOR(Signal* signal);  // Node management  void execREAD_NODESCONF(Signal* signal);  void execREAD_NODESREF(Signal* signal);  void execNODE_FAILREP(Signal* signal);  void execINCL_NODEREQ(Signal* signal);  // Debugging  void execDUMP_STATE_ORD(Signal* signal);  // Build index  void execBUILDINDXREQ(Signal* signal);  void execBUILDINDXCONF(Signal* signal);  void execBUILDINDXREF(Signal* signal);  void execUTIL_PREPARE_CONF(Signal* signal);  void execUTIL_PREPARE_REF(Signal* signal);  void execUTIL_EXECUTE_CONF(Signal* signal);  void execUTIL_EXECUTE_REF(Signal* signal);  void execUTIL_RELEASE_CONF(Signal* signal);  void execUTIL_RELEASE_REF(Signal* signal);  // Suma signals  void execSUB_CREATE_CONF(Signal* signal);  void execSUB_CREATE_REF(Signal* signal);  void execSUB_REMOVE_CONF(Signal* signal);  void execSUB_REMOVE_REF(Signal* signal);  void execSUB_SYNC_CONF(Signal* signal);  void execSUB_SYNC_REF(Signal* signal);  void execSUB_SYNC_CONTINUE_REQ(Signal* signal);  void execSUB_META_DATA(Signal* signal);  void execSUB_TABLE_DATA(Signal* signal);  // Utility functions  void setupSubscription(Signal* signal, SubscriptionRecPtr subRecPtr);  void setupTableScan(Signal* signal, SubscriptionRecPtr subRecPtr);  void startTableScan(Signal* signal, SubscriptionRecPtr subRecPtr);  void prepareInsertTransactions(Signal* signal, SubscriptionRecPtr subRecPtr);  void executeInsertTransaction(Signal* signal, SubscriptionRecPtr subRecPtr,				SegmentedSectionPtr headerPtr,				SegmentedSectionPtr dataPtr);  void buildComplete(Signal* signal, SubscriptionRecPtr subRecPtr);  void buildFailed(Signal* signal, 		   SubscriptionRecPtr subRecPtr, 		   BuildIndxRef::ErrorCode);  void checkParallelism(Signal* signal, SubscriptionRecord* subRec);};#endif

⌨️ 快捷键说明

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