mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/home/jonas/src/mysql-5.0
This commit is contained in:
@@ -40,3 +40,22 @@ p u o
|
||||
5 5 5
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
create table t1 (p int not null primary key, u int not null) engine=ndb;
|
||||
insert into t1 values (1,1),(2,2),(3,3);
|
||||
create table t2 as
|
||||
select t1.*
|
||||
from t1 as t1, t1 as t2, t1 as t3, t1 as t4, t1 as t5, t1 as t6, t1 as t7, t1 as t8
|
||||
where t1.u = t2.u
|
||||
and t2.u = t3.u
|
||||
and t3.u = t4.u
|
||||
and t4.u = t5.u
|
||||
and t5.u = t6.u
|
||||
and t6.u = t7.u
|
||||
and t7.u = t8.u;
|
||||
select * from t2 order by 1;
|
||||
p u
|
||||
1 1
|
||||
2 2
|
||||
3 3
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
|
||||
@@ -37,3 +37,26 @@ drop table t1;
|
||||
drop table t2;
|
||||
# bug#5367
|
||||
##########
|
||||
|
||||
###
|
||||
# bug#11205
|
||||
create table t1 (p int not null primary key, u int not null) engine=ndb;
|
||||
insert into t1 values (1,1),(2,2),(3,3);
|
||||
|
||||
create table t2 as
|
||||
select t1.*
|
||||
from t1 as t1, t1 as t2, t1 as t3, t1 as t4, t1 as t5, t1 as t6, t1 as t7, t1 as t8
|
||||
where t1.u = t2.u
|
||||
and t2.u = t3.u
|
||||
and t3.u = t4.u
|
||||
and t4.u = t5.u
|
||||
and t5.u = t6.u
|
||||
and t6.u = t7.u
|
||||
and t7.u = t8.u;
|
||||
|
||||
select * from t2 order by 1;
|
||||
|
||||
drop table t1;
|
||||
drop table t2;
|
||||
|
||||
|
||||
|
||||
@@ -1614,7 +1614,7 @@ private:
|
||||
Uint32 theNoOfPreparedTransactions;
|
||||
Uint32 theNoOfSentTransactions;
|
||||
Uint32 theNoOfCompletedTransactions;
|
||||
Uint32 theNoOfAllocatedTransactions;
|
||||
Uint32 theRemainingStartTransactions;
|
||||
Uint32 theMaxNoOfTransactions;
|
||||
Uint32 theMinNoOfEventsToWakeUp;
|
||||
|
||||
|
||||
@@ -352,11 +352,11 @@ Logger::log(LoggerLevel logLevel, const char* pMsg, va_list ap) const
|
||||
{
|
||||
if (m_logLevels[LL_ON] && m_logLevels[logLevel])
|
||||
{
|
||||
char buf[MAX_LOG_MESSAGE_SIZE];
|
||||
BaseString::vsnprintf(buf, sizeof(buf), pMsg, ap);
|
||||
LogHandler* pHandler = NULL;
|
||||
while ( (pHandler = m_pHandlerList->next()) != NULL)
|
||||
{
|
||||
char buf[MAX_LOG_MESSAGE_SIZE];
|
||||
BaseString::vsnprintf(buf, sizeof(buf), pMsg, ap);
|
||||
pHandler->append(m_pCategory, logLevel, buf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,10 +32,9 @@
|
||||
#include "common.hpp"
|
||||
|
||||
static const char *work_dir = CPCD_DEFAULT_WORK_DIR;
|
||||
static short unsigned int port;
|
||||
static int unsigned port;
|
||||
static int use_syslog;
|
||||
static const char *logfile = NULL;
|
||||
static const char *config_file = CPCD_DEFAULT_CONFIG_FILE;
|
||||
static const char *user = 0;
|
||||
|
||||
static struct my_option my_long_options[] =
|
||||
@@ -55,9 +54,6 @@ static struct my_option my_long_options[] =
|
||||
{ "debug", 'D', "Enable debug mode",
|
||||
(gptr*) &debug, (gptr*) &debug, 0,
|
||||
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
{ "config", 'c', "Config file",
|
||||
(gptr*) &config_file, (gptr*) &config_file, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
{ "user", 'u', "Run as user",
|
||||
(gptr*) &user, (gptr*) &user, 0,
|
||||
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
|
||||
@@ -142,7 +138,8 @@ int main(int argc, char** argv){
|
||||
|
||||
SocketServer * ss = new SocketServer();
|
||||
CPCDAPIService * serv = new CPCDAPIService(cpcd);
|
||||
if(!ss->setup(serv, &port)){
|
||||
unsigned short real_port= port; // correct type
|
||||
if(!ss->setup(serv, &real_port)){
|
||||
logger.critical("Cannot setup server: %s", strerror(errno));
|
||||
sleep(1);
|
||||
delete ss;
|
||||
|
||||
@@ -425,12 +425,20 @@ Ndb::startTransactionLocal(Uint32 aPriority, Uint32 nodeId)
|
||||
DBUG_ENTER("Ndb::startTransactionLocal");
|
||||
DBUG_PRINT("enter", ("nodeid: %d", nodeId));
|
||||
|
||||
if(unlikely(theRemainingStartTransactions == 0))
|
||||
{
|
||||
theError.code = 4006;
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
NdbTransaction* tConnection;
|
||||
Uint64 tFirstTransId = theFirstTransId;
|
||||
tConnection = doConnect(nodeId);
|
||||
if (tConnection == NULL) {
|
||||
DBUG_RETURN(NULL);
|
||||
}//if
|
||||
|
||||
theRemainingStartTransactions--;
|
||||
NdbTransaction* tConNext = theTransactionList;
|
||||
tConnection->init();
|
||||
theTransactionList = tConnection; // into a transaction list.
|
||||
@@ -481,6 +489,7 @@ Ndb::closeTransaction(NdbTransaction* aConnection)
|
||||
CHECK_STATUS_MACRO_VOID;
|
||||
|
||||
tCon = theTransactionList;
|
||||
theRemainingStartTransactions++;
|
||||
|
||||
DBUG_PRINT("info",("close trans: 0x%x transid: 0x%llx",
|
||||
aConnection, aConnection->getTransactionId()));
|
||||
|
||||
@@ -89,15 +89,18 @@ int
|
||||
NdbScanOperation::init(const NdbTableImpl* tab, NdbTransaction* myConnection)
|
||||
{
|
||||
m_transConnection = myConnection;
|
||||
//NdbTransaction* aScanConnection = theNdb->startTransaction(myConnection);
|
||||
//NdbConnection* aScanConnection = theNdb->startTransaction(myConnection);
|
||||
theNdb->theRemainingStartTransactions++; // will be checked in hupp...
|
||||
NdbTransaction* aScanConnection = theNdb->hupp(myConnection);
|
||||
if (!aScanConnection){
|
||||
theNdb->theRemainingStartTransactions--;
|
||||
setErrorCodeAbort(theNdb->getNdbError().code);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// NOTE! The hupped trans becomes the owner of the operation
|
||||
if(NdbOperation::init(tab, aScanConnection) != 0){
|
||||
theNdb->theRemainingStartTransactions--;
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -675,6 +678,7 @@ void NdbScanOperation::close(bool forceSend, bool releaseOp)
|
||||
|
||||
tCon->theScanningOp = 0;
|
||||
theNdb->closeTransaction(tCon);
|
||||
theNdb->theRemainingStartTransactions--;
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
||||
|
||||
@@ -107,12 +107,10 @@ Ndb::init(int aMaxNoOfTransactions)
|
||||
goto error_handler;
|
||||
}
|
||||
|
||||
tMaxNoOfTransactions = aMaxNoOfTransactions * 3;
|
||||
if (tMaxNoOfTransactions > 1024) {
|
||||
tMaxNoOfTransactions = 1024;
|
||||
}//if
|
||||
|
||||
tMaxNoOfTransactions = aMaxNoOfTransactions;
|
||||
theMaxNoOfTransactions = tMaxNoOfTransactions;
|
||||
|
||||
theRemainingStartTransactions= tMaxNoOfTransactions;
|
||||
thePreparedTransactionsArray = new NdbTransaction* [tMaxNoOfTransactions];
|
||||
theSentTransactionsArray = new NdbTransaction* [tMaxNoOfTransactions];
|
||||
theCompletedTransactionsArray = new NdbTransaction* [tMaxNoOfTransactions];
|
||||
|
||||
@@ -59,7 +59,7 @@ void Ndb::setup(Ndb_cluster_connection *ndb_cluster_connection,
|
||||
theNoOfPreparedTransactions= 0;
|
||||
theNoOfSentTransactions= 0;
|
||||
theNoOfCompletedTransactions= 0;
|
||||
theNoOfAllocatedTransactions= 0;
|
||||
theRemainingStartTransactions= 0;
|
||||
theMaxNoOfTransactions= 0;
|
||||
theMinNoOfEventsToWakeUp= 0;
|
||||
theConIdleList= NULL;
|
||||
|
||||
@@ -93,7 +93,6 @@ Ndb::createConIdleList(int aNrOfCon)
|
||||
}
|
||||
tNdbCon->Status(NdbTransaction::NotConnected);
|
||||
}
|
||||
theNoOfAllocatedTransactions = aNrOfCon;
|
||||
return aNrOfCon;
|
||||
}
|
||||
|
||||
@@ -193,14 +192,8 @@ Ndb::getNdbCon()
|
||||
{
|
||||
NdbTransaction* tNdbCon;
|
||||
if ( theConIdleList == NULL ) {
|
||||
if (theNoOfAllocatedTransactions < theMaxNoOfTransactions) {
|
||||
tNdbCon = new NdbTransaction(this);
|
||||
if (tNdbCon == NULL) {
|
||||
return NULL;
|
||||
}//if
|
||||
theNoOfAllocatedTransactions++;
|
||||
} else {
|
||||
ndbout << "theNoOfAllocatedTransactions = " << theNoOfAllocatedTransactions << " theMaxNoOfTransactions = " << theMaxNoOfTransactions << endl;
|
||||
tNdbCon = new NdbTransaction(this);
|
||||
if (tNdbCon == NULL) {
|
||||
return NULL;
|
||||
}//if
|
||||
tNdbCon->next(NULL);
|
||||
|
||||
@@ -1543,11 +1543,11 @@ testperf()
|
||||
}
|
||||
if (n != 0) {
|
||||
CHK(g_con->execute(Commit) == 0);
|
||||
g_ndb->closeTransaction(g_con); g_con = 0;
|
||||
n = 0;
|
||||
}
|
||||
g_bh1 = 0;
|
||||
g_opr = 0;
|
||||
g_con = 0;
|
||||
}
|
||||
// pk read char (one trans)
|
||||
{
|
||||
@@ -1571,7 +1571,7 @@ testperf()
|
||||
t1.off(g_opt.m_rowsperf);
|
||||
DBG(t1.time());
|
||||
g_opr = 0;
|
||||
g_con = 0;
|
||||
g_ndb->closeTransaction(g_con); g_con = 0;
|
||||
}
|
||||
// pk read text (one trans)
|
||||
{
|
||||
@@ -1596,7 +1596,7 @@ testperf()
|
||||
CHK(g_con->execute(Commit) == 0);
|
||||
t2.off(g_opt.m_rowsperf);
|
||||
DBG(t2.time());
|
||||
g_opr = 0;
|
||||
g_ndb->closeTransaction(g_con); g_opr = 0;
|
||||
g_con = 0;
|
||||
}
|
||||
// pk read overhead
|
||||
@@ -1629,7 +1629,7 @@ testperf()
|
||||
CHK(n == g_opt.m_rowsperf);
|
||||
t1.off(g_opt.m_rowsperf);
|
||||
DBG(t1.time());
|
||||
g_ops = 0;
|
||||
g_ndb->closeTransaction(g_con); g_ops = 0;
|
||||
g_con = 0;
|
||||
}
|
||||
// scan read text
|
||||
@@ -1662,7 +1662,7 @@ testperf()
|
||||
DBG(t2.time());
|
||||
g_bh1 = 0;
|
||||
g_ops = 0;
|
||||
g_con = 0;
|
||||
g_ndb->closeTransaction(g_con); g_con = 0;
|
||||
}
|
||||
// scan read overhead
|
||||
DBG("scan read overhead: " << t2.over(t1));
|
||||
|
||||
@@ -1269,6 +1269,101 @@ int runBug_11133(NDBT_Context* ctx, NDBT_Step* step){
|
||||
return result;
|
||||
}
|
||||
|
||||
int runScan_4006(NDBT_Context* ctx, NDBT_Step* step){
|
||||
int result = NDBT_OK;
|
||||
const Uint32 max= 5;
|
||||
const NdbDictionary::Table* pTab = ctx->getTab();
|
||||
|
||||
Ndb* pNdb = new Ndb(&ctx->m_cluster_connection, "TEST_DB");
|
||||
if (pNdb == NULL){
|
||||
ndbout << "pNdb == NULL" << endl;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
if (pNdb->init(max)){
|
||||
ERR(pNdb->getNdbError());
|
||||
delete pNdb;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
|
||||
NdbConnection* pCon = pNdb->startTransaction();
|
||||
if (pCon == NULL){
|
||||
pNdb->closeTransaction(pCon);
|
||||
delete pNdb;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
|
||||
Uint32 i;
|
||||
Vector<NdbScanOperation*> scans;
|
||||
for(i = 0; i<10*max; i++)
|
||||
{
|
||||
NdbScanOperation* pOp = pCon->getNdbScanOperation(pTab->getName());
|
||||
if (pOp == NULL){
|
||||
ERR(pCon->getNdbError());
|
||||
pNdb->closeTransaction(pCon);
|
||||
delete pNdb;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
|
||||
if (pOp->readTuples() != 0){
|
||||
pNdb->closeTransaction(pCon);
|
||||
ERR(pOp->getNdbError());
|
||||
delete pNdb;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
scans.push_back(pOp);
|
||||
}
|
||||
|
||||
// Dont' call any equal or setValues
|
||||
|
||||
// Execute should not work
|
||||
int check = pCon->execute(NoCommit);
|
||||
if (check == 0){
|
||||
ndbout << "execute worked" << endl;
|
||||
} else {
|
||||
ERR(pCon->getNdbError());
|
||||
}
|
||||
|
||||
for(i= 0; i<scans.size(); i++)
|
||||
{
|
||||
NdbScanOperation* pOp= scans[i];
|
||||
while((check= pOp->nextResult()) == 0);
|
||||
if(check != 1)
|
||||
{
|
||||
ERR(pOp->getNdbError());
|
||||
pNdb->closeTransaction(pCon);
|
||||
delete pNdb;
|
||||
return NDBT_FAILED;
|
||||
}
|
||||
}
|
||||
|
||||
pNdb->closeTransaction(pCon);
|
||||
|
||||
Vector<NdbConnection*> cons;
|
||||
for(i= 0; i<10*max; i++)
|
||||
{
|
||||
pCon= pNdb->startTransaction();
|
||||
if(pCon)
|
||||
cons.push_back(pCon);
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
for(i= 0; i<cons.size(); i++)
|
||||
{
|
||||
cons[i]->close();
|
||||
}
|
||||
|
||||
if(cons.size() != max)
|
||||
{
|
||||
result= NDBT_FAILED;
|
||||
}
|
||||
|
||||
delete pNdb;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
template class Vector<NdbScanOperation*>;
|
||||
|
||||
|
||||
NDBT_TESTSUITE(testNdbApi);
|
||||
@@ -1351,6 +1446,12 @@ TESTCASE("Bug_11133",
|
||||
INITIALIZER(runBug_11133);
|
||||
FINALIZER(runClearTable);
|
||||
}
|
||||
TESTCASE("Scan_4006",
|
||||
"Check that getNdbScanOperation does not get 4006\n"){
|
||||
INITIALIZER(runLoadTable);
|
||||
INITIALIZER(runScan_4006);
|
||||
FINALIZER(runClearTable);
|
||||
}
|
||||
NDBT_TESTSUITE_END(testNdbApi);
|
||||
|
||||
int main(int argc, const char** argv){
|
||||
|
||||
@@ -520,6 +520,10 @@ max-time: 500
|
||||
cmd: testNdbApi
|
||||
args: -n Bug_11133 T1
|
||||
|
||||
max-time: 500
|
||||
cmd: testNdbApi
|
||||
args: -n Scan_4006 T1
|
||||
|
||||
#max-time: 500
|
||||
#cmd: testInterpreter
|
||||
#args: T1
|
||||
|
||||
@@ -20,40 +20,40 @@ add_procs(){
|
||||
}
|
||||
|
||||
add_proc (){
|
||||
dir=""
|
||||
conf=""
|
||||
case $type in
|
||||
mgm)
|
||||
dir="ndb_mgmd"
|
||||
conf="[ndb_mgmd]\nId: $node_id\nHostName: $2\n"
|
||||
echo "$proc_no.ndb_mgmd" >> $dir_file
|
||||
echo "[ndb_mgmd]" >> $config_file
|
||||
echo "Id: $node_id" >> $config_file
|
||||
echo "HostName: $2" >> $config_file
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
api)
|
||||
dir="ndb_api"
|
||||
conf="[api]\nId: $node_id\nHostName: $2\n"
|
||||
echo "$proc_no.ndb_api" >> $dir_file
|
||||
echo "[api]" >> $config_file
|
||||
echo "Id: $node_id" >> $config_file
|
||||
echo "HostName: $2" >> $config_file
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
ndb)
|
||||
dir="ndbd"
|
||||
conf="[ndbd]\nId: $node_id\nHostName: $2\n"
|
||||
echo "$proc_no.ndbd" >> $dir_file
|
||||
echo "[ndbd]" >> $config_file
|
||||
echo "Id: $node_id" >> $config_file
|
||||
echo "HostName: $2" >> $config_file
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
mysqld)
|
||||
dir="mysqld"
|
||||
conf="[mysqld]\nId: $node_id\nHostName: $2\n"
|
||||
echo "$proc_no.mysqld" >> $dir_file
|
||||
echo "[ndb_mgmd]" >> $config_file
|
||||
echo "Id: $node_id" >> $config_file
|
||||
echo "HostName: $2" >> $config_file
|
||||
node_id=`expr $node_id + 1`
|
||||
;;
|
||||
mysql)
|
||||
dir="mysql"
|
||||
echo "$proc_no.mysql" >> $dir_file
|
||||
;;
|
||||
esac
|
||||
dir="$proc_no.$dir"
|
||||
proc_no=`expr $proc_no + 1`
|
||||
echo -e $dir >> $dir_file
|
||||
if [ "$conf" ]
|
||||
then
|
||||
echo -e $conf >> $config_file
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ done
|
||||
|
||||
if [ -f $conf ]
|
||||
then
|
||||
. $conf
|
||||
. ./$conf
|
||||
else
|
||||
echo "Can't find config file: $conf"
|
||||
exit
|
||||
@@ -131,8 +131,10 @@ echo "$DATE $RUN" > $LOCK
|
||||
# trap them, and remove the #
|
||||
# Lock file before exit #
|
||||
#############################
|
||||
|
||||
trap "rm -f $LOCK" ERR
|
||||
if [ `uname -s` != "SunOS" ]
|
||||
then
|
||||
trap "rm -f $LOCK" ERR
|
||||
fi
|
||||
|
||||
# You can add more to this path#
|
||||
################################
|
||||
@@ -191,7 +193,7 @@ then
|
||||
else
|
||||
echo $VERSION > /tmp/version.$$
|
||||
fi
|
||||
match=`grep -c "$VERSION" /tmp/version.$$`
|
||||
match=`grep -c "$VERSION" /tmp/version.$$ | xargs echo`
|
||||
rm -f /tmp/version.$$
|
||||
if [ $match -eq 0 ]
|
||||
then
|
||||
@@ -229,7 +231,7 @@ filter(){
|
||||
shift
|
||||
while [ $# -gt 0 ]
|
||||
do
|
||||
if [ `grep -c $1 $neg` -eq 0 ] ; then echo $1; fi
|
||||
if [ `grep -c $1 $neg | xargs echo` -eq 0 ] ; then echo $1; fi
|
||||
shift
|
||||
done
|
||||
}
|
||||
@@ -294,13 +296,12 @@ choose_conf(){
|
||||
if [ -f $test_dir/conf-$1-$HOST.txt ]
|
||||
then
|
||||
echo "$test_dir/conf-$1-$HOST.txt"
|
||||
echo "$test_dir/conf-$1-$host.txt"
|
||||
elif [ -f $test_dir/conf-$1.txt ]
|
||||
then
|
||||
echo "$test_dir/conf-$1.txt"
|
||||
else
|
||||
echo "Unable to find conf file looked for" 1>&2
|
||||
echo "$testdir/conf-$1-host.txt and" 1>&2
|
||||
echo "$testdir/conf-$1-$HOST.txt and" 1>&2
|
||||
echo "$testdir/conf-$1.txt" 1>&2
|
||||
exit
|
||||
fi
|
||||
@@ -343,7 +344,7 @@ start(){
|
||||
|
||||
count_hosts(){
|
||||
cnt=`grep "CHOOSE_host" $1 | awk '{for(i=1; i<=NF;i++) \
|
||||
if(match($i, "CHOOSE_host") > 0) print $i;}' | sort | uniq | wc -l`
|
||||
if(index($i, "CHOOSE_host") > 0) print $i;}' | sort | uniq | wc -l`
|
||||
echo $cnt
|
||||
}
|
||||
#######################################################
|
||||
|
||||
@@ -301,12 +301,11 @@ void BackupRestore::tuple_a(restore_callback_t *cb)
|
||||
cb->connection = m_ndb->startTransaction();
|
||||
if (cb->connection == NULL)
|
||||
{
|
||||
/*
|
||||
if (errorHandler(cb))
|
||||
{
|
||||
if (errorHandler(cb))
|
||||
{
|
||||
m_ndb->sendPollNdb(3000, 1);
|
||||
continue;
|
||||
}
|
||||
*/
|
||||
}
|
||||
exitHandler();
|
||||
} // if
|
||||
|
||||
@@ -423,9 +422,17 @@ void BackupRestore::cback(int result, restore_callback_t *cb)
|
||||
*/
|
||||
bool BackupRestore::errorHandler(restore_callback_t *cb)
|
||||
{
|
||||
NdbError error= cb->connection->getNdbError();
|
||||
m_ndb->closeTransaction(cb->connection);
|
||||
cb->connection= 0;
|
||||
NdbError error;
|
||||
if(cb->connection)
|
||||
{
|
||||
error= cb->connection->getNdbError();
|
||||
m_ndb->closeTransaction(cb->connection);
|
||||
cb->connection= 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
error= m_ndb->getNdbError();
|
||||
}
|
||||
|
||||
Uint32 sleepTime = 100 + cb->retries * 300;
|
||||
|
||||
@@ -440,6 +447,7 @@ bool BackupRestore::errorHandler(restore_callback_t *cb)
|
||||
break;
|
||||
|
||||
case NdbError::TemporaryError:
|
||||
err << "Temporary error: " << error << endl;
|
||||
NdbSleep_MilliSleep(sleepTime);
|
||||
return true;
|
||||
// RETRY
|
||||
|
||||
@@ -41,7 +41,7 @@ static const int parallelism= 0;
|
||||
|
||||
// Default value for max number of transactions
|
||||
// createable against NDB from this handler
|
||||
static const int max_transactions= 256;
|
||||
static const int max_transactions= 2;
|
||||
|
||||
static const char *ha_ndb_ext=".ndb";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user