Merge bk-internal:/home/bk/mysql-5.1-new-ndb
into mysql.com:/data0/mysqldev/users/tomas/mysql-5.1-new-maint client/sql_string.h: Auto merged storage/myisam/mi_open.c: Auto merged storage/ndb/src/common/debugger/EventLogger.cpp: Auto merged storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp: Auto merged storage/ndb/test/ndbapi/testNodeRestart.cpp: Auto merged
This commit is contained in:
commit
b45970db7d
@ -212,7 +212,8 @@ public:
|
|||||||
NullablePrimaryKey = 740,
|
NullablePrimaryKey = 740,
|
||||||
UnsupportedChange = 741,
|
UnsupportedChange = 741,
|
||||||
BackupInProgress = 762,
|
BackupInProgress = 762,
|
||||||
IncompatibleVersions = 763
|
IncompatibleVersions = 763,
|
||||||
|
SingleUser = 299
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -208,6 +208,7 @@ public:
|
|||||||
AllocationError = 4252,
|
AllocationError = 4252,
|
||||||
CreateIndexTableFailed = 4253,
|
CreateIndexTableFailed = 4253,
|
||||||
DuplicateAttributes = 4258,
|
DuplicateAttributes = 4258,
|
||||||
|
SingleUser = 299,
|
||||||
TableIsTemporary = 776,
|
TableIsTemporary = 776,
|
||||||
TableIsNotTemporary = 777,
|
TableIsNotTemporary = 777,
|
||||||
NoLoggingTemporaryIndex = 778
|
NoLoggingTemporaryIndex = 778
|
||||||
|
@ -92,6 +92,7 @@ public:
|
|||||||
InvalidPrimaryKeySize = 739,
|
InvalidPrimaryKeySize = 739,
|
||||||
NullablePrimaryKey = 740,
|
NullablePrimaryKey = 740,
|
||||||
InvalidCharset = 743,
|
InvalidCharset = 743,
|
||||||
|
SingleUser = 299,
|
||||||
InvalidTablespace = 755,
|
InvalidTablespace = 755,
|
||||||
VarsizeBitfieldNotSupported = 757,
|
VarsizeBitfieldNotSupported = 757,
|
||||||
NotATablespace = 758,
|
NotATablespace = 758,
|
||||||
|
@ -172,7 +172,8 @@ public:
|
|||||||
IndexNotFound = 4243,
|
IndexNotFound = 4243,
|
||||||
BadRequestType = 4247,
|
BadRequestType = 4247,
|
||||||
InvalidName = 4248,
|
InvalidName = 4248,
|
||||||
NotAnIndex = 4254
|
NotAnIndex = 4254,
|
||||||
|
SingleUser = 299
|
||||||
};
|
};
|
||||||
STATIC_CONST( SignalLength = DropIndxConf::SignalLength + 3 );
|
STATIC_CONST( SignalLength = DropIndxConf::SignalLength + 3 );
|
||||||
|
|
||||||
|
@ -58,7 +58,8 @@ public:
|
|||||||
InvalidTableVersion = 241,
|
InvalidTableVersion = 241,
|
||||||
DropInProgress = 283,
|
DropInProgress = 283,
|
||||||
NoDropTableRecordAvailable = 1229,
|
NoDropTableRecordAvailable = 1229,
|
||||||
BackupInProgress = 761
|
BackupInProgress = 761,
|
||||||
|
SingleUser = 299
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -96,6 +96,8 @@ printPACKED_SIGNAL(FILE * output, const Uint32 * theData, Uint32 len, Uint16 rec
|
|||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
fprintf(output, "Unknown signal type\n");
|
fprintf(output, "Unknown signal type\n");
|
||||||
|
i = len; // terminate printing
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}//for
|
}//for
|
||||||
fprintf(output, "--------- End Packed Signals ----------\n");
|
fprintf(output, "--------- End Packed Signals ----------\n");
|
||||||
|
@ -3758,6 +3758,15 @@ Dbdict::execCREATE_TABLE_REQ(Signal* signal){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(getNodeState().getSingleUserMode() &&
|
||||||
|
(refToNode(signal->getSendersBlockRef()) !=
|
||||||
|
getNodeState().getSingleUserApi()))
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
parseRecord.errorCode = CreateTableRef::SingleUser;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
CreateTableRecordPtr createTabPtr;
|
CreateTableRecordPtr createTabPtr;
|
||||||
c_opCreateTable.seize(createTabPtr);
|
c_opCreateTable.seize(createTabPtr);
|
||||||
|
|
||||||
@ -3950,6 +3959,15 @@ Dbdict::execALTER_TABLE_REQ(Signal* signal)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(getNodeState().getSingleUserMode() &&
|
||||||
|
(refToNode(signal->getSendersBlockRef()) !=
|
||||||
|
getNodeState().getSingleUserApi()))
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
alterTableRef(signal, req, AlterTableRef::SingleUser);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const TableRecord::TabState tabState = tablePtr.p->tabState;
|
const TableRecord::TabState tabState = tablePtr.p->tabState;
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
switch(tabState){
|
switch(tabState){
|
||||||
@ -6542,6 +6560,15 @@ Dbdict::execDROP_TABLE_REQ(Signal* signal){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(getNodeState().getSingleUserMode() &&
|
||||||
|
(refToNode(signal->getSendersBlockRef()) !=
|
||||||
|
getNodeState().getSingleUserApi()))
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
dropTableRef(signal, req, DropTableRef::SingleUser);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const TableRecord::TabState tabState = tablePtr.p->tabState;
|
const TableRecord::TabState tabState = tablePtr.p->tabState;
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
switch(tabState){
|
switch(tabState){
|
||||||
@ -7749,6 +7776,13 @@ Dbdict::execCREATE_INDX_REQ(Signal* signal)
|
|||||||
jam();
|
jam();
|
||||||
tmperr = CreateIndxRef::Busy;
|
tmperr = CreateIndxRef::Busy;
|
||||||
}
|
}
|
||||||
|
else if(getNodeState().getSingleUserMode() &&
|
||||||
|
(refToNode(senderRef) !=
|
||||||
|
getNodeState().getSingleUserApi()))
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
tmperr = CreateIndxRef::SingleUser;
|
||||||
|
}
|
||||||
if (tmperr != CreateIndxRef::NoError) {
|
if (tmperr != CreateIndxRef::NoError) {
|
||||||
releaseSections(signal);
|
releaseSections(signal);
|
||||||
OpCreateIndex opBusy;
|
OpCreateIndex opBusy;
|
||||||
@ -8392,6 +8426,13 @@ Dbdict::execDROP_INDX_REQ(Signal* signal)
|
|||||||
jam();
|
jam();
|
||||||
tmperr = DropIndxRef::Busy;
|
tmperr = DropIndxRef::Busy;
|
||||||
}
|
}
|
||||||
|
else if(getNodeState().getSingleUserMode() &&
|
||||||
|
(refToNode(senderRef) !=
|
||||||
|
getNodeState().getSingleUserApi()))
|
||||||
|
{
|
||||||
|
jam();
|
||||||
|
tmperr = DropIndxRef::SingleUser;
|
||||||
|
}
|
||||||
if (tmperr != DropIndxRef::NoError) {
|
if (tmperr != DropIndxRef::NoError) {
|
||||||
err = tmperr;
|
err = tmperr;
|
||||||
goto error;
|
goto error;
|
||||||
|
@ -2098,8 +2098,11 @@ void Dbdih::gcpBlockedLab(Signal* signal)
|
|||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
Uint32 startVersion = getNodeInfo(c_nodeStartMaster.startNode).m_version;
|
Uint32 startVersion = getNodeInfo(c_nodeStartMaster.startNode).m_version;
|
||||||
|
|
||||||
if ((getMajor(startVersion) == 4 && startVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
if ((getMajor(startVersion) == 4 &&
|
||||||
(getMajor(startVersion) == 5 && startVersion >= NDBD_INCL_NODECONF_VERSION_5))
|
startVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
||||||
|
(getMajor(startVersion) == 5 &&
|
||||||
|
startVersion >= NDBD_INCL_NODECONF_VERSION_5) ||
|
||||||
|
(getMajor(startVersion) > 5))
|
||||||
{
|
{
|
||||||
c_INCL_NODEREQ_Counter.setWaitingFor(c_nodeStartMaster.startNode);
|
c_INCL_NODEREQ_Counter.setWaitingFor(c_nodeStartMaster.startNode);
|
||||||
}
|
}
|
||||||
@ -2342,8 +2345,11 @@ void Dbdih::execINCL_NODEREQ(Signal* signal)
|
|||||||
CRASH_INSERTION(7171);
|
CRASH_INSERTION(7171);
|
||||||
Uint32 masterVersion = getNodeInfo(refToNode(cmasterdihref)).m_version;
|
Uint32 masterVersion = getNodeInfo(refToNode(cmasterdihref)).m_version;
|
||||||
|
|
||||||
if ((NDB_VERSION_MAJOR == 4 && masterVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
if ((NDB_VERSION_MAJOR == 4 &&
|
||||||
(NDB_VERSION_MAJOR == 5 && masterVersion >= NDBD_INCL_NODECONF_VERSION_5))
|
masterVersion >= NDBD_INCL_NODECONF_VERSION_4) ||
|
||||||
|
(NDB_VERSION_MAJOR == 5 &&
|
||||||
|
masterVersion >= NDBD_INCL_NODECONF_VERSION_5) ||
|
||||||
|
(NDB_VERSION_MAJOR > 5))
|
||||||
{
|
{
|
||||||
signal->theData[0] = getOwnNodeId();
|
signal->theData[0] = getOwnNodeId();
|
||||||
signal->theData[1] = getOwnNodeId();
|
signal->theData[1] = getOwnNodeId();
|
||||||
@ -14230,7 +14236,7 @@ Dbdih::execDUMP_STATE_ORD(Signal* signal)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(arg == DumpStateOrd::EnableUndoDelayDataWrite){
|
if(arg == DumpStateOrd::EnableUndoDelayDataWrite){
|
||||||
g_eventLogger.info("Dbdih:: delay write of datapages for table = %s",
|
g_eventLogger.info("Dbdih:: delay write of datapages for table = %d",
|
||||||
dumpState->args[1]);
|
dumpState->args[1]);
|
||||||
// Send this dump to ACC and TUP
|
// Send this dump to ACC and TUP
|
||||||
EXECUTE_DIRECT(DBACC, GSN_DUMP_STATE_ORD, signal, 2);
|
EXECUTE_DIRECT(DBACC, GSN_DUMP_STATE_ORD, signal, 2);
|
||||||
|
@ -283,6 +283,7 @@ ErrorBundle ErrorCodes[] = {
|
|||||||
/**
|
/**
|
||||||
* Application error
|
* Application error
|
||||||
*/
|
*/
|
||||||
|
{ 299, DMEC, AE, "Operation not allowed or aborted due to single user mode" },
|
||||||
{ 763, DMEC, AE, "Alter table requires cluster nodes to have exact same version" },
|
{ 763, DMEC, AE, "Alter table requires cluster nodes to have exact same version" },
|
||||||
{ 823, DMEC, AE, "Too much attrinfo from application in tuple manager" },
|
{ 823, DMEC, AE, "Too much attrinfo from application in tuple manager" },
|
||||||
{ 831, DMEC, AE, "Too many nullable/bitfields in table definition" },
|
{ 831, DMEC, AE, "Too many nullable/bitfields in table definition" },
|
||||||
|
@ -669,6 +669,8 @@ err:
|
|||||||
|
|
||||||
bool
|
bool
|
||||||
BackupRestore::createSystable(const TableS & tables){
|
BackupRestore::createSystable(const TableS & tables){
|
||||||
|
if (!m_restore && !m_restore_meta && !m_restore_epoch)
|
||||||
|
return true;
|
||||||
const char *tablename = tables.getTableName();
|
const char *tablename = tables.getTableName();
|
||||||
|
|
||||||
if( strcmp(tablename, NDB_REP_DB "/def/" NDB_APPLY_TABLE) != 0 &&
|
if( strcmp(tablename, NDB_REP_DB "/def/" NDB_APPLY_TABLE) != 0 &&
|
||||||
|
Loading…
x
Reference in New Issue
Block a user