Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
0e29e5e7
Commit
0e29e5e7
authored
Jan 05, 2005
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
moved AbortOption and ExecType inside NdbTransaction
and provided some backwards compat functions
parent
5499b0c5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
115 additions
and
58 deletions
+115
-58
ndb/include/ndbapi/NdbBlob.hpp
ndb/include/ndbapi/NdbBlob.hpp
+2
-2
ndb/include/ndbapi/NdbOperation.hpp
ndb/include/ndbapi/NdbOperation.hpp
+10
-3
ndb/include/ndbapi/NdbTransaction.hpp
ndb/include/ndbapi/NdbTransaction.hpp
+80
-31
ndb/src/ndbapi/NdbBlob.cpp
ndb/src/ndbapi/NdbBlob.cpp
+23
-22
No files found.
ndb/include/ndbapi/NdbBlob.hpp
View file @
0e29e5e7
...
@@ -309,8 +309,8 @@ private:
...
@@ -309,8 +309,8 @@ private:
int
invokeActiveHook
();
int
invokeActiveHook
();
// blob handle maintenance
// blob handle maintenance
int
atPrepare
(
NdbTransaction
*
aCon
,
NdbOperation
*
anOp
,
const
NdbColumnImpl
*
aColumn
);
int
atPrepare
(
NdbTransaction
*
aCon
,
NdbOperation
*
anOp
,
const
NdbColumnImpl
*
aColumn
);
int
preExecute
(
ExecType
anExecType
,
bool
&
batch
);
int
preExecute
(
NdbTransaction
::
ExecType
anExecType
,
bool
&
batch
);
int
postExecute
(
ExecType
anExecType
);
int
postExecute
(
NdbTransaction
::
ExecType
anExecType
);
int
preCommit
();
int
preCommit
();
int
atNextResult
();
int
atNextResult
();
// errors
// errors
...
...
ndb/include/ndbapi/NdbOperation.hpp
View file @
0e29e5e7
...
@@ -59,10 +59,17 @@ public:
...
@@ -59,10 +59,17 @@ public:
*/
*/
enum
LockMode
{
enum
LockMode
{
LM_Read
=
0
,
LM_Read
///< Read with shared lock
LM_Exclusive
=
1
,
LM_CommittedRead
=
2
,
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
=
0
#endif
,
LM_Exclusive
///< Read with exclusive lock
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
=
1
#endif
,
LM_CommittedRead
///< Ignore locks, read last committed value
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
=
2
,
LM_Dirty
=
2
LM_Dirty
=
2
#endif
#endif
};
};
...
...
ndb/include/ndbapi/NdbTransaction.hpp
View file @
0e29e5e7
...
@@ -42,34 +42,22 @@ class NdbBlob;
...
@@ -42,34 +42,22 @@ class NdbBlob;
typedef
void
(
*
NdbAsynchCallback
)(
int
,
NdbTransaction
*
,
void
*
);
typedef
void
(
*
NdbAsynchCallback
)(
int
,
NdbTransaction
*
,
void
*
);
#endif
#endif
/**
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
* Commit type of transaction
enum
AbortOption
{
*/
CommitIfFailFree
=
0
,
enum
AbortOption
{
TryCommit
=
0
,
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
AbortOnError
=
0
,
CommitIfFailFree
=
0
,
CommitAsMuchAsPossible
=
2
,
CommitAsMuchAsPossible
=
2
,
///< Commit transaction with as many
AO_IgnoreError
=
2
TryCommit
=
0
,
///< <i>Missing explanation</i>
#endif
AbortOnError
=
0
,
///< Abort transaction on failed operation
AO_IgnoreError
=
2
///< Transaction continues on failed operation
};
};
typedef
AbortOption
CommitType
;
/**
* Execution type of transaction
*/
enum
ExecType
{
enum
ExecType
{
NoExecTypeDef
=
-
1
,
///< Erroneous type (Used for debugging only)
NoExecTypeDef
=
-
1
,
Prepare
,
///< <i>Missing explanation</i>
Prepare
,
NoCommit
,
///< Execute the transaction as far as it has
NoCommit
,
///< been defined, but do not yet commit it
Commit
,
Commit
,
///< Execute and try to commit the transaction
Rollback
Rollback
///< Rollback transaction
};
};
#endif
/**
/**
* @class NdbTransaction
* @class NdbTransaction
...
@@ -99,17 +87,17 @@ enum ExecType {
...
@@ -99,17 +87,17 @@ enum ExecType {
* before calling execute().
* before calling execute().
*
*
* A call to execute() uses one out of three types of execution:
* A call to execute() uses one out of three types of execution:
* -#
ExecType
::NoCommit Executes operations without committing them.
* -#
NdbTransaction
::NoCommit Executes operations without committing them.
* -#
ExecType::Commit
Executes remaining operation and commits the
* -#
NdbTransaction::Commit
Executes remaining operation and commits the
* complete transaction
* complete transaction
* -#
ExecType
::Rollback Rollbacks the entire transaction.
* -#
NdbTransaction
::Rollback Rollbacks the entire transaction.
*
*
* execute() is equipped with an extra error handling parameter.
* execute() is equipped with an extra error handling parameter.
* There are two alternatives:
* There are two alternatives:
* -#
AbortOp
tion::AbortOnError (default).
* -#
NdbTransac
tion::AbortOnError (default).
* The transaction is aborted if there are any error during the
* The transaction is aborted if there are any error during the
* execution
* execution
* -#
AbortOption::
IgnoreError
* -#
NdbTransaction::AO_
IgnoreError
* Continue execution of transaction even if operation fails
* Continue execution of transaction even if operation fails
*
*
*/
*/
...
@@ -141,6 +129,7 @@ enum ExecType {
...
@@ -141,6 +129,7 @@ enum ExecType {
* primary key since it came along from the scanned tuple.
* primary key since it came along from the scanned tuple.
*
*
*/
*/
class
NdbTransaction
class
NdbTransaction
{
{
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
...
@@ -154,6 +143,44 @@ class NdbTransaction
...
@@ -154,6 +143,44 @@ class NdbTransaction
public:
public:
/**
* Commit type of transaction
*/
enum
AbortOption
{
AbortOnError
=
///< Abort transaction on failed operation
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
::
AbortOnError
#endif
,
AO_IgnoreError
=
///< Transaction continues on failed operation
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
::
AO_IgnoreError
#endif
};
/**
* Execution type of transaction
*/
enum
ExecType
{
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
NoExecTypeDef
=
::
NoExecTypeDef
,
///< Erroneous type (Used for debugging only)
Prepare
=
::
Prepare
,
///< <i>Missing explanation</i>
#endif
NoCommit
=
///< Execute the transaction as far as it has
///< been defined, but do not yet commit it
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
::
NoCommit
#endif
,
Commit
=
///< Execute and try to commit the transaction
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
::
Commit
#endif
,
Rollback
///< Rollback transaction
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
=
::
Rollback
#endif
};
/**
/**
* Get an NdbOperation for a table.
* Get an NdbOperation for a table.
* Note that the operation has to be defined before it is executed.
* Note that the operation has to be defined before it is executed.
...
@@ -281,9 +308,15 @@ public:
...
@@ -281,9 +308,15 @@ public:
* the send.
* the send.
* @return 0 if successful otherwise -1.
* @return 0 if successful otherwise -1.
*/
*/
int
execute
(
ExecType
execType
,
int
execute
(
ExecType
execType
,
AbortOption
abortOption
=
AbortOnError
,
AbortOption
abortOption
=
AbortOnError
,
int
force
=
0
);
int
force
=
0
);
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
int
execute
(
::
ExecType
execType
,
::
AbortOption
abortOption
=
::
AbortOnError
,
int
force
=
0
)
{
return
execute
((
ExecType
)
execType
,(
AbortOption
)
abortOption
,
force
);
}
#endif
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
// to be documented later
// to be documented later
...
@@ -314,6 +347,14 @@ public:
...
@@ -314,6 +347,14 @@ public:
NdbAsynchCallback
callback
,
NdbAsynchCallback
callback
,
void
*
anyObject
,
void
*
anyObject
,
AbortOption
abortOption
=
AbortOnError
);
AbortOption
abortOption
=
AbortOnError
);
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
void
executeAsynchPrepare
(
::
ExecType
execType
,
NdbAsynchCallback
callback
,
void
*
anyObject
,
::
AbortOption
abortOption
=
::
AbortOnError
)
{
executeAsynchPrepare
((
ExecType
)
execType
,
callback
,
anyObject
,
(
AbortOption
)
abortOption
);
}
#endif
/**
/**
* Prepare and send an asynchronous transaction.
* Prepare and send an asynchronous transaction.
...
@@ -332,6 +373,14 @@ public:
...
@@ -332,6 +373,14 @@ public:
NdbAsynchCallback
aCallback
,
NdbAsynchCallback
aCallback
,
void
*
anyObject
,
void
*
anyObject
,
AbortOption
abortOption
=
AbortOnError
);
AbortOption
abortOption
=
AbortOnError
);
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
void
executeAsynch
(
::
ExecType
aTypeOfExec
,
NdbAsynchCallback
aCallback
,
void
*
anyObject
,
::
AbortOption
abortOption
=
::
AbortOnError
)
{
executeAsynch
((
ExecType
)
aTypeOfExec
,
aCallback
,
anyObject
,
(
AbortOption
)
abortOption
);
}
#endif
#endif
#endif
/**
/**
* Refresh
* Refresh
...
...
ndb/src/ndbapi/NdbBlob.cpp
View file @
0e29e5e7
...
@@ -875,7 +875,7 @@ NdbBlob::readParts(char* buf, Uint32 part, Uint32 count)
...
@@ -875,7 +875,7 @@ NdbBlob::readParts(char* buf, Uint32 part, Uint32 count)
setErrorCode
(
tOp
);
setErrorCode
(
tOp
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
buf
+=
thePartSize
;
buf
+=
thePartSize
;
n
++
;
n
++
;
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
ReadRequest
);
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
ReadRequest
);
...
@@ -898,7 +898,7 @@ NdbBlob::insertParts(const char* buf, Uint32 part, Uint32 count)
...
@@ -898,7 +898,7 @@ NdbBlob::insertParts(const char* buf, Uint32 part, Uint32 count)
setErrorCode
(
tOp
);
setErrorCode
(
tOp
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
buf
+=
thePartSize
;
buf
+=
thePartSize
;
n
++
;
n
++
;
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
InsertRequest
);
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
InsertRequest
);
...
@@ -921,7 +921,7 @@ NdbBlob::updateParts(const char* buf, Uint32 part, Uint32 count)
...
@@ -921,7 +921,7 @@ NdbBlob::updateParts(const char* buf, Uint32 part, Uint32 count)
setErrorCode
(
tOp
);
setErrorCode
(
tOp
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
buf
+=
thePartSize
;
buf
+=
thePartSize
;
n
++
;
n
++
;
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
UpdateRequest
);
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
UpdateRequest
);
...
@@ -943,7 +943,7 @@ NdbBlob::deleteParts(Uint32 part, Uint32 count)
...
@@ -943,7 +943,7 @@ NdbBlob::deleteParts(Uint32 part, Uint32 count)
setErrorCode
(
tOp
);
setErrorCode
(
tOp
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
n
++
;
n
++
;
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
DeleteRequest
);
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
DeleteRequest
);
theNdbCon
->
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
DeleteRequest
);
theNdbCon
->
thePendingBlobOps
|=
(
1
<<
NdbOperation
::
DeleteRequest
);
...
@@ -976,11 +976,11 @@ NdbBlob::deletePartsUnknown(Uint32 part)
...
@@ -976,11 +976,11 @@ NdbBlob::deletePartsUnknown(Uint32 part)
setErrorCode
(
tOp
);
setErrorCode
(
tOp
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AO_IgnoreError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AO_IgnoreError
;
n
++
;
n
++
;
}
}
DBG
(
"deletePartsUnknown: executeNoBlobs [in] bat="
<<
bat
);
DBG
(
"deletePartsUnknown: executeNoBlobs [in] bat="
<<
bat
);
if
(
theNdbCon
->
executeNoBlobs
(
NoCommit
)
==
-
1
)
if
(
theNdbCon
->
executeNoBlobs
(
N
dbTransaction
::
N
oCommit
)
==
-
1
)
return
-
1
;
return
-
1
;
DBG
(
"deletePartsUnknown: executeNoBlobs [out]"
);
DBG
(
"deletePartsUnknown: executeNoBlobs [out]"
);
n
=
0
;
n
=
0
;
...
@@ -1012,7 +1012,7 @@ NdbBlob::executePendingBlobReads()
...
@@ -1012,7 +1012,7 @@ NdbBlob::executePendingBlobReads()
Uint8
flags
=
(
1
<<
NdbOperation
::
ReadRequest
);
Uint8
flags
=
(
1
<<
NdbOperation
::
ReadRequest
);
if
(
thePendingBlobOps
&
flags
)
{
if
(
thePendingBlobOps
&
flags
)
{
DBG
(
"executePendingBlobReads: executeNoBlobs [in]"
);
DBG
(
"executePendingBlobReads: executeNoBlobs [in]"
);
if
(
theNdbCon
->
executeNoBlobs
(
NoCommit
)
==
-
1
)
if
(
theNdbCon
->
executeNoBlobs
(
N
dbTransaction
::
N
oCommit
)
==
-
1
)
return
-
1
;
return
-
1
;
DBG
(
"executePendingBlobReads: executeNoBlobs [out]"
);
DBG
(
"executePendingBlobReads: executeNoBlobs [out]"
);
thePendingBlobOps
=
0
;
thePendingBlobOps
=
0
;
...
@@ -1027,7 +1027,7 @@ NdbBlob::executePendingBlobWrites()
...
@@ -1027,7 +1027,7 @@ NdbBlob::executePendingBlobWrites()
Uint8
flags
=
0xFF
&
~
(
1
<<
NdbOperation
::
ReadRequest
);
Uint8
flags
=
0xFF
&
~
(
1
<<
NdbOperation
::
ReadRequest
);
if
(
thePendingBlobOps
&
flags
)
{
if
(
thePendingBlobOps
&
flags
)
{
DBG
(
"executePendingBlobWrites: executeNoBlobs [in]"
);
DBG
(
"executePendingBlobWrites: executeNoBlobs [in]"
);
if
(
theNdbCon
->
executeNoBlobs
(
NoCommit
)
==
-
1
)
if
(
theNdbCon
->
executeNoBlobs
(
N
dbTransaction
::
N
oCommit
)
==
-
1
)
return
-
1
;
return
-
1
;
DBG
(
"executePendingBlobWrites: executeNoBlobs [out]"
);
DBG
(
"executePendingBlobWrites: executeNoBlobs [out]"
);
thePendingBlobOps
=
0
;
thePendingBlobOps
=
0
;
...
@@ -1175,7 +1175,7 @@ NdbBlob::atPrepare(NdbTransaction* aCon, NdbOperation* anOp, const NdbColumnImpl
...
@@ -1175,7 +1175,7 @@ NdbBlob::atPrepare(NdbTransaction* aCon, NdbOperation* anOp, const NdbColumnImpl
* back after postExecute.
* back after postExecute.
*/
*/
int
int
NdbBlob
::
preExecute
(
ExecType
anExecType
,
bool
&
batch
)
NdbBlob
::
preExecute
(
NdbTransaction
::
ExecType
anExecType
,
bool
&
batch
)
{
{
DBG
(
"preExecute [in]"
);
DBG
(
"preExecute [in]"
);
if
(
theState
==
Invalid
)
if
(
theState
==
Invalid
)
...
@@ -1224,7 +1224,7 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
...
@@ -1224,7 +1224,7 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
return
-
1
;
return
-
1
;
}
}
if
(
isWriteOp
())
{
if
(
isWriteOp
())
{
tOp
->
m_abortOption
=
AO_IgnoreError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AO_IgnoreError
;
}
}
theHeadInlineReadOp
=
tOp
;
theHeadInlineReadOp
=
tOp
;
// execute immediately
// execute immediately
...
@@ -1270,7 +1270,7 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
...
@@ -1270,7 +1270,7 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
return
-
1
;
return
-
1
;
}
}
if
(
isWriteOp
())
{
if
(
isWriteOp
())
{
tOp
->
m_abortOption
=
AO_IgnoreError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AO_IgnoreError
;
}
}
theHeadInlineReadOp
=
tOp
;
theHeadInlineReadOp
=
tOp
;
// execute immediately
// execute immediately
...
@@ -1316,18 +1316,18 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
...
@@ -1316,18 +1316,18 @@ NdbBlob::preExecute(ExecType anExecType, bool& batch)
* any remaining prepared operations.
* any remaining prepared operations.
*/
*/
int
int
NdbBlob
::
postExecute
(
ExecType
anExecType
)
NdbBlob
::
postExecute
(
NdbTransaction
::
ExecType
anExecType
)
{
{
DBG
(
"postExecute [in] type="
<<
anExecType
);
DBG
(
"postExecute [in] type="
<<
anExecType
);
if
(
theState
==
Invalid
)
if
(
theState
==
Invalid
)
return
-
1
;
return
-
1
;
if
(
theState
==
Active
)
{
if
(
theState
==
Active
)
{
setState
(
anExecType
==
NoCommit
?
Active
:
Closed
);
setState
(
anExecType
==
N
dbTransaction
::
N
oCommit
?
Active
:
Closed
);
DBG
(
"postExecute [skip]"
);
DBG
(
"postExecute [skip]"
);
return
0
;
return
0
;
}
}
assert
(
theState
==
Prepared
);
assert
(
theState
==
Prepared
);
setState
(
anExecType
==
NoCommit
?
Active
:
Closed
);
setState
(
anExecType
==
N
dbTransaction
::
N
oCommit
?
Active
:
Closed
);
assert
(
isKeyOp
());
assert
(
isKeyOp
());
if
(
isIndexOp
())
{
if
(
isIndexOp
())
{
NdbBlob
*
tFirstBlob
=
theNdbOp
->
theBlobList
;
NdbBlob
*
tFirstBlob
=
theNdbOp
->
theBlobList
;
...
@@ -1343,14 +1343,15 @@ NdbBlob::postExecute(ExecType anExecType)
...
@@ -1343,14 +1343,15 @@ NdbBlob::postExecute(ExecType anExecType)
return
-
1
;
return
-
1
;
if
(
theGetFlag
)
{
if
(
theGetFlag
)
{
assert
(
theGetSetBytes
==
0
||
theGetBuf
!=
0
);
assert
(
theGetSetBytes
==
0
||
theGetBuf
!=
0
);
assert
(
theGetSetBytes
<=
theInlineSize
||
anExecType
==
NoCommit
);
assert
(
theGetSetBytes
<=
theInlineSize
||
anExecType
==
NdbTransaction
::
NoCommit
);
Uint32
bytes
=
theGetSetBytes
;
Uint32
bytes
=
theGetSetBytes
;
if
(
readDataPrivate
(
theGetBuf
,
bytes
)
==
-
1
)
if
(
readDataPrivate
(
theGetBuf
,
bytes
)
==
-
1
)
return
-
1
;
return
-
1
;
}
}
}
}
if
(
isUpdateOp
())
{
if
(
isUpdateOp
())
{
assert
(
anExecType
==
NoCommit
);
assert
(
anExecType
==
N
dbTransaction
::
N
oCommit
);
getHeadFromRecAttr
();
getHeadFromRecAttr
();
if
(
theSetFlag
)
{
if
(
theSetFlag
)
{
// setValue overwrites everything
// setValue overwrites everything
...
@@ -1367,7 +1368,7 @@ NdbBlob::postExecute(ExecType anExecType)
...
@@ -1367,7 +1368,7 @@ NdbBlob::postExecute(ExecType anExecType)
}
}
}
}
if
(
isWriteOp
()
&&
isTableOp
())
{
if
(
isWriteOp
()
&&
isTableOp
())
{
assert
(
anExecType
==
NoCommit
);
assert
(
anExecType
==
N
dbTransaction
::
N
oCommit
);
if
(
theHeadInlineReadOp
->
theError
.
code
==
0
)
{
if
(
theHeadInlineReadOp
->
theError
.
code
==
0
)
{
int
tNullFlag
=
theNullFlag
;
int
tNullFlag
=
theNullFlag
;
Uint64
tLength
=
theLength
;
Uint64
tLength
=
theLength
;
...
@@ -1418,18 +1419,18 @@ NdbBlob::postExecute(ExecType anExecType)
...
@@ -1418,18 +1419,18 @@ NdbBlob::postExecute(ExecType anExecType)
}
}
}
}
if
(
isDeleteOp
())
{
if
(
isDeleteOp
())
{
assert
(
anExecType
==
NoCommit
);
assert
(
anExecType
==
N
dbTransaction
::
N
oCommit
);
getHeadFromRecAttr
();
getHeadFromRecAttr
();
if
(
deleteParts
(
0
,
getPartCount
())
==
-
1
)
if
(
deleteParts
(
0
,
getPartCount
())
==
-
1
)
return
-
1
;
return
-
1
;
}
}
setState
(
anExecType
==
NoCommit
?
Active
:
Closed
);
setState
(
anExecType
==
N
dbTransaction
::
N
oCommit
?
Active
:
Closed
);
// activation callback
// activation callback
if
(
theActiveHook
!=
NULL
)
{
if
(
theActiveHook
!=
NULL
)
{
if
(
invokeActiveHook
()
==
-
1
)
if
(
invokeActiveHook
()
==
-
1
)
return
-
1
;
return
-
1
;
}
}
if
(
anExecType
==
NoCommit
&&
theHeadInlineUpdateFlag
)
{
if
(
anExecType
==
N
dbTransaction
::
N
oCommit
&&
theHeadInlineUpdateFlag
)
{
NdbOperation
*
tOp
=
theNdbCon
->
getNdbOperation
(
theTable
);
NdbOperation
*
tOp
=
theNdbCon
->
getNdbOperation
(
theTable
);
if
(
tOp
==
NULL
||
if
(
tOp
==
NULL
||
tOp
->
updateTuple
()
==
-
1
||
tOp
->
updateTuple
()
==
-
1
||
...
@@ -1438,7 +1439,7 @@ NdbBlob::postExecute(ExecType anExecType)
...
@@ -1438,7 +1439,7 @@ NdbBlob::postExecute(ExecType anExecType)
setErrorCode
(
NdbBlobImpl
::
ErrAbort
);
setErrorCode
(
NdbBlobImpl
::
ErrAbort
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
DBG
(
"added op to update head+inline"
);
DBG
(
"added op to update head+inline"
);
}
}
DBG
(
"postExecute [out]"
);
DBG
(
"postExecute [out]"
);
...
@@ -1468,7 +1469,7 @@ NdbBlob::preCommit()
...
@@ -1468,7 +1469,7 @@ NdbBlob::preCommit()
setErrorCode
(
NdbBlobImpl
::
ErrAbort
);
setErrorCode
(
NdbBlobImpl
::
ErrAbort
);
return
-
1
;
return
-
1
;
}
}
tOp
->
m_abortOption
=
AbortOnError
;
tOp
->
m_abortOption
=
NdbTransaction
::
AbortOnError
;
DBG
(
"added op to update head+inline"
);
DBG
(
"added op to update head+inline"
);
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment