NdbSchemaCon.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 NdbSchemaCon_H
  14. #define NdbSchemaCon_H
  15. #ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
  16. #include <ndb_types.h>
  17. #include "NdbError.hpp"
  18. #include <NdbSchemaOp.hpp>
  19. class NdbSchemaOp;
  20. class Ndb;
  21. class NdbApiSignal;
  22. /**
  23.  * @class NdbSchemaCon
  24.  * @brief Represents a schema transaction.
  25.  *
  26.  * When creating a new table,
  27.  * the first step is to get a NdbSchemaCon object to represent 
  28.  * the schema transaction.
  29.  * This is done by calling Ndb::startSchemaTransaction.
  30.  * 
  31.  * The next step is to get a NdbSchemaOp object by calling 
  32.  * NdbSchemaCon::getNdbSchemaOp.
  33.  * The NdbSchemaOp object then has methods to define the table and 
  34.  * its attributes.
  35.  *
  36.  * Finally, the NdbSchemaCon::execute method inserts the table 
  37.  * into the database. 
  38.  *
  39.  * @note   Currently only one table can be added per transaction.
  40.  * @note Depricated, use NdbDictionary
  41.  */
  42. class NdbSchemaCon
  43. {
  44. friend class Ndb;
  45. friend class NdbSchemaOp;
  46.   
  47. public:
  48.   static 
  49.   NdbSchemaCon* startSchemaTrans(Ndb* pNdb){
  50.     return  new NdbSchemaCon(pNdb);
  51.   }
  52.   
  53.   static 
  54.   void closeSchemaTrans(NdbSchemaCon* pSchCon){
  55.     delete pSchCon;
  56.   }
  57.   
  58.   /**
  59.    * Execute a schema transaction.
  60.    * 
  61.    * @return    0 if successful otherwise -1. 
  62.    */
  63.   int  execute();   
  64.   
  65.   /**
  66.    * Get a schemaoperation.
  67.    *
  68.    * @note Currently, only one operation per transaction is allowed.
  69.    *
  70.    * @return   Pointer to a NdbSchemaOp or NULL if unsuccessful.
  71.    */ 
  72.   NdbSchemaOp* getNdbSchemaOp(); 
  73.   /**
  74.    * Get the latest error
  75.    *
  76.    * @return   Error object.
  77.    */      
  78.   const NdbError & getNdbError() const;
  79. private:
  80. /******************************************************************************
  81.  * These are the create and delete methods of this class.
  82.  *****************************************************************************/
  83.   NdbSchemaCon(Ndb* aNdb); 
  84.   ~NdbSchemaCon();
  85. /******************************************************************************
  86.  * These are the private methods of this class.
  87.  *****************************************************************************/
  88.   void release();          // Release all schemaop in schemaCon
  89.  /***************************************************************************
  90.   * These methods are service methods to other classes in the NDBAPI.
  91.   ***************************************************************************/
  92.   int           checkMagicNumber();              // Verify correct object
  93.   int           receiveDICTTABCONF(NdbApiSignal* aSignal);
  94.   int           receiveDICTTABREF(NdbApiSignal* aSignal);
  95.   int receiveCREATE_INDX_CONF(NdbApiSignal*);
  96.   int receiveCREATE_INDX_REF(NdbApiSignal*);
  97.   int receiveDROP_INDX_CONF(NdbApiSignal*);
  98.   int receiveDROP_INDX_REF(NdbApiSignal*);
  99. /*****************************************************************************
  100.  * These are the private variables of this class.
  101.  *****************************************************************************/
  102.   
  103.  
  104.   NdbError  theError;        // Errorcode
  105.   Ndb*  theNdb; // Pointer to Ndb object
  106.   NdbSchemaOp* theFirstSchemaOpInList; // First operation in operation list.
  107.   int  theMagicNumber; // Magic number 
  108. };
  109. inline
  110. int
  111. NdbSchemaCon::checkMagicNumber()
  112. {
  113.   if (theMagicNumber != 0x75318642)
  114.     return -1;
  115.   return 0;
  116. }//NdbSchemaCon::checkMagicNumber()
  117. #endif
  118. #endif