mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Initial revision of NDB Cluster files
BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
192
ndb/include/ndbapi/NdbIndexOperation.hpp
Normal file
192
ndb/include/ndbapi/NdbIndexOperation.hpp
Normal file
@ -0,0 +1,192 @@
|
||||
/* 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 */
|
||||
|
||||
/*****************************************************************************
|
||||
* Name: NdbIndexOperation.hpp
|
||||
* Include:
|
||||
* Link:
|
||||
* Author: Martin Sk<53>ld
|
||||
* Date: 2002-04-01
|
||||
* Version: 0.1
|
||||
* Description: Secondary index support
|
||||
* Documentation:
|
||||
* Adjust: 2002-04-01 Martin Sk<53>ld First version.
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef NdbIndexOperation_H
|
||||
#define NdbIndexOperation_H
|
||||
|
||||
#include <NdbCursorOperation.hpp>
|
||||
|
||||
class Index;
|
||||
class NdbResultSet;
|
||||
|
||||
/**
|
||||
* @class NdbIndexOperation
|
||||
* @brief Class of index operations for use in transactions
|
||||
*/
|
||||
class NdbIndexOperation : public NdbOperation
|
||||
{
|
||||
friend class Ndb;
|
||||
friend class NdbConnection;
|
||||
|
||||
public:
|
||||
/**
|
||||
* @name Define Standard Operation
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type readTuple.
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* reads a tuple.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int readTuple();
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type
|
||||
* readTupleExclusive.
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* read a tuple using an exclusive lock.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int readTupleExclusive();
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type simpleRead.
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* reads an existing tuple (using shared read lock),
|
||||
* but releases lock immediately after read.
|
||||
*
|
||||
* @note Using this operation twice in the same transaction
|
||||
* may produce different results (e.g. if there is another
|
||||
* transaction which updates the value between the
|
||||
* simple reads).
|
||||
*
|
||||
* Note that simpleRead can read the value from any database node while
|
||||
* standard read always read the value on the database node which is
|
||||
* primary for the record.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int simpleRead();
|
||||
|
||||
/**
|
||||
* Define the NdbOperation to be a standard operation of type committedRead.
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* read latest committed value of the record.
|
||||
*
|
||||
* This means that if another transaction is updating the
|
||||
* record, then the current transaction will not wait.
|
||||
* It will instead use the latest committed value of the
|
||||
* record.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int dirtyRead();
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
|
||||
int committedRead();
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type
|
||||
* updateTuple.
|
||||
*
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* updates a tuple in the table.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int updateTuple();
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type
|
||||
* deleteTuple.
|
||||
*
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* deletes a tuple.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int deleteTuple();
|
||||
|
||||
/**
|
||||
* Define the NdbIndexOperation to be a standard operation of type
|
||||
* dirtyUpdate.
|
||||
*
|
||||
* When calling NdbConnection::execute, this operation
|
||||
* updates without two-phase commit.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int dirtyUpdate();
|
||||
|
||||
/** @} *********************************************************************/
|
||||
/**
|
||||
* @name Define Interpreted Program Operation
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Update a tuple using an interpreted program.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int interpretedUpdateTuple();
|
||||
|
||||
/**
|
||||
* Delete a tuple using an interpreted program.
|
||||
*
|
||||
* @return 0 if successful otherwise -1.
|
||||
*/
|
||||
int interpretedDeleteTuple();
|
||||
|
||||
/** @} *********************************************************************/
|
||||
|
||||
private:
|
||||
NdbIndexOperation(Ndb* aNdb);
|
||||
~NdbIndexOperation();
|
||||
|
||||
void closeScan();
|
||||
|
||||
int receiveTCINDXREF(NdbApiSignal* aSignal);
|
||||
|
||||
// Overloaded method from NdbOperation
|
||||
void setLastFlag(NdbApiSignal* signal, Uint32 lastFlag);
|
||||
|
||||
// Overloaded methods from NdbCursorOperation
|
||||
int executeCursor(int ProcessorId);
|
||||
|
||||
// Overloaded methods from NdbCursorOperation
|
||||
int indxInit(class NdbIndexImpl* anIndex,
|
||||
class NdbTableImpl* aTable,
|
||||
NdbConnection* myConnection);
|
||||
|
||||
int equal_impl(const class NdbColumnImpl*, const char* aValue, Uint32 len);
|
||||
int prepareSend(Uint32 TC_ConnectPtr, Uint64 TransactionId);
|
||||
|
||||
// Private attributes
|
||||
NdbIndexImpl* m_theIndex;
|
||||
Uint32 m_theIndexDefined[MAXNROFTUPLEKEY][3];
|
||||
Uint32 m_theIndexLen; // Length of the index in words
|
||||
Uint32 m_theNoOfIndexDefined; // The number of index attributes
|
||||
};
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user