You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-27 21:01:50 +03:00
the begginning
This commit is contained in:
95
versioning/BRM/copylocktest.cpp
Normal file
95
versioning/BRM/copylocktest.cpp
Normal file
@ -0,0 +1,95 @@
|
||||
#include <iostream>
|
||||
#include "dbrm.h"
|
||||
#include "IDBPolicy.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace BRM;
|
||||
|
||||
CopyLocks copylocks;
|
||||
DBRM dbrm;
|
||||
|
||||
void lockRange()
|
||||
{
|
||||
LBIDRange r;
|
||||
r.start = 12345;
|
||||
r.size = 5;
|
||||
copylocks.lock(CopyLocks::WRITE);
|
||||
if (copylocks.isLocked(r))
|
||||
cout << "already locked\n";
|
||||
else {
|
||||
copylocks.lockRange(r, -1);
|
||||
cout << "got the 1st lock\n";
|
||||
}
|
||||
|
||||
r.start = 12349;
|
||||
if (copylocks.isLocked(r))
|
||||
cout << "2nd range is locked\n";
|
||||
else
|
||||
cout << "2nd range is NOT locked\n";
|
||||
|
||||
|
||||
r.start = 12350;
|
||||
if (copylocks.isLocked(r))
|
||||
cout << "3rd range is locked\n";
|
||||
else {
|
||||
copylocks.lockRange(r, -1);
|
||||
cout << "got the 3rd lock\n";
|
||||
}
|
||||
|
||||
copylocks.release(CopyLocks::WRITE);
|
||||
}
|
||||
|
||||
void dbrmLockRange()
|
||||
{
|
||||
dbrm.lockLBIDRange(12345, 5);
|
||||
cout << "OK\n";
|
||||
}
|
||||
|
||||
void dbrmReleaseRange()
|
||||
{
|
||||
dbrm.releaseLBIDRange(12345, 5);
|
||||
cout << "OK\n";
|
||||
}
|
||||
|
||||
|
||||
void releaseRange()
|
||||
{
|
||||
LBIDRange r;
|
||||
r.start = 12345;
|
||||
r.size = 5;
|
||||
copylocks.lock(CopyLocks::WRITE);
|
||||
copylocks.releaseRange(r);
|
||||
|
||||
r.start = 12350;
|
||||
copylocks.releaseRange(r);
|
||||
copylocks.release(CopyLocks::WRITE);
|
||||
|
||||
|
||||
cout << "OK\n";
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char cmd;
|
||||
|
||||
if (argc < 2)
|
||||
goto usage;
|
||||
|
||||
cmd = argv[1][0];
|
||||
|
||||
idbdatafile::IDBPolicy::configIDBPolicy();
|
||||
|
||||
switch(cmd) {
|
||||
case 'l': lockRange(); break;
|
||||
case 'r': releaseRange(); break;
|
||||
case 'L': dbrmLockRange(); break;
|
||||
case 'R': dbrmReleaseRange(); break;
|
||||
default: goto usage;
|
||||
}
|
||||
|
||||
exit(0);
|
||||
usage:
|
||||
cout << "Usage: " << argv[0] << " l | r | L | R. lock/release. Check the code for specifics. :P" << endl;
|
||||
exit(1);
|
||||
}
|
||||
|
Reference in New Issue
Block a user