Merge lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.6 into lp:percona-server/5.6
- fake-changes-from-fb-5.6
- Merge into 5.6
Proposed by
Laurynas Biveinis
Status: | Superseded |
---|---|
Proposed branch: | lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.6 |
Merge into: | lp:percona-server/5.6 |
Prerequisite: | lp:~laurynas-biveinis/percona-server/fake-changes-binlog-5.6 |
Diff against target: |
1832 lines (+1197/-174) 15 files modified
Percona-Server/mysql-test/include/start_fake_changes.inc (+34/-0) Percona-Server/mysql-test/include/stop_fake_changes.inc (+35/-0) Percona-Server/mysql-test/r/percona_innodb_fake_changes.result (+583/-43) Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result (+53/-3) Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result (+143/-0) Percona-Server/mysql-test/t/percona_innodb_fake_changes.test (+300/-76) Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test (+8/-4) Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test (+14/-24) Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test (+1/-0) Percona-Server/sql/sql_insert.cc (+1/-1) Percona-Server/storage/innobase/btr/btr0cur.cc (+10/-10) Percona-Server/storage/innobase/handler/ha_innodb.cc (+9/-7) Percona-Server/storage/innobase/lock/lock0lock.cc (+4/-4) Percona-Server/storage/innobase/que/que0que.cc (+1/-1) Percona-Server/storage/innobase/row/row0upd.cc (+1/-1) |
To merge this branch: | bzr merge lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.6 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Laurynas Biveinis (community) | Needs Fixing | ||
Registry Administrators | Pending | ||
Review via email: mp+174193@code.launchpad.net |
This proposal has been superseded by a proposal from 2013-07-16.
Commit message
Description of the change
No BT or ST but BT 20439 prerequisite.
http://
Merge bug 1190604 fix from 5.5.
Merge bug 1200162 changes from 5.5.
To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote : | # |
review:
Needs Fixing
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === added file 'Percona-Server/mysql-test/include/start_fake_changes.inc' | |||
2 | --- Percona-Server/mysql-test/include/start_fake_changes.inc 1970-01-01 00:00:00 +0000 | |||
3 | +++ Percona-Server/mysql-test/include/start_fake_changes.inc 2013-07-15 16:29:43 +0000 | |||
4 | @@ -0,0 +1,34 @@ | |||
5 | 1 | # | ||
6 | 2 | # Include this file in a session before fake changes workload. It will enable | ||
7 | 3 | # the fake changes for the current session and save the relevant server state | ||
8 | 4 | # to variables that will be used by stop_fake_changes.inc that it didn't change. | ||
9 | 5 | # | ||
10 | 6 | # Since some of the state checked is global InnoDB counters, do not issue a | ||
11 | 7 | # non-fake-changes workload in parallel. | ||
12 | 8 | # | ||
13 | 9 | |||
14 | 10 | # Requires userstat | ||
15 | 11 | SELECT @@global.userstat = 1 AS should_be_1; | ||
16 | 12 | |||
17 | 13 | # Have up-to-date stats for the fake changes table, so that, if there is a | ||
18 | 14 | # non-fake-changes session running in parallel, it does not trigger an auto | ||
19 | 15 | # stat recalc which then fails these checks. | ||
20 | 16 | eval ANALYZE TABLE $fake_changes_table; | ||
21 | 17 | |||
22 | 18 | let $t_checksum_1= `CHECKSUM TABLE $fake_changes_table EXTENDED`; | ||
23 | 19 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
24 | 20 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
25 | 21 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
26 | 22 | # eval SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
27 | 23 | eval SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table'; | ||
28 | 24 | eval SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
29 | 25 | eval SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
30 | 26 | eval SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table'; | ||
31 | 27 | |||
32 | 28 | # | ||
33 | 29 | # Index stats should not change, but it's only possible to inspect them | ||
34 | 30 | # manually. | ||
35 | 31 | # | ||
36 | 32 | eval SHOW INDEXES IN $fake_changes_table; | ||
37 | 33 | |||
38 | 34 | SET innodb_fake_changes=1; | ||
39 | 0 | 35 | ||
40 | === added file 'Percona-Server/mysql-test/include/stop_fake_changes.inc' | |||
41 | --- Percona-Server/mysql-test/include/stop_fake_changes.inc 1970-01-01 00:00:00 +0000 | |||
42 | +++ Percona-Server/mysql-test/include/stop_fake_changes.inc 2013-07-15 16:29:43 +0000 | |||
43 | @@ -0,0 +1,35 @@ | |||
44 | 1 | # | ||
45 | 2 | # Include this file in a session after fake changes workload. It will disable the fake | ||
46 | 3 | # changes and assert that the relevant server state has not changed from the one saved | ||
47 | 4 | # by a previous start_fake_changes.inc. | ||
48 | 5 | # | ||
49 | 6 | SET innodb_fake_changes=0; | ||
50 | 7 | |||
51 | 8 | eval CHECK TABLE $fake_changes_table; | ||
52 | 9 | |||
53 | 10 | let $t_checksum_2= `CHECKSUM TABLE $fake_changes_table EXTENDED`; | ||
54 | 11 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
55 | 12 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
56 | 13 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
57 | 14 | # eval SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
58 | 15 | eval SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table'; | ||
59 | 16 | eval SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
60 | 17 | eval SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table'; | ||
61 | 18 | eval SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table'; | ||
62 | 19 | |||
63 | 20 | --disable_query_log | ||
64 | 21 | eval SELECT "$t_checksum_1" LIKE "$t_checksum_2" AS should_be_1; | ||
65 | 22 | --enable_query_log | ||
66 | 23 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
67 | 24 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
68 | 25 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
69 | 26 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
70 | 27 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
71 | 28 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
72 | 29 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
73 | 30 | |||
74 | 31 | # | ||
75 | 32 | # Index stats should not change, but it's only possible to inspect them | ||
76 | 33 | # manually. | ||
77 | 34 | # | ||
78 | 35 | eval SHOW INDEXES IN $fake_changes_table; | ||
79 | 0 | 36 | ||
80 | === modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes.result' | |||
81 | --- Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2013-05-06 15:43:51 +0000 | |||
82 | +++ Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2013-07-15 16:29:43 +0000 | |||
83 | @@ -22,10 +22,24 @@ | |||
84 | 22 | OFF | 22 | OFF |
85 | 23 | # Explicit COMMIT should fail when innodb_fake_changes is enabled | 23 | # Explicit COMMIT should fail when innodb_fake_changes is enabled |
86 | 24 | # DML should be fine | 24 | # DML should be fine |
88 | 25 | SET @@GLOBAL.userstat= TRUE; | 25 | SET @@GLOBAL.userstat=TRUE; |
89 | 26 | CREATE TABLE t1 (a INT) ENGINE=InnoDB; | 26 | CREATE TABLE t1 (a INT) ENGINE=InnoDB; |
90 | 27 | INSERT INTO t1 VALUES (1); | 27 | INSERT INTO t1 VALUES (1); |
92 | 28 | SET autocommit=0; | 28 | SELECT @@global.userstat = 1 AS should_be_1; |
93 | 29 | should_be_1 | ||
94 | 30 | 1 | ||
95 | 31 | ANALYZE TABLE t1; | ||
96 | 32 | Table Op Msg_type Msg_text | ||
97 | 33 | test.t1 analyze status OK | ||
98 | 34 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
99 | 35 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
100 | 36 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
101 | 37 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
102 | 38 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
103 | 39 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
104 | 40 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
105 | 41 | SHOW INDEXES IN t1; | ||
106 | 42 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
107 | 29 | SET innodb_fake_changes=1; | 43 | SET innodb_fake_changes=1; |
108 | 30 | BEGIN; | 44 | BEGIN; |
109 | 31 | INSERT INTO t1 VALUES (2); | 45 | INSERT INTO t1 VALUES (2); |
110 | @@ -36,31 +50,437 @@ | |||
111 | 36 | 1 | 50 | 1 |
112 | 37 | COMMIT; | 51 | COMMIT; |
113 | 38 | ERROR HY000: Got error 131 during COMMIT | 52 | ERROR HY000: Got error 131 during COMMIT |
136 | 39 | SET innodb_fake_changes=default; | 53 | SET innodb_fake_changes=0; |
137 | 40 | # Verify that the fake changes to t1 did not leak through | 54 | CHECK TABLE t1; |
138 | 41 | CHECK TABLE t1; | 55 | Table Op Msg_type Msg_text |
139 | 42 | Table Op Msg_type Msg_text | 56 | test.t1 check status OK |
140 | 43 | test.t1 check status OK | 57 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; |
141 | 44 | should_be_1 | 58 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; |
142 | 45 | 1 | 59 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; |
143 | 46 | should_be_0 | 60 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; |
144 | 47 | 0 | 61 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; |
145 | 48 | should_be_0 | 62 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; |
146 | 49 | 0 | 63 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; |
147 | 50 | should_be_0 | 64 | should_be_1 |
148 | 51 | 0 | 65 | 1 |
149 | 52 | should_be_0 | 66 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; |
150 | 53 | 0 | 67 | should_be_0 |
151 | 54 | should_be_0 | 68 | 0 |
152 | 55 | 0 | 69 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; |
153 | 56 | should_be_0 | 70 | should_be_0 |
154 | 57 | 0 | 71 | 0 |
155 | 58 | should_be_0 | 72 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; |
156 | 59 | 0 | 73 | should_be_0 |
157 | 60 | DROP TABLE t1; | 74 | 0 |
158 | 75 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
159 | 76 | should_be_0 | ||
160 | 77 | 0 | ||
161 | 78 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
162 | 79 | should_be_0 | ||
163 | 80 | 0 | ||
164 | 81 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
165 | 82 | should_be_0 | ||
166 | 83 | 0 | ||
167 | 84 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
168 | 85 | should_be_0 | ||
169 | 86 | 0 | ||
170 | 87 | SHOW INDEXES IN t1; | ||
171 | 88 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
172 | 89 | DROP TABLE t1; | ||
173 | 90 | CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB; | ||
174 | 91 | INSERT INTO t1 VALUES (1,1); | ||
175 | 92 | SELECT @@global.userstat = 1 AS should_be_1; | ||
176 | 93 | should_be_1 | ||
177 | 94 | 1 | ||
178 | 95 | ANALYZE TABLE t1; | ||
179 | 96 | Table Op Msg_type Msg_text | ||
180 | 97 | test.t1 analyze status OK | ||
181 | 98 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
182 | 99 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
183 | 100 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
184 | 101 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
185 | 102 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
186 | 103 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
187 | 104 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
188 | 105 | SHOW INDEXES IN t1; | ||
189 | 106 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
190 | 107 | t1 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
191 | 108 | t1 0 b 1 b A 1 NULL NULL YES BTREE | ||
192 | 109 | SET innodb_fake_changes=1; | ||
193 | 110 | SELECT * FROM t1; | ||
194 | 111 | ERROR HY000: Got error 131 during COMMIT | ||
195 | 112 | INSERT INTO t1 VALUES (2,2); | ||
196 | 113 | ERROR HY000: Got error 131 during COMMIT | ||
197 | 114 | UPDATE t1 SET a=0 where b=1; | ||
198 | 115 | ERROR 23000: Duplicate entry '1' for key 'b' | ||
199 | 116 | UPDATE t1 SET b=0 where a=1; | ||
200 | 117 | ERROR HY000: Got error 131 during COMMIT | ||
201 | 118 | UPDATE t1 SET b=0 where a=2; | ||
202 | 119 | ERROR HY000: Got error 131 during COMMIT | ||
203 | 120 | DELETE FROM t1 where b=2; | ||
204 | 121 | ERROR HY000: Got error 131 during COMMIT | ||
205 | 122 | DELETE FROM t1 where b=1; | ||
206 | 123 | ERROR HY000: Got error 131 during COMMIT | ||
207 | 124 | DELETE FROM t1 where a=2; | ||
208 | 125 | ERROR HY000: Got error 131 during COMMIT | ||
209 | 126 | DELETE FROM t1 where a=1; | ||
210 | 127 | ERROR HY000: Got error 131 during COMMIT | ||
211 | 128 | REPLACE INTO t1 values (2,3); | ||
212 | 129 | ERROR HY000: Got error 131 during COMMIT | ||
213 | 130 | BEGIN; | ||
214 | 131 | SELECT * FROM t1; | ||
215 | 132 | a b | ||
216 | 133 | 1 1 | ||
217 | 134 | COMMIT; | ||
218 | 135 | ERROR HY000: Got error 131 during COMMIT | ||
219 | 136 | BEGIN; | ||
220 | 137 | INSERT INTO t1 VALUES (2,2); | ||
221 | 138 | COMMIT; | ||
222 | 139 | ERROR HY000: Got error 131 during COMMIT | ||
223 | 140 | BEGIN; | ||
224 | 141 | UPDATE t1 SET a=0 where b=1; | ||
225 | 142 | ERROR 23000: Duplicate entry '1' for key 'b' | ||
226 | 143 | COMMIT; | ||
227 | 144 | ERROR HY000: Got error 131 during COMMIT | ||
228 | 145 | BEGIN; | ||
229 | 146 | UPDATE t1 SET b=0 where a=1; | ||
230 | 147 | COMMIT; | ||
231 | 148 | ERROR HY000: Got error 131 during COMMIT | ||
232 | 149 | BEGIN; | ||
233 | 150 | UPDATE t1 SET b=0 where a=2; | ||
234 | 151 | COMMIT; | ||
235 | 152 | ERROR HY000: Got error 131 during COMMIT | ||
236 | 153 | BEGIN; | ||
237 | 154 | DELETE FROM t1 where b=2; | ||
238 | 155 | COMMIT; | ||
239 | 156 | ERROR HY000: Got error 131 during COMMIT | ||
240 | 157 | BEGIN; | ||
241 | 158 | DELETE FROM t1 where b=1; | ||
242 | 159 | COMMIT; | ||
243 | 160 | ERROR HY000: Got error 131 during COMMIT | ||
244 | 161 | BEGIN; | ||
245 | 162 | DELETE FROM t1 where a=2; | ||
246 | 163 | COMMIT; | ||
247 | 164 | ERROR HY000: Got error 131 during COMMIT | ||
248 | 165 | BEGIN; | ||
249 | 166 | DELETE FROM t1 where a=1; | ||
250 | 167 | COMMIT; | ||
251 | 168 | ERROR HY000: Got error 131 during COMMIT | ||
252 | 169 | BEGIN; | ||
253 | 170 | REPLACE INTO t1 values (2,3); | ||
254 | 171 | COMMIT; | ||
255 | 172 | ERROR HY000: Got error 131 during COMMIT | ||
256 | 173 | INSERT INTO t1 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2; | ||
257 | 174 | ERROR HY000: Got error 131 during COMMIT | ||
258 | 175 | CREATE INDEX bx ON t1(b); | ||
259 | 176 | ERROR HY000: Got error 131 during COMMIT | ||
260 | 177 | SET innodb_fake_changes=0; | ||
261 | 178 | CHECK TABLE t1; | ||
262 | 179 | Table Op Msg_type Msg_text | ||
263 | 180 | test.t1 check status OK | ||
264 | 181 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
265 | 182 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
266 | 183 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
267 | 184 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
268 | 185 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
269 | 186 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
270 | 187 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
271 | 188 | should_be_1 | ||
272 | 189 | 1 | ||
273 | 190 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
274 | 191 | should_be_0 | ||
275 | 192 | 0 | ||
276 | 193 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
277 | 194 | should_be_0 | ||
278 | 195 | 0 | ||
279 | 196 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
280 | 197 | should_be_0 | ||
281 | 198 | 0 | ||
282 | 199 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
283 | 200 | should_be_0 | ||
284 | 201 | 0 | ||
285 | 202 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
286 | 203 | should_be_0 | ||
287 | 204 | 0 | ||
288 | 205 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
289 | 206 | should_be_0 | ||
290 | 207 | 0 | ||
291 | 208 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
292 | 209 | should_be_0 | ||
293 | 210 | 0 | ||
294 | 211 | SHOW INDEXES IN t1; | ||
295 | 212 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
296 | 213 | t1 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
297 | 214 | t1 0 b 1 b A 1 NULL NULL YES BTREE | ||
298 | 215 | DROP TABLE t1; | ||
299 | 216 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; | ||
300 | 217 | INSERT INTO t2 VALUES (1, 1); | ||
301 | 218 | SELECT @@global.userstat = 1 AS should_be_1; | ||
302 | 219 | should_be_1 | ||
303 | 220 | 1 | ||
304 | 221 | ANALYZE TABLE t2; | ||
305 | 222 | Table Op Msg_type Msg_text | ||
306 | 223 | test.t2 analyze status OK | ||
307 | 224 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
308 | 225 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
309 | 226 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
310 | 227 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'; | ||
311 | 228 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'; | ||
312 | 229 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'; | ||
313 | 230 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'; | ||
314 | 231 | SHOW INDEXES IN t2; | ||
315 | 232 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
316 | 233 | t2 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
317 | 234 | SET innodb_fake_changes=1; | ||
318 | 235 | SELECT * FROM t2; | ||
319 | 236 | ERROR HY000: Got error 131 during COMMIT | ||
320 | 237 | INSERT INTO t2 VALUES (2,2); | ||
321 | 238 | ERROR HY000: Got error 131 during COMMIT | ||
322 | 239 | UPDATE t2 SET b=0 where a=1; | ||
323 | 240 | ERROR HY000: Got error 131 during COMMIT | ||
324 | 241 | UPDATE t2 SET b=0 where a=2; | ||
325 | 242 | ERROR HY000: Got error 131 during COMMIT | ||
326 | 243 | DELETE FROM t2 where b=2; | ||
327 | 244 | ERROR HY000: Got error 131 during COMMIT | ||
328 | 245 | DELETE FROM t2 where b=1; | ||
329 | 246 | ERROR HY000: Got error 131 during COMMIT | ||
330 | 247 | DELETE FROM t2 where a=2; | ||
331 | 248 | ERROR HY000: Got error 131 during COMMIT | ||
332 | 249 | DELETE FROM t2 where a=1; | ||
333 | 250 | ERROR HY000: Got error 131 during COMMIT | ||
334 | 251 | REPLACE INTO t2 values (2,3); | ||
335 | 252 | ERROR HY000: Got error 131 during COMMIT | ||
336 | 253 | REPLACE INTO t2 VALUES (1,1); | ||
337 | 254 | ERROR HY000: Got error 131 during COMMIT | ||
338 | 255 | REPLACE INTO t2 VALUES (1,2); | ||
339 | 256 | ERROR HY000: Got error 131 during COMMIT | ||
340 | 257 | BEGIN; | ||
341 | 258 | SELECT * FROM t2; | ||
342 | 259 | a b | ||
343 | 260 | 1 1 | ||
344 | 261 | COMMIT; | ||
345 | 262 | ERROR HY000: Got error 131 during COMMIT | ||
346 | 263 | BEGIN; | ||
347 | 264 | INSERT INTO t2 VALUES (2,2); | ||
348 | 265 | COMMIT; | ||
349 | 266 | ERROR HY000: Got error 131 during COMMIT | ||
350 | 267 | BEGIN; | ||
351 | 268 | UPDATE t2 SET b=0 where a=1; | ||
352 | 269 | COMMIT; | ||
353 | 270 | ERROR HY000: Got error 131 during COMMIT | ||
354 | 271 | BEGIN; | ||
355 | 272 | UPDATE t2 SET b=0 where a=2; | ||
356 | 273 | COMMIT; | ||
357 | 274 | ERROR HY000: Got error 131 during COMMIT | ||
358 | 275 | BEGIN; | ||
359 | 276 | DELETE FROM t2 where b=2; | ||
360 | 277 | COMMIT; | ||
361 | 278 | ERROR HY000: Got error 131 during COMMIT | ||
362 | 279 | BEGIN; | ||
363 | 280 | DELETE FROM t2 where b=1; | ||
364 | 281 | COMMIT; | ||
365 | 282 | ERROR HY000: Got error 131 during COMMIT | ||
366 | 283 | BEGIN; | ||
367 | 284 | DELETE FROM t2 where a=2; | ||
368 | 285 | COMMIT; | ||
369 | 286 | ERROR HY000: Got error 131 during COMMIT | ||
370 | 287 | BEGIN; | ||
371 | 288 | DELETE FROM t2 where a=1; | ||
372 | 289 | COMMIT; | ||
373 | 290 | ERROR HY000: Got error 131 during COMMIT | ||
374 | 291 | BEGIN; | ||
375 | 292 | REPLACE INTO t2 values (2,3); | ||
376 | 293 | COMMIT; | ||
377 | 294 | ERROR HY000: Got error 131 during COMMIT | ||
378 | 295 | BEGIN; | ||
379 | 296 | REPLACE INTO t2 VALUES (1,1); | ||
380 | 297 | COMMIT; | ||
381 | 298 | ERROR HY000: Got error 131 during COMMIT | ||
382 | 299 | BEGIN; | ||
383 | 300 | REPLACE INTO t2 VALUES (1,2); | ||
384 | 301 | COMMIT; | ||
385 | 302 | ERROR HY000: Got error 131 during COMMIT | ||
386 | 303 | BEGIN; | ||
387 | 304 | REPLACE INTO t2 VALUES (1,2); | ||
388 | 305 | SELECT * from t2; | ||
389 | 306 | a b | ||
390 | 307 | 1 1 | ||
391 | 308 | REPLACE INTO t2 VALUES (1,1); | ||
392 | 309 | SELECT * from t2; | ||
393 | 310 | a b | ||
394 | 311 | 1 1 | ||
395 | 312 | ROLLBACK; | ||
396 | 313 | BEGIN; | ||
397 | 314 | INSERT INTO t2 VALUES (1,1); | ||
398 | 315 | ERROR 23000: Duplicate entry '1' for key 'PRIMARY' | ||
399 | 316 | INSERT INTO t2 VALUES (1,2); | ||
400 | 317 | ERROR 23000: Duplicate entry '1' for key 'PRIMARY' | ||
401 | 318 | ROLLBACK; | ||
402 | 319 | INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2; | ||
403 | 320 | ERROR HY000: Got error 131 during COMMIT | ||
404 | 321 | INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=b+10; | ||
405 | 322 | ERROR HY000: Got error 131 during COMMIT | ||
406 | 323 | INSERT INTO t2 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; | ||
407 | 324 | ERROR HY000: Got error 131 during COMMIT | ||
408 | 325 | CREATE INDEX bx ON t2(b); | ||
409 | 326 | ERROR HY000: Got error 131 during COMMIT | ||
410 | 327 | SET innodb_fake_changes=0; | ||
411 | 328 | CHECK TABLE t2; | ||
412 | 329 | Table Op Msg_type Msg_text | ||
413 | 330 | test.t2 check status OK | ||
414 | 331 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
415 | 332 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
416 | 333 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
417 | 334 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'; | ||
418 | 335 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'; | ||
419 | 336 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'; | ||
420 | 337 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'; | ||
421 | 338 | should_be_1 | ||
422 | 339 | 1 | ||
423 | 340 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
424 | 341 | should_be_0 | ||
425 | 342 | 0 | ||
426 | 343 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
427 | 344 | should_be_0 | ||
428 | 345 | 0 | ||
429 | 346 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
430 | 347 | should_be_0 | ||
431 | 348 | 0 | ||
432 | 349 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
433 | 350 | should_be_0 | ||
434 | 351 | 0 | ||
435 | 352 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
436 | 353 | should_be_0 | ||
437 | 354 | 0 | ||
438 | 355 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
439 | 356 | should_be_0 | ||
440 | 357 | 0 | ||
441 | 358 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
442 | 359 | should_be_0 | ||
443 | 360 | 0 | ||
444 | 361 | SHOW INDEXES IN t2; | ||
445 | 362 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
446 | 363 | t2 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
447 | 364 | DROP TABLE t2; | ||
448 | 365 | CREATE TABLE t3 (a INT PRIMARY KEY, B TEXT) ENGINE=InnoDB; | ||
449 | 366 | INSERT INTO t3 VALUES (1, ''); | ||
450 | 367 | SELECT @@global.userstat = 1 AS should_be_1; | ||
451 | 368 | should_be_1 | ||
452 | 369 | 1 | ||
453 | 370 | ANALYZE TABLE t3; | ||
454 | 371 | Table Op Msg_type Msg_text | ||
455 | 372 | test.t3 analyze status OK | ||
456 | 373 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
457 | 374 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
458 | 375 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
459 | 376 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
460 | 377 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
461 | 378 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
462 | 379 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
463 | 380 | SHOW INDEXES IN t3; | ||
464 | 381 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
465 | 382 | t3 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
466 | 383 | SET innodb_fake_changes=1; | ||
467 | 384 | SELECT * FROM t3; | ||
468 | 385 | ERROR HY000: Got error 131 during COMMIT | ||
469 | 386 | INSERT INTO t3 VALUES (2,lpad('a',10000, 'b')); | ||
470 | 387 | ERROR HY000: Got error 131 during COMMIT | ||
471 | 388 | UPDATE t3 SET a=0 where a=1; | ||
472 | 389 | ERROR HY000: Got error 131 during COMMIT | ||
473 | 390 | DELETE FROM t3 where a=2; | ||
474 | 391 | ERROR HY000: Got error 131 during COMMIT | ||
475 | 392 | DELETE FROM t3 where a=1; | ||
476 | 393 | ERROR HY000: Got error 131 during COMMIT | ||
477 | 394 | REPLACE INTO t3 values (2,lpad('a',9000,'q')); | ||
478 | 395 | ERROR HY000: Got error 131 during COMMIT | ||
479 | 396 | INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c'); | ||
480 | 397 | ERROR HY000: Got error 131 during COMMIT | ||
481 | 398 | BEGIN; | ||
482 | 399 | SELECT * FROM t3; | ||
483 | 400 | a B | ||
484 | 401 | 1 | ||
485 | 402 | COMMIT; | ||
486 | 403 | ERROR HY000: Got error 131 during COMMIT | ||
487 | 404 | BEGIN; | ||
488 | 405 | INSERT INTO t3 VALUES (2,lpad('a',10000, 'b')); | ||
489 | 406 | COMMIT; | ||
490 | 407 | ERROR HY000: Got error 131 during COMMIT | ||
491 | 408 | BEGIN; | ||
492 | 409 | UPDATE t3 SET a=0 where a=1; | ||
493 | 410 | COMMIT; | ||
494 | 411 | ERROR HY000: Got error 131 during COMMIT | ||
495 | 412 | BEGIN; | ||
496 | 413 | DELETE FROM t3 where a=2; | ||
497 | 414 | COMMIT; | ||
498 | 415 | ERROR HY000: Got error 131 during COMMIT | ||
499 | 416 | BEGIN; | ||
500 | 417 | DELETE FROM t3 where a=1; | ||
501 | 418 | COMMIT; | ||
502 | 419 | ERROR HY000: Got error 131 during COMMIT | ||
503 | 420 | BEGIN; | ||
504 | 421 | REPLACE INTO t3 values (2,lpad('a',9000,'q')); | ||
505 | 422 | COMMIT; | ||
506 | 423 | ERROR HY000: Got error 131 during COMMIT | ||
507 | 424 | BEGIN; | ||
508 | 425 | INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c'); | ||
509 | 426 | COMMIT; | ||
510 | 427 | ERROR HY000: Got error 131 during COMMIT | ||
511 | 428 | SET innodb_fake_changes=0; | ||
512 | 429 | CHECK TABLE t3; | ||
513 | 430 | Table Op Msg_type Msg_text | ||
514 | 431 | test.t3 check status OK | ||
515 | 432 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
516 | 433 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
517 | 434 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
518 | 435 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
519 | 436 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
520 | 437 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
521 | 438 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
522 | 439 | should_be_1 | ||
523 | 440 | 1 | ||
524 | 441 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
525 | 442 | should_be_0 | ||
526 | 443 | 0 | ||
527 | 444 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
528 | 445 | should_be_0 | ||
529 | 446 | 0 | ||
530 | 447 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
531 | 448 | should_be_0 | ||
532 | 449 | 0 | ||
533 | 450 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
534 | 451 | should_be_0 | ||
535 | 452 | 0 | ||
536 | 453 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
537 | 454 | should_be_0 | ||
538 | 455 | 0 | ||
539 | 456 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
540 | 457 | should_be_0 | ||
541 | 458 | 0 | ||
542 | 459 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
543 | 460 | should_be_0 | ||
544 | 461 | 0 | ||
545 | 462 | SHOW INDEXES IN t3; | ||
546 | 463 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
547 | 464 | t3 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
548 | 465 | DROP TABLE t3; | ||
549 | 61 | # DDL must result in error | 466 | # DDL must result in error |
550 | 62 | CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; | 467 | CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; |
552 | 63 | SET autocommit=0; | 468 | SELECT @@global.userstat = 1 AS should_be_1; |
553 | 469 | should_be_1 | ||
554 | 470 | 1 | ||
555 | 471 | ANALYZE TABLE t1; | ||
556 | 472 | Table Op Msg_type Msg_text | ||
557 | 473 | test.t1 analyze status OK | ||
558 | 474 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
559 | 475 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
560 | 476 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
561 | 477 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
562 | 478 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
563 | 479 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
564 | 480 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
565 | 481 | SHOW INDEXES IN t1; | ||
566 | 482 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
567 | 483 | t1 0 PRIMARY 1 a A 0 NULL NULL BTREE | ||
568 | 64 | SET innodb_fake_changes=1; | 484 | SET innodb_fake_changes=1; |
569 | 65 | BEGIN; | 485 | BEGIN; |
570 | 66 | CREATE TABLE t2 (a INT) ENGINE=InnoDB; | 486 | CREATE TABLE t2 (a INT) ENGINE=InnoDB; |
571 | @@ -68,52 +488,172 @@ | |||
572 | 68 | DROP TABLE t1; | 488 | DROP TABLE t1; |
573 | 69 | ERROR 42S02: Unknown table 'test.t1' | 489 | ERROR 42S02: Unknown table 'test.t1' |
574 | 70 | TRUNCATE TABLE t1; | 490 | TRUNCATE TABLE t1; |
576 | 71 | ERROR HY000: Got error 131 during COMMIT | 491 | ERROR HY000: Table storage engine for 't1' doesn't have this option |
577 | 72 | ALTER TABLE t1 ENGINE=MyISAM; | 492 | ALTER TABLE t1 ENGINE=MyISAM; |
578 | 73 | ERROR HY000: Got error 131 during COMMIT | 493 | ERROR HY000: Got error 131 during COMMIT |
579 | 74 | ROLLBACK; | 494 | ROLLBACK; |
580 | 75 | SET innodb_fake_changes=0; | 495 | SET innodb_fake_changes=0; |
581 | 496 | CHECK TABLE t1; | ||
582 | 497 | Table Op Msg_type Msg_text | ||
583 | 498 | test.t1 check status OK | ||
584 | 499 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
585 | 500 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
586 | 501 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
587 | 502 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
588 | 503 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
589 | 504 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
590 | 505 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
591 | 506 | should_be_1 | ||
592 | 507 | 1 | ||
593 | 508 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
594 | 509 | should_be_0 | ||
595 | 510 | 0 | ||
596 | 511 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
597 | 512 | should_be_0 | ||
598 | 513 | 0 | ||
599 | 514 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
600 | 515 | should_be_0 | ||
601 | 516 | 0 | ||
602 | 517 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
603 | 518 | should_be_0 | ||
604 | 519 | 0 | ||
605 | 520 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
606 | 521 | should_be_0 | ||
607 | 522 | 0 | ||
608 | 523 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
609 | 524 | should_be_0 | ||
610 | 525 | 0 | ||
611 | 526 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
612 | 527 | should_be_0 | ||
613 | 528 | 0 | ||
614 | 529 | SHOW INDEXES IN t1; | ||
615 | 530 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
616 | 531 | t1 0 PRIMARY 1 a A 0 NULL NULL BTREE | ||
617 | 76 | INSERT INTO t1 VALUES (1), (2); | 532 | INSERT INTO t1 VALUES (1), (2); |
618 | 77 | COMMIT; | ||
619 | 78 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b), | 533 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b), |
620 | 79 | FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; | 534 | FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; |
621 | 80 | INSERT INTO t2 VALUES (1, 1); | 535 | INSERT INTO t2 VALUES (1, 1); |
622 | 81 | INSERT INTO t2 VALUES (2, 2); | 536 | INSERT INTO t2 VALUES (2, 2); |
623 | 82 | COMMIT; | 537 | COMMIT; |
624 | 538 | SELECT @@global.userstat = 1 AS should_be_1; | ||
625 | 539 | should_be_1 | ||
626 | 540 | 1 | ||
627 | 541 | ANALYZE TABLE t1; | ||
628 | 542 | Table Op Msg_type Msg_text | ||
629 | 543 | test.t1 analyze status OK | ||
630 | 544 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
631 | 545 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
632 | 546 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
633 | 547 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
634 | 548 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
635 | 549 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
636 | 550 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
637 | 551 | SHOW INDEXES IN t1; | ||
638 | 552 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
639 | 553 | t1 0 PRIMARY 1 a A 2 NULL NULL BTREE | ||
640 | 83 | SET innodb_fake_changes=1; | 554 | SET innodb_fake_changes=1; |
641 | 555 | BEGIN; | ||
642 | 84 | DELETE FROM t1 WHERE a=1; | 556 | DELETE FROM t1 WHERE a=1; |
643 | 85 | UPDATE t1 SET a=3 WHERE a=2; | 557 | UPDATE t1 SET a=3 WHERE a=2; |
644 | 86 | COMMIT; | 558 | COMMIT; |
645 | 87 | ERROR HY000: Got error 131 during COMMIT | 559 | ERROR HY000: Got error 131 during COMMIT |
646 | 560 | SET innodb_fake_changes=0; | ||
647 | 561 | CHECK TABLE t1; | ||
648 | 562 | Table Op Msg_type Msg_text | ||
649 | 563 | test.t1 check status OK | ||
650 | 564 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
651 | 565 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
652 | 566 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
653 | 567 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
654 | 568 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
655 | 569 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
656 | 570 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
657 | 88 | should_be_1 | 571 | should_be_1 |
658 | 89 | 1 | 572 | 1 |
672 | 90 | should_be_0 | 573 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; |
673 | 91 | 0 | 574 | should_be_0 |
674 | 92 | should_be_0 | 575 | 0 |
675 | 93 | 0 | 576 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; |
676 | 94 | should_be_0 | 577 | should_be_0 |
677 | 95 | 0 | 578 | 0 |
678 | 96 | should_be_0 | 579 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; |
679 | 97 | 0 | 580 | should_be_0 |
680 | 98 | should_be_0 | 581 | 0 |
681 | 99 | 0 | 582 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; |
682 | 100 | should_be_0 | 583 | should_be_0 |
683 | 101 | 0 | 584 | 0 |
684 | 102 | SET innodb_fake_changes=0; | 585 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; |
685 | 586 | should_be_0 | ||
686 | 587 | 0 | ||
687 | 588 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
688 | 589 | should_be_0 | ||
689 | 590 | 0 | ||
690 | 591 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
691 | 592 | should_be_0 | ||
692 | 593 | 0 | ||
693 | 594 | SHOW INDEXES IN t1; | ||
694 | 595 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
695 | 596 | t1 0 PRIMARY 1 a A 2 NULL NULL BTREE | ||
696 | 103 | DROP TABLE t2; | 597 | DROP TABLE t2; |
697 | 104 | CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB; | 598 | CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB; |
698 | 105 | INSERT INTO t3 VALUES (1,''); | 599 | INSERT INTO t3 VALUES (1,''); |
700 | 106 | COMMIT; | 600 | SELECT @@global.userstat = 1 AS should_be_1; |
701 | 601 | should_be_1 | ||
702 | 602 | 1 | ||
703 | 603 | ANALYZE TABLE t3; | ||
704 | 604 | Table Op Msg_type Msg_text | ||
705 | 605 | test.t3 analyze status OK | ||
706 | 606 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
707 | 607 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
708 | 608 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
709 | 609 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
710 | 610 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
711 | 611 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
712 | 612 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
713 | 613 | SHOW INDEXES IN t3; | ||
714 | 614 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
715 | 615 | t3 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
716 | 107 | SET innodb_fake_changes=1; | 616 | SET innodb_fake_changes=1; |
717 | 617 | BEGIN; | ||
718 | 108 | UPDATE t3 set b=lpad('b',11000,'c') where a=1; | 618 | UPDATE t3 set b=lpad('b',11000,'c') where a=1; |
719 | 109 | COMMIT; | 619 | COMMIT; |
720 | 110 | ERROR HY000: Got error 131 during COMMIT | 620 | ERROR HY000: Got error 131 during COMMIT |
723 | 111 | SET innodb_fake_changes=default; | 621 | SET innodb_fake_changes=0; |
722 | 112 | # Verify that the fake changes to t3 did not leak through | ||
724 | 113 | CHECK TABLE t3; | 622 | CHECK TABLE t3; |
725 | 114 | Table Op Msg_type Msg_text | 623 | Table Op Msg_type Msg_text |
726 | 115 | test.t3 check status OK | 624 | test.t3 check status OK |
727 | 625 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
728 | 626 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
729 | 627 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
730 | 628 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
731 | 629 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
732 | 630 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3'; | ||
733 | 631 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3'; | ||
734 | 116 | should_be_1 | 632 | should_be_1 |
735 | 117 | 1 | 633 | 1 |
736 | 634 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
737 | 635 | should_be_0 | ||
738 | 636 | 0 | ||
739 | 637 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
740 | 638 | should_be_0 | ||
741 | 639 | 0 | ||
742 | 640 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
743 | 641 | should_be_0 | ||
744 | 642 | 0 | ||
745 | 643 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
746 | 644 | should_be_0 | ||
747 | 645 | 0 | ||
748 | 646 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
749 | 647 | should_be_0 | ||
750 | 648 | 0 | ||
751 | 649 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
752 | 650 | should_be_0 | ||
753 | 651 | 0 | ||
754 | 652 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
755 | 653 | should_be_0 | ||
756 | 654 | 0 | ||
757 | 655 | SHOW INDEXES IN t3; | ||
758 | 656 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
759 | 657 | t3 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
760 | 118 | DROP TABLE t1, t3; | 658 | DROP TABLE t1, t3; |
761 | 119 | SET @@GLOBAL.userstat= default; | 659 | SET @@GLOBAL.userstat= default; |
762 | 120 | 660 | ||
763 | === modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result' | |||
764 | --- Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result 2012-10-17 11:30:19 +0000 | |||
765 | +++ Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result 2013-07-15 16:29:43 +0000 | |||
766 | @@ -1,7 +1,25 @@ | |||
767 | 1 | DROP TABLE IF EXISTS t1; | 1 | DROP TABLE IF EXISTS t1; |
768 | 2 | SET @@GLOBAL.userstat=ON; | ||
769 | 2 | CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB; | 3 | CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB; |
770 | 3 | INSERT INTO t1 VALUES (1,1); | 4 | INSERT INTO t1 VALUES (1,1); |
771 | 4 | SET autocommit=1; | 5 | SET autocommit=1; |
772 | 6 | SELECT @@global.userstat = 1 AS should_be_1; | ||
773 | 7 | should_be_1 | ||
774 | 8 | 1 | ||
775 | 9 | ANALYZE TABLE t1; | ||
776 | 10 | Table Op Msg_type Msg_text | ||
777 | 11 | test.t1 analyze status OK | ||
778 | 12 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
779 | 13 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
780 | 14 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
781 | 15 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
782 | 16 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
783 | 17 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
784 | 18 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
785 | 19 | SHOW INDEXES IN t1; | ||
786 | 20 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
787 | 21 | t1 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
788 | 22 | t1 0 b 1 b A 1 NULL NULL YES BTREE | ||
789 | 5 | SET innodb_fake_changes=1; | 23 | SET innodb_fake_changes=1; |
790 | 6 | # Confirm that duplicate key errors on REPLACE works | 24 | # Confirm that duplicate key errors on REPLACE works |
791 | 7 | REPLACE INTO t1 VALUES (1,1); | 25 | REPLACE INTO t1 VALUES (1,1); |
792 | @@ -34,10 +52,42 @@ | |||
793 | 34 | INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; | 52 | INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; |
794 | 35 | ERROR HY000: Got error 131 during COMMIT | 53 | ERROR HY000: Got error 131 during COMMIT |
795 | 36 | SET innodb_fake_changes=0; | 54 | SET innodb_fake_changes=0; |
796 | 37 | SELECT * from t1; | ||
797 | 38 | a b | ||
798 | 39 | 1 1 | ||
799 | 40 | CHECK TABLE t1; | 55 | CHECK TABLE t1; |
800 | 41 | Table Op Msg_type Msg_text | 56 | Table Op Msg_type Msg_text |
801 | 42 | test.t1 check status OK | 57 | test.t1 check status OK |
802 | 58 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
803 | 59 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
804 | 60 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
805 | 61 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
806 | 62 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
807 | 63 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
808 | 64 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
809 | 65 | should_be_1 | ||
810 | 66 | 1 | ||
811 | 67 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
812 | 68 | should_be_0 | ||
813 | 69 | 0 | ||
814 | 70 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
815 | 71 | should_be_0 | ||
816 | 72 | 0 | ||
817 | 73 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
818 | 74 | should_be_0 | ||
819 | 75 | 0 | ||
820 | 76 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
821 | 77 | should_be_0 | ||
822 | 78 | 0 | ||
823 | 79 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
824 | 80 | should_be_0 | ||
825 | 81 | 0 | ||
826 | 82 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
827 | 83 | should_be_0 | ||
828 | 84 | 0 | ||
829 | 85 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
830 | 86 | should_be_0 | ||
831 | 87 | 0 | ||
832 | 88 | SHOW INDEXES IN t1; | ||
833 | 89 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
834 | 90 | t1 0 PRIMARY 1 a A 1 NULL NULL BTREE | ||
835 | 91 | t1 0 b 1 b A 1 NULL NULL YES BTREE | ||
836 | 43 | DROP TABLE t1; | 92 | DROP TABLE t1; |
837 | 93 | SET @@GLOBAL.userstat=default; | ||
838 | 44 | 94 | ||
839 | === modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result' | |||
840 | --- Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result 2012-10-16 11:18:45 +0000 | |||
841 | +++ Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result 2013-07-15 16:29:43 +0000 | |||
842 | @@ -1,7 +1,24 @@ | |||
843 | 1 | DROP TABLE IF EXISTS t1; | 1 | DROP TABLE IF EXISTS t1; |
844 | 2 | SET @@GLOBAL.userstat=ON; | ||
845 | 2 | Test compressed | 3 | Test compressed |
846 | 3 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; | 4 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; |
847 | 4 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); | 5 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); |
848 | 6 | SELECT @@global.userstat = 1 AS should_be_1; | ||
849 | 7 | should_be_1 | ||
850 | 8 | 1 | ||
851 | 9 | ANALYZE TABLE t1; | ||
852 | 10 | Table Op Msg_type Msg_text | ||
853 | 11 | test.t1 analyze status OK | ||
854 | 12 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
855 | 13 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
856 | 14 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
857 | 15 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
858 | 16 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
859 | 17 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
860 | 18 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
861 | 19 | SHOW INDEXES IN t1; | ||
862 | 20 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
863 | 21 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
864 | 5 | SET innodb_fake_changes=1; | 22 | SET innodb_fake_changes=1; |
865 | 6 | INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T); | 23 | INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T); |
866 | 7 | ERROR HY000: Got error 131 during COMMIT | 24 | ERROR HY000: Got error 131 during COMMIT |
867 | @@ -11,12 +28,59 @@ | |||
868 | 11 | CHECK TABLE t1; | 28 | CHECK TABLE t1; |
869 | 12 | Table Op Msg_type Msg_text | 29 | Table Op Msg_type Msg_text |
870 | 13 | test.t1 check status OK | 30 | test.t1 check status OK |
871 | 31 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
872 | 32 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
873 | 33 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
874 | 34 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
875 | 35 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
876 | 36 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
877 | 37 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
878 | 14 | should_be_1 | 38 | should_be_1 |
879 | 15 | 1 | 39 | 1 |
880 | 40 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
881 | 41 | should_be_0 | ||
882 | 42 | 0 | ||
883 | 43 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
884 | 44 | should_be_0 | ||
885 | 45 | 0 | ||
886 | 46 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
887 | 47 | should_be_0 | ||
888 | 48 | 0 | ||
889 | 49 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
890 | 50 | should_be_0 | ||
891 | 51 | 0 | ||
892 | 52 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
893 | 53 | should_be_0 | ||
894 | 54 | 0 | ||
895 | 55 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
896 | 56 | should_be_0 | ||
897 | 57 | 0 | ||
898 | 58 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
899 | 59 | should_be_0 | ||
900 | 60 | 0 | ||
901 | 61 | SHOW INDEXES IN t1; | ||
902 | 62 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
903 | 63 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
904 | 16 | DROP TABLE t1; | 64 | DROP TABLE t1; |
905 | 17 | Test for uncompressed | 65 | Test for uncompressed |
906 | 18 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; | 66 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; |
907 | 19 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); | 67 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); |
908 | 68 | SELECT @@global.userstat = 1 AS should_be_1; | ||
909 | 69 | should_be_1 | ||
910 | 70 | 1 | ||
911 | 71 | ANALYZE TABLE t1; | ||
912 | 72 | Table Op Msg_type Msg_text | ||
913 | 73 | test.t1 analyze status OK | ||
914 | 74 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
915 | 75 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
916 | 76 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
917 | 77 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
918 | 78 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
919 | 79 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
920 | 80 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
921 | 81 | SHOW INDEXES IN t1; | ||
922 | 82 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
923 | 83 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
924 | 20 | SET innodb_fake_changes=1; | 84 | SET innodb_fake_changes=1; |
925 | 21 | ERROR HY000: Got error 131 during COMMIT | 85 | ERROR HY000: Got error 131 during COMMIT |
926 | 22 | ERROR HY000: Got error 131 during COMMIT | 86 | ERROR HY000: Got error 131 during COMMIT |
927 | @@ -122,11 +186,58 @@ | |||
928 | 122 | CHECK TABLE t1; | 186 | CHECK TABLE t1; |
929 | 123 | Table Op Msg_type Msg_text | 187 | Table Op Msg_type Msg_text |
930 | 124 | test.t1 check status OK | 188 | test.t1 check status OK |
931 | 189 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
932 | 190 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
933 | 191 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
934 | 192 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
935 | 193 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
936 | 194 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
937 | 195 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
938 | 125 | should_be_1 | 196 | should_be_1 |
939 | 126 | 1 | 197 | 1 |
940 | 198 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
941 | 199 | should_be_0 | ||
942 | 200 | 0 | ||
943 | 201 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
944 | 202 | should_be_0 | ||
945 | 203 | 0 | ||
946 | 204 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
947 | 205 | should_be_0 | ||
948 | 206 | 0 | ||
949 | 207 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
950 | 208 | should_be_0 | ||
951 | 209 | 0 | ||
952 | 210 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
953 | 211 | should_be_0 | ||
954 | 212 | 0 | ||
955 | 213 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
956 | 214 | should_be_0 | ||
957 | 215 | 0 | ||
958 | 216 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
959 | 217 | should_be_0 | ||
960 | 218 | 0 | ||
961 | 219 | SHOW INDEXES IN t1; | ||
962 | 220 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
963 | 221 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
964 | 127 | DROP TABLE t1; | 222 | DROP TABLE t1; |
965 | 128 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; | 223 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; |
966 | 129 | INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b")); | 224 | INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b")); |
967 | 225 | SELECT @@global.userstat = 1 AS should_be_1; | ||
968 | 226 | should_be_1 | ||
969 | 227 | 1 | ||
970 | 228 | ANALYZE TABLE t1; | ||
971 | 229 | Table Op Msg_type Msg_text | ||
972 | 230 | test.t1 analyze status OK | ||
973 | 231 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
974 | 232 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted'; | ||
975 | 233 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated'; | ||
976 | 234 | SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
977 | 235 | SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
978 | 236 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
979 | 237 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
980 | 238 | SHOW INDEXES IN t1; | ||
981 | 239 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
982 | 240 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
983 | 130 | SET innodb_fake_changes=1; | 241 | SET innodb_fake_changes=1; |
984 | 131 | INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b")); | 242 | INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b")); |
985 | 132 | ERROR HY000: Got error 131 during COMMIT | 243 | ERROR HY000: Got error 131 during COMMIT |
986 | @@ -134,8 +245,39 @@ | |||
987 | 134 | CHECK TABLE t1; | 245 | CHECK TABLE t1; |
988 | 135 | Table Op Msg_type Msg_text | 246 | Table Op Msg_type Msg_text |
989 | 136 | test.t1 check status OK | 247 | test.t1 check status OK |
990 | 248 | SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted'; | ||
991 | 249 | SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'; | ||
992 | 250 | SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'; | ||
993 | 251 | SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
994 | 252 | SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
995 | 253 | SELECT ROWS_CHANGED_X_INDEXES INTO @table_rows_changed_x_indexes_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'; | ||
996 | 254 | SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'; | ||
997 | 137 | should_be_1 | 255 | should_be_1 |
998 | 138 | 1 | 256 | 1 |
999 | 257 | SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0; | ||
1000 | 258 | should_be_0 | ||
1001 | 259 | 0 | ||
1002 | 260 | SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0; | ||
1003 | 261 | should_be_0 | ||
1004 | 262 | 0 | ||
1005 | 263 | SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0; | ||
1006 | 264 | should_be_0 | ||
1007 | 265 | 0 | ||
1008 | 266 | SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0; | ||
1009 | 267 | should_be_0 | ||
1010 | 268 | 0 | ||
1011 | 269 | SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0; | ||
1012 | 270 | should_be_0 | ||
1013 | 271 | 0 | ||
1014 | 272 | SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0; | ||
1015 | 273 | should_be_0 | ||
1016 | 274 | 0 | ||
1017 | 275 | SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0; | ||
1018 | 276 | should_be_0 | ||
1019 | 277 | 0 | ||
1020 | 278 | SHOW INDEXES IN t1; | ||
1021 | 279 | Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment | ||
1022 | 280 | t1 0 PRIMARY 1 id A 1 NULL NULL BTREE | ||
1023 | 139 | DROP TABLE t1; | 281 | DROP TABLE t1; |
1024 | 140 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; | 282 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; |
1025 | 141 | INSERT INTO t1 VALUES(2, LPAD("v", 3, "b"), LPAD("a", 100, "b")); | 283 | INSERT INTO t1 VALUES(2, LPAD("v", 3, "b"), LPAD("a", 100, "b")); |
1026 | @@ -149,3 +291,4 @@ | |||
1027 | 149 | should_be_1 | 291 | should_be_1 |
1028 | 150 | 1 | 292 | 1 |
1029 | 151 | DROP TABLE t1; | 293 | DROP TABLE t1; |
1030 | 294 | SET @@GLOBAL.userstat=default; | ||
1031 | 152 | 295 | ||
1032 | === modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes.test' | |||
1033 | --- Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2013-05-06 15:43:51 +0000 | |||
1034 | +++ Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2013-07-15 16:29:43 +0000 | |||
1035 | @@ -4,7 +4,6 @@ | |||
1036 | 4 | DROP TABLE IF EXISTS t1, t2, t3; | 4 | DROP TABLE IF EXISTS t1, t2, t3; |
1037 | 5 | --enable_warnings | 5 | --enable_warnings |
1038 | 6 | 6 | ||
1039 | 7 | |||
1040 | 8 | --echo # Checking variables | 7 | --echo # Checking variables |
1041 | 9 | SHOW VARIABLES LIKE 'innodb_fake_changes'; | 8 | SHOW VARIABLES LIKE 'innodb_fake_changes'; |
1042 | 10 | SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes'; | 9 | SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes'; |
1043 | @@ -17,21 +16,13 @@ | |||
1044 | 17 | 16 | ||
1045 | 18 | --echo # Explicit COMMIT should fail when innodb_fake_changes is enabled | 17 | --echo # Explicit COMMIT should fail when innodb_fake_changes is enabled |
1046 | 19 | --echo # DML should be fine | 18 | --echo # DML should be fine |
1048 | 20 | SET @@GLOBAL.userstat= TRUE; | 19 | SET @@GLOBAL.userstat=TRUE; |
1049 | 21 | CREATE TABLE t1 (a INT) ENGINE=InnoDB; | 20 | CREATE TABLE t1 (a INT) ENGINE=InnoDB; |
1050 | 22 | INSERT INTO t1 VALUES (1); | 21 | INSERT INTO t1 VALUES (1); |
1051 | 23 | 22 | ||
1060 | 24 | let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`; | 23 | --let $fake_changes_table=t1 |
1061 | 25 | let $innodb_rows_inserted_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_inserted'`; | 24 | --source include/start_fake_changes.inc |
1054 | 26 | let $innodb_rows_deleted_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`; | ||
1055 | 27 | let $innodb_rows_updated_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`; | ||
1056 | 28 | let $table_rows_estimate_1= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`; | ||
1057 | 29 | let $table_dml_counter_1= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`; | ||
1058 | 30 | let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`; | ||
1059 | 31 | let $table_rows_changed_x_indexes_1= `SELECT ROWS_CHANGED_X_INDEXES FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`; | ||
1062 | 32 | 25 | ||
1063 | 33 | SET autocommit=0; | ||
1064 | 34 | SET innodb_fake_changes=1; | ||
1065 | 35 | BEGIN; | 26 | BEGIN; |
1066 | 36 | INSERT INTO t1 VALUES (2); | 27 | INSERT INTO t1 VALUES (2); |
1067 | 37 | UPDATE t1 SET a=0; | 28 | UPDATE t1 SET a=0; |
1068 | @@ -39,107 +30,340 @@ | |||
1069 | 39 | SELECT * FROM t1; | 30 | SELECT * FROM t1; |
1070 | 40 | --error 1180 | 31 | --error 1180 |
1071 | 41 | COMMIT; | 32 | COMMIT; |
1094 | 42 | SET innodb_fake_changes=default; | 33 | |
1095 | 43 | --echo # Verify that the fake changes to t1 did not leak through | 34 | --source include/stop_fake_changes.inc |
1096 | 44 | CHECK TABLE t1; | 35 | |
1097 | 45 | let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`; | 36 | DROP TABLE t1; |
1098 | 46 | let $innodb_rows_inserted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_inserted'`; | 37 | |
1099 | 47 | let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`; | 38 | # |
1100 | 48 | let $innodb_rows_updated_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`; | 39 | # Test primary and secondary index access |
1101 | 49 | let $table_rows_estimate_2= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`; | 40 | # |
1102 | 50 | let $table_dml_counter_2= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`; | 41 | CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB; |
1103 | 51 | let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`; | 42 | INSERT INTO t1 VALUES (1,1); |
1104 | 52 | let $table_rows_changed_x_indexes_2= `SELECT ROWS_CHANGED_X_INDEXES FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`; | 43 | |
1105 | 53 | --disable_query_log | 44 | --source include/start_fake_changes.inc |
1106 | 54 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; | 45 | |
1107 | 55 | eval SELECT "$innodb_rows_inserted_2" - "$innodb_rows_inserted_1" AS should_be_0; | 46 | # Test with autocommit |
1108 | 56 | eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0; | 47 | --error ER_ERROR_DURING_COMMIT |
1109 | 57 | eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0; | 48 | SELECT * FROM t1; |
1110 | 58 | eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0; | 49 | --error ER_ERROR_DURING_COMMIT |
1111 | 59 | eval SELECT "$table_dml_counter_2" - "$table_dml_counter_1" AS should_be_0; | 50 | INSERT INTO t1 VALUES (2,2); |
1112 | 60 | eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0; | 51 | --error ER_DUP_ENTRY |
1113 | 61 | eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0; | 52 | UPDATE t1 SET a=0 where b=1; |
1114 | 62 | --enable_query_log | 53 | --error ER_ERROR_DURING_COMMIT |
1115 | 63 | DROP TABLE t1; | 54 | UPDATE t1 SET b=0 where a=1; |
1116 | 55 | --error ER_ERROR_DURING_COMMIT | ||
1117 | 56 | UPDATE t1 SET b=0 where a=2; | ||
1118 | 57 | --error ER_ERROR_DURING_COMMIT | ||
1119 | 58 | DELETE FROM t1 where b=2; | ||
1120 | 59 | --error ER_ERROR_DURING_COMMIT | ||
1121 | 60 | DELETE FROM t1 where b=1; | ||
1122 | 61 | --error ER_ERROR_DURING_COMMIT | ||
1123 | 62 | DELETE FROM t1 where a=2; | ||
1124 | 63 | --error ER_ERROR_DURING_COMMIT | ||
1125 | 64 | DELETE FROM t1 where a=1; | ||
1126 | 65 | --error ER_ERROR_DURING_COMMIT | ||
1127 | 66 | REPLACE INTO t1 values (2,3); | ||
1128 | 67 | |||
1129 | 68 | # Test with transactions | ||
1130 | 69 | BEGIN; | ||
1131 | 70 | SELECT * FROM t1; | ||
1132 | 71 | --error ER_ERROR_DURING_COMMIT | ||
1133 | 72 | COMMIT; | ||
1134 | 73 | |||
1135 | 74 | BEGIN; | ||
1136 | 75 | INSERT INTO t1 VALUES (2,2); | ||
1137 | 76 | --error ER_ERROR_DURING_COMMIT | ||
1138 | 77 | COMMIT; | ||
1139 | 78 | |||
1140 | 79 | BEGIN; | ||
1141 | 80 | --error ER_DUP_ENTRY | ||
1142 | 81 | UPDATE t1 SET a=0 where b=1; | ||
1143 | 82 | --error ER_ERROR_DURING_COMMIT | ||
1144 | 83 | COMMIT; | ||
1145 | 84 | |||
1146 | 85 | BEGIN; | ||
1147 | 86 | UPDATE t1 SET b=0 where a=1; | ||
1148 | 87 | --error ER_ERROR_DURING_COMMIT | ||
1149 | 88 | COMMIT; | ||
1150 | 89 | |||
1151 | 90 | BEGIN; | ||
1152 | 91 | UPDATE t1 SET b=0 where a=2; | ||
1153 | 92 | --error ER_ERROR_DURING_COMMIT | ||
1154 | 93 | COMMIT; | ||
1155 | 94 | |||
1156 | 95 | BEGIN; | ||
1157 | 96 | DELETE FROM t1 where b=2; | ||
1158 | 97 | --error ER_ERROR_DURING_COMMIT | ||
1159 | 98 | COMMIT; | ||
1160 | 99 | |||
1161 | 100 | BEGIN; | ||
1162 | 101 | DELETE FROM t1 where b=1; | ||
1163 | 102 | --error ER_ERROR_DURING_COMMIT | ||
1164 | 103 | COMMIT; | ||
1165 | 104 | |||
1166 | 105 | BEGIN; | ||
1167 | 106 | DELETE FROM t1 where a=2; | ||
1168 | 107 | --error ER_ERROR_DURING_COMMIT | ||
1169 | 108 | COMMIT; | ||
1170 | 109 | |||
1171 | 110 | BEGIN; | ||
1172 | 111 | DELETE FROM t1 where a=1; | ||
1173 | 112 | --error ER_ERROR_DURING_COMMIT | ||
1174 | 113 | COMMIT; | ||
1175 | 114 | |||
1176 | 115 | BEGIN; | ||
1177 | 116 | REPLACE INTO t1 values (2,3); | ||
1178 | 117 | --error ER_ERROR_DURING_COMMIT | ||
1179 | 118 | COMMIT; | ||
1180 | 119 | |||
1181 | 120 | --error ER_ERROR_DURING_COMMIT | ||
1182 | 121 | INSERT INTO t1 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2; | ||
1183 | 122 | --error ER_ERROR_DURING_COMMIT | ||
1184 | 123 | CREATE INDEX bx ON t1(b); | ||
1185 | 124 | |||
1186 | 125 | --source include/stop_fake_changes.inc | ||
1187 | 126 | |||
1188 | 127 | DROP TABLE t1; | ||
1189 | 128 | |||
1190 | 129 | # | ||
1191 | 130 | # Test all accesses through the primary index | ||
1192 | 131 | # | ||
1193 | 132 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB; | ||
1194 | 133 | INSERT INTO t2 VALUES (1, 1); | ||
1195 | 134 | |||
1196 | 135 | --let $fake_changes_table=t2 | ||
1197 | 136 | --source include/start_fake_changes.inc | ||
1198 | 137 | |||
1199 | 138 | # Test with autocommit | ||
1200 | 139 | --error ER_ERROR_DURING_COMMIT | ||
1201 | 140 | SELECT * FROM t2; | ||
1202 | 141 | --error ER_ERROR_DURING_COMMIT | ||
1203 | 142 | INSERT INTO t2 VALUES (2,2); | ||
1204 | 143 | --error ER_ERROR_DURING_COMMIT | ||
1205 | 144 | UPDATE t2 SET b=0 where a=1; | ||
1206 | 145 | --error ER_ERROR_DURING_COMMIT | ||
1207 | 146 | UPDATE t2 SET b=0 where a=2; | ||
1208 | 147 | --error ER_ERROR_DURING_COMMIT | ||
1209 | 148 | DELETE FROM t2 where b=2; | ||
1210 | 149 | --error ER_ERROR_DURING_COMMIT | ||
1211 | 150 | DELETE FROM t2 where b=1; | ||
1212 | 151 | --error ER_ERROR_DURING_COMMIT | ||
1213 | 152 | DELETE FROM t2 where a=2; | ||
1214 | 153 | --error ER_ERROR_DURING_COMMIT | ||
1215 | 154 | DELETE FROM t2 where a=1; | ||
1216 | 155 | --error ER_ERROR_DURING_COMMIT | ||
1217 | 156 | REPLACE INTO t2 values (2,3); | ||
1218 | 157 | --error ER_ERROR_DURING_COMMIT | ||
1219 | 158 | REPLACE INTO t2 VALUES (1,1); | ||
1220 | 159 | --error ER_ERROR_DURING_COMMIT | ||
1221 | 160 | REPLACE INTO t2 VALUES (1,2); | ||
1222 | 161 | |||
1223 | 162 | # Test with transactions | ||
1224 | 163 | BEGIN; | ||
1225 | 164 | SELECT * FROM t2; | ||
1226 | 165 | --error ER_ERROR_DURING_COMMIT | ||
1227 | 166 | COMMIT; | ||
1228 | 167 | |||
1229 | 168 | BEGIN; | ||
1230 | 169 | INSERT INTO t2 VALUES (2,2); | ||
1231 | 170 | --error ER_ERROR_DURING_COMMIT | ||
1232 | 171 | COMMIT; | ||
1233 | 172 | |||
1234 | 173 | BEGIN; | ||
1235 | 174 | UPDATE t2 SET b=0 where a=1; | ||
1236 | 175 | --error ER_ERROR_DURING_COMMIT | ||
1237 | 176 | COMMIT; | ||
1238 | 177 | |||
1239 | 178 | BEGIN; | ||
1240 | 179 | UPDATE t2 SET b=0 where a=2; | ||
1241 | 180 | --error ER_ERROR_DURING_COMMIT | ||
1242 | 181 | COMMIT; | ||
1243 | 182 | |||
1244 | 183 | BEGIN; | ||
1245 | 184 | DELETE FROM t2 where b=2; | ||
1246 | 185 | --error ER_ERROR_DURING_COMMIT | ||
1247 | 186 | COMMIT; | ||
1248 | 187 | |||
1249 | 188 | BEGIN; | ||
1250 | 189 | DELETE FROM t2 where b=1; | ||
1251 | 190 | --error ER_ERROR_DURING_COMMIT | ||
1252 | 191 | COMMIT; | ||
1253 | 192 | |||
1254 | 193 | BEGIN; | ||
1255 | 194 | DELETE FROM t2 where a=2; | ||
1256 | 195 | --error ER_ERROR_DURING_COMMIT | ||
1257 | 196 | COMMIT; | ||
1258 | 197 | |||
1259 | 198 | BEGIN; | ||
1260 | 199 | DELETE FROM t2 where a=1; | ||
1261 | 200 | --error ER_ERROR_DURING_COMMIT | ||
1262 | 201 | COMMIT; | ||
1263 | 202 | |||
1264 | 203 | BEGIN; | ||
1265 | 204 | REPLACE INTO t2 values (2,3); | ||
1266 | 205 | --error ER_ERROR_DURING_COMMIT | ||
1267 | 206 | COMMIT; | ||
1268 | 207 | |||
1269 | 208 | BEGIN; | ||
1270 | 209 | REPLACE INTO t2 VALUES (1,1); | ||
1271 | 210 | --error ER_ERROR_DURING_COMMIT | ||
1272 | 211 | COMMIT; | ||
1273 | 212 | |||
1274 | 213 | BEGIN; | ||
1275 | 214 | REPLACE INTO t2 VALUES (1,2); | ||
1276 | 215 | --error ER_ERROR_DURING_COMMIT | ||
1277 | 216 | COMMIT; | ||
1278 | 217 | |||
1279 | 218 | # Confirm that duplicate key errors are OK | ||
1280 | 219 | BEGIN; | ||
1281 | 220 | REPLACE INTO t2 VALUES (1,2); | ||
1282 | 221 | SELECT * from t2; | ||
1283 | 222 | REPLACE INTO t2 VALUES (1,1); | ||
1284 | 223 | SELECT * from t2; | ||
1285 | 224 | ROLLBACK; | ||
1286 | 225 | |||
1287 | 226 | BEGIN; | ||
1288 | 227 | --error ER_DUP_ENTRY | ||
1289 | 228 | INSERT INTO t2 VALUES (1,1); | ||
1290 | 229 | --error ER_DUP_ENTRY | ||
1291 | 230 | INSERT INTO t2 VALUES (1,2); | ||
1292 | 231 | ROLLBACK; | ||
1293 | 232 | |||
1294 | 233 | --error ER_ERROR_DURING_COMMIT | ||
1295 | 234 | INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2; | ||
1296 | 235 | --error ER_ERROR_DURING_COMMIT | ||
1297 | 236 | INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=b+10; | ||
1298 | 237 | --error ER_ERROR_DURING_COMMIT | ||
1299 | 238 | INSERT INTO t2 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; | ||
1300 | 239 | --error ER_ERROR_DURING_COMMIT | ||
1301 | 240 | CREATE INDEX bx ON t2(b); | ||
1302 | 241 | |||
1303 | 242 | --source include/stop_fake_changes.inc | ||
1304 | 243 | |||
1305 | 244 | DROP TABLE t2; | ||
1306 | 245 | |||
1307 | 246 | # | ||
1308 | 247 | # Test TEXT | ||
1309 | 248 | # | ||
1310 | 249 | CREATE TABLE t3 (a INT PRIMARY KEY, B TEXT) ENGINE=InnoDB; | ||
1311 | 250 | INSERT INTO t3 VALUES (1, ''); | ||
1312 | 251 | |||
1313 | 252 | --let $fake_changes_table=t3 | ||
1314 | 253 | --source include/start_fake_changes.inc | ||
1315 | 254 | |||
1316 | 255 | # Test with autocommit | ||
1317 | 256 | --error ER_ERROR_DURING_COMMIT | ||
1318 | 257 | SELECT * FROM t3; | ||
1319 | 258 | --error ER_ERROR_DURING_COMMIT | ||
1320 | 259 | INSERT INTO t3 VALUES (2,lpad('a',10000, 'b')); | ||
1321 | 260 | --error ER_ERROR_DURING_COMMIT | ||
1322 | 261 | UPDATE t3 SET a=0 where a=1; | ||
1323 | 262 | --error ER_ERROR_DURING_COMMIT | ||
1324 | 263 | DELETE FROM t3 where a=2; | ||
1325 | 264 | --error ER_ERROR_DURING_COMMIT | ||
1326 | 265 | DELETE FROM t3 where a=1; | ||
1327 | 266 | --error ER_ERROR_DURING_COMMIT | ||
1328 | 267 | REPLACE INTO t3 values (2,lpad('a',9000,'q')); | ||
1329 | 268 | --error ER_ERROR_DURING_COMMIT | ||
1330 | 269 | INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c'); | ||
1331 | 270 | |||
1332 | 271 | # Test with transactions | ||
1333 | 272 | BEGIN; | ||
1334 | 273 | SELECT * FROM t3; | ||
1335 | 274 | --error ER_ERROR_DURING_COMMIT | ||
1336 | 275 | COMMIT; | ||
1337 | 276 | |||
1338 | 277 | BEGIN; | ||
1339 | 278 | INSERT INTO t3 VALUES (2,lpad('a',10000, 'b')); | ||
1340 | 279 | --error ER_ERROR_DURING_COMMIT | ||
1341 | 280 | COMMIT; | ||
1342 | 281 | |||
1343 | 282 | BEGIN; | ||
1344 | 283 | UPDATE t3 SET a=0 where a=1; | ||
1345 | 284 | --error ER_ERROR_DURING_COMMIT | ||
1346 | 285 | COMMIT; | ||
1347 | 286 | |||
1348 | 287 | BEGIN; | ||
1349 | 288 | DELETE FROM t3 where a=2; | ||
1350 | 289 | --error ER_ERROR_DURING_COMMIT | ||
1351 | 290 | COMMIT; | ||
1352 | 291 | |||
1353 | 292 | BEGIN; | ||
1354 | 293 | DELETE FROM t3 where a=1; | ||
1355 | 294 | --error ER_ERROR_DURING_COMMIT | ||
1356 | 295 | COMMIT; | ||
1357 | 296 | |||
1358 | 297 | BEGIN; | ||
1359 | 298 | REPLACE INTO t3 values (2,lpad('a',9000,'q')); | ||
1360 | 299 | --error ER_ERROR_DURING_COMMIT | ||
1361 | 300 | COMMIT; | ||
1362 | 301 | |||
1363 | 302 | BEGIN; | ||
1364 | 303 | INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c'); | ||
1365 | 304 | --error ER_ERROR_DURING_COMMIT | ||
1366 | 305 | COMMIT; | ||
1367 | 306 | |||
1368 | 307 | --source include/stop_fake_changes.inc | ||
1369 | 308 | |||
1370 | 309 | DROP TABLE t3; | ||
1371 | 64 | 310 | ||
1372 | 65 | --echo # DDL must result in error | 311 | --echo # DDL must result in error |
1373 | 66 | CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; | 312 | CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB; |
1376 | 67 | SET autocommit=0; | 313 | |
1377 | 68 | SET innodb_fake_changes=1; | 314 | --let $fake_changes_table=t1 |
1378 | 315 | --source include/start_fake_changes.inc | ||
1379 | 316 | |||
1380 | 69 | BEGIN; | 317 | BEGIN; |
1381 | 70 | --error ER_ILLEGAL_HA | 318 | --error ER_ILLEGAL_HA |
1382 | 71 | CREATE TABLE t2 (a INT) ENGINE=InnoDB; | 319 | CREATE TABLE t2 (a INT) ENGINE=InnoDB; |
1383 | 72 | --error 1051 | 320 | --error 1051 |
1384 | 73 | DROP TABLE t1; | 321 | DROP TABLE t1; |
1386 | 74 | --error 1180 | 322 | --error 1031 |
1387 | 75 | TRUNCATE TABLE t1; | 323 | TRUNCATE TABLE t1; |
1388 | 76 | --error 1180 | 324 | --error 1180 |
1389 | 77 | ALTER TABLE t1 ENGINE=MyISAM; | 325 | ALTER TABLE t1 ENGINE=MyISAM; |
1390 | 78 | ROLLBACK; | 326 | ROLLBACK; |
1391 | 79 | 327 | ||
1392 | 328 | --source include/stop_fake_changes.inc | ||
1393 | 329 | |||
1394 | 80 | # Test stat counters foreign key constraints | 330 | # Test stat counters foreign key constraints |
1395 | 81 | SET innodb_fake_changes=0; | ||
1396 | 82 | INSERT INTO t1 VALUES (1), (2); | 331 | INSERT INTO t1 VALUES (1), (2); |
1398 | 83 | COMMIT; | 332 | |
1399 | 84 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b), | 333 | CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b), |
1400 | 85 | FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; | 334 | FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB; |
1401 | 86 | INSERT INTO t2 VALUES (1, 1); | 335 | INSERT INTO t2 VALUES (1, 1); |
1402 | 87 | INSERT INTO t2 VALUES (2, 2); | 336 | INSERT INTO t2 VALUES (2, 2); |
1403 | 88 | COMMIT; | 337 | COMMIT; |
1404 | 89 | 338 | ||
1412 | 90 | let $t2_checksum_1= `CHECKSUM TABLE t2 EXTENDED`; | 339 | --let $fake_changes_table=t1 |
1413 | 91 | let $innodb_rows_deleted_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`; | 340 | --source include/start_fake_changes.inc |
1407 | 92 | let $innodb_rows_updated_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`; | ||
1408 | 93 | let $table_rows_estimate_1= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`; | ||
1409 | 94 | let $table_dml_counter_1= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`; | ||
1410 | 95 | let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`; | ||
1411 | 96 | let $table_rows_changed_x_indexes_1= `SELECT ROWS_CHANGED_X_INDEXES FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`; | ||
1414 | 97 | 341 | ||
1416 | 98 | SET innodb_fake_changes=1; | 342 | BEGIN; |
1417 | 99 | DELETE FROM t1 WHERE a=1; | 343 | DELETE FROM t1 WHERE a=1; |
1418 | 100 | UPDATE t1 SET a=3 WHERE a=2; | 344 | UPDATE t1 SET a=3 WHERE a=2; |
1419 | 101 | --error 1180 | 345 | --error 1180 |
1420 | 102 | COMMIT; | 346 | COMMIT; |
1421 | 103 | 347 | ||
1441 | 104 | let $t2_checksum_2= `CHECKSUM TABLE t2 EXTENDED`; | 348 | --source include/stop_fake_changes.inc |
1442 | 105 | let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`; | 349 | |
1424 | 106 | let $innodb_rows_updated_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`; | ||
1425 | 107 | let $table_rows_estimate_2= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`; | ||
1426 | 108 | let $table_dml_counter_2= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`; | ||
1427 | 109 | let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`; | ||
1428 | 110 | let $table_rows_changed_x_indexes_2= `SELECT ROWS_CHANGED_X_INDEXES FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`; | ||
1429 | 111 | |||
1430 | 112 | --disable_query_log | ||
1431 | 113 | eval SELECT "$t2_checksum_1" LIKE "$t2_checksum_2" AS should_be_1; | ||
1432 | 114 | eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0; | ||
1433 | 115 | eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0; | ||
1434 | 116 | eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0; | ||
1435 | 117 | eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0; | ||
1436 | 118 | eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0; | ||
1437 | 119 | eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0; | ||
1438 | 120 | --enable_query_log | ||
1439 | 121 | |||
1440 | 122 | SET innodb_fake_changes=0; | ||
1443 | 123 | DROP TABLE t2; | 350 | DROP TABLE t2; |
1444 | 124 | 351 | ||
1445 | 125 | # Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update | 352 | # Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update |
1446 | 126 | CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB; | 353 | CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB; |
1447 | 127 | INSERT INTO t3 VALUES (1,''); | 354 | INSERT INTO t3 VALUES (1,''); |
1448 | 128 | COMMIT; | ||
1449 | 129 | let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`; | 355 | let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`; |
1452 | 130 | SET innodb_fake_changes=1; | 356 | |
1453 | 131 | 357 | --let $fake_changes_table=t3 | |
1454 | 358 | --source include/start_fake_changes.inc | ||
1455 | 359 | |||
1456 | 360 | BEGIN; | ||
1457 | 132 | UPDATE t3 set b=lpad('b',11000,'c') where a=1; | 361 | UPDATE t3 set b=lpad('b',11000,'c') where a=1; |
1458 | 133 | --error ER_ERROR_DURING_COMMIT | 362 | --error ER_ERROR_DURING_COMMIT |
1459 | 134 | COMMIT; | 363 | COMMIT; |
1460 | 135 | 364 | ||
1468 | 136 | SET innodb_fake_changes=default; | 365 | --source include/stop_fake_changes.inc |
1469 | 137 | --echo # Verify that the fake changes to t3 did not leak through | 366 | |
1463 | 138 | CHECK TABLE t3; | ||
1464 | 139 | let $t3_checksum_2= `CHECKSUM TABLE t3 EXTENDED`; | ||
1465 | 140 | --disable_query_log | ||
1466 | 141 | eval SELECT "$t3_checksum_1" LIKE "$t3_checksum_2" AS should_be_1; | ||
1467 | 142 | --enable_query_log | ||
1470 | 143 | DROP TABLE t1, t3; | 367 | DROP TABLE t1, t3; |
1471 | 144 | 368 | ||
1472 | 145 | SET @@GLOBAL.userstat= default; | 369 | SET @@GLOBAL.userstat= default; |
1473 | 146 | 370 | ||
1474 | === modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test' | |||
1475 | --- Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test 2012-10-17 11:30:19 +0000 | |||
1476 | +++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test 2013-07-15 16:29:43 +0000 | |||
1477 | @@ -7,11 +7,15 @@ | |||
1478 | 7 | DROP TABLE IF EXISTS t1; | 7 | DROP TABLE IF EXISTS t1; |
1479 | 8 | --enable_warnings | 8 | --enable_warnings |
1480 | 9 | 9 | ||
1481 | 10 | SET @@GLOBAL.userstat=ON; | ||
1482 | 11 | |||
1483 | 10 | CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB; | 12 | CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB; |
1484 | 11 | INSERT INTO t1 VALUES (1,1); | 13 | INSERT INTO t1 VALUES (1,1); |
1485 | 12 | 14 | ||
1486 | 13 | SET autocommit=1; | 15 | SET autocommit=1; |
1488 | 14 | SET innodb_fake_changes=1; | 16 | |
1489 | 17 | --let $fake_changes_table=t1 | ||
1490 | 18 | --source include/start_fake_changes.inc | ||
1491 | 15 | 19 | ||
1492 | 16 | --echo # Confirm that duplicate key errors on REPLACE works | 20 | --echo # Confirm that duplicate key errors on REPLACE works |
1493 | 17 | 21 | ||
1494 | @@ -52,8 +56,8 @@ | |||
1495 | 52 | --error ER_ERROR_DURING_COMMIT | 56 | --error ER_ERROR_DURING_COMMIT |
1496 | 53 | INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; | 57 | INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10; |
1497 | 54 | 58 | ||
1501 | 55 | SET innodb_fake_changes=0; | 59 | --source include/stop_fake_changes.inc |
1499 | 56 | SELECT * from t1; | ||
1500 | 57 | CHECK TABLE t1; | ||
1502 | 58 | 60 | ||
1503 | 59 | DROP TABLE t1; | 61 | DROP TABLE t1; |
1504 | 62 | |||
1505 | 63 | SET @@GLOBAL.userstat=default; | ||
1506 | 60 | 64 | ||
1507 | === modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test' | |||
1508 | --- Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test 2012-10-17 11:30:19 +0000 | |||
1509 | +++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test 2013-07-15 16:29:43 +0000 | |||
1510 | @@ -7,6 +7,8 @@ | |||
1511 | 7 | DROP TABLE IF EXISTS t1; | 7 | DROP TABLE IF EXISTS t1; |
1512 | 8 | --enable_warnings | 8 | --enable_warnings |
1513 | 9 | 9 | ||
1514 | 10 | SET @@GLOBAL.userstat=ON; | ||
1515 | 11 | |||
1516 | 10 | # | 12 | # |
1517 | 11 | # Confirm that cursor->tree_height is initialized when calling btr_cur_pessimistic_update | 13 | # Confirm that cursor->tree_height is initialized when calling btr_cur_pessimistic_update |
1518 | 12 | # for transactions with innodb_fake_changes set | 14 | # for transactions with innodb_fake_changes set |
1519 | @@ -16,30 +18,25 @@ | |||
1520 | 16 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; | 18 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; |
1521 | 17 | 19 | ||
1522 | 18 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); | 20 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); |
1523 | 19 | let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`; | ||
1524 | 20 | 21 | ||
1526 | 21 | SET innodb_fake_changes=1; | 22 | --let $fake_changes_table=t1 |
1527 | 23 | --source include/start_fake_changes.inc | ||
1528 | 22 | 24 | ||
1529 | 23 | --error 1180 | 25 | --error 1180 |
1530 | 24 | INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T); | 26 | INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T); |
1531 | 25 | --error 1180 | 27 | --error 1180 |
1532 | 26 | UPDATE t1 SET T = LPAD("A", 4600, "b"); | 28 | UPDATE t1 SET T = LPAD("A", 4600, "b"); |
1533 | 27 | 29 | ||
1540 | 28 | SET innodb_fake_changes=0; | 30 | --source include/stop_fake_changes.inc |
1541 | 29 | CHECK TABLE t1; | 31 | |
1536 | 30 | let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`; | ||
1537 | 31 | --disable_query_log | ||
1538 | 32 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; | ||
1539 | 33 | --enable_query_log | ||
1542 | 34 | DROP TABLE t1; | 32 | DROP TABLE t1; |
1543 | 35 | 33 | ||
1544 | 36 | --echo Test for uncompressed | 34 | --echo Test for uncompressed |
1545 | 37 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; | 35 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; |
1546 | 38 | 36 | ||
1547 | 39 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); | 37 | INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b")); |
1548 | 40 | let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`; | ||
1549 | 41 | 38 | ||
1551 | 42 | SET innodb_fake_changes=1; | 39 | --source include/start_fake_changes.inc |
1552 | 43 | 40 | ||
1553 | 44 | --disable_query_log | 41 | --disable_query_log |
1554 | 45 | let $x = 50; | 42 | let $x = 50; |
1555 | @@ -53,12 +50,8 @@ | |||
1556 | 53 | } | 50 | } |
1557 | 54 | --enable_query_log | 51 | --enable_query_log |
1558 | 55 | 52 | ||
1565 | 56 | SET innodb_fake_changes=0; | 53 | --source include/stop_fake_changes.inc |
1566 | 57 | CHECK TABLE t1; | 54 | |
1561 | 58 | let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`; | ||
1562 | 59 | --disable_query_log | ||
1563 | 60 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; | ||
1564 | 61 | --enable_query_log | ||
1567 | 62 | DROP TABLE t1; | 55 | DROP TABLE t1; |
1568 | 63 | 56 | ||
1569 | 64 | # | 57 | # |
1570 | @@ -69,19 +62,14 @@ | |||
1571 | 69 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; | 62 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8; |
1572 | 70 | 63 | ||
1573 | 71 | INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b")); | 64 | INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b")); |
1574 | 72 | let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`; | ||
1575 | 73 | 65 | ||
1577 | 74 | SET innodb_fake_changes=1; | 66 | --source include/start_fake_changes.inc |
1578 | 75 | 67 | ||
1579 | 76 | --error 1180 | 68 | --error 1180 |
1580 | 77 | INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b")); | 69 | INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b")); |
1581 | 78 | 70 | ||
1588 | 79 | SET innodb_fake_changes=0; | 71 | --source include/stop_fake_changes.inc |
1589 | 80 | CHECK TABLE t1; | 72 | |
1584 | 81 | let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`; | ||
1585 | 82 | --disable_query_log | ||
1586 | 83 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; | ||
1587 | 84 | --enable_query_log | ||
1590 | 85 | DROP TABLE t1; | 73 | DROP TABLE t1; |
1591 | 86 | 74 | ||
1592 | 87 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; | 75 | CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB; |
1593 | @@ -101,3 +89,5 @@ | |||
1594 | 101 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; | 89 | eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1; |
1595 | 102 | --enable_query_log | 90 | --enable_query_log |
1596 | 103 | DROP TABLE t1; | 91 | DROP TABLE t1; |
1597 | 92 | |||
1598 | 93 | SET @@GLOBAL.userstat=default; | ||
1599 | 104 | 94 | ||
1600 | === modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test' | |||
1601 | --- Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test 2012-10-11 14:18:34 +0000 | |||
1602 | +++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test 2013-07-15 16:29:43 +0000 | |||
1603 | @@ -16,6 +16,7 @@ | |||
1604 | 16 | --connection conn1 | 16 | --connection conn1 |
1605 | 17 | --echo # Verifying that X_LOCK not acquired | 17 | --echo # Verifying that X_LOCK not acquired |
1606 | 18 | SET autocommit=0; | 18 | SET autocommit=0; |
1607 | 19 | # Cannot use start_fake_changes.inc as conn2 issues real workload before reverting | ||
1608 | 19 | SET innodb_fake_changes=1; | 20 | SET innodb_fake_changes=1; |
1609 | 20 | BEGIN; | 21 | BEGIN; |
1610 | 21 | SELECT * FROM t1 FOR UPDATE; | 22 | SELECT * FROM t1 FOR UPDATE; |
1611 | 22 | 23 | ||
1612 | === modified file 'Percona-Server/sql/sql_insert.cc' | |||
1613 | --- Percona-Server/sql/sql_insert.cc 2013-06-25 13:13:06 +0000 | |||
1614 | +++ Percona-Server/sql/sql_insert.cc 2013-07-15 16:29:43 +0000 | |||
1615 | @@ -1860,7 +1860,7 @@ | |||
1616 | 1860 | 2) do nothing on fake delete | 1860 | 2) do nothing on fake delete |
1617 | 1861 | 3) goto #1 | 1861 | 3) goto #1 |
1618 | 1862 | */ | 1862 | */ |
1620 | 1863 | if (table->file->is_fake_change_enabled(thd)) | 1863 | if (unlikely(table->file->is_fake_change_enabled(thd))) |
1621 | 1864 | goto ok_or_after_trg_err; | 1864 | goto ok_or_after_trg_err; |
1622 | 1865 | /* Let us attempt do write_row() once more */ | 1865 | /* Let us attempt do write_row() once more */ |
1623 | 1866 | } | 1866 | } |
1624 | 1867 | 1867 | ||
1625 | === modified file 'Percona-Server/storage/innobase/btr/btr0cur.cc' | |||
1626 | --- Percona-Server/storage/innobase/btr/btr0cur.cc 2013-06-25 13:13:06 +0000 | |||
1627 | +++ Percona-Server/storage/innobase/btr/btr0cur.cc 2013-07-15 16:29:43 +0000 | |||
1628 | @@ -1251,7 +1251,7 @@ | |||
1629 | 1251 | rec_t* rec; | 1251 | rec_t* rec; |
1630 | 1252 | roll_ptr_t roll_ptr; | 1252 | roll_ptr_t roll_ptr; |
1631 | 1253 | 1253 | ||
1633 | 1254 | if (thr && thr_get_trx(thr)->fake_changes) { | 1254 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1634 | 1255 | /* skip LOCK, UNDO */ | 1255 | /* skip LOCK, UNDO */ |
1635 | 1256 | return(DB_SUCCESS); | 1256 | return(DB_SUCCESS); |
1636 | 1257 | } | 1257 | } |
1637 | @@ -1513,7 +1513,7 @@ | |||
1638 | 1513 | goto fail_err; | 1513 | goto fail_err; |
1639 | 1514 | } | 1514 | } |
1640 | 1515 | 1515 | ||
1642 | 1516 | if (thr && thr_get_trx(thr)->fake_changes) { | 1516 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1643 | 1517 | /* skip CHANGE, LOG */ | 1517 | /* skip CHANGE, LOG */ |
1644 | 1518 | *big_rec = big_rec_vec; | 1518 | *big_rec = big_rec_vec; |
1645 | 1519 | return(err); /* == DB_SUCCESS */ | 1519 | return(err); /* == DB_SUCCESS */ |
1646 | @@ -1718,7 +1718,7 @@ | |||
1647 | 1718 | } | 1718 | } |
1648 | 1719 | } | 1719 | } |
1649 | 1720 | 1720 | ||
1651 | 1721 | if (thr && thr_get_trx(thr)->fake_changes) { | 1721 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1652 | 1722 | /* skip CHANGE, LOG */ | 1722 | /* skip CHANGE, LOG */ |
1653 | 1723 | if (n_reserved > 0) { | 1723 | if (n_reserved > 0) { |
1654 | 1724 | fil_space_release_free_extents(index->space, | 1724 | fil_space_release_free_extents(index->space, |
1655 | @@ -1784,7 +1784,7 @@ | |||
1656 | 1784 | 1784 | ||
1657 | 1785 | ut_ad(thr || (flags & BTR_NO_LOCKING_FLAG)); | 1785 | ut_ad(thr || (flags & BTR_NO_LOCKING_FLAG)); |
1658 | 1786 | 1786 | ||
1660 | 1787 | if (thr && thr_get_trx(thr)->fake_changes) { | 1787 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1661 | 1788 | /* skip LOCK, UNDO */ | 1788 | /* skip LOCK, UNDO */ |
1662 | 1789 | return(DB_SUCCESS); | 1789 | return(DB_SUCCESS); |
1663 | 1790 | } | 1790 | } |
1664 | @@ -2397,7 +2397,7 @@ | |||
1665 | 2397 | goto func_exit; | 2397 | goto func_exit; |
1666 | 2398 | } | 2398 | } |
1667 | 2399 | 2399 | ||
1669 | 2400 | if (thr && thr_get_trx(thr)->fake_changes) { | 2400 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1670 | 2401 | /* skip CHANGE, LOG */ | 2401 | /* skip CHANGE, LOG */ |
1671 | 2402 | ut_ad(err == DB_SUCCESS); | 2402 | ut_ad(err == DB_SUCCESS); |
1672 | 2403 | return(DB_SUCCESS); | 2403 | return(DB_SUCCESS); |
1673 | @@ -2724,7 +2724,7 @@ | |||
1674 | 2724 | ut_ad(flags & BTR_KEEP_POS_FLAG); | 2724 | ut_ad(flags & BTR_KEEP_POS_FLAG); |
1675 | 2725 | } | 2725 | } |
1676 | 2726 | 2726 | ||
1678 | 2727 | if (trx->fake_changes) { | 2727 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1679 | 2728 | /* skip CHANGE, LOG */ | 2728 | /* skip CHANGE, LOG */ |
1680 | 2729 | err = DB_SUCCESS; | 2729 | err = DB_SUCCESS; |
1681 | 2730 | goto return_after_reservations; | 2730 | goto return_after_reservations; |
1682 | @@ -3056,9 +3056,9 @@ | |||
1683 | 3056 | ut_ad(dict_index_is_clust(index)); | 3056 | ut_ad(dict_index_is_clust(index)); |
1684 | 3057 | ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets))); | 3057 | ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets))); |
1685 | 3058 | 3058 | ||
1689 | 3059 | if (thr && thr_get_trx(thr)->fake_changes) { | 3059 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1690 | 3060 | /* skip LOCK, UNDO, CHANGE, LOG */ | 3060 | /* skip LOCK, UNDO, CHANGE, LOG */ |
1691 | 3061 | return(DB_SUCCESS); | 3061 | return(DB_SUCCESS); |
1692 | 3062 | } | 3062 | } |
1693 | 3063 | 3063 | ||
1694 | 3064 | err = lock_clust_rec_modify_check_and_lock(BTR_NO_LOCKING_FLAG, block, | 3064 | err = lock_clust_rec_modify_check_and_lock(BTR_NO_LOCKING_FLAG, block, |
1695 | @@ -3199,7 +3199,7 @@ | |||
1696 | 3199 | rec_t* rec; | 3199 | rec_t* rec; |
1697 | 3200 | dberr_t err; | 3200 | dberr_t err; |
1698 | 3201 | 3201 | ||
1700 | 3202 | if (thr && thr_get_trx(thr)->fake_changes) { | 3202 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1701 | 3203 | /* skip LOCK, CHANGE, LOG */ | 3203 | /* skip LOCK, CHANGE, LOG */ |
1702 | 3204 | return(DB_SUCCESS); | 3204 | return(DB_SUCCESS); |
1703 | 3205 | } | 3205 | } |
1704 | 3206 | 3206 | ||
1705 | === modified file 'Percona-Server/storage/innobase/handler/ha_innodb.cc' | |||
1706 | --- Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:29:41 +0000 | |||
1707 | +++ Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:29:43 +0000 | |||
1708 | @@ -3784,9 +3784,11 @@ | |||
1709 | 3784 | trx_search_latch_release_if_reserved(trx); | 3784 | trx_search_latch_release_if_reserved(trx); |
1710 | 3785 | } | 3785 | } |
1711 | 3786 | 3786 | ||
1713 | 3787 | if (trx->fake_changes && | 3787 | if (UNIV_UNLIKELY(trx->fake_changes && |
1714 | 3788 | (commit_trx || | 3788 | (commit_trx || |
1716 | 3789 | (!thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))) { | 3789 | (!thd_test_options(thd, |
1717 | 3790 | OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))))) { | ||
1718 | 3791 | |||
1719 | 3790 | /* rollback implicitly */ | 3792 | /* rollback implicitly */ |
1720 | 3791 | innobase_rollback(hton, thd, commit_trx); | 3793 | innobase_rollback(hton, thd, commit_trx); |
1721 | 3792 | /* because debug assertion code complains, if something left */ | 3794 | /* because debug assertion code complains, if something left */ |
1722 | @@ -9937,7 +9939,7 @@ | |||
1723 | 9937 | 9939 | ||
1724 | 9938 | trx = innobase_trx_allocate(thd); | 9940 | trx = innobase_trx_allocate(thd); |
1725 | 9939 | 9941 | ||
1727 | 9940 | if (trx->fake_changes) { | 9942 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1728 | 9941 | innobase_commit_low(trx); | 9943 | innobase_commit_low(trx); |
1729 | 9942 | trx_free_for_mysql(trx); | 9944 | trx_free_for_mysql(trx); |
1730 | 9943 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); | 9945 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); |
1731 | @@ -10309,7 +10311,7 @@ | |||
1732 | 10309 | DBUG_RETURN(HA_ERR_CRASHED); | 10311 | DBUG_RETURN(HA_ERR_CRASHED); |
1733 | 10310 | } | 10312 | } |
1734 | 10311 | 10313 | ||
1736 | 10312 | if (prebuilt->trx->fake_changes) { | 10314 | if (UNIV_UNLIKELY(prebuilt->trx->fake_changes)) { |
1737 | 10313 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); | 10315 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); |
1738 | 10314 | } | 10316 | } |
1739 | 10315 | 10317 | ||
1740 | @@ -10397,7 +10399,7 @@ | |||
1741 | 10397 | 10399 | ||
1742 | 10398 | trx = innobase_trx_allocate(thd); | 10400 | trx = innobase_trx_allocate(thd); |
1743 | 10399 | 10401 | ||
1745 | 10400 | if (trx->fake_changes) { | 10402 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1746 | 10401 | innobase_commit_low(trx); | 10403 | innobase_commit_low(trx); |
1747 | 10402 | trx_free_for_mysql(trx); | 10404 | trx_free_for_mysql(trx); |
1748 | 10403 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); | 10405 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); |
1749 | @@ -10527,7 +10529,7 @@ | |||
1750 | 10527 | #endif | 10529 | #endif |
1751 | 10528 | trx = innobase_trx_allocate(thd); | 10530 | trx = innobase_trx_allocate(thd); |
1752 | 10529 | 10531 | ||
1754 | 10530 | if (trx->fake_changes) { | 10532 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1755 | 10531 | my_free(namebuf); | 10533 | my_free(namebuf); |
1756 | 10532 | innobase_commit_low(trx); | 10534 | innobase_commit_low(trx); |
1757 | 10533 | trx_free_for_mysql(trx); | 10535 | trx_free_for_mysql(trx); |
1758 | @@ -10707,7 +10709,7 @@ | |||
1759 | 10707 | trx_search_latch_release_if_reserved(parent_trx); | 10709 | trx_search_latch_release_if_reserved(parent_trx); |
1760 | 10708 | 10710 | ||
1761 | 10709 | trx = innobase_trx_allocate(thd); | 10711 | trx = innobase_trx_allocate(thd); |
1763 | 10710 | if (trx->fake_changes) { | 10712 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1764 | 10711 | innobase_commit_low(trx); | 10713 | innobase_commit_low(trx); |
1765 | 10712 | trx_free_for_mysql(trx); | 10714 | trx_free_for_mysql(trx); |
1766 | 10713 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); | 10715 | DBUG_RETURN(HA_ERR_WRONG_COMMAND); |
1767 | 10714 | 10716 | ||
1768 | === modified file 'Percona-Server/storage/innobase/lock/lock0lock.cc' | |||
1769 | --- Percona-Server/storage/innobase/lock/lock0lock.cc 2013-06-25 13:13:06 +0000 | |||
1770 | +++ Percona-Server/storage/innobase/lock/lock0lock.cc 2013-07-15 16:29:43 +0000 | |||
1771 | @@ -4415,7 +4415,7 @@ | |||
1772 | 4415 | 4415 | ||
1773 | 4416 | trx = thr_get_trx(thr); | 4416 | trx = thr_get_trx(thr); |
1774 | 4417 | 4417 | ||
1776 | 4418 | if (trx->fake_changes && mode == LOCK_IX) { | 4418 | if (UNIV_UNLIKELY(trx->fake_changes && mode == LOCK_IX)) { |
1777 | 4419 | mode = LOCK_IS; | 4419 | mode = LOCK_IS; |
1778 | 4420 | } | 4420 | } |
1779 | 4421 | 4421 | ||
1780 | @@ -5943,7 +5943,7 @@ | |||
1781 | 5943 | 5943 | ||
1782 | 5944 | trx = thr_get_trx(thr); | 5944 | trx = thr_get_trx(thr); |
1783 | 5945 | 5945 | ||
1785 | 5946 | if (trx->fake_changes) { | 5946 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1786 | 5947 | return(DB_SUCCESS); | 5947 | return(DB_SUCCESS); |
1787 | 5948 | } | 5948 | } |
1788 | 5949 | 5949 | ||
1789 | @@ -6159,7 +6159,7 @@ | |||
1790 | 6159 | return(DB_SUCCESS); | 6159 | return(DB_SUCCESS); |
1791 | 6160 | } | 6160 | } |
1792 | 6161 | 6161 | ||
1794 | 6162 | if (thr && thr_get_trx(thr)->fake_changes) { | 6162 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1795 | 6163 | return(DB_SUCCESS); | 6163 | return(DB_SUCCESS); |
1796 | 6164 | } | 6164 | } |
1797 | 6165 | 6165 | ||
1798 | @@ -6225,7 +6225,7 @@ | |||
1799 | 6225 | return(DB_SUCCESS); | 6225 | return(DB_SUCCESS); |
1800 | 6226 | } | 6226 | } |
1801 | 6227 | 6227 | ||
1803 | 6228 | if (thr && thr_get_trx(thr)->fake_changes) { | 6228 | if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) { |
1804 | 6229 | return(DB_SUCCESS); | 6229 | return(DB_SUCCESS); |
1805 | 6230 | } | 6230 | } |
1806 | 6231 | 6231 | ||
1807 | 6232 | 6232 | ||
1808 | === modified file 'Percona-Server/storage/innobase/que/que0que.cc' | |||
1809 | --- Percona-Server/storage/innobase/que/que0que.cc 2013-05-10 09:39:17 +0000 | |||
1810 | +++ Percona-Server/storage/innobase/que/que0que.cc 2013-07-15 16:29:43 +0000 | |||
1811 | @@ -1273,7 +1273,7 @@ | |||
1812 | 1273 | 1273 | ||
1813 | 1274 | ut_a(trx->error_state == DB_SUCCESS); | 1274 | ut_a(trx->error_state == DB_SUCCESS); |
1814 | 1275 | 1275 | ||
1816 | 1276 | if (trx->fake_changes) { | 1276 | if (UNIV_UNLIKELY(trx->fake_changes)) { |
1817 | 1277 | /* fake_changes should not access to system tables */ | 1277 | /* fake_changes should not access to system tables */ |
1818 | 1278 | fprintf(stderr, "InnoDB: ERROR: innodb_fake_changes tried to access to system tables.\n"); | 1278 | fprintf(stderr, "InnoDB: ERROR: innodb_fake_changes tried to access to system tables.\n"); |
1819 | 1279 | return(DB_ERROR); | 1279 | return(DB_ERROR); |
1820 | 1280 | 1280 | ||
1821 | === modified file 'Percona-Server/storage/innobase/row/row0upd.cc' | |||
1822 | --- Percona-Server/storage/innobase/row/row0upd.cc 2013-06-20 15:16:00 +0000 | |||
1823 | +++ Percona-Server/storage/innobase/row/row0upd.cc 2013-07-15 16:29:43 +0000 | |||
1824 | @@ -2015,7 +2015,7 @@ | |||
1825 | 2015 | the previous invocation of this function. Mark the | 2015 | the previous invocation of this function. Mark the |
1826 | 2016 | off-page columns in the entry inherited. */ | 2016 | off-page columns in the entry inherited. */ |
1827 | 2017 | 2017 | ||
1829 | 2018 | if (!(trx->fake_changes)) { | 2018 | if (UNIV_LIKELY(!trx->fake_changes)) { |
1830 | 2019 | change_ownership = row_upd_clust_rec_by_insert_inherit( | 2019 | change_ownership = row_upd_clust_rec_by_insert_inherit( |
1831 | 2020 | NULL, NULL, entry, node->update); | 2020 | NULL, NULL, entry, node->update); |
1832 | 2021 | ut_a(change_ownership); | 2021 | ut_a(change_ownership); |
Same comment as for the 5.5 MP.