summaryrefslogtreecommitdiff
path: root/storage/ndb/include/ndbapi/NdbOperation.hpp
diff options
context:
space:
mode:
authorunknown <jonas@perch.ndb.mysql.com>2007-01-30 19:45:14 +0100
committerunknown <jonas@perch.ndb.mysql.com>2007-01-30 19:45:14 +0100
commit16c58c11b1617a8a4982e46c0d339ff850cfb05f (patch)
tree4f99a47920ef821bdee7fecb704a376f0ef4cbf3 /storage/ndb/include/ndbapi/NdbOperation.hpp
parentfaac0f1d1b3755a49dcf8ead4d408681e1e3916f (diff)
downloadmariadb-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.hpp23
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*