mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge
ndb/include/ndbapi/Ndb.hpp: Auto merged ndb/include/ndbapi/NdbConnection.hpp: Auto merged ndb/include/ndbapi/NdbIndexOperation.hpp: Auto merged ndb/Epilogue.mk_old: Auto merged ndb/src/common/debugger/signaldata/Makefile_old: Auto merged ndb/src/common/mgmcommon/Makefile_old: Auto merged ndb/src/common/util/Makefile_old: Auto merged ndb/src/kernel/Makefile_old: Auto merged ndb/src/kernel/ndb-main/Main.cpp: Auto merged ndb/src/kernel/ndb-main/Makefile_old: Auto merged ndb/src/kernel/vm/Makefile_old: Auto merged ndb/src/mgmapi/Makefile_old: Auto merged ndb/src/mgmclient/Makefile_old: Auto merged ndb/src/mgmsrv/Makefile_old: Auto merged ndb/src/mgmsrv/MgmtSrvr.cpp: Auto merged ndb/src/ndbapi/ClusterMgr.cpp: Auto merged ndb/src/ndbapi/Makefile_old: Auto merged ndb/src/ndbapi/Ndb.cpp: Auto merged ndb/src/ndbapi/NdbApiSignal.cpp: Auto merged ndb/src/ndbapi/NdbConnection.cpp: Auto merged ndb/src/ndbapi/NdbDictionaryImpl.cpp: Auto merged ndb/src/ndbapi/NdbEventOperationImpl.cpp: Auto merged ndb/src/ndbapi/NdbIndexOperation.cpp: Auto merged ndb/src/ndbapi/NdbOperation.cpp: Auto merged ndb/src/ndbapi/NdbOperationDefine.cpp: Auto merged ndb/src/ndbapi/NdbOperationExec.cpp: Auto merged ndb/src/ndbapi/NdbOperationInt.cpp: Auto merged ndb/src/ndbapi/Ndbinit.cpp: Auto merged ndb/src/ndbapi/TransporterFacade.cpp: Auto merged ndb/src/ndbapi/TransporterFacade.hpp: Auto merged ndb/test/ndbapi/Makefile_old: Auto merged ndb/test/ndbapi/ScanFunctions.hpp: Auto merged ndb/test/ndbapi/ScanInterpretTest.hpp: Auto merged ndb/test/ndbapi/testDataBuffers.cpp: Auto merged ndb/test/ndbapi/old_dirs/testBackup/Makefile: Auto merged ndb/test/ndbapi/old_dirs/testGrep/Makefile: Auto merged ndb/test/ndbapi/old_dirs/testGrep/verify/Makefile: Auto merged ndb/test/ndbapi/testDict.cpp: Auto merged ndb/test/ndbapi/testGrep.cpp: Auto merged ndb/test/ndbapi/testIndex.cpp: Auto merged ndb/test/ndbapi/testOIBasic.cpp: Auto merged ndb/test/ndbapi/testSystemRestart.cpp: Auto merged ndb/test/ndbapi/testTimeout.cpp: Auto merged ndb/test/src/Makefile_old: Auto merged ndb/test/src/UtilTransactions.cpp: Auto merged ndb/test/tools/create_index.cpp: Auto merged ndb/tools/select_all.cpp: Auto merged
This commit is contained in:
@ -29,11 +29,13 @@
|
||||
|
||||
int scanReadRecords(Ndb*,
|
||||
const NdbDictionary::Table*,
|
||||
const NdbDictionary::Index*,
|
||||
int parallel,
|
||||
int lockType,
|
||||
bool headers,
|
||||
bool useHexFormat,
|
||||
char delim);
|
||||
char delim,
|
||||
bool orderby);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
int _parallelism = 240;
|
||||
@ -44,6 +46,7 @@ int main(int argc, const char** argv){
|
||||
const char* _dbname = "TEST_DB";
|
||||
int _help = 0;
|
||||
int _lock = 0;
|
||||
int _order = 0;
|
||||
|
||||
struct getargs args[] = {
|
||||
{ "database", 'd', arg_string, &_dbname, "dbname",
|
||||
@ -57,7 +60,8 @@ int main(int argc, const char** argv){
|
||||
"delimiter" },
|
||||
{ "usage", '?', arg_flag, &_help, "Print help", "" },
|
||||
{ "lock", 'l', arg_integer, &_lock,
|
||||
"Read(0), Read-hold(1), Exclusive(2)", "lock"}
|
||||
"Read(0), Read-hold(1), Exclusive(2)", "lock"},
|
||||
{ "order", 'o', arg_flag, &_order, "Sort resultset according to index", ""}
|
||||
};
|
||||
int num_args = sizeof(args) / sizeof(args[0]);
|
||||
int optind = 0;
|
||||
@ -90,6 +94,11 @@ int main(int argc, const char** argv){
|
||||
|
||||
// Check if table exists in db
|
||||
const NdbDictionary::Table* pTab = NDBT_Table::discoverTableFromDb(&MyNdb, _tabname);
|
||||
const NdbDictionary::Index * pIdx = 0;
|
||||
if(optind+1 < argc){
|
||||
pIdx = MyNdb.getDictionary()->getIndex(argv[optind+1], _tabname);
|
||||
}
|
||||
|
||||
if(pTab == NULL){
|
||||
ndbout << " Table " << _tabname << " does not exist!" << endl;
|
||||
return NDBT_ProgramExit(NDBT_WRONGARGS);
|
||||
@ -97,11 +106,12 @@ int main(int argc, const char** argv){
|
||||
|
||||
if (scanReadRecords(&MyNdb,
|
||||
pTab,
|
||||
pIdx,
|
||||
_parallelism,
|
||||
_lock,
|
||||
_header,
|
||||
_useHexFormat,
|
||||
(char)*_delimiter) != 0){
|
||||
(char)*_delimiter, _order) != 0){
|
||||
return NDBT_ProgramExit(NDBT_FAILED);
|
||||
}
|
||||
|
||||
@ -111,17 +121,19 @@ int main(int argc, const char** argv){
|
||||
|
||||
int scanReadRecords(Ndb* pNdb,
|
||||
const NdbDictionary::Table* pTab,
|
||||
const NdbDictionary::Index* pIdx,
|
||||
int parallel,
|
||||
int _lock,
|
||||
bool headers,
|
||||
bool useHexFormat,
|
||||
char delimiter){
|
||||
char delimiter, bool order){
|
||||
|
||||
int retryAttempt = 0;
|
||||
const int retryMax = 100;
|
||||
int check;
|
||||
NdbConnection *pTrans;
|
||||
NdbOperation *pOp;
|
||||
NdbScanOperation *pOp;
|
||||
NdbIndexScanOperation * pIOp;
|
||||
|
||||
NDBT_ResultRow * row = new NDBT_ResultRow(*pTab, delimiter);
|
||||
|
||||
@ -146,29 +158,45 @@ int scanReadRecords(Ndb* pNdb,
|
||||
return -1;
|
||||
}
|
||||
|
||||
pOp = pTrans->getNdbOperation(pTab->getName());
|
||||
|
||||
pOp = (!pIdx) ? pTrans->getNdbScanOperation(pTab->getName()) :
|
||||
pIOp=pTrans->getNdbIndexScanOperation(pIdx->getName(), pTab->getName());
|
||||
|
||||
if (pOp == NULL) {
|
||||
ERR(pTrans->getNdbError());
|
||||
pNdb->closeTransaction(pTrans);
|
||||
return -1;
|
||||
}
|
||||
|
||||
switch(_lock){
|
||||
NdbResultSet * rs;
|
||||
switch(_lock + (3 * order)){
|
||||
case 1:
|
||||
check = pOp->openScanReadHoldLock(parallel);
|
||||
rs = pOp->readTuples(NdbScanOperation::LM_Read, 0, parallel);
|
||||
break;
|
||||
case 2:
|
||||
check = pOp->openScanExclusive(parallel);
|
||||
rs = pOp->readTuples(NdbScanOperation::LM_Exclusive, 0, parallel);
|
||||
break;
|
||||
case 3:
|
||||
rs = pIOp->readTuples(NdbScanOperation::LM_CommittedRead, 0, parallel,
|
||||
true);
|
||||
break;
|
||||
case 4:
|
||||
rs = pIOp->readTuples(NdbScanOperation::LM_Read, 0, parallel, true);
|
||||
break;
|
||||
case 5:
|
||||
rs = pIOp->readTuples(NdbScanOperation::LM_Exclusive, 0, parallel, true);
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
check = pOp->openScanRead(parallel);
|
||||
rs = pOp->readTuples(NdbScanOperation::LM_CommittedRead, 0, parallel);
|
||||
break;
|
||||
}
|
||||
if( check == -1 ) {
|
||||
if( rs == 0 ){
|
||||
ERR(pTrans->getNdbError());
|
||||
pNdb->closeTransaction(pTrans);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
if(0){
|
||||
NdbScanFilter sf(pOp);
|
||||
#if 0
|
||||
@ -229,10 +257,10 @@ int scanReadRecords(Ndb* pNdb,
|
||||
}
|
||||
}
|
||||
|
||||
check = pTrans->executeScan();
|
||||
check = pTrans->execute(NoCommit);
|
||||
if( check == -1 ) {
|
||||
const NdbError err = pTrans->getNdbError();
|
||||
|
||||
|
||||
if (err.status == NdbError::TemporaryError){
|
||||
pNdb->closeTransaction(pTrans);
|
||||
NdbSleep_MilliSleep(50);
|
||||
@ -246,11 +274,11 @@ int scanReadRecords(Ndb* pNdb,
|
||||
|
||||
if (headers)
|
||||
row->header(ndbout) << endl;
|
||||
|
||||
|
||||
int eof;
|
||||
int rows = 0;
|
||||
eof = pTrans->nextScanResult();
|
||||
|
||||
eof = rs->nextResult();
|
||||
|
||||
while(eof == 0){
|
||||
rows++;
|
||||
|
||||
@ -260,7 +288,7 @@ int scanReadRecords(Ndb* pNdb,
|
||||
ndbout << (*row) << endl;
|
||||
}
|
||||
|
||||
eof = pTrans->nextScanResult();
|
||||
eof = rs->nextResult();
|
||||
}
|
||||
if (eof == -1) {
|
||||
const NdbError err = pTrans->getNdbError();
|
||||
|
Reference in New Issue
Block a user