1
# we are going to have everything owned by a particular connection
2
connect (barrier_owner,localhost,root,,);
3
connection barrier_owner;
4
set @my_barrier= "barrier";
5
SELECT CREATE_BARRIER(@my_barrier);
8
set @my_barrier= "barrier";
9
SELECT USER_BARRIER_NAME FROM DATA_DICTIONARY.USER_DEFINED_BARRIERS WHERE USER_BARRIER_NAME=@my_barrier;
10
SET @execute= "SELECT WAIT('barrier')";
11
SELECT SIGNAL(@my_barrier);
13
EXECUTE @execute CONCURRENT;
14
EXECUTE @execute CONCURRENT;
15
EXECUTE @execute CONCURRENT;
17
SELECT WAIT_UNTIL(@my_barrier, 3);
19
### Now lets see what the processlist shows.
20
SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST ORDER BY ID;
21
SELECT SIGNAL(@my_barrier);
23
## Wait till we know the above is done (this will be replaced with broadcast() in the future)
26
## Check that a concurrent session cannot create one of itself, but can call
28
#SET @var="EXECUTE \"SELECT SLEEP(3)\"";
29
#EXECUTE @var CONCURRENT;
30
#SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
32
## Wait till everything closes out
34
#SET @var="EXECUTE \"SELECT SLEEP(3)\" CONCURRENT";
35
#EXECUTE @var CONCURRENT;
36
#SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
39
## Test multiple statements
41
#SET @var="CREATE SCHEMA d; CREATE SCHEMA e;";
42
#EXECUTE @var CONCURRENT;
44
## Wait for a second...
46
#show schemas LIKE "d";
47
#show schemas LIKE "e";
52
## We are now going to make sure that data is actually committed.
53
#CREATE TABLE foo (a serial);
55
#SET @var="INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
56
#EXECUTE @var CONCURRENT;
60
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
61
#EXECUTE @var CONCURRENT;
65
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES (); RELEASE SAVEPOINT mine";
66
#EXECUTE @var CONCURRENT;
70
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES (); INSERT INTO foo VALUES (); ROLLBACK TO SAVEPOINT mine";
71
#EXECUTE @var CONCURRENT;