1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-04 04:42:30 +03:00
Files
mariadb-columnstore-engine/tools/brmtest/locks.cpp
2017-10-26 17:18:17 +01:00

83 lines
1.9 KiB
C++

/*
* $Id: locks.cpp 282 2007-10-28 02:18:55Z rdempsey $
*/
#include <iostream>
#include <stdexcept>
using namespace std;
#include "sessionmanager.h"
#include "calpontsystemcatalog.h"
using namespace execplan;
#include "shmkeys.h"
#include "rwlock.h"
#include "mastersegmenttable.h"
using namespace BRM;
int query_locks()
{
ShmKeys keys;
RWLock* rwlock[MasterSegmentTable::nTables];
int RWLockKeys[MasterSegmentTable::nTables];
int i;
RWLockKeys[0] = keys.KEYRANGE_EXTENTMAP_BASE;
RWLockKeys[1] = keys.KEYRANGE_EMFREELIST_BASE;
RWLockKeys[2] = keys.KEYRANGE_VBBM_BASE;
RWLockKeys[3] = keys.KEYRANGE_VSS_BASE;
RWLockKeys[4] = keys.KEYRANGE_CL_BASE;
for (i = 0; i < MasterSegmentTable::nTables; i++)
rwlock[i] = new RWLock(RWLockKeys[i]);
for (i = 0; i < MasterSegmentTable::nTables; i++)
if (rwlock[i]->getWriting() > 0 ||
//rwlock[i]->getReading() > 0 ||
rwlock[i]->getWritersWaiting() > 0 ||
rwlock[i]->getReadersWaiting() > 0)
return 1;
for (i = 0; i < MasterSegmentTable::nTables; i++)
delete rwlock[i];
return 0;
}
int reset_locks()
{
ShmKeys keys;
RWLock* rwlock[MasterSegmentTable::nTables];
int RWLockKeys[MasterSegmentTable::nTables];
int i;
SessionManager sm(true);
RWLockKeys[0] = keys.KEYRANGE_EXTENTMAP_BASE;
RWLockKeys[1] = keys.KEYRANGE_EMFREELIST_BASE;
RWLockKeys[2] = keys.KEYRANGE_VBBM_BASE;
RWLockKeys[3] = keys.KEYRANGE_VSS_BASE;
RWLockKeys[4] = keys.KEYRANGE_CL_BASE;
for (i = 0; i < MasterSegmentTable::nTables; i++)
rwlock[i] = new RWLock(RWLockKeys[i]);
for (i = 0; i < MasterSegmentTable::nTables; i++)
rwlock[i]->reset();
for (i = 0; i < MasterSegmentTable::nTables; i++)
delete rwlock[i];
try
{
sm.reset();
}
catch (exception& e)
{
cout << e.what() << endl;
return -1;
}
return 0;
}