Below is the list of changes that have just been committed into a local
5.0 repository of justin.he. When justin.he does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-03-01 13:29:37+08:00, Justin.He@stripped +4 -0
Merge dev3-240.dev.cn.tlan:/home/justin.he/mysql/mysql-5.0/mysql-5.0-ndb-bj
into dev3-240.dev.cn.tlan:/home/justin.he/mysql/mysql-5.0/bug24568-5.0-ndb-bj
MERGE: 1.2281.4.14
ndb/src/ndbapi/NdbScanFilter.cpp@stripped, 2007-03-01 13:29:32+08:00, Justin.He@stripped +0 -0
Auto merged
MERGE: 1.8.1.1
ndb/test/include/NDBT_Test.hpp@stripped, 2007-03-01 13:29:32+08:00, Justin.He@stripped +0 -0
Auto merged
MERGE: 1.13.1.1
ndb/test/ndbapi/Makefile.am@stripped, 2007-03-01 13:29:32+08:00, Justin.He@stripped +0 -0
Auto merged
MERGE: 1.27.1.1
ndb/test/src/NDBT_Test.cpp@stripped, 2007-03-01 13:29:32+08:00, Justin.He@stripped +0 -0
Auto merged
MERGE: 1.25.1.1
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: Justin.He
# Host: dev3-240.dev.cn.tlan
# Root: /home/justin.he/mysql/mysql-5.0/bug24568-5.0-ndb-bj/RESYNC
--- 1.9/ndb/src/ndbapi/NdbScanFilter.cpp 2007-03-01 13:29:45 +08:00
+++ 1.10/ndb/src/ndbapi/NdbScanFilter.cpp 2007-03-01 13:29:45 +08:00
@@ -41,7 +41,9 @@
int m_label;
State m_current;
+ Uint32 m_negative; //used for translating NAND/NOR to AND/OR, equal 0 or 1
Vector<State> m_stack;
+ Vector<Uint32> m_stack2; //to store info of m_negative
NdbOperation * m_operation;
Uint32 m_latestAttrib;
@@ -65,6 +67,7 @@
m_impl.m_label = 0;
m_impl.m_latestAttrib = ~0;
m_impl.m_operation = op;
+ m_impl.m_negative = 0;
}
NdbScanFilter::~NdbScanFilter(){
@@ -74,18 +77,39 @@
int
NdbScanFilter::begin(Group group){
+ m_impl.m_stack2.push_back(m_impl.m_negative);
switch(group){
case NdbScanFilter::AND:
INT_DEBUG(("Begin(AND)"));
+ if(m_impl.m_negative == 1){
+ group = NdbScanFilter::OR;
+ }
break;
case NdbScanFilter::OR:
INT_DEBUG(("Begin(OR)"));
+ if(m_impl.m_negative == 1){
+ group = NdbScanFilter::AND;
+ }
break;
case NdbScanFilter::NAND:
INT_DEBUG(("Begin(NAND)"));
+ if(m_impl.m_negative == 0){
+ group = NdbScanFilter::OR;
+ m_impl.m_negative = 1;
+ }else{
+ group = NdbScanFilter::AND;
+ m_impl.m_negative = 0;
+ }
break;
case NdbScanFilter::NOR:
INT_DEBUG(("Begin(NOR)"));
+ if(m_impl.m_negative == 0){
+ group = NdbScanFilter::AND;
+ m_impl.m_negative = 1;
+ }else{
+ group = NdbScanFilter::OR;
+ m_impl.m_negative = 0;
+ }
break;
}
@@ -129,6 +153,13 @@
int
NdbScanFilter::end(){
+ if(m_impl.m_stack2.size() == 0){
+ m_impl.m_operation->setErrorCodeAbort(4259);
+ return -1;
+ }
+ m_impl.m_negative = m_impl.m_stack2.back();
+ m_impl.m_stack2.erase(m_impl.m_stack2.size() - 1);
+
switch(m_impl.m_current.m_group){
case NdbScanFilter::AND:
INT_DEBUG(("End(AND pc=%d)", m_impl.m_current.m_popCount));
@@ -150,6 +181,10 @@
}
NdbScanFilterImpl::State tmp = m_impl.m_current;
+ if(m_impl.m_stack.size() == 0){
+ m_impl.m_operation->setErrorCodeAbort(4259);
+ return -1;
+ }
m_impl.m_current = m_impl.m_stack.back();
m_impl.m_stack.erase(m_impl.m_stack.size() - 1);
@@ -394,8 +429,17 @@
m_operation->setErrorCodeAbort(4260);
return -1;
}
+
+ StrBranch2 branch;
+ if(m_negative == 1){ //change NdbOperation to its negative
+ if(m_current.m_group == NdbScanFilter::AND)
+ branch = table3[op].m_branches[(Uint32)(m_current.m_group) + 1];
+ if(m_current.m_group == NdbScanFilter::OR)
+ branch = table3[op].m_branches[(Uint32)(m_current.m_group) - 1];
+ }else{
+ branch = table3[op].m_branches[(Uint32)(m_current.m_group)];
+ }
- StrBranch2 branch = table3[op].m_branches[m_current.m_group];
const NdbDictionary::Column * col =
m_operation->m_currentTable->getColumn(AttrId);
--- 1.14/ndb/test/include/NDBT_Test.hpp 2007-03-01 13:29:45 +08:00
+++ 1.15/ndb/test/include/NDBT_Test.hpp 2007-03-01 13:29:45 +08:00
@@ -325,6 +325,12 @@
// supply argc and argv as parameters
int execute(int, const char**);
+ // NDBT's test tables are fixed and it always create
+ // and drop fixed table when execute, add this method
+ // in order to run CTX only and adapt to some new
+ // customized testsuite
+ int executeOneCtx(Ndb_cluster_connection&,
+ const NdbDictionary::Table* ptab, const char* testname = NULL);
// These function can be used from main in the test program
// to control the behaviour of the testsuite
--- 1.26/ndb/test/src/NDBT_Test.cpp 2007-03-01 13:29:45 +08:00
+++ 1.27/ndb/test/src/NDBT_Test.cpp 2007-03-01 13:29:45 +08:00
@@ -817,6 +817,63 @@
}
}
+int
+NDBT_TestSuite::executeOneCtx(Ndb_cluster_connection& con,
+ const NdbDictionary::Table *ptab, const char* _testname){
+
+ testSuiteTimer.doStart();
+
+ do{
+ if(tests.size() == 0)
+ break;
+
+ Ndb ndb(&con, "TEST_DB");
+ ndb.init(1024);
+
+ int result = ndb.waitUntilReady(300); // 5 minutes
+ if (result != 0){
+ g_err << name <<": Ndb was not ready" << endl;
+ break;
+ }
+
+ ndbout << name << " started [" << getDate() << "]" << endl;
+ ndbout << "|- " << ptab->getName() << endl;
+
+ for (unsigned t = 0; t < tests.size(); t++){
+
+ if (_testname != NULL &&
+ strcasecmp(tests[t]->getName(), _testname) != 0)
+ continue;
+
+ tests[t]->initBeforeTest();
+
+ ctx = new NDBT_Context(con);
+ ctx->setTab(ptab);
+ ctx->setNumRecords(records);
+ ctx->setNumLoops(loops);
+ if(remote_mgm != NULL)
+ ctx->setRemoteMgm(remote_mgm);
+ ctx->setSuite(this);
+
+ result = tests[t]->execute(ctx);
+ if (result != NDBT_OK)
+ numTestsFail++;
+ else
+ numTestsOk++;
+ numTestsExecuted++;
+
+ delete ctx;
+ }
+
+ if (numTestsFail > 0)
+ break;
+ }while(0);
+
+ testSuiteTimer.doStop();
+ int res = report(_testname);
+ return NDBT_ProgramExit(res);
+}
+
void NDBT_TestSuite::execute(Ndb_cluster_connection& con,
Ndb* ndb, const NdbDictionary::Table* pTab,
const char* _testname){
--- 1.28/ndb/test/ndbapi/Makefile.am 2007-03-01 13:29:45 +08:00
+++ 1.29/ndb/test/ndbapi/Makefile.am 2007-03-01 13:29:45 +08:00
@@ -39,6 +39,7 @@
testRestartGci \
testScan \
testInterpreter \
+testScanFilter \
testScanInterpreter \
testScanPerf \
testSystemRestart \
@@ -83,6 +84,7 @@
testRestartGci_SOURCES = testRestartGci.cpp
testScan_SOURCES = testScan.cpp ScanFunctions.hpp
testInterpreter_SOURCES = testInterpreter.cpp
+testScanFilter_SOURCES = testScanFilter.cpp
testScanInterpreter_SOURCES = testScanInterpreter.cpp ScanFilter.hpp ScanInterpretTest.hpp
testScanPerf_SOURCES = testScanPerf.cpp
testSystemRestart_SOURCES = testSystemRestart.cpp
| Thread |
|---|
| • bk commit into 5.0 tree (Justin.He:1.2389) | justin.he | 5 Mar |