~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid-security

« back to all changes in this revision

Viewing changes to mysql-test/suite/innodb/t/innodb_bug56680.test

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 22:33:55 UTC
  • mfrom: (1.1.5)
  • Revision ID: package-import@ubuntu.com-20120222223355-or06x1euyk8n0ldi
Tags: 5.1.61-0ubuntu0.10.04.1
* SECURITY UPDATE: Update to 5.1.61 to fix multiple security issues
  (LP: #937869)
  - http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
  - CVE-2011-2262
  - CVE-2012-0075
  - CVE-2012-0112
  - CVE-2012-0113
  - CVE-2012-0114
  - CVE-2012-0115
  - CVE-2012-0116
  - CVE-2012-0117
  - CVE-2012-0118
  - CVE-2012-0119
  - CVE-2012-0120
  - CVE-2012-0484
  - CVE-2012-0485
  - CVE-2012-0486
  - CVE-2012-0487
  - CVE-2012-0488
  - CVE-2012-0489
  - CVE-2012-0490
  - CVE-2012-0491
  - CVE-2012-0492
  - CVE-2012-0493
  - CVE-2012-0494
  - CVE-2012-0495
  - CVE-2012-0496
* Dropped patches unnecessary with 5.1.61:
  - debian/patches/90_mysql_safer_strmov.dpatch
  - debian/patches/51_ssl_test_certs.dpatch
  - debian/patches/52_CVE-2009-4030.dpatch
  - debian/patches/53_CVE-2009-4484.dpatch
  - debian/patches/54_CVE-2008-7247.dpatch
  - debian/patches/55_CVE-2010-1621.dpatch
  - debian/patches/56_CVE-2010-1850.dpatch
  - debian/patches/57_CVE-2010-1849.dpatch
  - debian/patches/58_CVE-2010-1848.dpatch
  - debian/patches/59_CVE-2010-1626.dpatch
  - debian/patches/60_CVE-2010-2008.dpatch
  - debian/patches/60_CVE-2010-3677.dpatch
  - debian/patches/60_CVE-2010-3678.dpatch
  - debian/patches/60_CVE-2010-3679.dpatch
  - debian/patches/60_CVE-2010-3680.dpatch
  - debian/patches/60_CVE-2010-3681.dpatch
  - debian/patches/60_CVE-2010-3682.dpatch
  - debian/patches/60_CVE-2010-3683.dpatch
  - debian/patches/60_CVE-2010-3833.dpatch
  - debian/patches/60_CVE-2010-3834.dpatch
  - debian/patches/60_CVE-2010-3835.dpatch
  - debian/patches/60_CVE-2010-3836.dpatch
  - debian/patches/60_CVE-2010-3837.dpatch
  - debian/patches/60_CVE-2010-3838.dpatch
  - debian/patches/60_CVE-2010-3839.dpatch
  - debian/patches/60_CVE-2010-3840.dpatch
  - debian/patches/61_disable_longfilename_test.dpatch
  - debian/patches/62_alter_table_fix.dpatch
  - debian/patches/63_cherrypick-upstream-49479.dpatch
  - debian/patches/10_readline_build_fix.dpatch
* debian/mysql-client-5.1.docs: removed EXCEPTIONS-CLIENT file
* debian/mysql-server-5.1.docs,debian/libmysqlclient16.docs,
  debian/libmysqlclient-dev.docs: removed, no longer necessary.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#
 
2
# Bug #56680 InnoDB may return wrong results from a case-insensitive index
 
3
#
 
4
-- source include/have_innodb.inc
 
5
 
 
6
-- disable_query_log
 
7
SET @tx_isolation_orig = @@tx_isolation;
 
8
# The flag innodb_change_buffering_debug is only available in debug builds.
 
9
# It instructs InnoDB to try to evict pages from the buffer pool when
 
10
# change buffering is possible, so that the change buffer will be used
 
11
# whenever possible.
 
12
-- error 0,ER_UNKNOWN_SYSTEM_VARIABLE
 
13
SET @innodb_change_buffering_debug_orig = @@innodb_change_buffering_debug;
 
14
-- error 0,ER_UNKNOWN_SYSTEM_VARIABLE
 
15
SET GLOBAL innodb_change_buffering_debug = 1;
 
16
-- enable_query_log
 
17
SET GLOBAL tx_isolation='REPEATABLE-READ';
 
18
 
 
19
CREATE TABLE bug56680(
 
20
       a INT AUTO_INCREMENT PRIMARY KEY,
 
21
       b CHAR(1),
 
22
       c INT,
 
23
       INDEX(b))
 
24
ENGINE=InnoDB;
 
25
 
 
26
INSERT INTO bug56680 VALUES(0,'x',1);
 
27
BEGIN;
 
28
SELECT b FROM bug56680;
 
29
 
 
30
connect (con1,localhost,root,,);
 
31
connection con1;
 
32
BEGIN;
 
33
UPDATE bug56680 SET b='X';
 
34
 
 
35
connection default;
 
36
# This should return the last committed value 'x', but would return 'X'
 
37
# due to a bug in row_search_for_mysql().
 
38
SELECT b FROM bug56680;
 
39
# This would always return the last committed value 'x'.
 
40
SELECT * FROM bug56680;
 
41
 
 
42
connection con1;
 
43
ROLLBACK;
 
44
disconnect con1;
 
45
 
 
46
connection default;
 
47
 
 
48
SELECT b FROM bug56680;
 
49
 
 
50
# For the rest of this test, use the READ UNCOMMITTED isolation level
 
51
# to see what exists in the secondary index.
 
52
SET GLOBAL tx_isolation='READ-UNCOMMITTED';
 
53
 
 
54
# Create enough rows for the table, so that the insert buffer will be
 
55
# used for modifying the secondary index page. There must be multiple
 
56
# index pages, because changes to the root page are never buffered.
 
57
 
 
58
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
59
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
60
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
61
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
62
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
63
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
64
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
65
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
66
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
67
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
68
INSERT INTO bug56680 SELECT 0,b,c FROM bug56680;
 
69
 
 
70
BEGIN;
 
71
SELECT b FROM bug56680 LIMIT 2;
 
72
 
 
73
connect (con1,localhost,root,,);
 
74
connection con1;
 
75
BEGIN;
 
76
DELETE FROM bug56680 WHERE a=1;
 
77
# This should be buffered, if innodb_change_buffering_debug = 1 is in effect.
 
78
INSERT INTO bug56680 VALUES(1,'X',1);
 
79
 
 
80
# This should force an insert buffer merge, and return 'X' in the first row.
 
81
SELECT b FROM bug56680 LIMIT 3;
 
82
 
 
83
connection default;
 
84
SELECT b FROM bug56680 LIMIT 2;
 
85
CHECK TABLE bug56680;
 
86
 
 
87
connection con1;
 
88
ROLLBACK;
 
89
SELECT b FROM bug56680 LIMIT 2;
 
90
CHECK TABLE bug56680;
 
91
 
 
92
connection default;
 
93
disconnect con1;
 
94
 
 
95
SELECT b FROM bug56680 LIMIT 2;
 
96
 
 
97
CREATE TABLE bug56680_2(
 
98
       a INT AUTO_INCREMENT PRIMARY KEY,
 
99
       b VARCHAR(2) CHARSET latin1 COLLATE latin1_german2_ci,
 
100
       c INT,
 
101
       INDEX(b))
 
102
ENGINE=InnoDB;
 
103
 
 
104
INSERT INTO bug56680_2 SELECT 0,_latin1 0xdf,c FROM bug56680;
 
105
 
 
106
BEGIN;
 
107
SELECT HEX(b) FROM bug56680_2 LIMIT 2;
 
108
DELETE FROM bug56680_2 WHERE a=1;
 
109
# This should be buffered, if innodb_change_buffering_debug = 1 is in effect.
 
110
INSERT INTO bug56680_2 VALUES(1,'SS',1);
 
111
 
 
112
# This should force an insert buffer merge, and return 'SS' in the first row.
 
113
SELECT HEX(b) FROM bug56680_2 LIMIT 3;
 
114
CHECK TABLE bug56680_2;
 
115
 
 
116
DELETE FROM bug56680_2 WHERE a=1;
 
117
# This should be buffered, if innodb_change_buffering_debug = 1 is in effect.
 
118
INSERT INTO bug56680_2 VALUES(1,_latin1 0xdf,1);
 
119
 
 
120
# This should force an insert buffer merge, and return 0xdf in the first row.
 
121
SELECT HEX(b) FROM bug56680_2 LIMIT 3;
 
122
CHECK TABLE bug56680_2;
 
123
 
 
124
DROP TABLE bug56680_2;
 
125
DROP TABLE bug56680;
 
126
 
 
127
-- disable_query_log
 
128
SET GLOBAL tx_isolation = @tx_isolation_orig;
 
129
-- error 0, ER_UNKNOWN_SYSTEM_VARIABLE
 
130
SET GLOBAL innodb_change_buffering_debug = @innodb_change_buffering_debug_orig;