Merge pnousiainen@bk-internal.mysql.com:/home/bk/mysql-4.1
into mysql.com:/export/space/pekka/ndb/version/my41
This commit is contained in:
commit
362a45fd34
@ -80,6 +80,7 @@ hf@deer.mysql.r18.ru
|
|||||||
hf@genie.(none)
|
hf@genie.(none)
|
||||||
holyfoot@mysql.com
|
holyfoot@mysql.com
|
||||||
igor@hundin.mysql.fi
|
igor@hundin.mysql.fi
|
||||||
|
igor@igor-inspiron.creware.com
|
||||||
igor@linux.local
|
igor@linux.local
|
||||||
igor@rurik.mysql.com
|
igor@rurik.mysql.com
|
||||||
ingo@mysql.com
|
ingo@mysql.com
|
||||||
@ -176,6 +177,7 @@ mysqldev@melody.local
|
|||||||
mysqldev@mysql.com
|
mysqldev@mysql.com
|
||||||
mysqldev@o2k.irixworld.net
|
mysqldev@o2k.irixworld.net
|
||||||
ndbdev@dl145b.mysql.com
|
ndbdev@dl145b.mysql.com
|
||||||
|
ndbdev@dl145c.mysql.com
|
||||||
ndbdev@eel.hemma.oreland.se
|
ndbdev@eel.hemma.oreland.se
|
||||||
ndbdev@ndbmaster.mysql.com
|
ndbdev@ndbmaster.mysql.com
|
||||||
nick@mysql.com
|
nick@mysql.com
|
||||||
|
@ -905,3 +905,37 @@ select * from t1 where city = 'Durban ';
|
|||||||
id city
|
id city
|
||||||
2 Durban
|
2 Durban
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
SET NAMES UTF8;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`id` int(20) NOT NULL auto_increment,
|
||||||
|
`country` varchar(100) NOT NULL default '',
|
||||||
|
`shortcode` varchar(100) NOT NULL default '',
|
||||||
|
`operator` varchar(100) NOT NULL default '',
|
||||||
|
`momid` varchar(30) NOT NULL default '',
|
||||||
|
`keyword` varchar(160) NOT NULL default '',
|
||||||
|
`content` varchar(160) NOT NULL default '',
|
||||||
|
`second_token` varchar(160) default NULL,
|
||||||
|
`gateway_id` int(11) NOT NULL default '0',
|
||||||
|
`created` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
`msisdn` varchar(15) NOT NULL default '',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `MSCCSPK_20030521130957121` (`momid`),
|
||||||
|
KEY `IX_mobile_originated_message_keyword` (`keyword`),
|
||||||
|
KEY `IX_mobile_originated_message_created` (`created`),
|
||||||
|
KEY `IX_mobile_originated_message_support` (`msisdn`,`momid`,`keyword`,`gateway_id`,`created`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,'blah','464','aaa','fkc1c9ilc20x0hgae7lx6j09','ERR','ERR Имри.Афимим.Аеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ад.Д имдимримрад.Адимримримрмдиримримримр м.Дадимфшьмримд им.Адимимрн имадми','ИМРИ.АФИМИМ.АЕИМИМРИМДМРИМРМРИРОР',3,'2005-06-01 17:30:43','1234567890'),
|
||||||
|
(2,'blah','464','aaa','haxpl2ilc20x00bj4tt2m5ti','11','11 g','G',3,'2005-06-02 22:43:10','1234567890');
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
`msisdn` varchar(15) NOT NULL default '',
|
||||||
|
`operator_id` int(11) NOT NULL default '0',
|
||||||
|
`created` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
UNIQUE KEY `PK_user` (`msisdn`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
INSERT INTO t2 VALUES ('1234567890',2,'2005-05-24 13:53:25');
|
||||||
|
SELECT content, t2.msisdn FROM t1, t2 WHERE t1.msisdn = '1234567890';
|
||||||
|
content msisdn
|
||||||
|
ERR Имри.Афимим.Аеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ад.Д имдимримрад.Адимримримрмдиримримримр м.Дадимфшьмримд им.Адимимрн имадми 1234567890
|
||||||
|
11 g 1234567890
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -86,3 +86,16 @@ drop table t1;
|
|||||||
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
|
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
|
||||||
NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL
|
NULLIF(5,5) IS NULL NULLIF(5,5) IS NOT NULL
|
||||||
1 0
|
1 0
|
||||||
|
CREATE TABLE t1 (a CHAR(10));
|
||||||
|
INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb');
|
||||||
|
SELECT a, NULLIF(a,'') FROM t1;
|
||||||
|
a NULLIF(a,'')
|
||||||
|
aaa aaa
|
||||||
|
NULL NULL
|
||||||
|
NULL
|
||||||
|
bbb bbb
|
||||||
|
SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL;
|
||||||
|
a NULLIF(a,'')
|
||||||
|
NULL NULL
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -746,3 +746,45 @@ insert into t1 values (2,'Durban');
|
|||||||
select * from t1 where city = 'Durban';
|
select * from t1 where city = 'Durban';
|
||||||
select * from t1 where city = 'Durban ';
|
select * from t1 where city = 'Durban ';
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug #11167: join for utf8 varchar value longer than 255 bytes
|
||||||
|
#
|
||||||
|
|
||||||
|
SET NAMES UTF8;
|
||||||
|
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
`id` int(20) NOT NULL auto_increment,
|
||||||
|
`country` varchar(100) NOT NULL default '',
|
||||||
|
`shortcode` varchar(100) NOT NULL default '',
|
||||||
|
`operator` varchar(100) NOT NULL default '',
|
||||||
|
`momid` varchar(30) NOT NULL default '',
|
||||||
|
`keyword` varchar(160) NOT NULL default '',
|
||||||
|
`content` varchar(160) NOT NULL default '',
|
||||||
|
`second_token` varchar(160) default NULL,
|
||||||
|
`gateway_id` int(11) NOT NULL default '0',
|
||||||
|
`created` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
`msisdn` varchar(15) NOT NULL default '',
|
||||||
|
PRIMARY KEY (`id`),
|
||||||
|
UNIQUE KEY `MSCCSPK_20030521130957121` (`momid`),
|
||||||
|
KEY `IX_mobile_originated_message_keyword` (`keyword`),
|
||||||
|
KEY `IX_mobile_originated_message_created` (`created`),
|
||||||
|
KEY `IX_mobile_originated_message_support` (`msisdn`,`momid`,`keyword`,`gateway_id`,`created`)
|
||||||
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES
|
||||||
|
(1,'blah','464','aaa','fkc1c9ilc20x0hgae7lx6j09','ERR','ERR Имри.Афимим.Аеимимримдмримрмрирор имримримримр имридм ирбднримрфмририримрфмфмим.Ад.Д имдимримрад.Адимримримрмдиримримримр м.Дадимфшьмримд им.Адимимрн имадми','ИМРИ.АФИМИМ.АЕИМИМРИМДМРИМРМРИРОР',3,'2005-06-01 17:30:43','1234567890'),
|
||||||
|
(2,'blah','464','aaa','haxpl2ilc20x00bj4tt2m5ti','11','11 g','G',3,'2005-06-02 22:43:10','1234567890');
|
||||||
|
|
||||||
|
CREATE TABLE t2 (
|
||||||
|
`msisdn` varchar(15) NOT NULL default '',
|
||||||
|
`operator_id` int(11) NOT NULL default '0',
|
||||||
|
`created` datetime NOT NULL default '0000-00-00 00:00:00',
|
||||||
|
UNIQUE KEY `PK_user` (`msisdn`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES ('1234567890',2,'2005-05-24 13:53:25');
|
||||||
|
|
||||||
|
SELECT content, t2.msisdn FROM t1, t2 WHERE t1.msisdn = '1234567890';
|
||||||
|
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -60,3 +60,15 @@ drop table t1;
|
|||||||
# Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL
|
# Bug #5595 NULLIF() IS NULL returns false if NULLIF() returns NULL
|
||||||
#
|
#
|
||||||
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
|
SELECT NULLIF(5,5) IS NULL, NULLIF(5,5) IS NOT NULL;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test for bug #11142: evaluation of NULLIF when the first argument is NULL
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a CHAR(10));
|
||||||
|
INSERT INTO t1 VALUES ('aaa'), (NULL), (''), ('bbb');
|
||||||
|
|
||||||
|
SELECT a, NULLIF(a,'') FROM t1;
|
||||||
|
SELECT a, NULLIF(a,'') FROM t1 WHERE NULLIF(a,'') IS NULL;
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -722,11 +722,14 @@ Dbtc::set_timeout_value(Uint32 timeOut)
|
|||||||
void
|
void
|
||||||
Dbtc::set_appl_timeout_value(Uint32 timeOut)
|
Dbtc::set_appl_timeout_value(Uint32 timeOut)
|
||||||
{
|
{
|
||||||
timeOut /= 10;
|
if (timeOut)
|
||||||
if (timeOut < ctimeOutValue) {
|
{
|
||||||
jam();
|
timeOut /= 10;
|
||||||
c_appl_timeout_value = ctimeOutValue;
|
if (timeOut < ctimeOutValue) {
|
||||||
}//if
|
jam();
|
||||||
|
c_appl_timeout_value = ctimeOutValue;
|
||||||
|
}//if
|
||||||
|
}
|
||||||
c_appl_timeout_value = timeOut;
|
c_appl_timeout_value = timeOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6133,7 +6136,8 @@ void Dbtc::timeOutFoundLab(Signal* signal, Uint32 TapiConPtr)
|
|||||||
particular state we will use the application timeout parameter rather
|
particular state we will use the application timeout parameter rather
|
||||||
than the shorter Deadlock detection timeout.
|
than the shorter Deadlock detection timeout.
|
||||||
*/
|
*/
|
||||||
if ((ctcTimer - getApiConTimer(apiConnectptr.i)) <= c_appl_timeout_value) {
|
if (c_appl_timeout_value == 0 ||
|
||||||
|
(ctcTimer - getApiConTimer(apiConnectptr.i)) <= c_appl_timeout_value) {
|
||||||
jam();
|
jam();
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
|
@ -22,14 +22,14 @@
|
|||||||
#include <NdbConfig.hpp>
|
#include <NdbConfig.hpp>
|
||||||
#include <signaldata/DumpStateOrd.hpp>
|
#include <signaldata/DumpStateOrd.hpp>
|
||||||
|
|
||||||
#define TIMEOUT 3000
|
#define TIMEOUT (Uint32)3000
|
||||||
|
|
||||||
Uint32 g_org_timeout = 3000;
|
Uint32 g_org_timeout = 3000;
|
||||||
|
|
||||||
int
|
int
|
||||||
setTransactionTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
setTransactionTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
NdbRestarter restarter;
|
NdbRestarter restarter;
|
||||||
|
int timeout = ctx->getProperty("TransactionInactiveTimeout",TIMEOUT);
|
||||||
|
|
||||||
NdbConfig conf(GETNDB(step)->getNodeId()+1);
|
NdbConfig conf(GETNDB(step)->getNodeId()+1);
|
||||||
unsigned int nodeId = conf.getMasterNodeId();
|
unsigned int nodeId = conf.getMasterNodeId();
|
||||||
if (!conf.getProperty(nodeId,
|
if (!conf.getProperty(nodeId,
|
||||||
@ -39,7 +39,7 @@ setTransactionTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
return NDBT_FAILED;
|
return NDBT_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
int val[] = { DumpStateOrd::TcSetApplTransactionTimeout, TIMEOUT };
|
int val[] = { DumpStateOrd::TcSetApplTransactionTimeout, timeout };
|
||||||
if(restarter.dumpStateAllNodes(val, 2) != 0){
|
if(restarter.dumpStateAllNodes(val, 2) != 0){
|
||||||
return NDBT_FAILED;
|
return NDBT_FAILED;
|
||||||
}
|
}
|
||||||
@ -94,9 +94,11 @@ int runTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
unsigned int nodeId = conf.getMasterNodeId();
|
unsigned int nodeId = conf.getMasterNodeId();
|
||||||
int stepNo = step->getStepNo();
|
int stepNo = step->getStepNo();
|
||||||
|
|
||||||
int minSleep = (int)(TIMEOUT * 1.5);
|
int timeout = ctx->getProperty("TransactionInactiveTimeout",TIMEOUT);
|
||||||
int maxSleep = TIMEOUT * 2;
|
|
||||||
ndbout << "TransactionInactiveTimeout="<< TIMEOUT
|
int minSleep = (int)(timeout * 1.5);
|
||||||
|
int maxSleep = timeout * 2;
|
||||||
|
ndbout << "TransactionInactiveTimeout="<< timeout
|
||||||
<< ", minSleep="<<minSleep
|
<< ", minSleep="<<minSleep
|
||||||
<< ", maxSleep="<<maxSleep<<endl;
|
<< ", maxSleep="<<maxSleep<<endl;
|
||||||
|
|
||||||
@ -134,8 +136,10 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
int mul2 = ctx->getProperty("Op2", (Uint32)0);
|
int mul2 = ctx->getProperty("Op2", (Uint32)0);
|
||||||
int records = ctx->getNumRecords();
|
int records = ctx->getNumRecords();
|
||||||
|
|
||||||
int minSleep = (int)(TIMEOUT * 1.5);
|
int timeout = ctx->getProperty("TransactionInactiveTimeout",TIMEOUT);
|
||||||
int maxSleep = TIMEOUT * 2;
|
|
||||||
|
int minSleep = (int)(timeout * 1.5);
|
||||||
|
int maxSleep = timeout * 2;
|
||||||
|
|
||||||
HugoOperations hugoOps(*ctx->getTab());
|
HugoOperations hugoOps(*ctx->getTab());
|
||||||
Ndb* pNdb = GETNDB(step);
|
Ndb* pNdb = GETNDB(step);
|
||||||
@ -148,7 +152,7 @@ int runTimeoutTrans2(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
op1 = (op1 % 5);
|
op1 = (op1 % 5);
|
||||||
op2 = (op2 % 5);
|
op2 = (op2 % 5);
|
||||||
|
|
||||||
ndbout << stepNo << ": TransactionInactiveTimeout="<< TIMEOUT
|
ndbout << stepNo << ": TransactionInactiveTimeout="<< timeout
|
||||||
<< ", minSleep="<<minSleep
|
<< ", minSleep="<<minSleep
|
||||||
<< ", maxSleep="<<maxSleep
|
<< ", maxSleep="<<maxSleep
|
||||||
<< ", op1=" << op1
|
<< ", op1=" << op1
|
||||||
@ -250,8 +254,10 @@ int runDontTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
int loops = ctx->getNumLoops();
|
int loops = ctx->getNumLoops();
|
||||||
int stepNo = step->getStepNo();
|
int stepNo = step->getStepNo();
|
||||||
|
|
||||||
int maxSleep = (int)(TIMEOUT * 0.5);
|
int timeout = ctx->getProperty("TransactionInactiveTimeout",TIMEOUT);
|
||||||
ndbout << "TransactionInactiveTimeout="<< TIMEOUT
|
|
||||||
|
int maxSleep = (int)(timeout * 0.5);
|
||||||
|
ndbout << "TransactionInactiveTimeout="<< timeout
|
||||||
<< ", maxSleep="<<maxSleep<<endl;
|
<< ", maxSleep="<<maxSleep<<endl;
|
||||||
|
|
||||||
|
|
||||||
@ -281,6 +287,51 @@ int runDontTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int runDeadlockTimeoutTrans(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
int result = NDBT_OK;
|
||||||
|
int loops = ctx->getNumLoops();
|
||||||
|
int stepNo = step->getStepNo();
|
||||||
|
|
||||||
|
Uint32 deadlock_timeout;
|
||||||
|
NdbConfig conf(GETNDB(step)->getNodeId()+1);
|
||||||
|
unsigned int nodeId = conf.getMasterNodeId();
|
||||||
|
if (!conf.getProperty(nodeId,
|
||||||
|
NODE_TYPE_DB,
|
||||||
|
CFG_DB_TRANSACTION_DEADLOCK_TIMEOUT,
|
||||||
|
&deadlock_timeout)){
|
||||||
|
return NDBT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int do_sleep = (int)(deadlock_timeout * 0.5);
|
||||||
|
|
||||||
|
|
||||||
|
HugoOperations hugoOps(*ctx->getTab());
|
||||||
|
Ndb* pNdb = GETNDB(step);
|
||||||
|
|
||||||
|
for (int l = 0; l < loops && result == NDBT_OK; l++){
|
||||||
|
|
||||||
|
do{
|
||||||
|
// Commit transaction
|
||||||
|
CHECK(hugoOps.startTransaction(pNdb) == 0);
|
||||||
|
CHECK(hugoOps.pkReadRecord(pNdb, stepNo) == 0);
|
||||||
|
CHECK(hugoOps.execute_NoCommit(pNdb) == 0);
|
||||||
|
|
||||||
|
int sleep = deadlock_timeout * 1.5 + myRandom48(do_sleep);
|
||||||
|
ndbout << "Sleeping for " << sleep << " milliseconds" << endl;
|
||||||
|
NdbSleep_MilliSleep(sleep);
|
||||||
|
|
||||||
|
// Expect that transaction has NOT timed-out
|
||||||
|
CHECK(hugoOps.execute_Commit(pNdb) == 0);
|
||||||
|
|
||||||
|
} while(false);
|
||||||
|
|
||||||
|
hugoOps.closeTransaction(pNdb);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
int runBuddyTransNoTimeout(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
int result = NDBT_OK;
|
int result = NDBT_OK;
|
||||||
int loops = ctx->getNumLoops();
|
int loops = ctx->getNumLoops();
|
||||||
@ -334,6 +385,17 @@ TESTCASE("DontTimeoutTransaction",
|
|||||||
FINALIZER(resetTransactionTimeout);
|
FINALIZER(resetTransactionTimeout);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
|
TESTCASE("Bug11290",
|
||||||
|
"Setting TransactionInactiveTimeout to 0(zero) "\
|
||||||
|
"should result in infinite timeout, and not as "\
|
||||||
|
"was the bug, a timeout that is equal to the deadlock timeout"){
|
||||||
|
TC_PROPERTY("TransactionInactiveTimeout",(Uint32)0);
|
||||||
|
INITIALIZER(runLoadTable);
|
||||||
|
INITIALIZER(setTransactionTimeout);
|
||||||
|
STEPS(runDeadlockTimeoutTrans, 1);
|
||||||
|
FINALIZER(resetTransactionTimeout);
|
||||||
|
FINALIZER(runClearTable);
|
||||||
|
}
|
||||||
TESTCASE("DontTimeoutTransaction5",
|
TESTCASE("DontTimeoutTransaction5",
|
||||||
"Test that the transaction does not timeout "\
|
"Test that the transaction does not timeout "\
|
||||||
"if we sleep during the transaction. Use a sleep "\
|
"if we sleep during the transaction. Use a sleep "\
|
||||||
|
@ -1161,9 +1161,7 @@ Item_func_nullif::val_str(String *str)
|
|||||||
bool
|
bool
|
||||||
Item_func_nullif::is_null()
|
Item_func_nullif::is_null()
|
||||||
{
|
{
|
||||||
if (!cmp.compare())
|
return (null_value= (!cmp.compare() ? 1 : args[0]->null_value));
|
||||||
return (null_value=1);
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -8112,9 +8112,9 @@ store_record_in_cache(JOIN_CACHE *cache)
|
|||||||
end > str && end[-1] == ' ' ;
|
end > str && end[-1] == ' ' ;
|
||||||
end--) ;
|
end--) ;
|
||||||
length=(uint) (end-str);
|
length=(uint) (end-str);
|
||||||
memcpy(pos+1,str,length);
|
memcpy(pos+sizeof(uint), str, length);
|
||||||
*pos=(uchar) length;
|
*((uint *) pos)= length;
|
||||||
pos+=length+1;
|
pos+= length+sizeof(uint);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -8177,9 +8177,9 @@ read_cached_record(JOIN_TAB *tab)
|
|||||||
{
|
{
|
||||||
if (copy->strip)
|
if (copy->strip)
|
||||||
{
|
{
|
||||||
memcpy(copy->str,pos+1,length=(uint) *pos);
|
memcpy(copy->str, pos+sizeof(uint), length= *((uint *) pos));
|
||||||
memset(copy->str+length,' ',copy->length-length);
|
memset(copy->str+length, ' ', copy->length-length);
|
||||||
pos+=1+length;
|
pos+= sizeof(uint)+length;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user