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

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_TABLE_HPP
  14. #define ALTER_TABLE_HPP
  15. #include "SignalData.hpp"
  16. /**
  17.  * AlterTable
  18.  *
  19.  * This signal is sent by API to DICT/TRIX
  20.  * as a request to alter a secondary index
  21.  * and then from TRIX to TRIX(n) and TRIX to TC.
  22.  */
  23. class AlterTableReq {
  24.   /**
  25.    * Sender(s)
  26.    */
  27.   // API
  28.   
  29.   /**
  30.    * Sender(s) / Reciver(s)
  31.    */
  32.   friend class NdbTableImpl;
  33.   friend class NdbDictInterface;
  34.   friend class Dbdict;
  35.   /**
  36.    * For printing
  37.    */
  38.   friend bool printALTER_TABLE_REQ(FILE*, const Uint32*, Uint32, Uint16);
  39. public:
  40.   STATIC_CONST( SignalLength = 5 );
  41.   
  42. private:
  43.   Uint32 senderData;
  44.   Uint32 senderRef;
  45.   Uint32 changeMask;
  46.   Uint32 tableId;
  47.   Uint32 tableVersion;
  48.   SECTION( DICT_TAB_INFO = 0 );
  49. /**
  50.  * ChangeMask
  51.  */
  52. /*
  53.   n = Changed name
  54.            1111111111222222222233
  55.  01234567890123456789012345678901
  56.  n-------------------------------
  57. */
  58. #define NAME_SHIFT        (0)
  59.  /**
  60.    * Getters and setters
  61.    */ 
  62.   static Uint8 getNameFlag(const UintR & changeMask);
  63.   static void setNameFlag(UintR &  changeMask, Uint32 nameFlg);
  64. };
  65. inline
  66. Uint8
  67. AlterTableReq::getNameFlag(const UintR & changeMask){
  68.   return (Uint8)((changeMask >> NAME_SHIFT) & 1);
  69. }
  70. inline
  71. void
  72. AlterTableReq::setNameFlag(UintR & changeMask, Uint32 nameFlg){
  73.   changeMask |= (nameFlg << NAME_SHIFT);
  74. }
  75. class AlterTableRef {
  76.   /**
  77.    * Sender(s)
  78.    */
  79.   friend class Dbdict;
  80.   
  81.   /**
  82.    * Sender(s) / Reciver(s)
  83.    */
  84.   friend class Ndbcntr;
  85.   friend class NdbDictInterface;
  86.   
  87.   /**
  88.    * For printing
  89.    */
  90.   friend bool printALTER_TABLE_REF(FILE *, const Uint32 *, Uint32, Uint16);
  91.   
  92. public:
  93.   STATIC_CONST( SignalLength = 7 );
  94.   enum ErrorCode {
  95.     NoError = 0,
  96.     InvalidTableVersion = 241,
  97.     DropInProgress      = 283,
  98.     Busy = 701,
  99.     NotMaster = 702,
  100.     InvalidFormat = 703,
  101.     AttributeNameTooLong = 704,
  102.     TableNameTooLong = 705,
  103.     Inconsistency = 706,
  104.     NoMoreTableRecords = 707,
  105.     NoMoreAttributeRecords = 708,
  106.     NoSuchTable = 709,
  107.     AttributeNameTwice = 720,
  108.     TableAlreadyExist = 721,
  109.     ArraySizeTooBig = 737,
  110.     RecordTooBig = 738,
  111.     InvalidPrimaryKeySize  = 739,
  112.     NullablePrimaryKey = 740,
  113.     UnsupportedChange = 741,
  114.     BackupInProgress = 762,
  115.     IncompatibleVersions = 763
  116.   };
  117. private:
  118.   Uint32 senderData;
  119.   Uint32 senderRef;
  120.   Uint32 masterNodeId;
  121.   Uint32 errorCode;
  122.   Uint32 errorLine; 
  123.   Uint32 errorKey;
  124.   Uint32 status;
  125. public:
  126.   Uint32 getErrorCode() const {
  127.     return errorCode;
  128.   }
  129.   Uint32 getErrorLine() const {
  130.     return errorLine;
  131.   }
  132. };
  133. class AlterTableConf {
  134.   /**
  135.    * Sender(s)
  136.    */
  137.   friend class Dbdict;
  138.   
  139.   /**
  140.    * Sender(s) / Reciver(s)
  141.    */
  142.   friend class Ndbcntr;
  143.   friend class NdbDictInterface;
  144.   
  145.   /**
  146.    * For printing
  147.    */
  148.   friend bool printALTER_TABLE_CONF(FILE *, const Uint32 *, Uint32, Uint16);
  149.   
  150. public:
  151.   STATIC_CONST( SignalLength = 4 );
  152. private:
  153.   Uint32 senderData;
  154.   Uint32 senderRef;
  155.   Uint32 tableId;
  156.   Uint32 tableVersion;
  157. };
  158. /**
  159.  * Inform API about change of table definition
  160.  */
  161. struct AlterTableRep 
  162. {
  163.   friend bool printALTER_TABLE_REP(FILE*, const Uint32*, Uint32, Uint16);
  164.   
  165.   STATIC_CONST( SignalLength = 3 );
  166.   
  167.   enum Change_type 
  168.   {
  169.     CT_ALTERED = 0x1,
  170.     CT_DROPPED = 0x2
  171.   };
  172.   
  173.   Uint32 tableId;
  174.   Uint32 tableVersion;
  175.   Uint32 changeType;
  176.   
  177.   SECTION( TABLE_NAME = 0 );
  178. };
  179. #endif