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

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 CREATE_INDX_HPP
  14. #define CREATE_INDX_HPP
  15. #include "SignalData.hpp"
  16. #include <NodeBitmask.hpp>
  17. #include <signaldata/DictTabInfo.hpp>
  18. /**
  19.  * CreateIndxReq.
  20.  */
  21. class CreateIndxReq {
  22.   friend bool printCREATE_INDX_REQ(FILE*, const Uint32*, Uint32, Uint16);
  23. public:
  24.   enum RequestType {
  25.     RT_UNDEFINED = 0,
  26.     RT_USER = 1,
  27.     RT_DICT_PREPARE = 1 << 4,
  28.     RT_DICT_COMMIT = 0xC << 4,
  29.     RT_DICT_ABORT = 0xF << 4,
  30.     RT_TC = 5 << 8
  31.   };
  32.   STATIC_CONST( SignalLength = 8 );
  33.   SECTION( ATTRIBUTE_LIST_SECTION = 0 );
  34.   SECTION( INDEX_NAME_SECTION = 1 );
  35. private:
  36.   Uint32 m_connectionPtr;       // user "schema connection"
  37.   Uint32 m_userRef;             // user block reference
  38.   Uint32 m_requestInfo;
  39.   Uint32 m_tableId;             // table to index
  40.   Uint32 m_indexType;           // from DictTabInfo::TableType
  41.   Uint32 m_indexId;             // index table id set by DICT
  42.   Uint32 m_indexVersion;        // index table version set by DICT
  43.   Uint32 m_online;              // alter online
  44.   // extra
  45.   Uint32 m_opKey;
  46. public:
  47.   Uint32 getUserRef() const {
  48.     return m_userRef;
  49.   }
  50.   void setUserRef(Uint32 val) {
  51.     m_userRef = val;
  52.   }
  53.   Uint32 getConnectionPtr() const {
  54.     return m_connectionPtr;
  55.   }
  56.   void setConnectionPtr(Uint32 val) {
  57.     m_connectionPtr = val;
  58.   }
  59.   CreateIndxReq::RequestType getRequestType() const {
  60.     const Uint32 val = BitmaskImpl::getField(1, &m_requestInfo, 0, 16);
  61.     return (CreateIndxReq::RequestType)val;
  62.   }
  63.   void setRequestType(CreateIndxReq::RequestType val) {
  64.     m_requestInfo = (Uint32)val;
  65.   }
  66.   Uint32 getRequestFlag() const {
  67.     return BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  68.   };
  69.   void addRequestFlag(Uint32 val) {
  70.     val |= BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  71.     BitmaskImpl::setField(1, &m_requestInfo, 16, 16, val);
  72.   };
  73.   Uint32 getTableId() const {
  74.     return m_tableId;
  75.   }
  76.   void setTableId(Uint32 val) {
  77.     m_tableId = val;
  78.   }
  79.   DictTabInfo::TableType getIndexType() const {
  80.     return (DictTabInfo::TableType)m_indexType;
  81.   }
  82.   void setIndexType(DictTabInfo::TableType val) {
  83.     m_indexType = (Uint32)val;
  84.   }
  85.   Uint32 getIndexId() const {
  86.     return m_indexId;
  87.   }
  88.   void setIndexId(Uint32 val) {
  89.     m_indexId = val;
  90.   }
  91.   Uint32 getOnline() const {
  92.     return m_online;
  93.   }
  94.   void setOnline(Uint32 val) {
  95.     m_online = val;
  96.   }
  97.   Uint32 getIndexVersion() const {
  98.     return m_indexVersion;
  99.   }
  100.   void setIndexVersion(Uint32 val) {
  101.     m_indexVersion = val;
  102.   }
  103.   Uint32 getOpKey() const {
  104.     return m_opKey;
  105.   }
  106.   void setOpKey(Uint32 val) {
  107.     m_opKey = val;
  108.   }
  109. };
  110. /**
  111.  * CreateIndxConf.
  112.  */
  113. class CreateIndxConf {
  114.   friend bool printCREATE_INDX_CONF(FILE*, const Uint32*, Uint32, Uint16);
  115. public:
  116.   STATIC_CONST( InternalLength = 3 );
  117.   STATIC_CONST( SignalLength = 7 );
  118. private:
  119.   Uint32 m_connectionPtr;
  120.   Uint32 m_userRef;
  121.   Uint32 m_requestInfo;
  122.   Uint32 m_tableId;
  123.   Uint32 m_indexType;
  124.   Uint32 m_indexId;
  125.   Uint32 m_indexVersion;
  126. public:
  127.   Uint32 getUserRef() const {
  128.     return m_userRef;
  129.   }
  130.   void setUserRef(Uint32 val) {
  131.     m_userRef = val;
  132.   }
  133.   Uint32 getConnectionPtr() const {
  134.     return m_connectionPtr;
  135.   }
  136.   void setConnectionPtr(Uint32 val) {
  137.     m_connectionPtr = val;
  138.   }
  139.   CreateIndxReq::RequestType getRequestType() const {
  140.     return (CreateIndxReq::RequestType)m_requestInfo;
  141.   }
  142.   void setRequestType(CreateIndxReq::RequestType val) {
  143.     m_requestInfo = (Uint32)val;
  144.   }
  145.   Uint32 getTableId() const {
  146.     return m_tableId;
  147.   }
  148.   void setTableId(Uint32 val) {
  149.     m_tableId = val;
  150.   }
  151.   DictTabInfo::TableType getIndexType() const {
  152.     return (DictTabInfo::TableType)m_indexType;
  153.   }
  154.   void setIndexType(DictTabInfo::TableType val) {
  155.     m_indexType = (Uint32)val;
  156.   }
  157.   Uint32 getIndexId() const {
  158.     return m_indexId;
  159.   }
  160.   void setIndexId(Uint32 val) {
  161.     m_indexId = val;
  162.   }
  163.   Uint32 getIndexVersion() const {
  164.     return m_indexVersion;
  165.   }
  166.   void setIndexVersion(Uint32 val) {
  167.     m_indexVersion = val;
  168.   }
  169. };
  170. /**
  171.  * CreateIndxRef.
  172.  */
  173. struct CreateIndxRef {
  174.   friend bool printCREATE_INDX_REF(FILE*, const Uint32*, Uint32, Uint16);
  175. public:
  176.   STATIC_CONST( SignalLength = CreateIndxReq::SignalLength + 3 );
  177.   enum ErrorCode {
  178.     NoError = 0,
  179.     Busy = 701,
  180.     NotMaster = 702,
  181.     TriggerNotFound = 4238,
  182.     TriggerExists = 4239,
  183.     IndexNameTooLong = 4241,
  184.     TooManyIndexes = 4242,
  185.     IndexExists = 4244,
  186.     AttributeNotStored = 4245,
  187.     AttributeNullable = 4246,
  188.     BadRequestType = 4247,
  189.     InvalidName = 4248,
  190.     InvalidPrimaryTable = 4249,
  191.     InvalidIndexType = 4250,
  192.     NotUnique = 4251,
  193.     AllocationError = 4252,
  194.     CreateIndexTableFailed = 4253,
  195.     InvalidAttributeOrder = 4255
  196.   };
  197.   CreateIndxConf m_conf;
  198.   //Uint32 m_userRef;
  199.   //Uint32 m_connectionPtr;
  200.   //Uint32 m_requestInfo;
  201.   //Uint32 m_tableId;
  202.   //Uint32 m_indexType;
  203.   //Uint32 m_indexId;
  204.   //Uint32 m_indexVersion;
  205.   Uint32 m_errorCode;
  206.   Uint32 m_errorLine;
  207.   union {
  208.     Uint32 m_errorNode;
  209.     Uint32 masterNodeId; // If NotMaster
  210.   };
  211. public:
  212.   CreateIndxConf* getConf() {
  213.     return &m_conf;
  214.   }
  215.   const CreateIndxConf* getConf() const {
  216.     return &m_conf;
  217.   }
  218.   Uint32 getUserRef() const {
  219.     return m_conf.getUserRef();
  220.   }
  221.   void setUserRef(Uint32 val) {
  222.     m_conf.setUserRef(val);
  223.   }
  224.   Uint32 getConnectionPtr() const {
  225.     return m_conf.getConnectionPtr();
  226.   }
  227.   void setConnectionPtr(Uint32 val) {
  228.     m_conf.setConnectionPtr(val);
  229.   }
  230.   CreateIndxReq::RequestType getRequestType() const {
  231.     return m_conf.getRequestType();
  232.   }
  233.   void setRequestType(CreateIndxReq::RequestType val) {
  234.     m_conf.setRequestType(val);
  235.   }
  236.   Uint32 getTableId() const {
  237.     return m_conf.getTableId();
  238.   }
  239.   void setTableId(Uint32 val) {
  240.     m_conf.setTableId(val);
  241.   }
  242.   DictTabInfo::TableType getIndexType() const {
  243.     return m_conf.getIndexType();
  244.   }
  245.   void setIndexType(DictTabInfo::TableType val) {
  246.     m_conf.setIndexType(val);
  247.   }
  248.   Uint32 getIndexId() const {
  249.     return m_conf.getIndexId();
  250.   }
  251.   void setIndexId(Uint32 val) {
  252.     m_conf.setIndexId(val);
  253.   }
  254.   Uint32 getIndexVersion() const {
  255.     return m_conf.getIndexVersion();
  256.   }
  257.   void setIndexVersion(Uint32 val) {
  258.     m_conf.setIndexVersion(val);
  259.   }
  260.   CreateIndxRef::ErrorCode getErrorCode() const {
  261.     return (CreateIndxRef::ErrorCode)m_errorCode;
  262.   }
  263.   void setErrorCode(CreateIndxRef::ErrorCode val) {
  264.     m_errorCode = (Uint32)val;
  265.   }
  266.   Uint32 getErrorLine() const {
  267.     return m_errorLine;
  268.   }
  269.   void setErrorLine(Uint32 val) {
  270.     m_errorLine = val;
  271.   }
  272.   Uint32 getErrorNode() const {
  273.     return m_errorNode;
  274.   }
  275.   void setErrorNode(Uint32 val) {
  276.     m_errorNode = val;
  277.   }
  278. };
  279. #endif