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

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_TRIG_HPP
  14. #define CREATE_TRIG_HPP
  15. #include "SignalData.hpp"
  16. #include <Bitmask.hpp>
  17. #include <trigger_definitions.h>
  18. #include <AttributeList.hpp>
  19. /**
  20.  * CreateTrigReq.
  21.  */
  22. class CreateTrigReq {
  23.   friend bool printCREATE_TRIG_REQ(FILE*, const Uint32*, Uint32, Uint16);
  24. public:
  25.   enum RequestType {
  26.     RT_UNDEFINED = 0,
  27.     RT_USER = 1,
  28.     RT_ALTER_INDEX = 2,
  29.     RT_BUILD_INDEX = 3,
  30.     RT_DICT_PREPARE = 1 << 4,
  31.     RT_DICT_CREATE = 2 << 4,
  32.     RT_DICT_COMMIT = 0xC << 4,
  33.     RT_DICT_ABORT = 0xF << 4,
  34.     RT_TC = 5 << 8,
  35.     RT_LQH = 6 << 8
  36.   };
  37.   STATIC_CONST( SignalLength = 9 + MAXNROFATTRIBUTESINWORDS);
  38.   SECTION( TRIGGER_NAME_SECTION = 0 );
  39.   SECTION( ATTRIBUTE_MASK_SECTION = 1 );        // not yet in use
  40.   enum KeyValues {
  41.     TriggerNameKey = 0xa1
  42.   };
  43. private:
  44.   Uint32 m_userRef;
  45.   Uint32 m_connectionPtr;
  46.   Uint32 m_requestInfo;
  47.   Uint32 m_tableId;
  48.   Uint32 m_indexId;             // only for index trigger
  49.   Uint32 m_triggerId;           // only set by DICT
  50.   Uint32 m_triggerInfo;         // flags | event | timing | type
  51.   Uint32 m_online;              // alter online (not normally for subscription)
  52.   Uint32 m_receiverRef;         // receiver for subscription trigger
  53.   AttributeMask m_attributeMask;
  54.   // extra
  55.   Uint32 m_opKey;
  56. public:
  57.   Uint32 getUserRef() const {
  58.     return m_userRef;
  59.   }
  60.   void setUserRef(Uint32 val) {
  61.     m_userRef = val;
  62.   }
  63.   Uint32 getConnectionPtr() const {
  64.     return m_connectionPtr;
  65.   }
  66.   void setConnectionPtr(Uint32 val) {
  67.     m_connectionPtr = val;
  68.   }
  69.   CreateTrigReq::RequestType getRequestType() const {
  70.     const Uint32 val = BitmaskImpl::getField(1, &m_requestInfo, 0, 16);
  71.     return (CreateTrigReq::RequestType)val;
  72.   }
  73.   void setRequestType(CreateTrigReq::RequestType val) {
  74.     m_requestInfo = (Uint32)val;
  75.   }
  76.   Uint32 getRequestFlag() const {
  77.     return BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  78.   };
  79.   void addRequestFlag(Uint32 val) {
  80.     val |= BitmaskImpl::getField(1, &m_requestInfo, 16, 16);
  81.     BitmaskImpl::setField(1, &m_requestInfo, 16, 16, val);
  82.   };
  83.   Uint32 getTableId() const {
  84.     return m_tableId;
  85.   }
  86.   void setTableId(Uint32 val) {
  87.     m_tableId = val;
  88.   }
  89.   Uint32 getIndexId() const {
  90.     return m_indexId;
  91.   }
  92.   void setIndexId(Uint32 val) {
  93.     m_indexId = val;
  94.   }
  95.   Uint32 getTriggerId() const {
  96.     return m_triggerId;
  97.   }
  98.   void setTriggerId(Uint32 val) {
  99.     m_triggerId = val;
  100.   }
  101.   Uint32 getTriggerInfo() const {
  102.     return m_triggerInfo;
  103.   }
  104.   void setTriggerInfo(Uint32 val) {
  105.     m_triggerInfo = val;
  106.   }
  107.   TriggerType::Value getTriggerType() const {
  108.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 0, 8);
  109.     return (TriggerType::Value)val;
  110.   }
  111.   void setTriggerType(TriggerType::Value val) {
  112.     BitmaskImpl::setField(1, &m_triggerInfo, 0, 8, (Uint32)val);
  113.   }
  114.   TriggerActionTime::Value getTriggerActionTime() const {
  115.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 8, 8);
  116.     return (TriggerActionTime::Value)val;
  117.   }
  118.   void setTriggerActionTime(TriggerActionTime::Value val) {
  119.     BitmaskImpl::setField(1, &m_triggerInfo, 8, 8, (Uint32)val);
  120.   }
  121.   TriggerEvent::Value getTriggerEvent() const {
  122.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 16, 8);
  123.     return (TriggerEvent::Value)val;
  124.   }
  125.   void setTriggerEvent(TriggerEvent::Value val) {
  126.     BitmaskImpl::setField(1, &m_triggerInfo, 16, 8, (Uint32)val);
  127.   }
  128.   bool getMonitorReplicas() const {
  129.     return BitmaskImpl::getField(1, &m_triggerInfo, 24, 1);
  130.   }
  131.   void setMonitorReplicas(bool val) {
  132.     BitmaskImpl::setField(1, &m_triggerInfo, 24, 1, val);
  133.   }
  134.   bool getMonitorAllAttributes() const {
  135.     return BitmaskImpl::getField(1, &m_triggerInfo, 25, 1);
  136.   }
  137.   void setMonitorAllAttributes(bool val) {
  138.     BitmaskImpl::setField(1, &m_triggerInfo, 25, 1, val);
  139.   }
  140.   Uint32 getOnline() const {
  141.     return m_online;
  142.   }
  143.   void setOnline(Uint32 val) {
  144.     m_online = val;
  145.   }
  146.   Uint32 getReceiverRef() const {
  147.     return m_receiverRef;
  148.   }
  149.   void setReceiverRef(Uint32 val) {
  150.     m_receiverRef = val;
  151.   }
  152.   AttributeMask& getAttributeMask() {
  153.     return m_attributeMask;
  154.   }
  155.   const AttributeMask& getAttributeMask() const {
  156.     return m_attributeMask;
  157.   }
  158.   void clearAttributeMask() {
  159.     m_attributeMask.clear();
  160.   }
  161.   void setAttributeMask(const AttributeMask& val) {
  162.     m_attributeMask = val;
  163.   }
  164.   void setAttributeMask(Uint16 val) {
  165.     m_attributeMask.set(val);
  166.   }
  167.   Uint32 getOpKey() const {
  168.     return m_opKey;
  169.   }
  170.   void setOpKey(Uint32 val) {
  171.     m_opKey = val;
  172.   }
  173. };
  174. /**
  175.  * CreateTrigConf.
  176.  */
  177. class CreateTrigConf {
  178.   friend bool printCREATE_TRIG_CONF(FILE*, const Uint32*, Uint32, Uint16);
  179. public:
  180.   STATIC_CONST( InternalLength = 3 );
  181.   STATIC_CONST( SignalLength = 7 );
  182. private:
  183.   Uint32 m_userRef;
  184.   Uint32 m_connectionPtr;
  185.   Uint32 m_requestInfo;
  186.   Uint32 m_tableId;
  187.   Uint32 m_indexId;
  188.   Uint32 m_triggerId;
  189.   Uint32 m_triggerInfo;         // BACKUP wants this
  190. public:
  191.   Uint32 getUserRef() const {
  192.     return m_userRef;
  193.   }
  194.   void setUserRef(Uint32 val) {
  195.     m_userRef = val;
  196.   }
  197.   Uint32 getConnectionPtr() const {
  198.     return m_connectionPtr;
  199.   }
  200.   void setConnectionPtr(Uint32 val) {
  201.     m_connectionPtr = val;
  202.   }
  203.   CreateTrigReq::RequestType getRequestType() const {
  204.     return (CreateTrigReq::RequestType)m_requestInfo;
  205.   }
  206.   void setRequestType(CreateTrigReq::RequestType val) {
  207.     m_requestInfo = (Uint32)val;
  208.   }
  209.   Uint32 getTableId() const {
  210.     return m_tableId;
  211.   }
  212.   void setTableId(Uint32 val) {
  213.     m_tableId = val;
  214.   }
  215.   Uint32 getIndexId() const {
  216.     return m_indexId;
  217.   }
  218.   void setIndexId(Uint32 val) {
  219.     m_indexId = val;
  220.   }
  221.   Uint32 getTriggerId() const {
  222.     return m_triggerId;
  223.   }
  224.   void setTriggerId(Uint32 val) {
  225.     m_triggerId = val;
  226.   }
  227.   Uint32 getTriggerInfo() const {
  228.     return m_triggerInfo;
  229.   }
  230.   void setTriggerInfo(Uint32 val) {
  231.     m_triggerInfo = val;
  232.   }
  233.   TriggerType::Value getTriggerType() const {
  234.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 0, 8);
  235.     return (TriggerType::Value)val;
  236.   }
  237.   void setTriggerType(TriggerType::Value val) {
  238.     BitmaskImpl::setField(1, &m_triggerInfo, 0, 8, (Uint32)val);
  239.   }
  240.   TriggerActionTime::Value getTriggerActionTime() const {
  241.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 8, 8);
  242.     return (TriggerActionTime::Value)val;
  243.   }
  244.   void setTriggerActionTime(TriggerActionTime::Value val) {
  245.     BitmaskImpl::setField(1, &m_triggerInfo, 8, 8, (Uint32)val);
  246.   }
  247.   TriggerEvent::Value getTriggerEvent() const {
  248.     const Uint32 val = BitmaskImpl::getField(1, &m_triggerInfo, 16, 8);
  249.     return (TriggerEvent::Value)val;
  250.   }
  251.   void setTriggerEvent(TriggerEvent::Value val) {
  252.     BitmaskImpl::setField(1, &m_triggerInfo, 16, 8, (Uint32)val);
  253.   }
  254.   bool getMonitorReplicas() const {
  255.     return BitmaskImpl::getField(1, &m_triggerInfo, 24, 1);
  256.   }
  257.   void setMonitorReplicas(bool val) {
  258.     BitmaskImpl::setField(1, &m_triggerInfo, 24, 1, val);
  259.   }
  260.   bool getMonitorAllAttributes() const {
  261.     return BitmaskImpl::getField(1, &m_triggerInfo, 25, 1);
  262.   }
  263.   void setMonitorAllAttributes(bool val) {
  264.     BitmaskImpl::setField(1, &m_triggerInfo, 25, 1, val);
  265.   }
  266. };
  267. /**
  268.  * CreateTrigRef.
  269.  */
  270. class CreateTrigRef {
  271.   friend bool printCREATE_TRIG_REF(FILE*, const Uint32*, Uint32, Uint16);
  272. public:
  273.   enum ErrorCode {
  274.     NoError = 0,
  275.     Busy = 701,
  276.     NotMaster = 702,
  277.     TriggerNameTooLong = 4236,
  278.     TooManyTriggers = 4237,
  279.     TriggerNotFound = 4238,
  280.     TriggerExists = 4239,
  281.     UnsupportedTriggerType = 4240,
  282.     BadRequestType = 4247,
  283.     InvalidName = 4248,
  284.     InvalidTable = 4249
  285.   };
  286.   STATIC_CONST( SignalLength = CreateTrigConf::SignalLength + 3 );
  287. private:
  288.   CreateTrigConf m_conf;
  289.   //Uint32 m_userRef;
  290.   //Uint32 m_connectionPtr;
  291.   //Uint32 m_requestInfo;
  292.   //Uint32 m_tableId;
  293.   //Uint32 m_indexId;
  294.   //Uint32 m_triggerId;
  295.   //Uint32 m_triggerInfo;
  296.   Uint32 m_errorCode;
  297.   Uint32 m_errorLine;
  298.   union {
  299.     Uint32 m_errorNode;
  300.     Uint32 masterNodeId; // When NotMaster
  301.   };
  302. public:
  303.   CreateTrigConf* getConf() {
  304.     return &m_conf;
  305.   }
  306.   const CreateTrigConf* getConf() const {
  307.     return &m_conf;
  308.   }
  309.   Uint32 getUserRef() const {
  310.     return m_conf.getUserRef();
  311.   }
  312.   void setUserRef(Uint32 val) {
  313.     m_conf.setUserRef(val);
  314.   }
  315.   Uint32 getConnectionPtr() const {
  316.     return m_conf.getConnectionPtr();
  317.   }
  318.   void setConnectionPtr(Uint32 val) {
  319.     m_conf.setConnectionPtr(val);
  320.   }
  321.   CreateTrigReq::RequestType getRequestType() const {
  322.     return m_conf.getRequestType();
  323.   }
  324.   void setRequestType(CreateTrigReq::RequestType val) {
  325.     m_conf.setRequestType(val);
  326.   }
  327.   Uint32 getTableId() const {
  328.     return m_conf.getTableId();
  329.   }
  330.   void setTableId(Uint32 val) {
  331.     m_conf.setTableId(val);
  332.   }
  333.   Uint32 getIndexId() const {
  334.     return m_conf.getIndexId();
  335.   }
  336.   void setIndexId(Uint32 val) {
  337.     m_conf.setIndexId(val);
  338.   }
  339.   Uint32 getTriggerId() const {
  340.     return m_conf.getTriggerId();
  341.   }
  342.   void setTriggerId(Uint32 val) {
  343.     m_conf.setTriggerId(val);
  344.   }
  345.   Uint32 getTriggerInfo() const {
  346.     return m_conf.getTriggerInfo();
  347.   }
  348.   void setTriggerInfo(Uint32 val) {
  349.     m_conf.setTriggerInfo(val);
  350.   }
  351.   TriggerType::Value getTriggerType() const {
  352.     return m_conf.getTriggerType();
  353.   }
  354.   void setTriggerType(TriggerType::Value val) {
  355.     m_conf.setTriggerType(val);
  356.   }
  357.   TriggerActionTime::Value getTriggerActionTime() const {
  358.     return m_conf.getTriggerActionTime();
  359.   }
  360.   void setTriggerActionTime(TriggerActionTime::Value val) {
  361.     m_conf.setTriggerActionTime(val);
  362.   }
  363.   TriggerEvent::Value getTriggerEvent() const {
  364.     return m_conf.getTriggerEvent();
  365.   }
  366.   void setTriggerEvent(TriggerEvent::Value val) {
  367.     m_conf.setTriggerEvent(val);
  368.   }
  369.   bool getMonitorReplicas() const {
  370.     return m_conf.getMonitorReplicas();
  371.   }
  372.   void setMonitorReplicas(bool val) {
  373.     m_conf.setMonitorReplicas(val);
  374.   }
  375.   bool getMonitorAllAttributes() const {
  376.     return m_conf.getMonitorAllAttributes();
  377.   }
  378.   void setMonitorAllAttributes(bool val) {
  379.     m_conf.setMonitorAllAttributes(val);
  380.   }
  381.   CreateTrigRef::ErrorCode getErrorCode() const {
  382.     return (CreateTrigRef::ErrorCode)m_errorCode;
  383.   }
  384.   void setErrorCode(CreateTrigRef::ErrorCode val) {
  385.     m_errorCode = (Uint32)val;
  386.   }
  387.   Uint32 getErrorLine() const {
  388.     return m_errorLine;
  389.   }
  390.   void setErrorLine(Uint32 val) {
  391.     m_errorLine = val;
  392.   }
  393.   Uint32 getErrorNode() const {
  394.     return m_errorNode;
  395.   }
  396.   void setErrorNode(Uint32 val) {
  397.     m_errorNode = val;
  398.   }
  399. };
  400. #endif