AlterIndx.hpp
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:6k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* Copyright (C) 2003 MySQL AB
  2.    This program is free software; you can redistribute it and/or modify
  3.    it under the terms of the GNU General Public License as published by
  4.    the Free Software Foundation; either version 2 of the License, or
  5.    (at your option) any later version.
  6.    This program is distributed in the hope that it will be useful,
  7.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9.    GNU General Public License for more details.
  10.    You should have received a copy of the GNU General Public License
  11.    along with this program; if not, write to the Free Software
  12.    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
  13. #ifndef ALTER_INDX_HPP
  14. #define ALTER_INDX_HPP
  15. #include "SignalData.hpp"
  16. #include <Bitmask.hpp>
  17. #include <trigger_definitions.h>
  18. /**
  19.  * AlterIndxReq.
  20.  */
  21. class AlterIndxReq {
  22.   friend bool printALTER_INDX_REQ(FILE*, const Uint32*, Uint32, Uint16);
  23. public:
  24.   enum RequestType {
  25.     RT_UNDEFINED = 0,
  26.     RT_USER = 1,
  27.     RT_CREATE_INDEX = 2,
  28.     RT_DROP_INDEX = 3,
  29.     RT_SYSTEMRESTART = 4,
  30.     RT_NODERESTART = 5,
  31.     RT_DICT_PREPARE = 1 << 4,
  32.     RT_DICT_TC = 5 << 4,
  33.     RT_DICT_COMMIT = 0xC << 4,
  34.     RT_DICT_ABORT = 0xF << 4,
  35.     RT_TC = 5 << 8,
  36.     RT_TUX = 8 << 8
  37.   };
  38.   STATIC_CONST( SignalLength = 7 );
  39. private:
  40.   Uint32 m_userRef;
  41.   Uint32 m_connectionPtr;
  42.   Uint32 m_requestInfo;
  43.   Uint32 m_tableId;
  44.   Uint32 m_indexId;             // only set by DICT
  45.   Uint32 m_indexVersion;
  46.   Uint32 m_online;              // new state 0-offline 1-online
  47.   // extra
  48.   Uint32 m_opKey;
  49. public:
  50.   Uint32 getUserRef() const {
  51.     return m_userRef;
  52.   }
  53.   void setUserRef(Uint32 val) {
  54.     m_userRef = val;
  55.   }
  56.   Uint32 getConnectionPtr() const {
  57.     return m_connectionPtr;
  58.   }
  59.   void setConnectionPtr(Uint32 val) {
  60.     m_connectionPtr = val;
  61.   }
  62.   AlterIndxReq::RequestType getRequestType() const {
  63.     const Uint32 val = BitmaskImpl::getField(1, &m_requestInfo, 0, 16);
  64.     return (AlterIndxReq::RequestType)val;
  65.   }
  66.   void setRequestType(AlterIndxReq::RequestType val) {
  67.     m_requestInfo = (Uint32)val;
  68.   }
  69.   Uint32 getRequestFlag() const {
  70.     return BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  71.   };
  72.   void addRequestFlag(Uint32 val) {
  73.     val |= BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  74.     BitmaskImpl::setField(1, &m_requestInfo, 16, 16, val);
  75.   };
  76.   Uint32 getTableId() const {
  77.     return m_tableId;
  78.   }
  79.   void setTableId(Uint32 val) {
  80.     m_tableId = val;
  81.   }
  82.   Uint32 getIndexId() const {
  83.     return m_indexId;
  84.   }
  85.   void setIndexId(Uint32 val) {
  86.     m_indexId = val;
  87.   }
  88.   Uint32 getIndexVersion() const {
  89.     return m_indexVersion;
  90.   }
  91.   void setIndexVersion(Uint32 val) {
  92.     m_indexVersion = val;
  93.   }
  94.   Uint32 getOnline() const {
  95.     return m_online;
  96.   }
  97.   void setOnline(Uint32 val) {
  98.     m_online = val;
  99.   }
  100.   Uint32 getOpKey() const {
  101.     return m_opKey;
  102.   }
  103.   void setOpKey(Uint32 val) {
  104.     m_opKey = val;
  105.   }
  106. };
  107. /**
  108.  * AlterIndxConf.
  109.  */
  110. class AlterIndxConf {
  111.   friend bool printALTER_INDX_CONF(FILE*, const Uint32*, Uint32, Uint16);
  112. public:
  113.   STATIC_CONST( InternalLength = 3 );
  114.   STATIC_CONST( SignalLength = 6 );
  115. private:
  116.   Uint32 m_userRef;
  117.   Uint32 m_connectionPtr;
  118.   Uint32 m_requestInfo;
  119.   Uint32 m_tableId;
  120.   Uint32 m_indexId;
  121.   Uint32 m_indexVersion;
  122. public:
  123.   Uint32 getUserRef() const {
  124.     return m_userRef;
  125.   }
  126.   void setUserRef(Uint32 val) {
  127.     m_userRef = val;
  128.   }
  129.   Uint32 getConnectionPtr() const {
  130.     return m_connectionPtr;
  131.   }
  132.   void setConnectionPtr(Uint32 val) {
  133.     m_connectionPtr = val;
  134.   }
  135.   AlterIndxReq::RequestType getRequestType() const {
  136.     return (AlterIndxReq::RequestType)m_requestInfo;
  137.   }
  138.   void setRequestType(AlterIndxReq::RequestType val) {
  139.     m_requestInfo = (Uint32)val;
  140.   }
  141.   Uint32 getTableId() const {
  142.     return m_tableId;
  143.   }
  144.   void setTableId(Uint32 val) {
  145.     m_tableId = val;
  146.   }
  147.   Uint32 getIndexId() const {
  148.     return m_indexId;
  149.   }
  150.   void setIndexId(Uint32 val) {
  151.     m_indexId = val;
  152.   }
  153.   Uint32 getIndexVersion() const {
  154.     return m_indexVersion;
  155.   }
  156.   void setIndexVersion(Uint32 val) {
  157.     m_indexVersion = val;
  158.   }
  159. };
  160. /**
  161.  * AlterIndxRef.
  162.  */
  163. class AlterIndxRef {
  164.   friend bool printALTER_INDX_REF(FILE*, const Uint32*, Uint32, Uint16);
  165. public:
  166.   enum ErrorCode {
  167.     NoError = 0,
  168.     Busy = 701,
  169.     NotMaster = 702,
  170.     IndexNotFound = 4243,
  171.     IndexExists = 4244,
  172.     BadRequestType = 4247,
  173.     NotAnIndex = 4254,
  174.     BadState = 4347,
  175.     Inconsistency = 4348
  176.   };
  177.   STATIC_CONST( SignalLength = AlterIndxConf::SignalLength + 3 );
  178. private:
  179.   AlterIndxConf m_conf;
  180.   //Uint32 m_userRef;
  181.   //Uint32 m_connectionPtr;
  182.   //Uint32 m_requestInfo;
  183.   //Uint32 m_tableId;
  184.   //Uint32 m_indexId;
  185.   //Uint32 m_indexVersion;
  186.   Uint32 m_errorCode;
  187.   Uint32 m_errorLine;
  188.   union {
  189.     Uint32 m_errorNode;
  190.     Uint32 masterNodeId; // if NotMaster
  191.   };
  192. public:
  193.   AlterIndxConf* getConf() {
  194.     return &m_conf;
  195.   }
  196.   const AlterIndxConf* getConf() const {
  197.     return &m_conf;
  198.   }
  199.   Uint32 getUserRef() const {
  200.     return m_conf.getUserRef();
  201.   }
  202.   void setUserRef(Uint32 val) {
  203.     m_conf.setUserRef(val);
  204.   }
  205.   Uint32 getConnectionPtr() const {
  206.     return m_conf.getConnectionPtr();
  207.   }
  208.   void setConnectionPtr(Uint32 val) {
  209.     m_conf.setConnectionPtr(val);
  210.   }
  211.   AlterIndxReq::RequestType getRequestType() const {
  212.     return m_conf.getRequestType();
  213.   }
  214.   void setRequestType(AlterIndxReq::RequestType val) {
  215.     m_conf.setRequestType(val);
  216.   }
  217.   Uint32 getTableId() const {
  218.     return m_conf.getTableId();
  219.   }
  220.   void setTableId(Uint32 val) {
  221.     m_conf.setTableId(val);
  222.   }
  223.   Uint32 getIndexId() const {
  224.     return m_conf.getIndexId();
  225.   }
  226.   void setIndexId(Uint32 val) {
  227.     m_conf.setIndexId(val);
  228.   }
  229.   Uint32 getIndexVersion() const {
  230.     return m_conf.getIndexVersion();
  231.   }
  232.   void setIndexVersion(Uint32 val) {
  233.     m_conf.setIndexVersion(val);
  234.   }
  235.   AlterIndxRef::ErrorCode getErrorCode() const {
  236.     return (AlterIndxRef::ErrorCode)m_errorCode;
  237.   }
  238.   void setErrorCode(AlterIndxRef::ErrorCode val) {
  239.     m_errorCode = (Uint32)val;
  240.   }
  241.   Uint32 getErrorLine() const {
  242.     return m_errorLine;
  243.   }
  244.   void setErrorLine(Uint32 val) {
  245.     m_errorLine = val;
  246.   }
  247.   Uint32 getErrorNode() const {
  248.     return m_errorNode;
  249.   }
  250.   void setErrorNode(Uint32 val) {
  251.     m_errorNode = val;
  252.   }
  253. };
  254. #endif