summaryrefslogtreecommitdiff
path: root/ndb/src/old_files/newtonapi/dba_dac.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/old_files/newtonapi/dba_dac.cpp')
-rw-r--r--ndb/src/old_files/newtonapi/dba_dac.cpp842
1 files changed, 0 insertions, 842 deletions
diff --git a/ndb/src/old_files/newtonapi/dba_dac.cpp b/ndb/src/old_files/newtonapi/dba_dac.cpp
deleted file mode 100644
index fcb4e676e46..00000000000
--- a/ndb/src/old_files/newtonapi/dba_dac.cpp
+++ /dev/null
@@ -1,842 +0,0 @@
-/* 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 */
-
-
-#include "dba_internal.hpp"
-#include <NdbSleep.h>
-
-static void
-DBA__ErrorMapping(const NdbError & err, DBA_Error_t * status){
- switch(err.classification){
- case NdbError::ConstraintViolation:
- * status = DBA_CONSTRAINT_VIOLATION;
- break;
-
- case NdbError::NoDataFound:
- * status = DBA_NO_DATA;
- break;
-
- case NdbError::TemporaryResourceError:
- case NdbError::NodeRecoveryError:
- * status = DBA_TEMPORARY_ERROR;
- break;
-
- case NdbError::InsufficientSpace:
- * status = DBA_INSUFFICIENT_SPACE;
- break;
-
- case NdbError::UnknownResultError:
- * status = DBA_UNKNOWN_RESULT;
- break;
-
- case NdbError::OverloadError:
- * status = DBA_OVERLOAD;
- break;
-
- case NdbError::TimeoutExpired:
- * status = DBA_TIMEOUT;
- break;
-
- case NdbError::SchemaError:
- * status = DBA_SCHEMA_ERROR;
- break;
-
- case NdbError::ApplicationError:
- * status = DBA_APPLICATION_ERROR;
- break;
-
- case NdbError::InternalError:
- default:
- * status = DBA_NDB_ERROR;
- break;
- }
-}
-
-/**
- * Map between NDB error codes and DBA error codes
- */
-static
-void
-DBA__CallbackErrorCodeMapping(int errorCode,
- NdbConnection * connection,
- DBA_Error_t * status,
- DBA_ErrorCode_t * errCode) {
- if(errorCode == 0){
- * status = DBA_NO_ERROR;
- * errCode = 0;
- return;
- }
- const NdbError & err = connection->getNdbError();
- DBA__ErrorMapping(err, status);
- * errCode = err.code;
-}
-
-/**
- * When startTransaction fails
- */
-static
-void
-DBA__ConnectionErrorMapping(Ndb * theNdb){
- const NdbError & err = theNdb->getNdbError();
-
- DBA_Error_t status;
- DBA__ErrorMapping(err, &status);
-
- DBA__SetLatestError(status, err.code,
- err.message);
-}
-
-/**
- * When getNdbOperation fails
- */
-static
-void
-DBA__OperationErrorMapping(Ndb * theNdb, NdbConnection * con){
- const NdbError & err = theNdb->getNdbError();
-
- DBA_Error_t status;
- DBA__ErrorMapping(err, &status);
-
- DBA__SetLatestError(status, err.code,
- err.message);
-}
-
-/**
- * When equal/get/set value fails
- */
-static
-void
-DBA__EqualErrorMapping(Ndb * theNdb, NdbConnection * con, NdbOperation * op){
- const NdbError & err = theNdb->getNdbError();
-
- DBA_Error_t status;
- DBA__ErrorMapping(err, &status);
-
- DBA__SetLatestError(status, err.code,
- err.message);
-}
-
-static
-void
-NewtonCallback(int errorCode,
- NdbConnection * connection,
- void * anyObject){
-
- DBA_AsyncCallbackFn_t CbFunc = (DBA_AsyncCallbackFn_t)anyObject;
- DBA_ReqId_t ReqId = (DBA_ReqId_t) connection;
-
- DBA_Error_t Status = (DBA_Error_t) errorCode;
- DBA_ErrorCode_t Impl_Status ;
-
- DBA__CallbackErrorCodeMapping(errorCode, connection, &Status, &Impl_Status);
-
- DBA__TheNdb->closeTransaction(connection);
-
- DBA__RecvTransactions++;
-
- CbFunc(ReqId, Status, Impl_Status);
-}
-
-/**
- * Start transaction
- */
-NdbConnection *
-startTransaction(){
- NdbConnection * con = DBA__TheNdb->startTransaction();
- if(con != 0)
- return con;
-
- const int _t = (DBA__SentTransactions - DBA__RecvTransactions);
- const int t = (_t>0?_t:-_t);
-
- if(!(DBA__TheNdb->getNdbError().code == 4006 && t > 1000)){
- DBA_DEBUG("DBA__TheNdb->getNdbError() = " <<
- DBA__TheNdb->getNdbError());
- }
-
- int sum = 0;
- int sleepTime = 10;
- for(; con == 0 && sum < DBA__StartTransactionTimout; ){
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- NdbSleep_MilliSleep(sleepTime);
- NdbMutex_Lock(DBA__TheNewtonMutex);
- con = DBA__TheNdb->startTransaction();
-
- sum += sleepTime;
- sleepTime += 10;
- }
-
- return con;
-}
-
-#define CHECK_BINDINGS(Bindings) \
- if(!DBA__ValidBinding(Bindings)){ \
- DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "Invalid bindings"); \
- return DBA_INVALID_REQID; \
- }
-
-#define CHECK_BINDINGS2(Bindings, NbBindings) \
- if(!DBA__ValidBindings(Bindings, NbBindings)){ \
- DBA__SetLatestError(DBA_APPLICATION_ERROR, 0, "Invalid bindings"); \
- return DBA_INVALID_REQID; \
- }
-
-#define CHECK_CONNECTION(Connection) \
- if(Connection == 0){ \
- DBA__ConnectionErrorMapping(DBA__TheNdb); \
- NdbMutex_Unlock(DBA__TheNewtonMutex); \
- return DBA_INVALID_REQID; \
- }
-
-#define CHECK_OPERATION(Connection, Operation) \
- if(Operation == 0){ \
- DBA__OperationErrorMapping(DBA__TheNdb, Connection); \
- DBA__TheNdb->closeTransaction(Connection); \
- NdbMutex_Unlock(DBA__TheNewtonMutex); \
- return DBA_INVALID_REQID; \
- }
-
-#define EQUAL_ERROR(Connection, Operation) { \
- DBA__EqualErrorMapping(DBA__TheNdb, Connection, Operation); \
- DBA__TheNdb->closeTransaction(Connection); \
- NdbMutex_Unlock(DBA__TheNewtonMutex); \
- return DBA_INVALID_REQID; \
- }
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-extern "C"
-DBA_ReqId_t
-DBA_ReadRows( const DBA_Binding_t* pBindings, void* const * _pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ) {
-
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->simpleRead();
-
- void * pData = _pData[i];
-
- if(!DBA__EqualGetValue(op, pBindings, pData)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_ArrayReadRows( const DBA_Binding_t* pBindings, void * pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ){
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->simpleRead();
-
- if(!DBA__EqualGetValue(op, pBindings,
- ((char*)pData)+i*pBindings->structSz)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_MultiReadRow(const DBA_Binding_t * const * pBindings,
- void * const * pData,
- int NbBindings,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS2(pBindings, NbBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbBindings; i++){
- NdbOperation * op = con->getNdbOperation(pBindings[i]->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->simpleRead();
-
- if(!DBA__EqualGetValue(op, pBindings[i], pData[i])){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-extern "C"
-DBA_ReqId_t
-DBA_InsertRows( const DBA_Binding_t* pBindings, const void * const * _pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->insertTuple();
-
- const void * pData = _pData[i];
-
- if(!DBA__EqualSetValue(op, pBindings, pData)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_ArrayInsertRows( const DBA_Binding_t* pBindings, const void * pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ){
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->insertTuple();
-
- if(!DBA__EqualSetValue(op, pBindings,
- ((char*)pData)+i*pBindings->structSz)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_MultiInsertRow(const DBA_Binding_t * const * pBindings,
- const void * const * pData,
- int NbBindings,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS2(pBindings, NbBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbBindings; i++){
- NdbOperation * op = con->getNdbOperation(pBindings[i]->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->insertTuple();
-
- if(!DBA__EqualSetValue(op, pBindings[i], pData[i])){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-extern "C"
-DBA_ReqId_t
-DBA_UpdateRows( const DBA_Binding_t* pBindings, const void * const * _pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->updateTuple();
-
- const void * pData = _pData[i];
-
- if(!DBA__EqualSetValue(op, pBindings, pData)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_ArrayUpdateRows( const DBA_Binding_t* pBindings, const void * pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ){
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->updateTuple();
-
- if(!DBA__EqualSetValue(op, pBindings,
- ((char*)pData)+i*pBindings->structSz)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_MultiUpdateRow(const DBA_Binding_t * const * pBindings,
- const void * const * pData,
- int NbBindings,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS2(pBindings, NbBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbBindings; i++){
- NdbOperation * op = con->getNdbOperation(pBindings[i]->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->updateTuple();
-
- if(!DBA__EqualSetValue(op, pBindings[i], pData[i])){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-extern "C"
-DBA_ReqId_t
-DBA_WriteRows( const DBA_Binding_t* pBindings, const void * const * _pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->writeTuple();
-
- const void * pData = _pData[i];
-
- if(!DBA__EqualSetValue(op, pBindings, pData)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_ArrayWriteRows( const DBA_Binding_t* pBindings, const void * pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ){
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->writeTuple();
-
- if(!DBA__EqualSetValue(op, pBindings,
- ((char*)pData)+i*pBindings->structSz)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_MultiWriteRow(const DBA_Binding_t * const * pBindings,
- const void * const * pData,
- int NbBindings,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS2(pBindings, NbBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbBindings; i++){
- NdbOperation * op = con->getNdbOperation(pBindings[i]->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->writeTuple();
-
- if(!DBA__EqualSetValue(op, pBindings[i], pData[i])){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-extern "C"
-DBA_ReqId_t
-DBA_DeleteRows( const DBA_Binding_t* pBindings, const void * const * _pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->deleteTuple();
-
- const void * pData = _pData[i];
-
- if(!DBA__Equal(op, pBindings, pData)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_ArrayDeleteRows( const DBA_Binding_t* pBindings, const void * pData,
- int NbRows,
- DBA_AsyncCallbackFn_t CbFunc ){
- CHECK_BINDINGS(pBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbRows; i++){
- NdbOperation * op = con->getNdbOperation(pBindings->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->deleteTuple();
-
- if(!DBA__Equal(op, pBindings,
- ((char*)pData)+i*pBindings->structSz)){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-extern "C"
-DBA_ReqId_t
-DBA_MultiDeleteRow(const DBA_Binding_t * const * pBindings,
- const void * const * pData,
- int NbBindings,
- DBA_AsyncCallbackFn_t CbFunc ) {
- CHECK_BINDINGS2(pBindings, NbBindings);
-
- NdbMutex_Lock(DBA__TheNewtonMutex);
- NdbConnection * con = startTransaction();
-
- CHECK_CONNECTION(con);
-
- for(int i = 0; i<NbBindings; i++){
- NdbOperation * op = con->getNdbOperation(pBindings[i]->tableName);
-
- CHECK_OPERATION(con, op);
-
- op->deleteTuple();
-
- if(!DBA__Equal(op, pBindings[i], pData[i])){
- EQUAL_ERROR(con, op);
- }
- }
-
- con->executeAsynchPrepare(Commit,
- NewtonCallback,
- (void*)CbFunc);
-
- DBA__SentTransactions++;
-
- NdbMutex_Unlock(DBA__TheNewtonMutex);
- return (DBA_ReqId_t) con;
-}
-
-/****** THIS LINE IS 80 CHARACTERS WIDE - DO *NOT* EXCEED 80 CHARACTERS! ****/
-
-bool
-DBA__EqualGetValue(NdbOperation * op,
- const DBA_Binding_t* pBindings,
- void * pData){
- for(int i = 0; i<pBindings->noOfKeys; i++){
- if(op->equal(pBindings->keyIds[i],
- (const char*)pData+pBindings->keyOffsets[i]) == -1){
- return false;
- }
- }
-
- for(int i = 0; i<pBindings->noOfColumns; i++){
- if(op->getValue(pBindings->columnIds[i],
- (char*)pData+pBindings->columnOffsets[i]) == 0){
- return false;
- }
- }
-
- for(int i = 0; i<pBindings->noOfSubBindings; i++){
- void * tData = *(void**)((char *)pData+pBindings->subBindingOffsets[i]);
- const DBA_Binding_t * tBinding = pBindings->subBindings[i];
- if(!DBA__EqualGetValue(op, tBinding, tData))
- return false;
- }
-
- return true;
-}
-
-bool
-DBA__EqualSetValue(NdbOperation * op,
- const DBA_Binding_t* pBindings,
- const void * pData){
-
- for(int i = 0; i<pBindings->noOfKeys; i++){
- if(op->equal(pBindings->keyIds[i],
- (const char*)pData+pBindings->keyOffsets[i]) == -1){
- return false;
- }
- }
-
- for(int i = 0; i<pBindings->noOfColumns; i++){
- if(op->setValue(pBindings->columnIds[i],
- (char*)pData+pBindings->columnOffsets[i]) == -1){
- return false;
- }
- }
-
- for(int i = 0; i<pBindings->noOfSubBindings; i++){
- void * tData = * (void**)((char *)pData+pBindings->subBindingOffsets[i]);
- const DBA_Binding_t * tBinding = pBindings->subBindings[i];
- if(!DBA__EqualSetValue(op, tBinding, tData))
- return false;
- }
-
- return true;
-}
-
-bool
-DBA__Equal(NdbOperation * op,
- const DBA_Binding_t* pBindings,
- const void * pData){
-
- for(int i = 0; i<pBindings->noOfKeys; i++)
- if(op->equal(pBindings->keyIds[i],
- (const char*)pData+pBindings->keyOffsets[i]) == -1){
- return false;
- }
-
- for(int i = 0; i<pBindings->noOfSubBindings; i++){
- void * tData = *(void**)((char *)pData+pBindings->subBindingOffsets[i]);
- const DBA_Binding_t * tBinding = pBindings->subBindings[i];
- if(!DBA__Equal(op, tBinding, tData))
- return false;
- }
-
- return true;
-}
-