~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to mysql-test/t/innodb_trx_weight.test

  • Committer: brian
  • Date: 2008-06-25 05:29:13 UTC
  • Revision ID: brian@localhost.localdomain-20080625052913-6upwo0jsrl4lnapl
clean slate

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Ensure that the number of locks (SELECT FOR UPDATE for example) is
 
3
# added to the number of altered rows when choosing the smallest
 
4
# transaction to kill as a victim when a deadlock is detected.
 
5
# Also transactions what had edited non-transactional tables should
 
6
# be heavier than ones that had not.
 
7
#
 
8
 
 
9
-- source include/have_innodb.inc
 
10
 
 
11
SET storage_engine=InnoDB;
 
12
 
 
13
# we do not really care about what gets printed, we are only
 
14
# interested in getting the deadlock resolved according to our
 
15
# expectations
 
16
-- disable_query_log
 
17
-- disable_result_log
 
18
 
 
19
# we want to use "-- eval statement1; statement2" which does not work with
 
20
# prepared statements. Because this test should not behave differently with
 
21
# or without prepared statements we disable them so the test does not fail
 
22
# if someone runs ./mysql-test-run.pl --ps-protocol
 
23
-- disable_ps_protocol
 
24
 
 
25
-- disable_warnings
 
26
DROP TABLE IF EXISTS t1, t2, t3, t4, t5_nontrans;
 
27
-- enable_warnings
 
28
 
 
29
# we will create a simple deadlock with t1, t2 and two connections
 
30
CREATE TABLE t1 (a INT);
 
31
CREATE TABLE t2 (a INT);
 
32
 
 
33
# auxiliary table with a bulk of rows which will be locked by a
 
34
# transaction to increase its weight
 
35
CREATE TABLE t3 (a INT);
 
36
 
 
37
# auxiliary empty table which will be inserted by a
 
38
# transaction to increase its weight
 
39
CREATE TABLE t4 (a INT);
 
40
 
 
41
# auxiliary non-transactional table which will be edited by a
 
42
# transaction to tremendously increase its weight
 
43
CREATE TABLE t5_nontrans (a INT) ENGINE=MyISAM;
 
44
 
 
45
INSERT INTO t1 VALUES (1);
 
46
INSERT INTO t2 VALUES (1);
 
47
# insert a lot of rows in t3
 
48
INSERT INTO t3 VALUES (1);
 
49
INSERT INTO t3 SELECT * FROM t3;
 
50
INSERT INTO t3 SELECT * FROM t3;
 
51
INSERT INTO t3 SELECT * FROM t3;
 
52
INSERT INTO t3 SELECT * FROM t3;
 
53
INSERT INTO t3 SELECT * FROM t3;
 
54
INSERT INTO t3 SELECT * FROM t3;
 
55
INSERT INTO t3 SELECT * FROM t3;
 
56
INSERT INTO t3 SELECT * FROM t3;
 
57
INSERT INTO t3 SELECT * FROM t3;
 
58
INSERT INTO t3 SELECT * FROM t3;
 
59
INSERT INTO t3 SELECT * FROM t3;
 
60
 
 
61
# test locking weight
 
62
 
 
63
-- let $con1_extra_sql =
 
64
-- let $con1_extra_sql_present = 0
 
65
-- let $con2_extra_sql = SELECT * FROM t3 FOR UPDATE
 
66
-- let $con2_extra_sql_present = 1
 
67
-- let $con1_should_be_rolledback = 1
 
68
-- source include/innodb_trx_weight.inc
 
69
 
 
70
-- let $con1_extra_sql = INSERT INTO t4 VALUES (1), (1)
 
71
-- let $con1_extra_sql_present = 1
 
72
-- let $con2_extra_sql = SELECT * FROM t3 FOR UPDATE
 
73
-- let $con2_extra_sql_present = 1
 
74
-- let $con1_should_be_rolledback = 1
 
75
-- source include/innodb_trx_weight.inc
 
76
 
 
77
-- let $con1_extra_sql = INSERT INTO t4 VALUES (1), (1), (1), (1), (1), (1)
 
78
-- let $con1_extra_sql_present = 1
 
79
-- let $con2_extra_sql = SELECT * FROM t3 FOR UPDATE
 
80
-- let $con2_extra_sql_present = 1
 
81
-- let $con1_should_be_rolledback = 0
 
82
-- source include/innodb_trx_weight.inc
 
83
 
 
84
# test weight when non-transactional tables are edited
 
85
 
 
86
-- let $con1_extra_sql = INSERT INTO t4 VALUES (1), (1), (1)
 
87
-- let $con1_extra_sql_present = 1
 
88
-- let $con2_extra_sql =
 
89
-- let $con2_extra_sql_present = 0
 
90
-- let $con1_should_be_rolledback = 0
 
91
-- source include/innodb_trx_weight.inc
 
92
 
 
93
-- let $con1_extra_sql = INSERT INTO t4 VALUES (1), (1), (1)
 
94
-- let $con1_extra_sql_present = 1
 
95
-- let $con2_extra_sql = INSERT INTO t5_nontrans VALUES (1)
 
96
-- let $con2_extra_sql_present = 1
 
97
-- let $con1_should_be_rolledback = 1
 
98
-- source include/innodb_trx_weight.inc
 
99
 
 
100
-- let $con1_extra_sql = INSERT INTO t4 VALUES (1), (1), (1)
 
101
-- let $con1_extra_sql = $con1_extra_sql; INSERT INTO t5_nontrans VALUES (1)
 
102
-- let $con1_extra_sql_present = 1
 
103
-- let $con2_extra_sql = INSERT INTO t5_nontrans VALUES (1)
 
104
-- let $con2_extra_sql_present = 1
 
105
-- let $con1_should_be_rolledback = 0
 
106
-- source include/innodb_trx_weight.inc
 
107
 
 
108
DROP TABLE t1, t2, t3, t4, t5_nontrans;