mirror of
https://github.com/MariaDB/server.git
synced 2025-09-02 09:41:40 +03:00
Merge neptunus.(none):/home/msvensson/mysql/mysql-5.0
into neptunus.(none):/home/msvensson/mysql/wl2930/my50-wl2930-integration
This commit is contained in:
@@ -18,7 +18,7 @@ SHARED_LIB_VERSION=15:0:0
|
|||||||
# ndb version
|
# ndb version
|
||||||
NDB_VERSION_MAJOR=5
|
NDB_VERSION_MAJOR=5
|
||||||
NDB_VERSION_MINOR=0
|
NDB_VERSION_MINOR=0
|
||||||
NDB_VERSION_BUILD=17
|
NDB_VERSION_BUILD=18
|
||||||
NDB_VERSION_STATUS=""
|
NDB_VERSION_STATUS=""
|
||||||
|
|
||||||
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
# Set all version vars based on $VERSION. How do we do this more elegant ?
|
||||||
|
@@ -1289,6 +1289,25 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd");
|
|||||||
id
|
id
|
||||||
4
|
4
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
create table t1 (a int, key(a)) engine=bdb;
|
||||||
|
create table t2 (b int, key(b)) engine=bdb;
|
||||||
|
insert into t1 values (1),(1),(2),(3),(4);
|
||||||
|
insert into t2 values (1),(5),(6),(7);
|
||||||
|
delete from t1 where (a in (select b from t2));
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
3
|
||||||
|
insert into t1 set a=(select b from t2);
|
||||||
|
ERROR 21000: Subquery returns more than 1 row
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
3
|
||||||
|
update t1 set a = a + 1 where (a in (select b from t2));
|
||||||
|
select count(*) from t1;
|
||||||
|
count(*)
|
||||||
|
3
|
||||||
|
drop table t1, t2;
|
||||||
|
End of 4.1 tests
|
||||||
create temporary table t1 (a int, primary key(a)) engine=bdb;
|
create temporary table t1 (a int, primary key(a)) engine=bdb;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
a
|
a
|
||||||
|
@@ -31,7 +31,7 @@ n
|
|||||||
4
|
4
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 319 # Master master-bin.000001 319 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 # No 0 0 319 # Master master-bin.000001 319 No #
|
||||||
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
n
|
n
|
||||||
@@ -41,7 +41,7 @@ n
|
|||||||
4
|
4
|
||||||
show slave status;
|
show slave status;
|
||||||
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master
|
||||||
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 Yes No 0 0 319 # Master master-no-such-bin.000001 291 No #
|
# 127.0.0.1 root MASTER_MYPORT 1 master-bin.000001 776 slave-relay-bin.000004 # master-bin.000001 # No 0 0 319 # Master master-no-such-bin.000001 291 No #
|
||||||
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
||||||
select * from t2;
|
select * from t2;
|
||||||
n
|
n
|
||||||
|
@@ -938,7 +938,25 @@ SELECT id FROM t1 WHERE (list_id = 1) AND (term = "lettera");
|
|||||||
SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd");
|
SELECT id FROM t1 WHERE (list_id = 1) AND (term = "letterd");
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
#
|
||||||
|
# Bug #15536: Crash when DELETE with subquery using BDB tables
|
||||||
|
#
|
||||||
|
create table t1 (a int, key(a)) engine=bdb;
|
||||||
|
create table t2 (b int, key(b)) engine=bdb;
|
||||||
|
insert into t1 values (1),(1),(2),(3),(4);
|
||||||
|
insert into t2 values (1),(5),(6),(7);
|
||||||
|
delete from t1 where (a in (select b from t2));
|
||||||
|
select count(*) from t1;
|
||||||
|
# INSERT also blows up
|
||||||
|
--error 1242
|
||||||
|
insert into t1 set a=(select b from t2);
|
||||||
|
select count(*) from t1;
|
||||||
|
# UPDATE also blows up
|
||||||
|
update t1 set a = a + 1 where (a in (select b from t2));
|
||||||
|
select count(*) from t1;
|
||||||
|
drop table t1, t2;
|
||||||
|
|
||||||
|
--echo End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
# alter temp table
|
# alter temp table
|
||||||
|
@@ -30,7 +30,7 @@ wait_for_slave_to_stop;
|
|||||||
# here table should be still not deleted
|
# here table should be still not deleted
|
||||||
select * from t1;
|
select * from t1;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
--replace_column 1 # 9 # 23 # 33 #
|
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||||
show slave status;
|
show slave status;
|
||||||
|
|
||||||
# this should fail right after start
|
# this should fail right after start
|
||||||
@@ -40,7 +40,7 @@ select * from t1;
|
|||||||
sleep 2;
|
sleep 2;
|
||||||
wait_for_slave_to_stop;
|
wait_for_slave_to_stop;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
||||||
--replace_column 1 # 9 # 23 # 33 #
|
--replace_column 1 # 9 # 11 # 23 # 33 #
|
||||||
show slave status;
|
show slave status;
|
||||||
|
|
||||||
# try replicate all until second insert to t2;
|
# try replicate all until second insert to t2;
|
||||||
|
@@ -78,6 +78,8 @@ public:
|
|||||||
LqhDumpAllScanRec = 2301,
|
LqhDumpAllScanRec = 2301,
|
||||||
LqhDumpAllActiveScanRec = 2302,
|
LqhDumpAllActiveScanRec = 2302,
|
||||||
LqhDumpLcpState = 2303,
|
LqhDumpLcpState = 2303,
|
||||||
|
LqhErrorInsert5042 = 2315,
|
||||||
|
|
||||||
AccDumpOneScanRec = 2400,
|
AccDumpOneScanRec = 2400,
|
||||||
AccDumpAllScanRec = 2401,
|
AccDumpAllScanRec = 2401,
|
||||||
AccDumpAllActiveScanRec = 2402,
|
AccDumpAllActiveScanRec = 2402,
|
||||||
|
@@ -57,5 +57,8 @@ char ndb_version_string_buf[NDB_VERSION_STRING_BUF_SZ];
|
|||||||
*/
|
*/
|
||||||
/*#define NDB_VERSION_ID 0*/
|
/*#define NDB_VERSION_ID 0*/
|
||||||
|
|
||||||
|
#define NDBD_INCL_NODECONF_VERSION_4 MAKE_VERSION(4,1,17)
|
||||||
|
#define NDBD_INCL_NODECONF_VERSION_5 MAKE_VERSION(5,0,18)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -61,6 +61,8 @@ Insert system error in GCP participant when receiving GCP_SAVEREQ.
|
|||||||
5007:
|
5007:
|
||||||
Delay GCP_SAVEREQ by 10 secs
|
Delay GCP_SAVEREQ by 10 secs
|
||||||
|
|
||||||
|
7165: Delay INCL_NODE_REQ in starting node yeilding error in GCP_PREPARE
|
||||||
|
|
||||||
ERROR CODES FOR TESTING NODE FAILURE, LOCAL CHECKPOINT HANDLING:
|
ERROR CODES FOR TESTING NODE FAILURE, LOCAL CHECKPOINT HANDLING:
|
||||||
-----------------------------------------------------------------
|
-----------------------------------------------------------------
|
||||||
|
|
||||||
@@ -155,11 +157,15 @@ Insert node failure handling when receiving COMPLETEREQ.
|
|||||||
5006:
|
5006:
|
||||||
Insert node failure handling when receiving ABORTREQ.
|
Insert node failure handling when receiving ABORTREQ.
|
||||||
|
|
||||||
|
5042:
|
||||||
|
As 5002, but with specified table (see DumpStateOrd)
|
||||||
|
|
||||||
These error code can be combined with error codes for testing time-out
|
These error code can be combined with error codes for testing time-out
|
||||||
handling in DBTC to ensure that node failures are also well handled in
|
handling in DBTC to ensure that node failures are also well handled in
|
||||||
time-out handling. They can also be used to test multiple node failure
|
time-out handling. They can also be used to test multiple node failure
|
||||||
handling.
|
handling.
|
||||||
|
|
||||||
|
|
||||||
ERROR CODES FOR TESTING TIME-OUT HANDLING IN DBLQH
|
ERROR CODES FOR TESTING TIME-OUT HANDLING IN DBLQH
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
5011:
|
5011:
|
||||||
@@ -198,6 +204,9 @@ Delay execution of ABORTREQ signal 2 seconds to generate time-out.
|
|||||||
|
|
||||||
8050: Send TCKEYREF is operation is non local
|
8050: Send TCKEYREF is operation is non local
|
||||||
|
|
||||||
|
5100,5101: Drop ABORT req in primary replica
|
||||||
|
Crash on "next" ABORT
|
||||||
|
|
||||||
ERROR CODES FOR TESTING TIME-OUT HANDLING IN DBTC
|
ERROR CODES FOR TESTING TIME-OUT HANDLING IN DBTC
|
||||||
-------------------------------------------------
|
-------------------------------------------------
|
||||||
8040:
|
8040:
|
||||||
|
@@ -215,7 +215,7 @@ void Dbdih::sendINCL_NODEREQ(Signal* signal, Uint32 nodeId)
|
|||||||
signal->theData[2] = c_nodeStartMaster.failNr;
|
signal->theData[2] = c_nodeStartMaster.failNr;
|
||||||
signal->theData[3] = 0;
|
signal->theData[3] = 0;
|
||||||
signal->theData[4] = currentgcp;
|
signal->theData[4] = currentgcp;
|
||||||
sendSignal(nodeDihRef, GSN_INCL_NODEREQ, signal, 5, JBB);
|
sendSignal(nodeDihRef, GSN_INCL_NODEREQ, signal, 5, JBA);
|
||||||
}//Dbdih::sendINCL_NODEREQ()
|
}//Dbdih::sendINCL_NODEREQ()
|
||||||
|
|
||||||
void Dbdih::sendMASTER_GCPREQ(Signal* signal, Uint32 nodeId)
|
void Dbdih::sendMASTER_GCPREQ(Signal* signal, Uint32 nodeId)
|
||||||
@@ -1863,6 +1863,14 @@ void Dbdih::gcpBlockedLab(Signal* signal)
|
|||||||
// global checkpoint id and the correct state. We do not wait for any reply
|
// global checkpoint id and the correct state. We do not wait for any reply
|
||||||
// since the starting node will not send any.
|
// since the starting node will not send any.
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
|
Uint32 startVersion = getNodeInfo(c_nodeStartMaster.startNode).m_version;
|
||||||
|
|
||||||
|
if ((getMajor(startVersion) == 4 && startVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
||||||
|
(getMajor(startVersion) == 5 && startVersion >= NDBD_INCL_NODECONF_VERSION_5))
|
||||||
|
{
|
||||||
|
c_INCL_NODEREQ_Counter.setWaitingFor(c_nodeStartMaster.startNode);
|
||||||
|
}
|
||||||
|
|
||||||
sendINCL_NODEREQ(signal, c_nodeStartMaster.startNode);
|
sendINCL_NODEREQ(signal, c_nodeStartMaster.startNode);
|
||||||
}//Dbdih::gcpBlockedLab()
|
}//Dbdih::gcpBlockedLab()
|
||||||
|
|
||||||
@@ -2065,6 +2073,13 @@ void Dbdih::execINCL_NODEREQ(Signal* signal)
|
|||||||
jamEntry();
|
jamEntry();
|
||||||
Uint32 retRef = signal->theData[0];
|
Uint32 retRef = signal->theData[0];
|
||||||
Uint32 nodeId = signal->theData[1];
|
Uint32 nodeId = signal->theData[1];
|
||||||
|
if (nodeId == getOwnNodeId() && ERROR_INSERTED(7165))
|
||||||
|
{
|
||||||
|
CLEAR_ERROR_INSERT_VALUE;
|
||||||
|
sendSignalWithDelay(reference(), GSN_INCL_NODEREQ, signal, 5000, signal->getLength());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Uint32 tnodeStartFailNr = signal->theData[2];
|
Uint32 tnodeStartFailNr = signal->theData[2];
|
||||||
currentgcp = signal->theData[4];
|
currentgcp = signal->theData[4];
|
||||||
CRASH_INSERTION(7127);
|
CRASH_INSERTION(7127);
|
||||||
@@ -2092,6 +2107,15 @@ void Dbdih::execINCL_NODEREQ(Signal* signal)
|
|||||||
// id's and the lcp status.
|
// id's and the lcp status.
|
||||||
/*-----------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------*/
|
||||||
CRASH_INSERTION(7171);
|
CRASH_INSERTION(7171);
|
||||||
|
Uint32 masterVersion = getNodeInfo(refToNode(cmasterdihref)).m_version;
|
||||||
|
|
||||||
|
if ((NDB_VERSION_MAJOR == 4 && masterVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
||||||
|
(NDB_VERSION_MAJOR == 5 && masterVersion >= NDBD_INCL_NODECONF_VERSION_5))
|
||||||
|
{
|
||||||
|
signal->theData[0] = getOwnNodeId();
|
||||||
|
signal->theData[1] = getOwnNodeId();
|
||||||
|
sendSignal(cmasterdihref, GSN_INCL_NODECONF, signal, 2, JBB);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
if (getNodeStatus(nodeId) != NodeRecord::STARTING) {
|
if (getNodeStatus(nodeId) != NodeRecord::STARTING) {
|
||||||
@@ -3741,9 +3765,23 @@ void Dbdih::execNODE_FAILREP(Signal* signal)
|
|||||||
/*------------------------------------------------------------------------*/
|
/*------------------------------------------------------------------------*/
|
||||||
// Verify that a starting node has also crashed. Reset the node start record.
|
// Verify that a starting node has also crashed. Reset the node start record.
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
if (c_nodeStartMaster.startNode != RNIL) {
|
#if 0
|
||||||
ndbrequire(getNodeStatus(c_nodeStartMaster.startNode)!= NodeRecord::ALIVE);
|
/**
|
||||||
|
* Node will crash by itself...
|
||||||
|
* nodeRestart is run then...
|
||||||
|
*/
|
||||||
|
if (false && c_nodeStartMaster.startNode != RNIL && getNodeStatus(c_nodeStartMaster.startNode) == NodeRecord::ALIVE)
|
||||||
|
{
|
||||||
|
BlockReference cntrRef = calcNdbCntrBlockRef(c_nodeStartMaster.startNode);
|
||||||
|
SystemError * const sysErr = (SystemError*)&signal->theData[0];
|
||||||
|
sysErr->errorCode = SystemError::StartInProgressError;
|
||||||
|
sysErr->errorRef = reference();
|
||||||
|
sysErr->data1= 0;
|
||||||
|
sysErr->data2= __LINE__;
|
||||||
|
sendSignal(cntrRef, GSN_SYSTEM_ERROR, signal, SystemError::SignalLength, JBA);
|
||||||
|
nodeResetStart();
|
||||||
}//if
|
}//if
|
||||||
|
#endif
|
||||||
|
|
||||||
/*--------------------------------------------------*/
|
/*--------------------------------------------------*/
|
||||||
/* */
|
/* */
|
||||||
@@ -5189,15 +5227,16 @@ void Dbdih::removeNodeFromTable(Signal* signal,
|
|||||||
/**
|
/**
|
||||||
* For each of replica record
|
* For each of replica record
|
||||||
*/
|
*/
|
||||||
Uint32 replicaNo = 0;
|
bool found = false;
|
||||||
ReplicaRecordPtr replicaPtr;
|
ReplicaRecordPtr replicaPtr;
|
||||||
for(replicaPtr.i = fragPtr.p->storedReplicas; replicaPtr.i != RNIL;
|
for(replicaPtr.i = fragPtr.p->storedReplicas; replicaPtr.i != RNIL;
|
||||||
replicaPtr.i = replicaPtr.p->nextReplica, replicaNo++) {
|
replicaPtr.i = replicaPtr.p->nextReplica) {
|
||||||
jam();
|
jam();
|
||||||
|
|
||||||
ptrCheckGuard(replicaPtr, creplicaFileSize, replicaRecord);
|
ptrCheckGuard(replicaPtr, creplicaFileSize, replicaRecord);
|
||||||
if(replicaPtr.p->procNode == nodeId){
|
if(replicaPtr.p->procNode == nodeId){
|
||||||
jam();
|
jam();
|
||||||
|
found = true;
|
||||||
noOfRemovedReplicas++;
|
noOfRemovedReplicas++;
|
||||||
removeNodeFromStored(nodeId, fragPtr, replicaPtr);
|
removeNodeFromStored(nodeId, fragPtr, replicaPtr);
|
||||||
if(replicaPtr.p->lcpOngoingFlag){
|
if(replicaPtr.p->lcpOngoingFlag){
|
||||||
@@ -5213,6 +5252,15 @@ void Dbdih::removeNodeFromTable(Signal* signal,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!found)
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
/**
|
||||||
|
* Run updateNodeInfo to remove any dead nodes from list of activeNodes
|
||||||
|
* see bug#15587
|
||||||
|
*/
|
||||||
|
updateNodeInfo(fragPtr);
|
||||||
|
}
|
||||||
noOfRemainingLcpReplicas += fragPtr.p->noLcpReplicas;
|
noOfRemainingLcpReplicas += fragPtr.p->noLcpReplicas;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2885,6 +2885,7 @@ private:
|
|||||||
UintR ctransidHash[1024];
|
UintR ctransidHash[1024];
|
||||||
|
|
||||||
Uint32 c_diskless;
|
Uint32 c_diskless;
|
||||||
|
Uint32 c_error_insert_table_id;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@@ -3543,6 +3543,7 @@ void Dblqh::execLQHKEYREQ(Signal* signal)
|
|||||||
jam();
|
jam();
|
||||||
regTcPtr->activeCreat = ZTRUE;
|
regTcPtr->activeCreat = ZTRUE;
|
||||||
CRASH_INSERTION(5002);
|
CRASH_INSERTION(5002);
|
||||||
|
CRASH_INSERTION2(5042, tabptr.i == c_error_insert_table_id);
|
||||||
} else {
|
} else {
|
||||||
regTcPtr->activeCreat = ZFALSE;
|
regTcPtr->activeCreat = ZFALSE;
|
||||||
}//if
|
}//if
|
||||||
@@ -5880,12 +5881,21 @@ void Dblqh::execABORT(Signal* signal)
|
|||||||
warningReport(signal, 8);
|
warningReport(signal, 8);
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
|
|
||||||
|
TcConnectionrec * const regTcPtr = tcConnectptr.p;
|
||||||
|
|
||||||
|
if (ERROR_INSERTED(5100))
|
||||||
|
{
|
||||||
|
SET_ERROR_INSERT_VALUE(5101);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
CRASH_INSERTION2(5101, regTcPtr->nextReplica != ZNIL);
|
||||||
|
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
/*A GUIDING DESIGN PRINCIPLE IN HANDLING THESE ERROR SITUATIONS HAVE BEEN */
|
/*A GUIDING DESIGN PRINCIPLE IN HANDLING THESE ERROR SITUATIONS HAVE BEEN */
|
||||||
/*KEEP IT SIMPLE. THUS WE RATHER INSERT A WAIT AND SET THE ABORT_STATE TO */
|
/*KEEP IT SIMPLE. THUS WE RATHER INSERT A WAIT AND SET THE ABORT_STATE TO */
|
||||||
/*ACTIVE RATHER THAN WRITE NEW CODE TO HANDLE EVERY SPECIAL SITUATION. */
|
/*ACTIVE RATHER THAN WRITE NEW CODE TO HANDLE EVERY SPECIAL SITUATION. */
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
TcConnectionrec * const regTcPtr = tcConnectptr.p;
|
|
||||||
if (regTcPtr->nextReplica != ZNIL) {
|
if (regTcPtr->nextReplica != ZNIL) {
|
||||||
/* ------------------------------------------------------------------------- */
|
/* ------------------------------------------------------------------------- */
|
||||||
// We will immediately send the ABORT message also to the next LQH node in line.
|
// We will immediately send the ABORT message also to the next LQH node in line.
|
||||||
@@ -18522,6 +18532,12 @@ Dblqh::execDUMP_STATE_ORD(Signal* signal)
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dumpState->args[0] == DumpStateOrd::LqhErrorInsert5042 && signal->getLength() == 2)
|
||||||
|
{
|
||||||
|
c_error_insert_table_id = dumpState->args[1];
|
||||||
|
SET_ERROR_INSERT_VALUE(5042);
|
||||||
|
}
|
||||||
}//Dblqh::execDUMP_STATE_ORD()
|
}//Dblqh::execDUMP_STATE_ORD()
|
||||||
|
|
||||||
void Dblqh::execSET_VAR_REQ(Signal* signal)
|
void Dblqh::execSET_VAR_REQ(Signal* signal)
|
||||||
|
@@ -6183,7 +6183,6 @@ void Dbtc::timeOutFoundLab(Signal* signal, Uint32 TapiConPtr)
|
|||||||
<< " - place: " << c_apiConTimer_line[apiConnectptr.i]);
|
<< " - place: " << c_apiConTimer_line[apiConnectptr.i]);
|
||||||
switch (apiConnectptr.p->apiConnectstate) {
|
switch (apiConnectptr.p->apiConnectstate) {
|
||||||
case CS_STARTED:
|
case CS_STARTED:
|
||||||
ndbrequire(c_apiConTimer_line[apiConnectptr.i] != 3615);
|
|
||||||
if(apiConnectptr.p->lqhkeyreqrec == apiConnectptr.p->lqhkeyconfrec){
|
if(apiConnectptr.p->lqhkeyreqrec == apiConnectptr.p->lqhkeyconfrec){
|
||||||
jam();
|
jam();
|
||||||
/*
|
/*
|
||||||
@@ -6443,8 +6442,8 @@ void Dbtc::sendAbortedAfterTimeout(Signal* signal, int Tcheck)
|
|||||||
warningEvent(buf);
|
warningEvent(buf);
|
||||||
ndbout_c(buf);
|
ndbout_c(buf);
|
||||||
ndbrequire(false);
|
ndbrequire(false);
|
||||||
|
releaseAbortResources(signal);
|
||||||
}
|
}
|
||||||
releaseAbortResources(signal);
|
|
||||||
return;
|
return;
|
||||||
}//if
|
}//if
|
||||||
TloopCount++;
|
TloopCount++;
|
||||||
|
@@ -21,6 +21,7 @@
|
|||||||
#include <NdbRestarter.hpp>
|
#include <NdbRestarter.hpp>
|
||||||
#include <NdbRestarts.hpp>
|
#include <NdbRestarts.hpp>
|
||||||
#include <Vector.hpp>
|
#include <Vector.hpp>
|
||||||
|
#include <signaldata/DumpStateOrd.hpp>
|
||||||
|
|
||||||
|
|
||||||
int runLoadTable(NDBT_Context* ctx, NDBT_Step* step){
|
int runLoadTable(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
@@ -409,6 +410,132 @@ int runLateCommit(NDBT_Context* ctx, NDBT_Step* step){
|
|||||||
return NDBT_OK;
|
return NDBT_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int runBug15587(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
int result = NDBT_OK;
|
||||||
|
int loops = ctx->getNumLoops();
|
||||||
|
int records = ctx->getNumRecords();
|
||||||
|
NdbRestarter restarter;
|
||||||
|
|
||||||
|
Uint32 tableId = ctx->getTab()->getTableId();
|
||||||
|
int dump[2] = { DumpStateOrd::LqhErrorInsert5042, 0 };
|
||||||
|
dump[1] = tableId;
|
||||||
|
|
||||||
|
int nodeId = restarter.getDbNodeId(1);
|
||||||
|
|
||||||
|
ndbout << "Restart node " << nodeId << endl;
|
||||||
|
|
||||||
|
if (restarter.restartOneDbNode(nodeId,
|
||||||
|
/** initial */ false,
|
||||||
|
/** nostart */ true,
|
||||||
|
/** abort */ true))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesNoStart(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.dumpStateOneNode(nodeId, dump, 2))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.startNodes(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesStarted(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
ctx->stopTest();
|
||||||
|
return NDBT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int runBug15632(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
int result = NDBT_OK;
|
||||||
|
int loops = ctx->getNumLoops();
|
||||||
|
int records = ctx->getNumRecords();
|
||||||
|
NdbRestarter restarter;
|
||||||
|
|
||||||
|
int nodeId = restarter.getDbNodeId(1);
|
||||||
|
|
||||||
|
ndbout << "Restart node " << nodeId << endl;
|
||||||
|
|
||||||
|
if (restarter.restartOneDbNode(nodeId,
|
||||||
|
/** initial */ false,
|
||||||
|
/** nostart */ true,
|
||||||
|
/** abort */ true))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesNoStart(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.insertErrorInNode(nodeId, 7165))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.startNodes(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesStarted(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.restartOneDbNode(nodeId,
|
||||||
|
/** initial */ false,
|
||||||
|
/** nostart */ true,
|
||||||
|
/** abort */ true))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesNoStart(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.insertErrorInNode(nodeId, 7171))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.startNodes(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
if (restarter.waitNodesStarted(&nodeId, 1))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
ctx->stopTest();
|
||||||
|
return NDBT_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
int runBug15685(NDBT_Context* ctx, NDBT_Step* step){
|
||||||
|
|
||||||
|
Ndb* pNdb = GETNDB(step);
|
||||||
|
HugoOperations hugoOps(*ctx->getTab());
|
||||||
|
NdbRestarter restarter;
|
||||||
|
|
||||||
|
HugoTransactions hugoTrans(*ctx->getTab());
|
||||||
|
if (hugoTrans.loadTable(GETNDB(step), 10) != 0){
|
||||||
|
return NDBT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(hugoOps.startTransaction(pNdb) != 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if(hugoOps.pkUpdateRecord(pNdb, 0, 1, rand()) != 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if(hugoOps.execute_NoCommit(pNdb) != 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if (restarter.insertErrorInAllNodes(5100))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
hugoOps.execute_Rollback(pNdb);
|
||||||
|
|
||||||
|
if (restarter.waitClusterStarted() != 0)
|
||||||
|
goto err;
|
||||||
|
|
||||||
|
if (restarter.insertErrorInAllNodes(0))
|
||||||
|
return NDBT_FAILED;
|
||||||
|
|
||||||
|
ctx->stopTest();
|
||||||
|
return NDBT_OK;
|
||||||
|
|
||||||
|
err:
|
||||||
|
ctx->stopTest();
|
||||||
|
return NDBT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
NDBT_TESTSUITE(testNodeRestart);
|
NDBT_TESTSUITE(testNodeRestart);
|
||||||
TESTCASE("NoLoad",
|
TESTCASE("NoLoad",
|
||||||
"Test that one node at a time can be stopped and then restarted "\
|
"Test that one node at a time can be stopped and then restarted "\
|
||||||
@@ -558,6 +685,8 @@ TESTCASE("RestartNFDuringNR",
|
|||||||
INITIALIZER(runCheckAllNodesStarted);
|
INITIALIZER(runCheckAllNodesStarted);
|
||||||
INITIALIZER(runLoadTable);
|
INITIALIZER(runLoadTable);
|
||||||
STEP(runRestarts);
|
STEP(runRestarts);
|
||||||
|
STEP(runPkUpdateUntilStopped);
|
||||||
|
STEP(runScanUpdateUntilStopped);
|
||||||
FINALIZER(runScanReadVerify);
|
FINALIZER(runScanReadVerify);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
@@ -647,6 +776,8 @@ TESTCASE("RestartNodeDuringLCP",
|
|||||||
INITIALIZER(runCheckAllNodesStarted);
|
INITIALIZER(runCheckAllNodesStarted);
|
||||||
INITIALIZER(runLoadTable);
|
INITIALIZER(runLoadTable);
|
||||||
STEP(runRestarts);
|
STEP(runRestarts);
|
||||||
|
STEP(runPkUpdateUntilStopped);
|
||||||
|
STEP(runScanUpdateUntilStopped);
|
||||||
FINALIZER(runScanReadVerify);
|
FINALIZER(runScanReadVerify);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
@@ -671,6 +802,24 @@ TESTCASE("LateCommit",
|
|||||||
STEP(runLateCommit);
|
STEP(runLateCommit);
|
||||||
FINALIZER(runClearTable);
|
FINALIZER(runClearTable);
|
||||||
}
|
}
|
||||||
|
TESTCASE("Bug15587",
|
||||||
|
"Test bug with NF during NR"){
|
||||||
|
INITIALIZER(runLoadTable);
|
||||||
|
STEP(runScanUpdateUntilStopped);
|
||||||
|
STEP(runBug15587);
|
||||||
|
FINALIZER(runClearTable);
|
||||||
|
}
|
||||||
|
TESTCASE("Bug15632",
|
||||||
|
"Test bug with NF during NR"){
|
||||||
|
INITIALIZER(runLoadTable);
|
||||||
|
STEP(runBug15632);
|
||||||
|
FINALIZER(runClearTable);
|
||||||
|
}
|
||||||
|
TESTCASE("Bug15685",
|
||||||
|
"Test bug with NF during abort"){
|
||||||
|
STEP(runBug15685);
|
||||||
|
FINALIZER(runClearTable);
|
||||||
|
}
|
||||||
NDBT_TESTSUITE_END(testNodeRestart);
|
NDBT_TESTSUITE_END(testNodeRestart);
|
||||||
|
|
||||||
int main(int argc, const char** argv){
|
int main(int argc, const char** argv){
|
||||||
|
@@ -413,6 +413,27 @@ max-time: 500
|
|||||||
cmd: testScan
|
cmd: testScan
|
||||||
args: -n ScanParallelism
|
args: -n ScanParallelism
|
||||||
|
|
||||||
|
max-time: 500
|
||||||
|
cmd: testNodeRestart
|
||||||
|
args: -n Bug15587 T1
|
||||||
|
|
||||||
|
max-time: 500
|
||||||
|
cmd: testNodeRestart
|
||||||
|
args: -n Bug15632 T1
|
||||||
|
|
||||||
|
max-time: 500
|
||||||
|
cmd: testNodeRestart
|
||||||
|
args: -n Bug15685 T1
|
||||||
|
|
||||||
|
# OLD FLEX
|
||||||
|
max-time: 500
|
||||||
|
cmd: flexBench
|
||||||
|
args: -c 25 -t 10
|
||||||
|
|
||||||
|
max-time: 500
|
||||||
|
cmd: flexHammer
|
||||||
|
args: -r 5 -t 32
|
||||||
|
|
||||||
#
|
#
|
||||||
# DICT TESTS
|
# DICT TESTS
|
||||||
max-time: 1500
|
max-time: 1500
|
||||||
|
@@ -112,11 +112,6 @@
|
|||||||
|
|
||||||
|
|
||||||
<collation name="latin5_turkish_ci">
|
<collation name="latin5_turkish_ci">
|
||||||
<!--
|
|
||||||
# Note: all accented characters are compared separately (this
|
|
||||||
# is different from the default latin1 character set, where
|
|
||||||
# e.g. a = <20> = <20>, etc.).
|
|
||||||
-->
|
|
||||||
<map>
|
<map>
|
||||||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
|
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
|
||||||
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
|
10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F
|
||||||
@@ -130,10 +125,10 @@
|
|||||||
9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB
|
9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB
|
||||||
AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB
|
AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB
|
||||||
BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB
|
BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB
|
||||||
CC CD CE CF D0 D1 D2 44 D3 D4 D5 D6 D7 D8 D9 DA
|
41 41 41 41 41 41 41 44 46 46 46 46 4C 4C 4C 4C
|
||||||
49 DB DC DD DE DF 53 E0 E1 E2 E3 E4 5B 4C 58 E5
|
49 51 52 52 52 52 53 E0 52 5A 5A 5A 5B 4C 58 57
|
||||||
CC CD CE CF D0 D1 D2 44 D3 D4 D5 D6 D7 D8 D9 DA
|
41 41 41 41 41 41 41 44 46 46 46 46 4C 4C 4C 4C
|
||||||
49 DB DC DD DE DF 53 FA E1 E2 E3 E4 5B 4B 58 FF
|
49 51 52 52 52 52 53 FA 52 5A 5A 5A 5B 4B 58 5F
|
||||||
</map>
|
</map>
|
||||||
</collation>
|
</collation>
|
||||||
|
|
||||||
|
@@ -293,6 +293,7 @@ cleanup:
|
|||||||
if (!transactional_table)
|
if (!transactional_table)
|
||||||
thd->options|=OPTION_STATUS_NO_TRANS_UPDATE;
|
thd->options|=OPTION_STATUS_NO_TRANS_UPDATE;
|
||||||
}
|
}
|
||||||
|
free_underlaid_joins(thd, select_lex);
|
||||||
if (transactional_table)
|
if (transactional_table)
|
||||||
{
|
{
|
||||||
if (ha_autocommit_or_rollback(thd,error >= 0))
|
if (ha_autocommit_or_rollback(thd,error >= 0))
|
||||||
@@ -304,7 +305,6 @@ cleanup:
|
|||||||
mysql_unlock_tables(thd, thd->lock);
|
mysql_unlock_tables(thd, thd->lock);
|
||||||
thd->lock=0;
|
thd->lock=0;
|
||||||
}
|
}
|
||||||
free_underlaid_joins(thd, select_lex);
|
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
{
|
{
|
||||||
thd->row_count_func= deleted;
|
thd->row_count_func= deleted;
|
||||||
|
@@ -257,7 +257,7 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
*/
|
*/
|
||||||
bool log_on= (thd->options & OPTION_BIN_LOG) ||
|
bool log_on= (thd->options & OPTION_BIN_LOG) ||
|
||||||
(!(thd->security_ctx->master_access & SUPER_ACL));
|
(!(thd->security_ctx->master_access & SUPER_ACL));
|
||||||
bool transactional_table;
|
bool transactional_table, joins_freed= FALSE;
|
||||||
uint value_count;
|
uint value_count;
|
||||||
ulong counter = 1;
|
ulong counter = 1;
|
||||||
ulonglong id;
|
ulonglong id;
|
||||||
@@ -513,6 +513,9 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
thd->row_count++;
|
thd->row_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free_underlaid_joins(thd, &thd->lex->select_lex);
|
||||||
|
joins_freed= TRUE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Now all rows are inserted. Time to update logs and sends response to
|
Now all rows are inserted. Time to update logs and sends response to
|
||||||
user
|
user
|
||||||
@@ -611,7 +614,6 @@ bool mysql_insert(THD *thd,TABLE_LIST *table_list,
|
|||||||
thd->row_count_func= info.copied+info.deleted+info.updated;
|
thd->row_count_func= info.copied+info.deleted+info.updated;
|
||||||
::send_ok(thd, (ulong) thd->row_count_func, id, buff);
|
::send_ok(thd, (ulong) thd->row_count_func, id, buff);
|
||||||
}
|
}
|
||||||
free_underlaid_joins(thd, &thd->lex->select_lex);
|
|
||||||
thd->abort_on_warning= 0;
|
thd->abort_on_warning= 0;
|
||||||
DBUG_RETURN(FALSE);
|
DBUG_RETURN(FALSE);
|
||||||
|
|
||||||
@@ -620,7 +622,8 @@ abort:
|
|||||||
if (lock_type == TL_WRITE_DELAYED)
|
if (lock_type == TL_WRITE_DELAYED)
|
||||||
end_delayed_insert(thd);
|
end_delayed_insert(thd);
|
||||||
#endif
|
#endif
|
||||||
free_underlaid_joins(thd, &thd->lex->select_lex);
|
if (!joins_freed)
|
||||||
|
free_underlaid_joins(thd, &thd->lex->select_lex);
|
||||||
thd->abort_on_warning= 0;
|
thd->abort_on_warning= 0;
|
||||||
DBUG_RETURN(TRUE);
|
DBUG_RETURN(TRUE);
|
||||||
}
|
}
|
||||||
|
@@ -527,6 +527,7 @@ int mysql_update(THD *thd,
|
|||||||
if (!transactional_table)
|
if (!transactional_table)
|
||||||
thd->options|=OPTION_STATUS_NO_TRANS_UPDATE;
|
thd->options|=OPTION_STATUS_NO_TRANS_UPDATE;
|
||||||
}
|
}
|
||||||
|
free_underlaid_joins(thd, select_lex);
|
||||||
if (transactional_table)
|
if (transactional_table)
|
||||||
{
|
{
|
||||||
if (ha_autocommit_or_rollback(thd, error >= 0))
|
if (ha_autocommit_or_rollback(thd, error >= 0))
|
||||||
@@ -539,7 +540,6 @@ int mysql_update(THD *thd,
|
|||||||
thd->lock=0;
|
thd->lock=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
free_underlaid_joins(thd, select_lex);
|
|
||||||
if (error < 0)
|
if (error < 0)
|
||||||
{
|
{
|
||||||
char buff[STRING_BUFFER_USUAL_SIZE];
|
char buff[STRING_BUFFER_USUAL_SIZE];
|
||||||
|
@@ -35,7 +35,7 @@ Release: %{release}
|
|||||||
License: %{license}
|
License: %{license}
|
||||||
Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/mysql-%{mysql_version}.tar.gz
|
Source: http://www.mysql.com/Downloads/MySQL-@MYSQL_BASE_VERSION@/mysql-%{mysql_version}.tar.gz
|
||||||
URL: http://www.mysql.com/
|
URL: http://www.mysql.com/
|
||||||
Packager: Lenz Grimmer <build@mysql.com>
|
Packager: MySQL Production Engineering Team <build@mysql.com>
|
||||||
Vendor: MySQL AB
|
Vendor: MySQL AB
|
||||||
Provides: msqlormysql MySQL-server mysql
|
Provides: msqlormysql MySQL-server mysql
|
||||||
BuildRequires: ncurses-devel
|
BuildRequires: ncurses-devel
|
||||||
@@ -325,7 +325,13 @@ fi
|
|||||||
make test-force || true
|
make test-force || true
|
||||||
|
|
||||||
# Save mysqld-max
|
# Save mysqld-max
|
||||||
mv sql/mysqld sql/mysqld-max
|
# check if mysqld was installed in .libs/
|
||||||
|
if test -f sql/.libs/mysqld
|
||||||
|
then
|
||||||
|
cp sql/.libs/mysqld sql/mysqld-max
|
||||||
|
else
|
||||||
|
cp sql/mysqld sql/mysqld-max
|
||||||
|
fi
|
||||||
nm --numeric-sort sql/mysqld-max > sql/mysqld-max.sym
|
nm --numeric-sort sql/mysqld-max > sql/mysqld-max.sym
|
||||||
# Save the perror binary so it supports the NDB error codes (BUG#13740)
|
# Save the perror binary so it supports the NDB error codes (BUG#13740)
|
||||||
mv extra/perror extra/perror.ndb
|
mv extra/perror extra/perror.ndb
|
||||||
@@ -363,14 +369,19 @@ BuildMySQL "--disable-shared \
|
|||||||
--with-client-ldflags='-all-static' \
|
--with-client-ldflags='-all-static' \
|
||||||
$USE_OTHER_LIBC_DIR \
|
$USE_OTHER_LIBC_DIR \
|
||||||
%else
|
%else
|
||||||
--with-zlib-dir=bundled \
|
|
||||||
%endif
|
%endif
|
||||||
|
--with-zlib-dir=bundled \
|
||||||
--with-comment=\"MySQL Community Edition - Standard (GPL)\" \
|
--with-comment=\"MySQL Community Edition - Standard (GPL)\" \
|
||||||
--with-server-suffix='%{server_suffix}' \
|
--with-server-suffix='%{server_suffix}' \
|
||||||
--with-archive-storage-engine \
|
--with-archive-storage-engine \
|
||||||
--with-innodb \
|
--with-innodb \
|
||||||
--with-big-tables"
|
--with-big-tables"
|
||||||
nm --numeric-sort sql/mysqld > sql/mysqld.sym
|
if test -f sql/.libs/mysqld
|
||||||
|
then
|
||||||
|
nm --numeric-sort sql/.libs/mysqld > sql/mysqld.sym
|
||||||
|
else
|
||||||
|
nm --numeric-sort sql/mysqld > sql/mysqld.sym
|
||||||
|
fi
|
||||||
|
|
||||||
# We might want to save the config log file
|
# We might want to save the config log file
|
||||||
if test -n "$MYSQL_CONFLOG_DEST"
|
if test -n "$MYSQL_CONFLOG_DEST"
|
||||||
@@ -679,6 +690,8 @@ fi
|
|||||||
%{_libdir}/mysql/libndbclient.a
|
%{_libdir}/mysql/libndbclient.a
|
||||||
%{_libdir}/mysql/libndbclient.la
|
%{_libdir}/mysql/libndbclient.la
|
||||||
%{_libdir}/mysql/libvio.a
|
%{_libdir}/mysql/libvio.a
|
||||||
|
%{_libdir}/mysql/libz.a
|
||||||
|
%{_libdir}/mysql/libz.la
|
||||||
|
|
||||||
%files shared
|
%files shared
|
||||||
%defattr(-, root, root, 0755)
|
%defattr(-, root, root, 0755)
|
||||||
@@ -707,6 +720,13 @@ fi
|
|||||||
# itself - note that they must be ordered by date (important when
|
# itself - note that they must be ordered by date (important when
|
||||||
# merging BK trees)
|
# merging BK trees)
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Dec 12 2005 Rodrigo Novo <rodrigo@mysql.com>
|
||||||
|
|
||||||
|
- Added zlib to the list of (static) libraries installed
|
||||||
|
- Added check against libtool wierdness (WRT: sql/mysqld || sql/.libs/mysqld)
|
||||||
|
- Compile MySQL with bundled zlib
|
||||||
|
- Fixed %packager name to "MySQL Production Engineering Team"
|
||||||
|
|
||||||
* Mon Dec 05 2005 Joerg Bruehe <joerg@mysql.com>
|
* Mon Dec 05 2005 Joerg Bruehe <joerg@mysql.com>
|
||||||
|
|
||||||
- Avoid using the "bundled" zlib on "shared" builds:
|
- Avoid using the "bundled" zlib on "shared" builds:
|
||||||
|
Reference in New Issue
Block a user