~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to tests/suite/execute/t/concurrent.test

  • Committer: Brian Aker
  • Date: 2010-11-19 14:41:43 UTC
  • mfrom: (1933.1.12 refactor)
  • mto: This revision was merged to the branch mainline in revision 1940.
  • Revision ID: brian@tangent.org-20101119144143-ktwsjh70b7obxlou
Merge with trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
SET @var="CREATE SCHEMA foomine";
2
 
EXECUTE @var CONCURRENT;
3
 
# YEs, this is a hack. Remember that foomine may or may not be around since
4
 
# it happens at the same time.
5
 
select sleep(2);
6
 
show schemas LIKE "foomine";
7
 
SET @var="DROP SCHEMA foomine";
8
 
EXECUTE @var CONCURRENT;
9
 
 
10
 
# Now lets see what the processlist shows.
11
 
SET @sleep="SELECT SLEEP(3)";
12
 
EXECUTE @sleep CONCURRENT;
13
 
SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
14
 
 
15
 
# Wait till we know the above is done (this will be replaced with broadcast() in the future)
16
 
EXECUTE @sleep;
17
 
 
18
 
# Check that a concurrent session cannot create one of itself, but can call
19
 
# execute.
20
 
SET @var="EXECUTE \"SELECT SLEEP(3)\"";
21
 
EXECUTE @var CONCURRENT;
22
 
SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
23
 
 
24
 
# Wait till everything closes out
25
 
EXECUTE @sleep;
26
 
SET @var="EXECUTE \"SELECT SLEEP(3)\" CONCURRENT";
27
 
EXECUTE @var CONCURRENT;
28
 
SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
29
 
 
30
 
 
31
 
# Test multiple statements
32
 
 
33
 
SET @var="CREATE SCHEMA d; CREATE SCHEMA e;";
34
 
EXECUTE @var CONCURRENT;
35
 
 
36
 
# Wait for a second...
37
 
EXECUTE @sleep;
38
 
show schemas LIKE "d";
39
 
show schemas LIKE "e";
40
 
DROP SCHEMA d;
41
 
DROP SCHEMA e;
42
 
 
43
 
 
44
 
# We are now going to make sure that data is actually committed.
45
 
CREATE TABLE foo (a serial);
46
 
 
47
 
SET @var="INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
48
 
EXECUTE @var CONCURRENT;
49
 
EXECUTE @sleep;
50
 
SELECT * FROM foo;
51
 
 
52
 
SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
53
 
EXECUTE @var CONCURRENT;
54
 
EXECUTE @sleep;
55
 
SELECT * FROM foo;
56
 
 
57
 
SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES (); RELEASE SAVEPOINT mine";
58
 
EXECUTE @var CONCURRENT;
59
 
EXECUTE @sleep;
60
 
SELECT * FROM foo;
61
 
 
62
 
SET @var="SAVEPOINT mine; INSERT INTO foo VALUES (); INSERT INTO foo VALUES (); ROLLBACK TO SAVEPOINT mine";
63
 
EXECUTE @var CONCURRENT;
64
 
EXECUTE @sleep;
65
 
SELECT * FROM foo;
66
 
 
67
 
DROP TABLE foo;
68
 
 
 
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);
 
6
 
 
7
connection default;
 
8
set @my_barrier= "barrier";
 
9
SELECT USER_BARRIER_NAME FROM DATA_DICTIONARY.USER_BARRIERS WHERE USER_BARRIER_NAME=@my_barrier;
 
10
SET @execute= "SELECT WAIT('barrier')";
 
11
SELECT SIGNAL(@my_barrier);
 
12
 
 
13
EXECUTE @execute CONCURRENT;
 
14
EXECUTE @execute CONCURRENT;
 
15
EXECUTE @execute CONCURRENT;
 
16
 
 
17
SELECT WAIT_UNTIL(@my_barrier, 3);
 
18
 
 
19
### Now lets see what the processlist shows.
 
20
SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
 
21
SELECT SIGNAL(@my_barrier);
 
22
 
 
23
## Wait till we know the above is done (this will be replaced with broadcast() in the future)
 
24
#EXECUTE @sleep;
 
25
#
 
26
## Check that a concurrent session cannot create one of itself, but can call
 
27
## execute.
 
28
#SET @var="EXECUTE \"SELECT SLEEP(3)\"";
 
29
#EXECUTE @var CONCURRENT;
 
30
#SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
 
31
#
 
32
## Wait till everything closes out
 
33
#EXECUTE @sleep;
 
34
#SET @var="EXECUTE \"SELECT SLEEP(3)\" CONCURRENT";
 
35
#EXECUTE @var CONCURRENT;
 
36
#SELECT USER,INFO FROM DATA_DICTIONARY.PROCESSLIST;
 
37
#
 
38
#
 
39
## Test multiple statements
 
40
#
 
41
#SET @var="CREATE SCHEMA d; CREATE SCHEMA e;";
 
42
#EXECUTE @var CONCURRENT;
 
43
#
 
44
## Wait for a second...
 
45
#EXECUTE @sleep;
 
46
#show schemas LIKE "d";
 
47
#show schemas LIKE "e";
 
48
#DROP SCHEMA d;
 
49
#DROP SCHEMA e;
 
50
#
 
51
#
 
52
## We are now going to make sure that data is actually committed.
 
53
#CREATE TABLE foo (a serial);
 
54
#
 
55
#SET @var="INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
 
56
#EXECUTE @var CONCURRENT;
 
57
#EXECUTE @sleep;
 
58
#SELECT * FROM foo;
 
59
#
 
60
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES ()";
 
61
#EXECUTE @var CONCURRENT;
 
62
#EXECUTE @sleep;
 
63
#SELECT * FROM foo;
 
64
#
 
65
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES(); INSERT INTO foo VALUES (); RELEASE SAVEPOINT mine";
 
66
#EXECUTE @var CONCURRENT;
 
67
#EXECUTE @sleep;
 
68
#SELECT * FROM foo;
 
69
#
 
70
#SET @var="SAVEPOINT mine; INSERT INTO foo VALUES (); INSERT INTO foo VALUES (); ROLLBACK TO SAVEPOINT mine";
 
71
#EXECUTE @var CONCURRENT;
 
72
#EXECUTE @sleep;
 
73
#SELECT * FROM foo;
 
74
#
 
75
#DROP TABLE foo;
 
76
#