You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-09-03 23:42:03 +03:00
115 lines
1.8 KiB
C++
115 lines
1.8 KiB
C++
#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);
|
|
}
|
|
|