diff options
author | unknown <tomas@poseidon.ndb.mysql.com> | 2004-06-03 18:25:46 +0000 |
---|---|---|
committer | unknown <tomas@poseidon.ndb.mysql.com> | 2004-06-03 18:25:46 +0000 |
commit | 25d66d30fa9681be3eaa25e7ef1b0f6cb87d8997 (patch) | |
tree | c3976a177e78be65149611ef9a02e6baa1c9d4d9 /ndb/tools/select_count.cpp | |
parent | 06f230b2b9400a07b171b52a1c09ada9990352f7 (diff) | |
download | mariadb-git-25d66d30fa9681be3eaa25e7ef1b0f6cb87d8997.tar.gz |
ndb make updates
ndb/src/common/portlib/NdbCondition.c:
Rename: ndb/src/common/portlib/unix/NdbCondition.c -> ndb/src/common/portlib/NdbCondition.c
ndb/src/common/portlib/NdbDaemon.c:
Rename: ndb/src/common/portlib/unix/NdbDaemon.c -> ndb/src/common/portlib/NdbDaemon.c
ndb/src/common/portlib/NdbEnv.c:
Rename: ndb/src/common/portlib/unix/NdbEnv.c -> ndb/src/common/portlib/NdbEnv.c
ndb/src/common/portlib/NdbHost.c:
Rename: ndb/src/common/portlib/unix/NdbHost.c -> ndb/src/common/portlib/NdbHost.c
ndb/src/common/portlib/NdbMem.c:
Rename: ndb/src/common/portlib/unix/NdbMem.c -> ndb/src/common/portlib/NdbMem.c
ndb/src/common/portlib/NdbMutex.c:
Rename: ndb/src/common/portlib/unix/NdbMutex.c -> ndb/src/common/portlib/NdbMutex.c
ndb/src/common/portlib/NdbSleep.c:
Rename: ndb/src/common/portlib/unix/NdbSleep.c -> ndb/src/common/portlib/NdbSleep.c
ndb/src/common/portlib/NdbTCP.c:
Rename: ndb/src/common/portlib/unix/NdbTCP.c -> ndb/src/common/portlib/NdbTCP.c
ndb/src/common/portlib/NdbThread.c:
Rename: ndb/src/common/portlib/unix/NdbThread.c -> ndb/src/common/portlib/NdbThread.c
ndb/src/common/portlib/NdbTick.c:
Rename: ndb/src/common/portlib/unix/NdbTick.c -> ndb/src/common/portlib/NdbTick.c
BitKeeper/deleted/.del-Makefile.am~4d9c81a4353f3ee8:
Delete: ndb/src/common/portlib/unix/Makefile.am
ndb/src/common/portlib/old_dirs/unix/Makefile_old:
mvdir
ndb/src/common/portlib/old_dirs/win32/Makefile:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbCondition.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbDaemon.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbEnv.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbHost.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbMem.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbMutex.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbSleep.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbTCP.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbThread.c:
mvdir
ndb/src/common/portlib/old_dirs/win32/NdbTick.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/Makefile:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbCondition.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbConditionOSE.h:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbEnv.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbHost.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbMem.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbMem_SoftOse.cpp:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbMutex.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbOut.cpp:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbSleep.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbTCP.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbThread.c:
mvdir
ndb/src/common/portlib/old_dirs/ose/NdbTick.c:
mvdir
ndb/src/common/portlib/memtest.c:
Rename: ndb/src/common/portlib/memtest/memtest.c -> ndb/src/common/portlib/memtest.c
ndb/src/common/portlib/munmaptest.cpp:
Rename: ndb/src/common/portlib/memtest/munmaptest/munmaptest.cpp -> ndb/src/common/portlib/munmaptest.cpp
ndb/src/common/portlib/mmslist.cpp:
Rename: ndb/src/common/portlib/mmstest/mmslist.cpp -> ndb/src/common/portlib/mmslist.cpp
ndb/src/common/portlib/mmstest.cpp:
Rename: ndb/src/common/portlib/mmstest/mmstest.cpp -> ndb/src/common/portlib/mmstest.cpp
ndb/src/common/portlib/old_dirs/memtest/Makefile:
mvdir
ndb/src/common/portlib/old_dirs/memtest/munmaptest/Makefile:
mvdir
ndb/src/common/portlib/NdbPortLibTest.cpp:
Rename: ndb/src/common/portlib/test/NdbPortLibTest.cpp -> ndb/src/common/portlib/NdbPortLibTest.cpp
ndb/src/common/portlib/old_dirs/test/Makefile:
mvdir
Diffstat (limited to 'ndb/tools/select_count.cpp')
-rw-r--r-- | ndb/tools/select_count.cpp | 115 |
1 files changed, 112 insertions, 3 deletions
diff --git a/ndb/tools/select_count.cpp b/ndb/tools/select_count.cpp index b1513ad4135..cae91feb378 100644 --- a/ndb/tools/select_count.cpp +++ b/ndb/tools/select_count.cpp @@ -26,6 +26,12 @@ #include <getarg.h> #include <UtilTransactions.hpp> +static int +select_count(Ndb* pNdb, const NdbDictionary::Table* pTab, + int parallelism, + int* count_rows, + UtilTransactions::ScanLock lock, + NdbConnection* pBuddyTrans=0); int main(int argc, const char** argv){ const char* _dbname = "TEST_DB"; @@ -75,9 +81,8 @@ int main(int argc, const char** argv){ } int rows = 0; - UtilTransactions utilTrans(*pTab); - if (utilTrans.selectCount(&MyNdb, _parallelism, &rows, - (UtilTransactions::ScanLock)_lock) != 0){ + if (select_count(&MyNdb, pTab, _parallelism, &rows, + (UtilTransactions::ScanLock)_lock) != 0){ return NDBT_ProgramExit(NDBT_FAILED); } @@ -86,5 +91,109 @@ int main(int argc, const char** argv){ return NDBT_ProgramExit(NDBT_OK); } +int +select_count(Ndb* pNdb, const NdbDictionary::Table* pTab, + int parallelism, + int* count_rows, + UtilTransactions::ScanLock lock, + NdbConnection* pBuddyTrans){ + + int retryAttempt = 0; + const int retryMax = 100; + int check; + NdbConnection *pTrans; + NdbOperation *pOp; + + while (true){ + + if (retryAttempt >= retryMax){ + g_info << "ERROR: has retried this operation " << retryAttempt + << " times, failing!" << endl; + return NDBT_FAILED; + } + + pTrans = pNdb->hupp(pBuddyTrans); + if (pTrans == NULL) { + const NdbError err = pNdb->getNdbError(); + + if (err.status == NdbError::TemporaryError){ + NdbSleep_MilliSleep(50); + retryAttempt++; + continue; + } + ERR(err); + return NDBT_FAILED; + } + pOp = pTrans->getNdbOperation(pTab->getName()); + if (pOp == NULL) { + ERR(pTrans->getNdbError()); + pNdb->closeTransaction(pTrans); + return NDBT_FAILED; + } + + switch(lock){ + case UtilTransactions::SL_ReadHold: + check = pOp->openScanReadHoldLock(parallelism); + break; + case UtilTransactions::SL_Exclusive: + check = pOp->openScanExclusive(parallelism); + break; + case UtilTransactions::SL_Read: + default: + check = pOp->openScanRead(parallelism); + } + + if( check == -1 ) { + ERR(pTrans->getNdbError()); + pNdb->closeTransaction(pTrans); + return NDBT_FAILED; + } + + check = pOp->interpret_exit_ok(); + if( check == -1 ) { + ERR(pTrans->getNdbError()); + pNdb->closeTransaction(pTrans); + return NDBT_FAILED; + } + + check = pTrans->executeScan(); + if( check == -1 ) { + ERR(pTrans->getNdbError()); + pNdb->closeTransaction(pTrans); + return NDBT_FAILED; + } + + int eof; + int rows = 0; + eof = pTrans->nextScanResult(); + + while(eof == 0){ + rows++; + eof = pTrans->nextScanResult(); + } + if (eof == -1) { + const NdbError err = pTrans->getNdbError(); + + if (err.status == NdbError::TemporaryError){ + pNdb->closeTransaction(pTrans); + NdbSleep_MilliSleep(50); + retryAttempt++; + continue; + } + ERR(err); + pNdb->closeTransaction(pTrans); + return NDBT_FAILED; + } + + pNdb->closeTransaction(pTrans); + + if (count_rows != NULL){ + *count_rows = rows; + } + + return NDBT_OK; + } + return NDBT_FAILED; +} |