NdbIndexOperation Class Reference

Class of index operations for use in transactions. More...

#include <NdbIndexOperation.hpp>

Inheritance diagram for NdbIndexOperation:

NdbOperation

List of all members.

Public Member Functions

LockMode getLockMode () const
AbortOption getAbortOption () const
int setAbortOption (AbortOption)
virtual NdbTransactiongetNdbTransaction () const
Define Standard Operation
int insertTuple ()
int readTuple (LockMode)
int readTuple ()
int readTupleExclusive ()
int simpleRead ()
int dirtyRead ()
int committedRead ()
int updateTuple ()
int deleteTuple ()
const NdbDictionary::IndexgetIndex () const
int dirtyUpdate ()
Specify Search Conditions
int equal (const char *anAttrName, const char *aValue, Uint32 len)
int equal (const char *anAttrName, const char *aValue)
int equal (const char *anAttrName, Int32 aValue)
int equal (const char *anAttrName, Uint32 aValue)
int equal (const char *anAttrName, Int64 aValue)
int equal (const char *anAttrName, Uint64 aValue)
int equal (Uint32 anAttrId, const char *aValue, Uint32 len)
int equal (Uint32 anAttrId, const char *aValue)
int equal (Uint32 anAttrId, Int32 aValue)
int equal (Uint32 anAttrId, Uint32 aValue)
int equal (Uint32 anAttrId, Int64 aValue)
int equal (Uint32 anAttrId, Uint64 aValue)
Specify Attribute Actions for Operations
NdbRecAttrgetValue (const char *anAttrName, char *aValue=0)
NdbRecAttrgetValue (Uint32 anAttrId, char *aValue=0)
NdbRecAttrgetValue (const NdbDictionary::Column *, char *val=0)
int setValue (const char *anAttrName, const char *aValue, Uint32 len)
int setValue (const char *anAttrName, const char *aValue)
int setValue (const char *anAttrName, Int32 aValue)
int setValue (const char *anAttrName, Uint32 aValue)
int setValue (const char *anAttrName, Int64 aValue)
int setValue (const char *anAttrName, Uint64 aValue)
int setValue (const char *anAttrName, float aValue)
int setValue (const char *anAttrName, double aValue)
int setValue (Uint32 anAttrId, const char *aValue, Uint32 len)
int setValue (Uint32 anAttrId, const char *aValue)
int setValue (Uint32 anAttrId, Int32 aValue)
int setValue (Uint32 anAttrId, Uint32 aValue)
int setValue (Uint32 anAttrId, Int64 aValue)
int setValue (Uint32 anAttrId, Uint64 aValue)
int setValue (Uint32 anAttrId, float aValue)
int setValue (Uint32 anAttrId, double aValue)
virtual NdbBlobgetBlobHandle (const char *anAttrName)
virtual NdbBlobgetBlobHandle (Uint32 anAttrId)
virtual NdbBlobgetBlobHandle (const char *anAttrName) const
virtual NdbBlobgetBlobHandle (Uint32 anAttrId) const
Error Handling
const NdbErrorgetNdbError () const
int getNdbErrorLine ()
int getNdbErrorLine () const
const char * getTableName () const
const NdbDictionary::TablegetTable () const
const Type getType () const

Protected Types

enum  OperationStatus {
  Init, OperationDefined, TupleKeyDefined, GetValue,
  SetValue, ExecInterpretedValue, SetValueInterpreted, FinalGetValue,
  SubroutineExec, SubroutineEnd, WaitResponse, Finished,
  UseNdbRecord
}

Protected Member Functions

int setValue (const NdbColumnImpl *anAttrObject, const char *aValue)
NdbBlobgetBlobHandle (NdbTransaction *aCon, const NdbColumnImpl *anAttrObject)
NdbBlobgetBlobHandle (NdbTransaction *aCon, const NdbColumnImpl *anAttrObject) const
bool needReply ()
int init (const class NdbTableImpl *, NdbTransaction *aCon, bool useRec)
void initInterpreter ()
void next (NdbOperation *)
NdbOperationnext ()
OperationStatus Status ()
void Status (OperationStatus)
void NdbCon (NdbTransaction *)
virtual void release ()
void postExecuteRelease ()
void setStartIndicator ()
int doSendKeyReq (int processorId, GenericSectionPtr *secs, Uint32 numSecs)
int doSend (int ProcessorId, Uint32 lastFlag)
virtual int prepareSend (Uint32 TC_ConnectPtr, Uint64 TransactionId, AbortOption)
virtual void setLastFlag (NdbApiSignal *signal, Uint32 lastFlag)
int prepareSendInterpreted ()
int initInterpretedInfo (const NdbInterpretedCode *code, Uint32 *&interpretedInfo, Uint32 *stackSpace, Uint32 stackSpaceEntries, Uint32 *&dynamicSpace)
void freeInterpretedInfo (Uint32 *&dynamicSpace)
int buildInterpretedProgramSignals (Uint32 aTC_ConnectPtr, Uint64 aTransId, Uint32 **attrInfoPtr, Uint32 *remain, const NdbInterpretedCode *code, Uint32 *interpretedWorkspace, bool mainProgram, Uint32 &wordsWritten)
int buildSignalsNdbRecord (Uint32 aTC_ConnectPtr, Uint64 aTransId)
int prepareSendNdbRecord (AbortOption ao)
Uint32 fillTcKeyReqHdr (TcKeyReq *tcKeyReq, Uint32 connectPtr, Uint64 transId)
int allocKeyInfo ()
int allocAttrInfo ()
int insertKEYINFO_NdbRecord (const char *value, Uint32 byteSize)
int insertATTRINFOHdr_NdbRecord (Uint32 attrId, Uint32 attrLen)
int insertATTRINFOData_NdbRecord (const char *value, Uint32 size)
int receiveTCKEYREF (NdbApiSignal *)
int checkMagicNumber (bool b=true)
int checkState_TransId (NdbApiSignal *aSignal)
virtual int equal_impl (const NdbColumnImpl *, const char *aValue)
virtual NdbRecAttrgetValue_impl (const NdbColumnImpl *, char *aValue=0)
NdbRecAttrgetValue_NdbRecord (const NdbColumnImpl *tAttrInfo, char *aValue)
int incValue (const NdbColumnImpl *anAttrObject, Uint32 aValue)
int incValue (const NdbColumnImpl *anAttrObject, Uint64 aValue)
int subValue (const NdbColumnImpl *anAttrObject, Uint32 aValue)
int subValue (const NdbColumnImpl *anAttrObject, Uint64 aValue)
int read_attr (const NdbColumnImpl *anAttrObject, Uint32 RegDest)
int write_attr (const NdbColumnImpl *anAttrObject, Uint32 RegSource)
int branch_reg_reg (Uint32 type, Uint32, Uint32, Uint32)
int branch_col (Uint32 type, Uint32, const void *, Uint32, Uint32 Label)
int branch_col_null (Uint32 type, Uint32 col, Uint32 Label)
NdbBloblinkInBlobHandle (NdbTransaction *aCon, const NdbColumnImpl *column, NdbBlob *&lastPtr)
int getBlobHandlesNdbRecord (NdbTransaction *aCon)
int getBlobHandlesNdbRecordDelete (NdbTransaction *aCon, bool checkReadSet)
int insertATTRINFO (Uint32 aData)
int insertATTRINFOloop (const Uint32 *aDataPtr, Uint32 aLength)
int insertKEYINFO (const char *aValue, Uint32 aStartPosition, Uint32 aKeyLenInByte)
void reorderKEYINFO ()
virtual void setErrorCode (int aErrorCode) const
virtual void setErrorCodeAbort (int aErrorCode) const
bool isNdbRecordOperation ()
int incCheck (const NdbColumnImpl *anAttrObject)
int initial_interpreterCheck ()
int intermediate_interpreterCheck ()
int read_attrCheck (const NdbColumnImpl *anAttrObject)
int write_attrCheck (const NdbColumnImpl *anAttrObject)
int labelCheck ()
int insertCall (Uint32 aCall)
int insertBranch (Uint32 aBranch)
Uint32 ptr2int ()
int getKeyFromTCREQ (Uint32 *data, Uint32 &size)
virtual void setReadLockMode (LockMode lockMode)
NdbRecAttrgetVarValue (const NdbColumnImpl *, char *aBareValue, Uint16 *aLenLoc)
int setVarValue (const NdbColumnImpl *, const char *aBareValue, const Uint16 &aLen)
Uint32 repack_read (Uint32 len)

Static Protected Member Functions

static int handleOperationOptions (const OperationType type, const OperationOptions *opts, const Uint32 sizeOfOptions, NdbOperation *op)

Protected Attributes

Type m_type
NdbReceiver theReceiver
NdbError theError
int theErrorLine
NdbtheNdb
NdbTransactiontheNdbCon
NdbOperationtheNext
union {
   NdbApiSignal *   theTCREQ
   NdbApiSignal *   theSCAN_TABREQ
   NdbApiSignal *   theRequest
}; 
NdbApiSignal * theFirstATTRINFO
NdbApiSignal * theCurrentATTRINFO
Uint32 theTotalCurrAI_Len
Uint32 theAI_LenInCurrAI
NdbApiSignal * theLastKEYINFO
class NdbLabel * theFirstLabel
class NdbLabel * theLastLabel
class NdbBranch * theFirstBranch
class NdbBranch * theLastBranch
class NdbCall * theFirstCall
class NdbCall * theLastCall
class NdbSubroutine * theFirstSubroutine
class NdbSubroutine * theLastSubroutine
Uint32 theNoOfLabels
Uint32 theNoOfSubroutines
Uint32 * theKEYINFOptr
Uint32 keyInfoRemain
Uint32 * theATTRINFOptr
Uint32 attrInfoRemain
class NdbTableImpl * m_currentTable
class NdbTableImpl * m_accessTable
Uint32 theTupleKeyDefined [NDB_MAX_NO_OF_ATTRIBUTES_IN_KEY][3]
Uint32 theTotalNrOfKeyWordInSignal
Uint32 theTupKeyLen
Uint8 theNoOfTupKeyLeft
OperationType theOperationType
LockMode theLockMode
OperationStatus theStatus
Uint32 theMagicNumber
Uint32 theScanInfo
Uint32 theDistributionKey
Uint32 theSubroutineSize
Uint32 theInitialReadSize
Uint32 theInterpretedSize
Uint32 theFinalUpdateSize
Uint32 theFinalReadSize
Uint8 theStartIndicator
Uint8 theCommitIndicator
Uint8 theSimpleIndicator
Uint8 theDirtyIndicator
Uint8 theInterpretIndicator
Int8 theDistrKeyIndicator_
Uint8 m_no_disk_flag
Uint8 m_use_any_value
Uint16 m_tcReqGSN
Uint16 m_keyInfoGSN
Uint16 m_attrInfoGSN
const NdbRecord * m_key_record
const char * m_key_row
Uint32 m_keyinfo_length
const NdbRecord * m_attribute_record
const char * m_attribute_row
Uint32 m_read_mask [(NDB_MAX_ATTRIBUTES_IN_TABLE+31)>>5]
const NdbInterpretedCodem_interpreted_code
const SetValueSpecm_extraSetValues
Uint32 m_numExtraSetValues
Uint32 m_any_value
NdbBlobtheBlobList
Int8 m_abortOption
Int8 m_noErrorPropagation

Private Member Functions

 NdbIndexOperation (Ndb *aNdb)
 ~NdbIndexOperation ()
int receiveTCINDXREF (NdbApiSignal *aSignal)
int indxInit (const class NdbIndexImpl *anIndex, const class NdbTableImpl *aTable, NdbTransaction *, bool useRec)

Private Attributes

const NdbIndexImpl * m_theIndex

Friends

struct Ndb_free_list_t< NdbIndexOperation >
struct Ndb_free_list_t< NdbOperation >

Define Standard Operation Type

virtual int writeTuple ()
virtual int dirtyWrite ()
enum  Type { PrimaryKeyAccess, UniqueIndexAccess, TableScan, OrderedIndexScan }
enum  LockMode { LM_Read, LM_Exclusive, LM_SimpleRead = 3 }
enum  AbortOption { DefaultAbortOption = -1, AbortOnError = 0, AO_IgnoreError = 2 }


Detailed Description

Class of index operations for use in transactions.

Member Enumeration Documentation

enum NdbOperation::AbortOption [inherited]

How should transaction be handled if operation fails.

If AO_IgnoreError, a failure in one operation will not abort the transaction, and NdbTransaction::execute() will return 0 (success). Use NdbOperation::getNdbError() to check for errors from individual operations.

If AbortOnError, a failure in one operation will abort the transaction and cause NdbTransaction::execute() to return -1.

Abort option can be set on execute(), or in the individual operation. Setting AO_IgnoreError or AbortOnError in execute() overrides the settings on individual operations. Setting DefaultAbortOption in execute() (the default) causes individual operation settings to be used.

For READ, default is AO_IgnoreError DML, default is AbortOnError CommittedRead does _only_ support AO_IgnoreError

Enumerator:
DefaultAbortOption  Use default as specified by op-type.
AbortOnError  Abort transaction on failed operation.
AO_IgnoreError  Transaction continues on failed operation.

enum NdbOperation::LockMode [inherited]

Lock when performing read

Enumerator:
LM_Read  Read with shared lock.
LM_Exclusive  Read with exclusive lock.
LM_SimpleRead  Ignore locks, read last committed value.

Read with shared lock, but release lock directly

enum NdbOperation::OperationStatus [protected, inherited]

Enumerator:
Init 
OperationDefined 
TupleKeyDefined 
GetValue 
SetValue 
ExecInterpretedValue 
SetValueInterpreted 
FinalGetValue 
SubroutineExec 
SubroutineEnd 
WaitResponse 
Finished 
UseNdbRecord 

enum NdbOperation::Type [inherited]

Different access types (supported by sub-classes of NdbOperation)

Enumerator:
PrimaryKeyAccess  Read, insert, update, or delete using pk.
UniqueIndexAccess  Read, update, or delete using unique index.
TableScan  Full table scan.
OrderedIndexScan  Ordered index scan.


Constructor & Destructor Documentation

NdbIndexOperation::NdbIndexOperation ( Ndb aNdb  )  [private]

NdbIndexOperation::~NdbIndexOperation (  )  [private]


Member Function Documentation

int NdbOperation::allocAttrInfo (  )  [protected, inherited]

int NdbOperation::allocKeyInfo (  )  [protected, inherited]

int NdbOperation::branch_col ( Uint32  type,
Uint32  ,
const void *  ,
Uint32  ,
Uint32  Label 
) [protected, inherited]

int NdbOperation::branch_col_null ( Uint32  type,
Uint32  col,
Uint32  Label 
) [protected, inherited]

int NdbOperation::branch_reg_reg ( Uint32  type,
Uint32  ,
Uint32  ,
Uint32   
) [protected, inherited]

int NdbOperation::buildInterpretedProgramSignals ( Uint32  aTC_ConnectPtr,
Uint64  aTransId,
Uint32 **  attrInfoPtr,
Uint32 *  remain,
const NdbInterpretedCode code,
Uint32 *  interpretedWorkspace,
bool  mainProgram,
Uint32 &  wordsWritten 
) [protected, inherited]

int NdbOperation::buildSignalsNdbRecord ( Uint32  aTC_ConnectPtr,
Uint64  aTransId 
) [protected, inherited]

int NdbOperation::checkMagicNumber ( bool  b = true  )  [protected, inherited]

int NdbOperation::checkState_TransId ( NdbApiSignal *  aSignal  )  [protected, inherited]

int NdbIndexOperation::committedRead (  )  [virtual]

Define the NdbOperation to be a standard operation of type committedRead. When calling NdbTransaction::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.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::deleteTuple (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type deleteTuple.

When calling NdbTransaction::execute, this operation deletes a tuple.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::dirtyRead (  )  [virtual]

Define the NdbOperation to be a standard operation of type committedRead. When calling NdbTransaction::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.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::dirtyUpdate (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type dirtyUpdate.

When calling NdbTransaction::execute, this operation updates without two-phase commit.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

virtual int NdbOperation::dirtyWrite (  )  [virtual, inherited]

Define the NdbOperation to be a standard operation of type dirtyWrite. When calling NdbTransaction::execute, this operation writes without two-phase commit.

Returns:
0 if successful otherwise -1.

int NdbOperation::doSend ( int  ProcessorId,
Uint32  lastFlag 
) [protected, inherited]

int NdbOperation::doSendKeyReq ( int  processorId,
GenericSectionPtr *  secs,
Uint32  numSecs 
) [protected, inherited]

int NdbOperation::equal ( Uint32  anAttrId,
Uint64  aValue 
) [inherited]

int NdbOperation::equal ( Uint32  anAttrId,
Int64  aValue 
) [inherited]

int NdbOperation::equal ( Uint32  anAttrId,
Uint32  aValue 
) [inherited]

int NdbOperation::equal ( Uint32  anAttrId,
Int32  aValue 
) [inherited]

int NdbOperation::equal ( Uint32  anAttrId,
const char *  aValue 
) [inherited]

int NdbOperation::equal ( Uint32  anAttrId,
const char *  aValue,
Uint32  len 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
Uint64  aValue 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
Int64  aValue 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
Uint32  aValue 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
Int32  aValue 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
const char *  aValue 
) [inherited]

int NdbOperation::equal ( const char *  anAttrName,
const char *  aValue,
Uint32  len 
) [inherited]

Define a search condition with equality. The condition is true if the attribute has the given value. To set search conditions on multiple attributes, use several equals (then all of them must be satisfied for the tuple to be selected).

Note:
For insertTuple() it is also allowed to define the search key by using setValue().

There are 10 versions of equal() with slightly different parameters.

If attribute has fixed size, value must include all bytes. In particular a Char must be native-blank padded. If attribute has variable size, value must start with 1 or 2 little-endian length bytes (2 if Long*).

Parameters:
anAttrName Attribute name
aValue Attribute value.
Returns:
-1 if unsuccessful.

virtual int NdbOperation::equal_impl ( const NdbColumnImpl *  ,
const char *  aValue 
) [protected, virtual, inherited]

Reimplemented in NdbIndexScanOperation.

Uint32 NdbOperation::fillTcKeyReqHdr ( TcKeyReq *  tcKeyReq,
Uint32  connectPtr,
Uint64  transId 
) [protected, inherited]

void NdbOperation::freeInterpretedInfo ( Uint32 *&  dynamicSpace  )  [protected, inherited]

AbortOption NdbOperation::getAbortOption (  )  const [inherited]

Get/set abort option

NdbBlob* NdbOperation::getBlobHandle ( NdbTransaction aCon,
const NdbColumnImpl *  anAttrObject 
) const [protected, inherited]

NdbBlob* NdbOperation::getBlobHandle ( NdbTransaction aCon,
const NdbColumnImpl *  anAttrObject 
) [protected, inherited]

virtual NdbBlob* NdbOperation::getBlobHandle ( Uint32  anAttrId  )  const [virtual, inherited]

virtual NdbBlob* NdbOperation::getBlobHandle ( const char *  anAttrName  )  const [virtual, inherited]

virtual NdbBlob* NdbOperation::getBlobHandle ( Uint32  anAttrId  )  [virtual, inherited]

virtual NdbBlob* NdbOperation::getBlobHandle ( const char *  anAttrName  )  [virtual, inherited]

This method replaces getValue/setValue for blobs. It creates a blob handle NdbBlob. A second call with same argument returns the previously created handle. The handle is linked to the operation and is maintained automatically.

See NdbBlob for details.

For NdbRecord operation, this method can be used to fetch the blob handle for an NdbRecord operation that references the blob, but extra blob columns can not be added with this call (it will return 0).

For reading with NdbRecord, the NdbRecord entry for each blob must reserve space in the row for sizeof(NdbBlob *). The blob handle will be stored there, providing an alternative way of obtaining the blob handle.

int NdbOperation::getBlobHandlesNdbRecord ( NdbTransaction aCon  )  [protected, inherited]

int NdbOperation::getBlobHandlesNdbRecordDelete ( NdbTransaction aCon,
bool  checkReadSet 
) [protected, inherited]

const NdbDictionary::Index* NdbIndexOperation::getIndex (  )  const

Get index object for this operation

int NdbOperation::getKeyFromTCREQ ( Uint32 *  data,
Uint32 &  size 
) [protected, inherited]

LockMode NdbOperation::getLockMode (  )  const [inline, inherited]

Return lock mode for operation

const NdbError& NdbOperation::getNdbError (  )  const [inherited]

Get the latest error code.

Returns:
error code.

int NdbOperation::getNdbErrorLine (  )  const [inherited]

int NdbOperation::getNdbErrorLine (  )  [inherited]

Get the method number where the error occured.

Returns:
method number where the error occured.

virtual NdbTransaction* NdbOperation::getNdbTransaction (  )  const [virtual, inherited]

Get NdbTransaction object pointer for this operation

Reimplemented in NdbScanOperation.

const NdbDictionary::Table* NdbOperation::getTable (  )  const [inherited]

Get table object for this operation Not supported for NdbRecord operation.

const char* NdbOperation::getTableName (  )  const [inherited]

Get table name of this operation. Not supported for NdbRecord operation.

const Type NdbOperation::getType (  )  const [inherited]

Get the type of access for this operation

NdbRecAttr* NdbOperation::getValue ( const NdbDictionary::Column ,
char *  val = 0 
) [inherited]

NdbRecAttr* NdbOperation::getValue ( Uint32  anAttrId,
char *  aValue = 0 
) [inherited]

NdbRecAttr* NdbOperation::getValue ( const char *  anAttrName,
char *  aValue = 0 
) [inherited]

Defines a retrieval operation of an attribute value. The NDB API allocate memory for the NdbRecAttr object that will hold the returned attribute value.

Note:
Note that it is the applications responsibility to allocate enough memory for aValue (if non-NULL). The buffer aValue supplied by the application must be aligned appropriately. The buffer is used directly (avoiding a copy penalty) only if it is aligned on a 4-byte boundary and the attribute size in bytes (i.e. NdbRecAttr::attrSize times NdbRecAttr::arraySize is a multiple of 4).

There are two versions of NdbOperation::getValue with slightly different parameters.

This method does not fetch the attribute value from the database! The NdbRecAttr object returned by this method is not readable/printable before the transaction has been executed with NdbTransaction::execute.

Parameters:
anAttrName Attribute name
aValue If this is non-NULL, then the attribute value will be returned in this parameter.
If NULL, then the attribute value will only be stored in the returned NdbRecAttr object.
Returns:
An NdbRecAttr object to hold the value of the attribute, or a NULL pointer (indicating error).

virtual NdbRecAttr* NdbOperation::getValue_impl ( const NdbColumnImpl *  ,
char *  aValue = 0 
) [protected, virtual, inherited]

Reimplemented in NdbIndexScanOperation, and NdbScanOperation.

NdbRecAttr* NdbOperation::getValue_NdbRecord ( const NdbColumnImpl *  tAttrInfo,
char *  aValue 
) [protected, inherited]

NdbRecAttr* NdbOperation::getVarValue ( const NdbColumnImpl *  ,
char *  aBareValue,
Uint16 *  aLenLoc 
) [protected, inherited]

static int NdbOperation::handleOperationOptions ( const OperationType  type,
const OperationOptions opts,
const Uint32  sizeOfOptions,
NdbOperation op 
) [static, protected, inherited]

int NdbOperation::incCheck ( const NdbColumnImpl *  anAttrObject  )  [protected, inherited]

int NdbOperation::incValue ( const NdbColumnImpl *  anAttrObject,
Uint64  aValue 
) [protected, inherited]

int NdbOperation::incValue ( const NdbColumnImpl *  anAttrObject,
Uint32  aValue 
) [protected, inherited]

int NdbIndexOperation::indxInit ( const class NdbIndexImpl *  anIndex,
const class NdbTableImpl *  aTable,
NdbTransaction ,
bool  useRec 
) [private]

int NdbOperation::init ( const class NdbTableImpl *  ,
NdbTransaction aCon,
bool  useRec 
) [protected, inherited]

int NdbOperation::initial_interpreterCheck (  )  [protected, inherited]

int NdbOperation::initInterpretedInfo ( const NdbInterpretedCode code,
Uint32 *&  interpretedInfo,
Uint32 *  stackSpace,
Uint32  stackSpaceEntries,
Uint32 *&  dynamicSpace 
) [protected, inherited]

void NdbOperation::initInterpreter (  )  [protected, inherited]

int NdbOperation::insertATTRINFO ( Uint32  aData  )  [protected, inherited]

int NdbOperation::insertATTRINFOData_NdbRecord ( const char *  value,
Uint32  size 
) [protected, inherited]

int NdbOperation::insertATTRINFOHdr_NdbRecord ( Uint32  attrId,
Uint32  attrLen 
) [protected, inherited]

int NdbOperation::insertATTRINFOloop ( const Uint32 *  aDataPtr,
Uint32  aLength 
) [protected, inherited]

int NdbOperation::insertBranch ( Uint32  aBranch  )  [protected, inherited]

int NdbOperation::insertCall ( Uint32  aCall  )  [protected, inherited]

int NdbOperation::insertKEYINFO ( const char *  aValue,
Uint32  aStartPosition,
Uint32  aKeyLenInByte 
) [protected, inherited]

int NdbOperation::insertKEYINFO_NdbRecord ( const char *  value,
Uint32  byteSize 
) [protected, inherited]

int NdbIndexOperation::insertTuple (  )  [virtual]

insert is not allowed

Reimplemented from NdbOperation.

int NdbOperation::intermediate_interpreterCheck (  )  [protected, inherited]

bool NdbOperation::isNdbRecordOperation (  )  [protected, inherited]

int NdbOperation::labelCheck (  )  [protected, inherited]

NdbBlob* NdbOperation::linkInBlobHandle ( NdbTransaction aCon,
const NdbColumnImpl *  column,
NdbBlob *&  lastPtr 
) [protected, inherited]

void NdbOperation::NdbCon ( NdbTransaction  )  [protected, inherited]

bool NdbOperation::needReply (  )  [protected, inherited]

NdbOperation* NdbOperation::next (  )  [protected, inherited]

void NdbOperation::next ( NdbOperation  )  [protected, inherited]

void NdbOperation::postExecuteRelease (  )  [protected, inherited]

virtual int NdbOperation::prepareSend ( Uint32  TC_ConnectPtr,
Uint64  TransactionId,
AbortOption   
) [protected, virtual, inherited]

int NdbOperation::prepareSendInterpreted (  )  [protected, inherited]

int NdbOperation::prepareSendNdbRecord ( AbortOption  ao  )  [protected, inherited]

Uint32 NdbOperation::ptr2int (  )  [inline, protected, inherited]

int NdbOperation::read_attr ( const NdbColumnImpl *  anAttrObject,
Uint32  RegDest 
) [protected, inherited]

int NdbOperation::read_attrCheck ( const NdbColumnImpl *  anAttrObject  )  [protected, inherited]

int NdbIndexOperation::readTuple (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type readTuple. When calling NdbTransaction::execute, this operation reads a tuple.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::readTuple ( LockMode   )  [virtual]

Define the NdbIndexOperation to be a standard operation of type readTuple. When calling NdbTransaction::execute, this operation reads a tuple.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::readTupleExclusive (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type readTupleExclusive. When calling NdbTransaction::execute, this operation read a tuple using an exclusive lock.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbIndexOperation::receiveTCINDXREF ( NdbApiSignal *  aSignal  )  [private]

int NdbOperation::receiveTCKEYREF ( NdbApiSignal *   )  [protected, inherited]

virtual void NdbOperation::release (  )  [protected, virtual, inherited]

Reimplemented in NdbScanOperation.

void NdbOperation::reorderKEYINFO (  )  [protected, inherited]

Uint32 NdbOperation::repack_read ( Uint32  len  )  [protected, inherited]

int NdbOperation::setAbortOption ( AbortOption   )  [inherited]

virtual void NdbOperation::setErrorCode ( int  aErrorCode  )  const [protected, virtual, inherited]

virtual void NdbOperation::setErrorCodeAbort ( int  aErrorCode  )  const [protected, virtual, inherited]

virtual void NdbOperation::setLastFlag ( NdbApiSignal *  signal,
Uint32  lastFlag 
) [protected, virtual, inherited]

virtual void NdbOperation::setReadLockMode ( LockMode  lockMode  )  [protected, virtual, inherited]

Reimplemented in NdbScanOperation.

void NdbOperation::setStartIndicator (  )  [protected, inherited]

int NdbOperation::setValue ( const NdbColumnImpl *  anAttrObject,
const char *  aValue 
) [protected, inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
double  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
float  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
Uint64  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
Int64  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
Uint32  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
Int32  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
const char *  aValue 
) [inherited]

int NdbOperation::setValue ( Uint32  anAttrId,
const char *  aValue,
Uint32  len 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
double  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
float  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
Uint64  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
Int64  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
Uint32  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
Int32  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
const char *  aValue 
) [inherited]

int NdbOperation::setValue ( const char *  anAttrName,
const char *  aValue,
Uint32  len 
) [inherited]

Define an attribute to set or update in query.

To set a NULL value, use the following construct:

   setValue("ATTR_NAME", (char*)NULL);

There are a number of NdbOperation::setValue methods that take a certain type as input (pass by value rather than passing a pointer). As the interface is currently implemented it is the responsibility of the application programmer to use the correct types.

The NDB API will however check that the application sends a correct length to the interface as given in the length parameter. The passing of char* as the value can contain any type or any type of array. If length is not provided or set to zero, then the API will assume that the pointer is correct and not bother with checking it.

Note:
For insertTuple() the NDB API will automatically detect that it is supposed to use equal() instead.

For insertTuple() it is not necessary to use setValue() on key attributes before other attributes.

There are 14 versions of NdbOperation::setValue with slightly different parameters.

See note under equal() about value format and length.

Parameters:
anAttrName Name (or Id) of attribute.
aValue Attribute value to set.
Returns:
-1 if unsuccessful.

int NdbOperation::setVarValue ( const NdbColumnImpl *  ,
const char *  aBareValue,
const Uint16 &  aLen 
) [protected, inherited]

int NdbIndexOperation::simpleRead (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type simpleRead. When calling NdbTransaction::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.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

void NdbOperation::Status ( OperationStatus   )  [protected, inherited]

OperationStatus NdbOperation::Status (  )  [protected, inherited]

int NdbOperation::subValue ( const NdbColumnImpl *  anAttrObject,
Uint64  aValue 
) [protected, inherited]

int NdbOperation::subValue ( const NdbColumnImpl *  anAttrObject,
Uint32  aValue 
) [protected, inherited]

int NdbIndexOperation::updateTuple (  )  [virtual]

Define the NdbIndexOperation to be a standard operation of type updateTuple.

When calling NdbTransaction::execute, this operation updates a tuple in the table.

Returns:
0 if successful otherwise -1.

Reimplemented from NdbOperation.

int NdbOperation::write_attr ( const NdbColumnImpl *  anAttrObject,
Uint32  RegSource 
) [protected, inherited]

int NdbOperation::write_attrCheck ( const NdbColumnImpl *  anAttrObject  )  [protected, inherited]

virtual int NdbOperation::writeTuple (  )  [virtual, inherited]

Define the NdbOperation to be a standard operation of type writeTuple. When calling NdbTransaction::execute, this operation writes a tuple to the table. If the tuple exists, it updates it, otherwise an insert takes place.

Returns:
0 if successful otherwise -1.


Friends And Related Function Documentation

friend struct Ndb_free_list_t< NdbIndexOperation > [friend]

friend struct Ndb_free_list_t< NdbOperation > [friend, inherited]


Member Data Documentation

union { ... } [protected, inherited]

Uint32 NdbOperation::attrInfoRemain [protected, inherited]

Uint32 NdbOperation::keyInfoRemain [protected, inherited]

Int8 NdbOperation::m_abortOption [protected, inherited]

class NdbTableImpl* NdbOperation::m_accessTable [protected, inherited]

Uint32 NdbOperation::m_any_value [protected, inherited]

const NdbRecord* NdbOperation::m_attribute_record [protected, inherited]

const char* NdbOperation::m_attribute_row [protected, inherited]

Uint16 NdbOperation::m_attrInfoGSN [protected, inherited]

class NdbTableImpl* NdbOperation::m_currentTable [protected, inherited]

const SetValueSpec* NdbOperation::m_extraSetValues [protected, inherited]

const NdbRecord* NdbOperation::m_key_record [protected, inherited]

const char* NdbOperation::m_key_row [protected, inherited]

Uint32 NdbOperation::m_keyinfo_length [protected, inherited]

Uint16 NdbOperation::m_keyInfoGSN [protected, inherited]

Uint8 NdbOperation::m_no_disk_flag [protected, inherited]

Int8 NdbOperation::m_noErrorPropagation [protected, inherited]

Uint32 NdbOperation::m_numExtraSetValues [protected, inherited]

Uint32 NdbOperation::m_read_mask[(NDB_MAX_ATTRIBUTES_IN_TABLE+31)>>5] [protected, inherited]

Uint16 NdbOperation::m_tcReqGSN [protected, inherited]

const NdbIndexImpl* NdbIndexOperation::m_theIndex [private]

Type NdbOperation::m_type [protected, inherited]

Uint8 NdbOperation::m_use_any_value [protected, inherited]

Uint32 NdbOperation::theAI_LenInCurrAI [protected, inherited]

Uint32* NdbOperation::theATTRINFOptr [protected, inherited]

NdbBlob* NdbOperation::theBlobList [protected, inherited]

Uint8 NdbOperation::theCommitIndicator [protected, inherited]

NdbApiSignal* NdbOperation::theCurrentATTRINFO [protected, inherited]

Uint8 NdbOperation::theDirtyIndicator [protected, inherited]

Uint32 NdbOperation::theDistributionKey [protected, inherited]

Int8 NdbOperation::theDistrKeyIndicator_ [protected, inherited]

NdbError NdbOperation::theError [protected, inherited]

int NdbOperation::theErrorLine [protected, inherited]

Uint32 NdbOperation::theFinalReadSize [protected, inherited]

Uint32 NdbOperation::theFinalUpdateSize [protected, inherited]

NdbApiSignal* NdbOperation::theFirstATTRINFO [protected, inherited]

class NdbBranch* NdbOperation::theFirstBranch [protected, inherited]

class NdbCall* NdbOperation::theFirstCall [protected, inherited]

class NdbLabel* NdbOperation::theFirstLabel [protected, inherited]

class NdbSubroutine* NdbOperation::theFirstSubroutine [protected, inherited]

Uint32 NdbOperation::theInitialReadSize [protected, inherited]

Uint32 NdbOperation::theInterpretedSize [protected, inherited]

Uint8 NdbOperation::theInterpretIndicator [protected, inherited]

Uint32* NdbOperation::theKEYINFOptr [protected, inherited]

class NdbBranch* NdbOperation::theLastBranch [protected, inherited]

class NdbCall* NdbOperation::theLastCall [protected, inherited]

NdbApiSignal* NdbOperation::theLastKEYINFO [protected, inherited]

class NdbLabel* NdbOperation::theLastLabel [protected, inherited]

class NdbSubroutine* NdbOperation::theLastSubroutine [protected, inherited]

LockMode NdbOperation::theLockMode [protected, inherited]

Uint32 NdbOperation::theMagicNumber [protected, inherited]

Ndb* NdbOperation::theNdb [protected, inherited]

NdbTransaction* NdbOperation::theNdbCon [protected, inherited]

NdbOperation* NdbOperation::theNext [protected, inherited]

Uint32 NdbOperation::theNoOfLabels [protected, inherited]

Uint32 NdbOperation::theNoOfSubroutines [protected, inherited]

Uint8 NdbOperation::theNoOfTupKeyLeft [protected, inherited]

OperationType NdbOperation::theOperationType [protected, inherited]

NdbReceiver NdbOperation::theReceiver [protected, inherited]

NdbApiSignal* NdbOperation::theRequest [inherited]

NdbApiSignal* NdbOperation::theSCAN_TABREQ [inherited]

Uint32 NdbOperation::theScanInfo [protected, inherited]

Uint8 NdbOperation::theSimpleIndicator [protected, inherited]

Uint8 NdbOperation::theStartIndicator [protected, inherited]

OperationStatus NdbOperation::theStatus [protected, inherited]

Uint32 NdbOperation::theSubroutineSize [protected, inherited]

NdbApiSignal* NdbOperation::theTCREQ [inherited]

Uint32 NdbOperation::theTotalCurrAI_Len [protected, inherited]

Uint32 NdbOperation::theTotalNrOfKeyWordInSignal [protected, inherited]

Uint32 NdbOperation::theTupKeyLen [protected, inherited]

Uint32 NdbOperation::theTupleKeyDefined[NDB_MAX_NO_OF_ATTRIBUTES_IN_KEY][3] [protected, inherited]


The documentation for this class was generated from the following file:

MySQL Cluster Database Blog

Based on MySQL Cluster 7.0.10.

This page is for information only and is not maintained by MySQL or Sun Microsystems - use at your own risk. For an upto date view of the API refer to the header files included with your MySQL Cluster distribution or check the MySQL Cluster API Developer Guide.