mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
147 lines
4 KiB
C++
147 lines
4 KiB
C++
/* Copyright (C) 2003 MySQL AB
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
#ifndef NdbSchemaCon_H
|
|
#define NdbSchemaCon_H
|
|
|
|
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
|
|
|
|
#include <ndb_types.h>
|
|
#include "NdbError.hpp"
|
|
#include <NdbSchemaOp.hpp>
|
|
|
|
class NdbSchemaOp;
|
|
class Ndb;
|
|
class NdbApiSignal;
|
|
|
|
/**
|
|
* @class NdbSchemaCon
|
|
* @brief Represents a schema transaction.
|
|
*
|
|
* When creating a new table,
|
|
* the first step is to get a NdbSchemaCon object to represent
|
|
* the schema transaction.
|
|
* This is done by calling Ndb::startSchemaTransaction.
|
|
*
|
|
* The next step is to get a NdbSchemaOp object by calling
|
|
* NdbSchemaCon::getNdbSchemaOp.
|
|
* The NdbSchemaOp object then has methods to define the table and
|
|
* its attributes.
|
|
*
|
|
* Finally, the NdbSchemaCon::execute method inserts the table
|
|
* into the database.
|
|
*
|
|
* @note Currently only one table can be added per transaction.
|
|
* @note Depricated, use NdbDictionary
|
|
*/
|
|
class NdbSchemaCon
|
|
{
|
|
friend class Ndb;
|
|
friend class NdbSchemaOp;
|
|
|
|
public:
|
|
|
|
static
|
|
NdbSchemaCon* startSchemaTrans(Ndb* pNdb){
|
|
return new NdbSchemaCon(pNdb);
|
|
}
|
|
|
|
static
|
|
void closeSchemaTrans(NdbSchemaCon* pSchCon){
|
|
delete pSchCon;
|
|
}
|
|
|
|
|
|
/**
|
|
* Execute a schema transaction.
|
|
*
|
|
* @return 0 if successful otherwise -1.
|
|
*/
|
|
int execute();
|
|
|
|
/**
|
|
* Get a schemaoperation.
|
|
*
|
|
* @note Currently, only one operation per transaction is allowed.
|
|
*
|
|
* @return Pointer to a NdbSchemaOp or NULL if unsuccessful.
|
|
*/
|
|
NdbSchemaOp* getNdbSchemaOp();
|
|
|
|
/**
|
|
* Get the latest error
|
|
*
|
|
* @return Error object.
|
|
*/
|
|
const NdbError & getNdbError() const;
|
|
|
|
private:
|
|
|
|
/******************************************************************************
|
|
* These are the create and delete methods of this class.
|
|
*****************************************************************************/
|
|
|
|
NdbSchemaCon(Ndb* aNdb);
|
|
~NdbSchemaCon();
|
|
|
|
/******************************************************************************
|
|
* These are the private methods of this class.
|
|
*****************************************************************************/
|
|
|
|
void release(); // Release all schemaop in schemaCon
|
|
|
|
/***************************************************************************
|
|
* These methods are service methods to other classes in the NDBAPI.
|
|
***************************************************************************/
|
|
|
|
int checkMagicNumber(); // Verify correct object
|
|
int receiveDICTTABCONF(NdbApiSignal* aSignal);
|
|
int receiveDICTTABREF(NdbApiSignal* aSignal);
|
|
|
|
|
|
int receiveCREATE_INDX_CONF(NdbApiSignal*);
|
|
int receiveCREATE_INDX_REF(NdbApiSignal*);
|
|
int receiveDROP_INDX_CONF(NdbApiSignal*);
|
|
int receiveDROP_INDX_REF(NdbApiSignal*);
|
|
|
|
|
|
/*****************************************************************************
|
|
* These are the private variables of this class.
|
|
*****************************************************************************/
|
|
|
|
|
|
NdbError theError; // Errorcode
|
|
Ndb* theNdb; // Pointer to Ndb object
|
|
|
|
NdbSchemaOp* theFirstSchemaOpInList; // First operation in operation list.
|
|
int theMagicNumber; // Magic number
|
|
};
|
|
|
|
inline
|
|
int
|
|
NdbSchemaCon::checkMagicNumber()
|
|
{
|
|
if (theMagicNumber != 0x75318642)
|
|
return -1;
|
|
return 0;
|
|
}//NdbSchemaCon::checkMagicNumber()
|
|
|
|
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|