diff options
author | unknown <jonas@perch.ndb.mysql.com> | 2007-01-30 19:45:14 +0100 |
---|---|---|
committer | unknown <jonas@perch.ndb.mysql.com> | 2007-01-30 19:45:14 +0100 |
commit | 16c58c11b1617a8a4982e46c0d339ff850cfb05f (patch) | |
tree | 4f99a47920ef821bdee7fecb704a376f0ef4cbf3 /storage/ndb/include/ndbapi/NdbOperation.hpp | |
parent | faac0f1d1b3755a49dcf8ead4d408681e1e3916f (diff) | |
download | mariadb-git-16c58c11b1617a8a4982e46c0d339ff850cfb05f.tar.gz |
ndb - interface change of handling of abort option
1) move AbortOption from NdbTransaction to NdbOperation
2) let each operation have a "default" abort option dependant on
operation type
- read - AO_IgnoreError
- dml - AbortOnError
- scan take over - AbortOnError
3) Changed default value to execute() from AbortOnError to DefaultAbortOption, which does not change the operations abort-option.
Another value to execute(AO) is equivalent to setting AO on each operation before calling execute
4) execute() does _only_ return -1 if transaction has been aborted
otherwise, you need to check each operation for error code
sql/ha_ndbcluster.cc:
adopt to changes in aption option handling
storage/ndb/include/ndbapi/NdbOperation.hpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/include/ndbapi/NdbTransaction.hpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/src/ndbapi/NdbBlob.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/src/ndbapi/NdbIndexStat.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/src/ndbapi/NdbOperationDefine.cpp:
Put default value on abortoption dependant on operation type
storage/ndb/src/ndbapi/NdbOperationExec.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/src/ndbapi/NdbTransaction.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/test/include/HugoOperations.hpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/test/ndbapi/testNdbApi.cpp:
Move "ownership" of AbortOption to operation from transaction
storage/ndb/test/src/HugoOperations.cpp:
Move "ownership" of AbortOption to operation from transaction
Diffstat (limited to 'storage/ndb/include/ndbapi/NdbOperation.hpp')
-rw-r--r-- | storage/ndb/include/ndbapi/NdbOperation.hpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/storage/ndb/include/ndbapi/NdbOperation.hpp b/storage/ndb/include/ndbapi/NdbOperation.hpp index 7f026e29578..390ab1e0d18 100644 --- a/storage/ndb/include/ndbapi/NdbOperation.hpp +++ b/storage/ndb/include/ndbapi/NdbOperation.hpp @@ -99,6 +99,19 @@ public: }; /** + * How should transaction be handled if operation fails + * + * For READ, default is AO_IgnoreError + * DML, default is AbortOnError + * CommittedRead does _only_ support AO_IgnoreError + */ + enum AbortOption { + DefaultAbortOption = -1,///< Use default as specified by op-type + AbortOnError = 0, ///< Abort transaction on failed operation + AO_IgnoreError = 2 ///< Transaction continues on failed operation + }; + + /** * Define the NdbOperation to be a standard operation of type insertTuple. * When calling NdbTransaction::execute, this operation * adds a new tuple to the table. @@ -777,8 +790,13 @@ public: */ LockMode getLockMode() const { return theLockMode; } + /** + * Get/set abort option + */ + AbortOption getAbortOption() const; + int setAbortOption(AbortOption); + #ifndef DOXYGEN_SHOULD_SKIP_INTERNAL - void setAbortOption(Int8 ao) { m_abortOption = ao; } /** * Set/get partition key @@ -857,7 +875,8 @@ protected: int doSend(int ProcessorId, Uint32 lastFlag); virtual int prepareSend(Uint32 TC_ConnectPtr, - Uint64 TransactionId); + Uint64 TransactionId, + AbortOption); virtual void setLastFlag(NdbApiSignal* signal, Uint32 lastFlag); int prepareSendInterpreted(); // Help routine to prepare* |