mirror of
https://github.com/MariaDB/server.git
synced 2025-08-09 22:24:09 +03:00
and moved some code. Improve portability ndb/include/kernel/signaldata/SignalData.hpp: Removed macros ndb/include/mgmcommon/MgmtErrorReporter.hpp: Removed macros ndb/include/util/Bitmask.hpp: Removed macros ndb/src/common/debugger/SignalLoggerManager.cpp: Moved printSegmented to src/kernel/vm ndb/src/kernel/Main.cpp: Removed macros ndb/src/kernel/blocks/dbtux/Dbtux.hpp: Removed macros ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp: Removed macros ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp: Removed macros ndb/src/kernel/blocks/ndbfs/Pool.hpp: Removed macros ndb/src/kernel/error/ErrorReporter.hpp: Removed macros ndb/src/kernel/vm/MetaData.cpp: Removed macros ndb/src/kernel/vm/SimulatedBlock.cpp: Removed macros ndb/src/kernel/vm/SimulatedBlock.hpp: Removed macros ndb/src/kernel/vm/TransporterCallback.cpp: Moved printSegmented to src/kernel/vm ndb/src/mgmclient/CommandInterpreter.cpp: Removed macros ndb/src/mgmsrv/MgmtSrvr.cpp: Removed macros ndb/src/ndbapi/TransporterFacade.cpp: Removed macros
114 lines
2.8 KiB
C++
114 lines
2.8 KiB
C++
/* Copyright (C) 2003 MySQL AB
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
#include "MetaData.hpp"
|
|
#include "SimulatedBlock.hpp"
|
|
#include <blocks/dbdict/Dbdict.hpp>
|
|
#include <blocks/dbdih/Dbdih.hpp>
|
|
|
|
// MetaData::Common
|
|
|
|
MetaData::Common::Common(Dbdict& dbdict, Dbdih& dbdih) :
|
|
m_dbdict(dbdict),
|
|
m_dbdih(dbdih)
|
|
{
|
|
m_lock[false] = m_lock[true] = 0;
|
|
}
|
|
|
|
// MetaData::Table
|
|
|
|
// MetaData
|
|
|
|
MetaData::MetaData(Common& common) :
|
|
m_common(common)
|
|
{
|
|
m_lock[false] = m_lock[true] = 0;
|
|
}
|
|
|
|
MetaData::MetaData(SimulatedBlock* block) :
|
|
m_common(*block->getMetaDataCommon())
|
|
{
|
|
m_lock[false] = m_lock[true] = 0;
|
|
}
|
|
|
|
MetaData::~MetaData()
|
|
{
|
|
for (int i = false; i <= true; i++) {
|
|
assert(m_common.m_lock[i] >= m_lock[i]);
|
|
m_common.m_lock[i] -= m_lock[i];
|
|
m_lock[i] = 0;
|
|
}
|
|
}
|
|
|
|
int
|
|
MetaData::lock(bool exclusive)
|
|
{
|
|
if (m_common.m_lock[true] > m_lock[true]) {
|
|
// locked exclusively by another instance
|
|
return MetaData::Locked;
|
|
}
|
|
m_lock[exclusive]++;
|
|
m_common.m_lock[exclusive]++;
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
MetaData::unlock(bool exclusive)
|
|
{
|
|
if (m_lock[exclusive] == 0) {
|
|
return MetaData::NotLocked;
|
|
}
|
|
m_lock[exclusive]--;
|
|
m_common.m_lock[exclusive]--;
|
|
return 0;
|
|
}
|
|
|
|
int
|
|
MetaData::getTable(MetaData::Table& table, Uint32 tableId, Uint32 tableVersion)
|
|
{
|
|
if (m_lock[false] + m_lock[true] == 0) {
|
|
return MetaData::NotLocked;
|
|
}
|
|
return m_common.m_dbdict.getMetaTable(table, tableId, tableVersion);
|
|
}
|
|
|
|
int
|
|
MetaData::getTable(MetaData::Table& table, const char* tableName)
|
|
{
|
|
if (m_lock[false] + m_lock[true] == 0) {
|
|
return MetaData::NotLocked;
|
|
}
|
|
return m_common.m_dbdict.getMetaTable(table, tableName);
|
|
}
|
|
|
|
int
|
|
MetaData::getAttribute(MetaData::Attribute& attribute, const MetaData::Table& table, Uint32 attributeId)
|
|
{
|
|
if (m_lock[false] + m_lock[true] == 0) {
|
|
return MetaData::NotLocked;
|
|
}
|
|
return m_common.m_dbdict.getMetaAttribute(attribute, table, attributeId);
|
|
}
|
|
|
|
int
|
|
MetaData::getAttribute(MetaData::Attribute& attribute, const MetaData::Table& table, const char* attributeName)
|
|
{
|
|
if (m_lock[false] + m_lock[true] == 0) {
|
|
return MetaData::NotLocked;
|
|
}
|
|
return m_common.m_dbdict.getMetaAttribute(attribute, table, attributeName);
|
|
}
|