Merge lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.6 into lp:percona-server/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
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.

Description of the change

No BT or ST but BT 20439 prerequisite.
http://jenkins.percona.com/job/percona-server-5.6-param/187/

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 :

Same comment as for the 5.5 MP.

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'Percona-Server/mysql-test/include/start_fake_changes.inc'
--- Percona-Server/mysql-test/include/start_fake_changes.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/start_fake_changes.inc 2013-07-15 16:29:43 +0000
@@ -0,0 +1,34 @@
1#
2# Include this file in a session before fake changes workload. It will enable
3# the fake changes for the current session and save the relevant server state
4# to variables that will be used by stop_fake_changes.inc that it didn't change.
5#
6# Since some of the state checked is global InnoDB counters, do not issue a
7# non-fake-changes workload in parallel.
8#
9
10# Requires userstat
11SELECT @@global.userstat = 1 AS should_be_1;
12
13# Have up-to-date stats for the fake changes table, so that, if there is a
14# non-fake-changes session running in parallel, it does not trigger an auto
15# stat recalc which then fails these checks.
16eval ANALYZE TABLE $fake_changes_table;
17
18let $t_checksum_1= `CHECKSUM TABLE $fake_changes_table EXTENDED`;
19SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
20SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
21SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
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';
23eval SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table';
24eval 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';
25eval 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';
26eval SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table';
27
28#
29# Index stats should not change, but it's only possible to inspect them
30# manually.
31#
32eval SHOW INDEXES IN $fake_changes_table;
33
34SET innodb_fake_changes=1;
035
=== added file 'Percona-Server/mysql-test/include/stop_fake_changes.inc'
--- Percona-Server/mysql-test/include/stop_fake_changes.inc 1970-01-01 00:00:00 +0000
+++ Percona-Server/mysql-test/include/stop_fake_changes.inc 2013-07-15 16:29:43 +0000
@@ -0,0 +1,35 @@
1#
2# Include this file in a session after fake changes workload. It will disable the fake
3# changes and assert that the relevant server state has not changed from the one saved
4# by a previous start_fake_changes.inc.
5#
6SET innodb_fake_changes=0;
7
8eval CHECK TABLE $fake_changes_table;
9
10let $t_checksum_2= `CHECKSUM TABLE $fake_changes_table EXTENDED`;
11SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
12SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
13SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
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';
15eval SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table';
16eval 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';
17eval 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';
18eval SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/$fake_changes_table';
19
20--disable_query_log
21eval SELECT "$t_checksum_1" LIKE "$t_checksum_2" AS should_be_1;
22--enable_query_log
23SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
24SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
25SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
26SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
27SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
28SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
29SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
30
31#
32# Index stats should not change, but it's only possible to inspect them
33# manually.
34#
35eval SHOW INDEXES IN $fake_changes_table;
036
=== modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes.result'
--- Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2013-05-06 15:43:51 +0000
+++ Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2013-07-15 16:29:43 +0000
@@ -22,10 +22,24 @@
22OFF22OFF
23# Explicit COMMIT should fail when innodb_fake_changes is enabled23# Explicit COMMIT should fail when innodb_fake_changes is enabled
24# DML should be fine24# DML should be fine
25SET @@GLOBAL.userstat= TRUE;25SET @@GLOBAL.userstat=TRUE;
26CREATE TABLE t1 (a INT) ENGINE=InnoDB;26CREATE TABLE t1 (a INT) ENGINE=InnoDB;
27INSERT INTO t1 VALUES (1);27INSERT INTO t1 VALUES (1);
28SET autocommit=0;28SELECT @@global.userstat = 1 AS should_be_1;
29should_be_1
301
31ANALYZE TABLE t1;
32Table Op Msg_type Msg_text
33test.t1 analyze status OK
34SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
35SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
36SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
37SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
38SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
39SELECT 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';
40SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
41SHOW INDEXES IN t1;
42Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
29SET innodb_fake_changes=1;43SET innodb_fake_changes=1;
30BEGIN;44BEGIN;
31INSERT INTO t1 VALUES (2);45INSERT INTO t1 VALUES (2);
@@ -36,31 +50,437 @@
361501
37COMMIT;51COMMIT;
38ERROR HY000: Got error 131 during COMMIT52ERROR HY000: Got error 131 during COMMIT
39SET innodb_fake_changes=default;53SET innodb_fake_changes=0;
40# Verify that the fake changes to t1 did not leak through54CHECK TABLE t1;
41CHECK TABLE t1;55Table Op Msg_type Msg_text
42Table Op Msg_type Msg_text56test.t1 check status OK
43test.t1 check status OK57SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
44should_be_158SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
45159SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
46should_be_060SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
47061SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
48should_be_062SELECT 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';
49063SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
50should_be_064should_be_1
510651
52should_be_066SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
53067should_be_0
54should_be_0680
55069SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
56should_be_070should_be_0
570710
58should_be_072SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
59073should_be_0
60DROP TABLE t1;740
75SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
76should_be_0
770
78SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
79should_be_0
800
81SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
82should_be_0
830
84SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
85should_be_0
860
87SHOW INDEXES IN t1;
88Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
89DROP TABLE t1;
90CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB;
91INSERT INTO t1 VALUES (1,1);
92SELECT @@global.userstat = 1 AS should_be_1;
93should_be_1
941
95ANALYZE TABLE t1;
96Table Op Msg_type Msg_text
97test.t1 analyze status OK
98SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
99SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
100SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
101SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
102SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
103SELECT 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';
104SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
105SHOW INDEXES IN t1;
106Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
107t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
108t1 0 b 1 b A 1 NULL NULL YES BTREE
109SET innodb_fake_changes=1;
110SELECT * FROM t1;
111ERROR HY000: Got error 131 during COMMIT
112INSERT INTO t1 VALUES (2,2);
113ERROR HY000: Got error 131 during COMMIT
114UPDATE t1 SET a=0 where b=1;
115ERROR 23000: Duplicate entry '1' for key 'b'
116UPDATE t1 SET b=0 where a=1;
117ERROR HY000: Got error 131 during COMMIT
118UPDATE t1 SET b=0 where a=2;
119ERROR HY000: Got error 131 during COMMIT
120DELETE FROM t1 where b=2;
121ERROR HY000: Got error 131 during COMMIT
122DELETE FROM t1 where b=1;
123ERROR HY000: Got error 131 during COMMIT
124DELETE FROM t1 where a=2;
125ERROR HY000: Got error 131 during COMMIT
126DELETE FROM t1 where a=1;
127ERROR HY000: Got error 131 during COMMIT
128REPLACE INTO t1 values (2,3);
129ERROR HY000: Got error 131 during COMMIT
130BEGIN;
131SELECT * FROM t1;
132a b
1331 1
134COMMIT;
135ERROR HY000: Got error 131 during COMMIT
136BEGIN;
137INSERT INTO t1 VALUES (2,2);
138COMMIT;
139ERROR HY000: Got error 131 during COMMIT
140BEGIN;
141UPDATE t1 SET a=0 where b=1;
142ERROR 23000: Duplicate entry '1' for key 'b'
143COMMIT;
144ERROR HY000: Got error 131 during COMMIT
145BEGIN;
146UPDATE t1 SET b=0 where a=1;
147COMMIT;
148ERROR HY000: Got error 131 during COMMIT
149BEGIN;
150UPDATE t1 SET b=0 where a=2;
151COMMIT;
152ERROR HY000: Got error 131 during COMMIT
153BEGIN;
154DELETE FROM t1 where b=2;
155COMMIT;
156ERROR HY000: Got error 131 during COMMIT
157BEGIN;
158DELETE FROM t1 where b=1;
159COMMIT;
160ERROR HY000: Got error 131 during COMMIT
161BEGIN;
162DELETE FROM t1 where a=2;
163COMMIT;
164ERROR HY000: Got error 131 during COMMIT
165BEGIN;
166DELETE FROM t1 where a=1;
167COMMIT;
168ERROR HY000: Got error 131 during COMMIT
169BEGIN;
170REPLACE INTO t1 values (2,3);
171COMMIT;
172ERROR HY000: Got error 131 during COMMIT
173INSERT INTO t1 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
174ERROR HY000: Got error 131 during COMMIT
175CREATE INDEX bx ON t1(b);
176ERROR HY000: Got error 131 during COMMIT
177SET innodb_fake_changes=0;
178CHECK TABLE t1;
179Table Op Msg_type Msg_text
180test.t1 check status OK
181SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
182SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
183SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
184SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
185SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
186SELECT 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';
187SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
188should_be_1
1891
190SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
191should_be_0
1920
193SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
194should_be_0
1950
196SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
197should_be_0
1980
199SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
200should_be_0
2010
202SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
203should_be_0
2040
205SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
206should_be_0
2070
208SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
209should_be_0
2100
211SHOW INDEXES IN t1;
212Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
213t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
214t1 0 b 1 b A 1 NULL NULL YES BTREE
215DROP TABLE t1;
216CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
217INSERT INTO t2 VALUES (1, 1);
218SELECT @@global.userstat = 1 AS should_be_1;
219should_be_1
2201
221ANALYZE TABLE t2;
222Table Op Msg_type Msg_text
223test.t2 analyze status OK
224SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
225SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
226SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
227SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2';
228SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
229SELECT 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';
230SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2';
231SHOW INDEXES IN t2;
232Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
233t2 0 PRIMARY 1 a A 1 NULL NULL BTREE
234SET innodb_fake_changes=1;
235SELECT * FROM t2;
236ERROR HY000: Got error 131 during COMMIT
237INSERT INTO t2 VALUES (2,2);
238ERROR HY000: Got error 131 during COMMIT
239UPDATE t2 SET b=0 where a=1;
240ERROR HY000: Got error 131 during COMMIT
241UPDATE t2 SET b=0 where a=2;
242ERROR HY000: Got error 131 during COMMIT
243DELETE FROM t2 where b=2;
244ERROR HY000: Got error 131 during COMMIT
245DELETE FROM t2 where b=1;
246ERROR HY000: Got error 131 during COMMIT
247DELETE FROM t2 where a=2;
248ERROR HY000: Got error 131 during COMMIT
249DELETE FROM t2 where a=1;
250ERROR HY000: Got error 131 during COMMIT
251REPLACE INTO t2 values (2,3);
252ERROR HY000: Got error 131 during COMMIT
253REPLACE INTO t2 VALUES (1,1);
254ERROR HY000: Got error 131 during COMMIT
255REPLACE INTO t2 VALUES (1,2);
256ERROR HY000: Got error 131 during COMMIT
257BEGIN;
258SELECT * FROM t2;
259a b
2601 1
261COMMIT;
262ERROR HY000: Got error 131 during COMMIT
263BEGIN;
264INSERT INTO t2 VALUES (2,2);
265COMMIT;
266ERROR HY000: Got error 131 during COMMIT
267BEGIN;
268UPDATE t2 SET b=0 where a=1;
269COMMIT;
270ERROR HY000: Got error 131 during COMMIT
271BEGIN;
272UPDATE t2 SET b=0 where a=2;
273COMMIT;
274ERROR HY000: Got error 131 during COMMIT
275BEGIN;
276DELETE FROM t2 where b=2;
277COMMIT;
278ERROR HY000: Got error 131 during COMMIT
279BEGIN;
280DELETE FROM t2 where b=1;
281COMMIT;
282ERROR HY000: Got error 131 during COMMIT
283BEGIN;
284DELETE FROM t2 where a=2;
285COMMIT;
286ERROR HY000: Got error 131 during COMMIT
287BEGIN;
288DELETE FROM t2 where a=1;
289COMMIT;
290ERROR HY000: Got error 131 during COMMIT
291BEGIN;
292REPLACE INTO t2 values (2,3);
293COMMIT;
294ERROR HY000: Got error 131 during COMMIT
295BEGIN;
296REPLACE INTO t2 VALUES (1,1);
297COMMIT;
298ERROR HY000: Got error 131 during COMMIT
299BEGIN;
300REPLACE INTO t2 VALUES (1,2);
301COMMIT;
302ERROR HY000: Got error 131 during COMMIT
303BEGIN;
304REPLACE INTO t2 VALUES (1,2);
305SELECT * from t2;
306a b
3071 1
308REPLACE INTO t2 VALUES (1,1);
309SELECT * from t2;
310a b
3111 1
312ROLLBACK;
313BEGIN;
314INSERT INTO t2 VALUES (1,1);
315ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
316INSERT INTO t2 VALUES (1,2);
317ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
318ROLLBACK;
319INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
320ERROR HY000: Got error 131 during COMMIT
321INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=b+10;
322ERROR HY000: Got error 131 during COMMIT
323INSERT INTO t2 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
324ERROR HY000: Got error 131 during COMMIT
325CREATE INDEX bx ON t2(b);
326ERROR HY000: Got error 131 during COMMIT
327SET innodb_fake_changes=0;
328CHECK TABLE t2;
329Table Op Msg_type Msg_text
330test.t2 check status OK
331SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
332SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
333SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
334SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2';
335SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
336SELECT 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';
337SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2';
338should_be_1
3391
340SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
341should_be_0
3420
343SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
344should_be_0
3450
346SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
347should_be_0
3480
349SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
350should_be_0
3510
352SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
353should_be_0
3540
355SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
356should_be_0
3570
358SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
359should_be_0
3600
361SHOW INDEXES IN t2;
362Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
363t2 0 PRIMARY 1 a A 1 NULL NULL BTREE
364DROP TABLE t2;
365CREATE TABLE t3 (a INT PRIMARY KEY, B TEXT) ENGINE=InnoDB;
366INSERT INTO t3 VALUES (1, '');
367SELECT @@global.userstat = 1 AS should_be_1;
368should_be_1
3691
370ANALYZE TABLE t3;
371Table Op Msg_type Msg_text
372test.t3 analyze status OK
373SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
374SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
375SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
376SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
377SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
378SELECT 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';
379SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
380SHOW INDEXES IN t3;
381Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
382t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
383SET innodb_fake_changes=1;
384SELECT * FROM t3;
385ERROR HY000: Got error 131 during COMMIT
386INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
387ERROR HY000: Got error 131 during COMMIT
388UPDATE t3 SET a=0 where a=1;
389ERROR HY000: Got error 131 during COMMIT
390DELETE FROM t3 where a=2;
391ERROR HY000: Got error 131 during COMMIT
392DELETE FROM t3 where a=1;
393ERROR HY000: Got error 131 during COMMIT
394REPLACE INTO t3 values (2,lpad('a',9000,'q'));
395ERROR HY000: Got error 131 during COMMIT
396INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
397ERROR HY000: Got error 131 during COMMIT
398BEGIN;
399SELECT * FROM t3;
400a B
4011
402COMMIT;
403ERROR HY000: Got error 131 during COMMIT
404BEGIN;
405INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
406COMMIT;
407ERROR HY000: Got error 131 during COMMIT
408BEGIN;
409UPDATE t3 SET a=0 where a=1;
410COMMIT;
411ERROR HY000: Got error 131 during COMMIT
412BEGIN;
413DELETE FROM t3 where a=2;
414COMMIT;
415ERROR HY000: Got error 131 during COMMIT
416BEGIN;
417DELETE FROM t3 where a=1;
418COMMIT;
419ERROR HY000: Got error 131 during COMMIT
420BEGIN;
421REPLACE INTO t3 values (2,lpad('a',9000,'q'));
422COMMIT;
423ERROR HY000: Got error 131 during COMMIT
424BEGIN;
425INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
426COMMIT;
427ERROR HY000: Got error 131 during COMMIT
428SET innodb_fake_changes=0;
429CHECK TABLE t3;
430Table Op Msg_type Msg_text
431test.t3 check status OK
432SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
433SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
434SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
435SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
436SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
437SELECT 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';
438SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
439should_be_1
4401
441SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
442should_be_0
4430
444SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
445should_be_0
4460
447SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
448should_be_0
4490
450SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
451should_be_0
4520
453SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
454should_be_0
4550
456SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
457should_be_0
4580
459SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
460should_be_0
4610
462SHOW INDEXES IN t3;
463Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
464t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
465DROP TABLE t3;
61# DDL must result in error466# DDL must result in error
62CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;467CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
63SET autocommit=0;468SELECT @@global.userstat = 1 AS should_be_1;
469should_be_1
4701
471ANALYZE TABLE t1;
472Table Op Msg_type Msg_text
473test.t1 analyze status OK
474SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
475SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
476SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
477SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
478SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
479SELECT 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';
480SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
481SHOW INDEXES IN t1;
482Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
483t1 0 PRIMARY 1 a A 0 NULL NULL BTREE
64SET innodb_fake_changes=1;484SET innodb_fake_changes=1;
65BEGIN;485BEGIN;
66CREATE TABLE t2 (a INT) ENGINE=InnoDB;486CREATE TABLE t2 (a INT) ENGINE=InnoDB;
@@ -68,52 +488,172 @@
68DROP TABLE t1;488DROP TABLE t1;
69ERROR 42S02: Unknown table 'test.t1'489ERROR 42S02: Unknown table 'test.t1'
70TRUNCATE TABLE t1;490TRUNCATE TABLE t1;
71ERROR HY000: Got error 131 during COMMIT491ERROR HY000: Table storage engine for 't1' doesn't have this option
72ALTER TABLE t1 ENGINE=MyISAM;492ALTER TABLE t1 ENGINE=MyISAM;
73ERROR HY000: Got error 131 during COMMIT493ERROR HY000: Got error 131 during COMMIT
74ROLLBACK;494ROLLBACK;
75SET innodb_fake_changes=0;495SET innodb_fake_changes=0;
496CHECK TABLE t1;
497Table Op Msg_type Msg_text
498test.t1 check status OK
499SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
500SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
501SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
502SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
503SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
504SELECT 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';
505SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
506should_be_1
5071
508SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
509should_be_0
5100
511SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
512should_be_0
5130
514SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
515should_be_0
5160
517SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
518should_be_0
5190
520SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
521should_be_0
5220
523SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
524should_be_0
5250
526SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
527should_be_0
5280
529SHOW INDEXES IN t1;
530Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
531t1 0 PRIMARY 1 a A 0 NULL NULL BTREE
76INSERT INTO t1 VALUES (1), (2);532INSERT INTO t1 VALUES (1), (2);
77COMMIT;
78CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),533CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),
79FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;534FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
80INSERT INTO t2 VALUES (1, 1);535INSERT INTO t2 VALUES (1, 1);
81INSERT INTO t2 VALUES (2, 2);536INSERT INTO t2 VALUES (2, 2);
82COMMIT;537COMMIT;
538SELECT @@global.userstat = 1 AS should_be_1;
539should_be_1
5401
541ANALYZE TABLE t1;
542Table Op Msg_type Msg_text
543test.t1 analyze status OK
544SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
545SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
546SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
547SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
548SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
549SELECT 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';
550SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
551SHOW INDEXES IN t1;
552Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
553t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
83SET innodb_fake_changes=1;554SET innodb_fake_changes=1;
555BEGIN;
84DELETE FROM t1 WHERE a=1;556DELETE FROM t1 WHERE a=1;
85UPDATE t1 SET a=3 WHERE a=2;557UPDATE t1 SET a=3 WHERE a=2;
86COMMIT;558COMMIT;
87ERROR HY000: Got error 131 during COMMIT559ERROR HY000: Got error 131 during COMMIT
560SET innodb_fake_changes=0;
561CHECK TABLE t1;
562Table Op Msg_type Msg_text
563test.t1 check status OK
564SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
565SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
566SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
567SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
568SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
569SELECT 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';
570SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
88should_be_1571should_be_1
8915721
90should_be_0573SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
910574should_be_0
92should_be_05750
930576SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
94should_be_0577should_be_0
9505780
96should_be_0579SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
970580should_be_0
98should_be_05810
990582SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
100should_be_0583should_be_0
10105840
102SET innodb_fake_changes=0;585SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
586should_be_0
5870
588SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
589should_be_0
5900
591SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
592should_be_0
5930
594SHOW INDEXES IN t1;
595Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
596t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
103DROP TABLE t2;597DROP TABLE t2;
104CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;598CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;
105INSERT INTO t3 VALUES (1,'');599INSERT INTO t3 VALUES (1,'');
106COMMIT;600SELECT @@global.userstat = 1 AS should_be_1;
601should_be_1
6021
603ANALYZE TABLE t3;
604Table Op Msg_type Msg_text
605test.t3 analyze status OK
606SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
607SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
608SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
609SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
610SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
611SELECT 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';
612SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
613SHOW INDEXES IN t3;
614Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
615t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
107SET innodb_fake_changes=1;616SET innodb_fake_changes=1;
617BEGIN;
108UPDATE t3 set b=lpad('b',11000,'c') where a=1;618UPDATE t3 set b=lpad('b',11000,'c') where a=1;
109COMMIT;619COMMIT;
110ERROR HY000: Got error 131 during COMMIT620ERROR HY000: Got error 131 during COMMIT
111SET innodb_fake_changes=default;621SET innodb_fake_changes=0;
112# Verify that the fake changes to t3 did not leak through
113CHECK TABLE t3;622CHECK TABLE t3;
114Table Op Msg_type Msg_text623Table Op Msg_type Msg_text
115test.t3 check status OK624test.t3 check status OK
625SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
626SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
627SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
628SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
629SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
630SELECT 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';
631SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t3';
116should_be_1632should_be_1
11716331
634SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
635should_be_0
6360
637SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
638should_be_0
6390
640SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
641should_be_0
6420
643SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
644should_be_0
6450
646SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
647should_be_0
6480
649SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
650should_be_0
6510
652SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
653should_be_0
6540
655SHOW INDEXES IN t3;
656Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
657t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
118DROP TABLE t1, t3;658DROP TABLE t1, t3;
119SET @@GLOBAL.userstat= default;659SET @@GLOBAL.userstat= default;
120660
=== modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result'
--- Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result 2012-10-17 11:30:19 +0000
+++ Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result 2013-07-15 16:29:43 +0000
@@ -1,7 +1,25 @@
1DROP TABLE IF EXISTS t1;1DROP TABLE IF EXISTS t1;
2SET @@GLOBAL.userstat=ON;
2CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB;3CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB;
3INSERT INTO t1 VALUES (1,1);4INSERT INTO t1 VALUES (1,1);
4SET autocommit=1;5SET autocommit=1;
6SELECT @@global.userstat = 1 AS should_be_1;
7should_be_1
81
9ANALYZE TABLE t1;
10Table Op Msg_type Msg_text
11test.t1 analyze status OK
12SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
13SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
14SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
15SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
16SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
17SELECT 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';
18SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
19SHOW INDEXES IN t1;
20Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
21t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
22t1 0 b 1 b A 1 NULL NULL YES BTREE
5SET innodb_fake_changes=1;23SET innodb_fake_changes=1;
6# Confirm that duplicate key errors on REPLACE works24# Confirm that duplicate key errors on REPLACE works
7REPLACE INTO t1 VALUES (1,1);25REPLACE INTO t1 VALUES (1,1);
@@ -34,10 +52,42 @@
34INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;52INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
35ERROR HY000: Got error 131 during COMMIT53ERROR HY000: Got error 131 during COMMIT
36SET innodb_fake_changes=0;54SET innodb_fake_changes=0;
37SELECT * from t1;
38a b
391 1
40CHECK TABLE t1;55CHECK TABLE t1;
41Table Op Msg_type Msg_text56Table Op Msg_type Msg_text
42test.t1 check status OK57test.t1 check status OK
58SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
59SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
60SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
61SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
62SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
63SELECT 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';
64SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
65should_be_1
661
67SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
68should_be_0
690
70SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
71should_be_0
720
73SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
74should_be_0
750
76SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
77should_be_0
780
79SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
80should_be_0
810
82SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
83should_be_0
840
85SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
86should_be_0
870
88SHOW INDEXES IN t1;
89Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
90t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
91t1 0 b 1 b A 1 NULL NULL YES BTREE
43DROP TABLE t1;92DROP TABLE t1;
93SET @@GLOBAL.userstat=default;
4494
=== modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result'
--- Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result 2012-10-16 11:18:45 +0000
+++ Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result 2013-07-15 16:29:43 +0000
@@ -1,7 +1,24 @@
1DROP TABLE IF EXISTS t1;1DROP TABLE IF EXISTS t1;
2SET @@GLOBAL.userstat=ON;
2Test compressed3Test compressed
3CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;4CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;
4INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));5INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));
6SELECT @@global.userstat = 1 AS should_be_1;
7should_be_1
81
9ANALYZE TABLE t1;
10Table Op Msg_type Msg_text
11test.t1 analyze status OK
12SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
13SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
14SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
15SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
16SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
17SELECT 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';
18SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
19SHOW INDEXES IN t1;
20Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
21t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
5SET innodb_fake_changes=1;22SET innodb_fake_changes=1;
6INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);23INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);
7ERROR HY000: Got error 131 during COMMIT24ERROR HY000: Got error 131 during COMMIT
@@ -11,12 +28,59 @@
11CHECK TABLE t1;28CHECK TABLE t1;
12Table Op Msg_type Msg_text29Table Op Msg_type Msg_text
13test.t1 check status OK30test.t1 check status OK
31SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
32SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
33SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
34SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
35SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
36SELECT 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';
37SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
14should_be_138should_be_1
151391
40SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
41should_be_0
420
43SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
44should_be_0
450
46SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
47should_be_0
480
49SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
50should_be_0
510
52SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
53should_be_0
540
55SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
56should_be_0
570
58SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
59should_be_0
600
61SHOW INDEXES IN t1;
62Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
63t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
16DROP TABLE t1;64DROP TABLE t1;
17Test for uncompressed65Test for uncompressed
18CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;66CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;
19INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));67INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));
68SELECT @@global.userstat = 1 AS should_be_1;
69should_be_1
701
71ANALYZE TABLE t1;
72Table Op Msg_type Msg_text
73test.t1 analyze status OK
74SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
75SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
76SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
77SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
78SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
79SELECT 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';
80SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
81SHOW INDEXES IN t1;
82Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
83t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
20SET innodb_fake_changes=1;84SET innodb_fake_changes=1;
21ERROR HY000: Got error 131 during COMMIT85ERROR HY000: Got error 131 during COMMIT
22ERROR HY000: Got error 131 during COMMIT86ERROR HY000: Got error 131 during COMMIT
@@ -122,11 +186,58 @@
122CHECK TABLE t1;186CHECK TABLE t1;
123Table Op Msg_type Msg_text187Table Op Msg_type Msg_text
124test.t1 check status OK188test.t1 check status OK
189SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
190SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
191SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
192SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
193SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
194SELECT 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';
195SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
125should_be_1196should_be_1
12611971
198SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
199should_be_0
2000
201SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
202should_be_0
2030
204SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
205should_be_0
2060
207SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
208should_be_0
2090
210SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
211should_be_0
2120
213SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
214should_be_0
2150
216SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
217should_be_0
2180
219SHOW INDEXES IN t1;
220Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
221t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
127DROP TABLE t1;222DROP TABLE t1;
128CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;223CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;
129INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b"));224INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b"));
225SELECT @@global.userstat = 1 AS should_be_1;
226should_be_1
2271
228ANALYZE TABLE t1;
229Table Op Msg_type Msg_text
230test.t1 analyze status OK
231SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
232SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
233SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
234SELECT NUM_ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
235SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
236SELECT 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';
237SELECT MODIFIED_COUNTER INTO @table_dml_counter_1 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
238SHOW INDEXES IN t1;
239Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
240t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
130SET innodb_fake_changes=1;241SET innodb_fake_changes=1;
131INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));242INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));
132ERROR HY000: Got error 131 during COMMIT243ERROR HY000: Got error 131 during COMMIT
@@ -134,8 +245,39 @@
134CHECK TABLE t1;245CHECK TABLE t1;
135Table Op Msg_type Msg_text246Table Op Msg_type Msg_text
136test.t1 check status OK247test.t1 check status OK
248SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
249SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
250SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
251SELECT NUM_ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
252SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
253SELECT 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';
254SELECT MODIFIED_COUNTER INTO @table_dml_counter_2 FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1';
137should_be_1255should_be_1
13812561
257SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
258should_be_0
2590
260SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
261should_be_0
2620
263SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
264should_be_0
2650
266SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
267should_be_0
2680
269SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
270should_be_0
2710
272SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
273should_be_0
2740
275SELECT @table_dml_counter_2 - @table_dml_counter_1 AS should_be_0;
276should_be_0
2770
278SHOW INDEXES IN t1;
279Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
280t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
139DROP TABLE t1;281DROP TABLE t1;
140CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;282CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;
141INSERT INTO t1 VALUES(2, LPAD("v", 3, "b"), LPAD("a", 100, "b"));283INSERT INTO t1 VALUES(2, LPAD("v", 3, "b"), LPAD("a", 100, "b"));
@@ -149,3 +291,4 @@
149should_be_1291should_be_1
15012921
151DROP TABLE t1;293DROP TABLE t1;
294SET @@GLOBAL.userstat=default;
152295
=== modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes.test'
--- Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2013-05-06 15:43:51 +0000
+++ Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2013-07-15 16:29:43 +0000
@@ -4,7 +4,6 @@
4DROP TABLE IF EXISTS t1, t2, t3;4DROP TABLE IF EXISTS t1, t2, t3;
5--enable_warnings5--enable_warnings
66
7
8--echo # Checking variables7--echo # Checking variables
9SHOW VARIABLES LIKE 'innodb_fake_changes';8SHOW VARIABLES LIKE 'innodb_fake_changes';
10SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';9SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.SESSION_VARIABLES WHERE VARIABLE_NAME='innodb_fake_changes';
@@ -17,21 +16,13 @@
1716
18--echo # Explicit COMMIT should fail when innodb_fake_changes is enabled17--echo # Explicit COMMIT should fail when innodb_fake_changes is enabled
19--echo # DML should be fine18--echo # DML should be fine
20SET @@GLOBAL.userstat= TRUE;19SET @@GLOBAL.userstat=TRUE;
21CREATE TABLE t1 (a INT) ENGINE=InnoDB;20CREATE TABLE t1 (a INT) ENGINE=InnoDB;
22INSERT INTO t1 VALUES (1);21INSERT INTO t1 VALUES (1);
2322
24let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`;23--let $fake_changes_table=t1
25let $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
26let $innodb_rows_deleted_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;
27let $innodb_rows_updated_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`;
28let $table_rows_estimate_1= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`;
29let $table_dml_counter_1= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`;
30let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;
31let $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'`;
3225
33SET autocommit=0;
34SET innodb_fake_changes=1;
35BEGIN;26BEGIN;
36INSERT INTO t1 VALUES (2);27INSERT INTO t1 VALUES (2);
37UPDATE t1 SET a=0;28UPDATE t1 SET a=0;
@@ -39,107 +30,340 @@
39SELECT * FROM t1;30SELECT * FROM t1;
40--error 118031--error 1180
41COMMIT;32COMMIT;
42SET innodb_fake_changes=default;33
43--echo # Verify that the fake changes to t1 did not leak through34--source include/stop_fake_changes.inc
44CHECK TABLE t1;35
45let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`;36DROP TABLE t1;
46let $innodb_rows_inserted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_inserted'`;37
47let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;38#
48let $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
49let $table_rows_estimate_2= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`;40#
50let $table_dml_counter_2= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t1'`;41CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB;
51let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;42INSERT INTO t1 VALUES (1,1);
52let $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
53--disable_query_log44--source include/start_fake_changes.inc
54eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;45
55eval SELECT "$innodb_rows_inserted_2" - "$innodb_rows_inserted_1" AS should_be_0;46# Test with autocommit
56eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0;47--error ER_ERROR_DURING_COMMIT
57eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0;48SELECT * FROM t1;
58eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0;49--error ER_ERROR_DURING_COMMIT
59eval SELECT "$table_dml_counter_2" - "$table_dml_counter_1" AS should_be_0;50INSERT INTO t1 VALUES (2,2);
60eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0;51--error ER_DUP_ENTRY
61eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0;52UPDATE t1 SET a=0 where b=1;
62--enable_query_log53--error ER_ERROR_DURING_COMMIT
63DROP TABLE t1;54UPDATE t1 SET b=0 where a=1;
55--error ER_ERROR_DURING_COMMIT
56UPDATE t1 SET b=0 where a=2;
57--error ER_ERROR_DURING_COMMIT
58DELETE FROM t1 where b=2;
59--error ER_ERROR_DURING_COMMIT
60DELETE FROM t1 where b=1;
61--error ER_ERROR_DURING_COMMIT
62DELETE FROM t1 where a=2;
63--error ER_ERROR_DURING_COMMIT
64DELETE FROM t1 where a=1;
65--error ER_ERROR_DURING_COMMIT
66REPLACE INTO t1 values (2,3);
67
68# Test with transactions
69BEGIN;
70SELECT * FROM t1;
71--error ER_ERROR_DURING_COMMIT
72COMMIT;
73
74BEGIN;
75INSERT INTO t1 VALUES (2,2);
76--error ER_ERROR_DURING_COMMIT
77COMMIT;
78
79BEGIN;
80--error ER_DUP_ENTRY
81UPDATE t1 SET a=0 where b=1;
82--error ER_ERROR_DURING_COMMIT
83COMMIT;
84
85BEGIN;
86UPDATE t1 SET b=0 where a=1;
87--error ER_ERROR_DURING_COMMIT
88COMMIT;
89
90BEGIN;
91UPDATE t1 SET b=0 where a=2;
92--error ER_ERROR_DURING_COMMIT
93COMMIT;
94
95BEGIN;
96DELETE FROM t1 where b=2;
97--error ER_ERROR_DURING_COMMIT
98COMMIT;
99
100BEGIN;
101DELETE FROM t1 where b=1;
102--error ER_ERROR_DURING_COMMIT
103COMMIT;
104
105BEGIN;
106DELETE FROM t1 where a=2;
107--error ER_ERROR_DURING_COMMIT
108COMMIT;
109
110BEGIN;
111DELETE FROM t1 where a=1;
112--error ER_ERROR_DURING_COMMIT
113COMMIT;
114
115BEGIN;
116REPLACE INTO t1 values (2,3);
117--error ER_ERROR_DURING_COMMIT
118COMMIT;
119
120--error ER_ERROR_DURING_COMMIT
121INSERT INTO t1 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
122--error ER_ERROR_DURING_COMMIT
123CREATE INDEX bx ON t1(b);
124
125--source include/stop_fake_changes.inc
126
127DROP TABLE t1;
128
129#
130# Test all accesses through the primary index
131#
132CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
133INSERT INTO t2 VALUES (1, 1);
134
135--let $fake_changes_table=t2
136--source include/start_fake_changes.inc
137
138# Test with autocommit
139--error ER_ERROR_DURING_COMMIT
140SELECT * FROM t2;
141--error ER_ERROR_DURING_COMMIT
142INSERT INTO t2 VALUES (2,2);
143--error ER_ERROR_DURING_COMMIT
144UPDATE t2 SET b=0 where a=1;
145--error ER_ERROR_DURING_COMMIT
146UPDATE t2 SET b=0 where a=2;
147--error ER_ERROR_DURING_COMMIT
148DELETE FROM t2 where b=2;
149--error ER_ERROR_DURING_COMMIT
150DELETE FROM t2 where b=1;
151--error ER_ERROR_DURING_COMMIT
152DELETE FROM t2 where a=2;
153--error ER_ERROR_DURING_COMMIT
154DELETE FROM t2 where a=1;
155--error ER_ERROR_DURING_COMMIT
156REPLACE INTO t2 values (2,3);
157--error ER_ERROR_DURING_COMMIT
158REPLACE INTO t2 VALUES (1,1);
159--error ER_ERROR_DURING_COMMIT
160REPLACE INTO t2 VALUES (1,2);
161
162# Test with transactions
163BEGIN;
164SELECT * FROM t2;
165--error ER_ERROR_DURING_COMMIT
166COMMIT;
167
168BEGIN;
169INSERT INTO t2 VALUES (2,2);
170--error ER_ERROR_DURING_COMMIT
171COMMIT;
172
173BEGIN;
174UPDATE t2 SET b=0 where a=1;
175--error ER_ERROR_DURING_COMMIT
176COMMIT;
177
178BEGIN;
179UPDATE t2 SET b=0 where a=2;
180--error ER_ERROR_DURING_COMMIT
181COMMIT;
182
183BEGIN;
184DELETE FROM t2 where b=2;
185--error ER_ERROR_DURING_COMMIT
186COMMIT;
187
188BEGIN;
189DELETE FROM t2 where b=1;
190--error ER_ERROR_DURING_COMMIT
191COMMIT;
192
193BEGIN;
194DELETE FROM t2 where a=2;
195--error ER_ERROR_DURING_COMMIT
196COMMIT;
197
198BEGIN;
199DELETE FROM t2 where a=1;
200--error ER_ERROR_DURING_COMMIT
201COMMIT;
202
203BEGIN;
204REPLACE INTO t2 values (2,3);
205--error ER_ERROR_DURING_COMMIT
206COMMIT;
207
208BEGIN;
209REPLACE INTO t2 VALUES (1,1);
210--error ER_ERROR_DURING_COMMIT
211COMMIT;
212
213BEGIN;
214REPLACE INTO t2 VALUES (1,2);
215--error ER_ERROR_DURING_COMMIT
216COMMIT;
217
218# Confirm that duplicate key errors are OK
219BEGIN;
220REPLACE INTO t2 VALUES (1,2);
221SELECT * from t2;
222REPLACE INTO t2 VALUES (1,1);
223SELECT * from t2;
224ROLLBACK;
225
226BEGIN;
227--error ER_DUP_ENTRY
228INSERT INTO t2 VALUES (1,1);
229--error ER_DUP_ENTRY
230INSERT INTO t2 VALUES (1,2);
231ROLLBACK;
232
233--error ER_ERROR_DURING_COMMIT
234INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
235--error ER_ERROR_DURING_COMMIT
236INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=b+10;
237--error ER_ERROR_DURING_COMMIT
238INSERT INTO t2 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
239--error ER_ERROR_DURING_COMMIT
240CREATE INDEX bx ON t2(b);
241
242--source include/stop_fake_changes.inc
243
244DROP TABLE t2;
245
246#
247# Test TEXT
248#
249CREATE TABLE t3 (a INT PRIMARY KEY, B TEXT) ENGINE=InnoDB;
250INSERT INTO t3 VALUES (1, '');
251
252--let $fake_changes_table=t3
253--source include/start_fake_changes.inc
254
255# Test with autocommit
256--error ER_ERROR_DURING_COMMIT
257SELECT * FROM t3;
258--error ER_ERROR_DURING_COMMIT
259INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
260--error ER_ERROR_DURING_COMMIT
261UPDATE t3 SET a=0 where a=1;
262--error ER_ERROR_DURING_COMMIT
263DELETE FROM t3 where a=2;
264--error ER_ERROR_DURING_COMMIT
265DELETE FROM t3 where a=1;
266--error ER_ERROR_DURING_COMMIT
267REPLACE INTO t3 values (2,lpad('a',9000,'q'));
268--error ER_ERROR_DURING_COMMIT
269INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
270
271# Test with transactions
272BEGIN;
273SELECT * FROM t3;
274--error ER_ERROR_DURING_COMMIT
275COMMIT;
276
277BEGIN;
278INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
279--error ER_ERROR_DURING_COMMIT
280COMMIT;
281
282BEGIN;
283UPDATE t3 SET a=0 where a=1;
284--error ER_ERROR_DURING_COMMIT
285COMMIT;
286
287BEGIN;
288DELETE FROM t3 where a=2;
289--error ER_ERROR_DURING_COMMIT
290COMMIT;
291
292BEGIN;
293DELETE FROM t3 where a=1;
294--error ER_ERROR_DURING_COMMIT
295COMMIT;
296
297BEGIN;
298REPLACE INTO t3 values (2,lpad('a',9000,'q'));
299--error ER_ERROR_DURING_COMMIT
300COMMIT;
301
302BEGIN;
303INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
304--error ER_ERROR_DURING_COMMIT
305COMMIT;
306
307--source include/stop_fake_changes.inc
308
309DROP TABLE t3;
64310
65--echo # DDL must result in error311--echo # DDL must result in error
66CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;312CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
67SET autocommit=0;313
68SET innodb_fake_changes=1;314--let $fake_changes_table=t1
315--source include/start_fake_changes.inc
316
69BEGIN;317BEGIN;
70--error ER_ILLEGAL_HA318--error ER_ILLEGAL_HA
71CREATE TABLE t2 (a INT) ENGINE=InnoDB;319CREATE TABLE t2 (a INT) ENGINE=InnoDB;
72--error 1051320--error 1051
73DROP TABLE t1;321DROP TABLE t1;
74--error 1180322--error 1031
75TRUNCATE TABLE t1;323TRUNCATE TABLE t1;
76--error 1180324--error 1180
77ALTER TABLE t1 ENGINE=MyISAM;325ALTER TABLE t1 ENGINE=MyISAM;
78ROLLBACK;326ROLLBACK;
79327
328--source include/stop_fake_changes.inc
329
80# Test stat counters foreign key constraints330# Test stat counters foreign key constraints
81SET innodb_fake_changes=0;
82INSERT INTO t1 VALUES (1), (2);331INSERT INTO t1 VALUES (1), (2);
83COMMIT;332
84CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),333CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),
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;
86INSERT INTO t2 VALUES (1, 1);335INSERT INTO t2 VALUES (1, 1);
87INSERT INTO t2 VALUES (2, 2);336INSERT INTO t2 VALUES (2, 2);
88COMMIT;337COMMIT;
89338
90let $t2_checksum_1= `CHECKSUM TABLE t2 EXTENDED`;339--let $fake_changes_table=t1
91let $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
92let $innodb_rows_updated_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`;
93let $table_rows_estimate_1= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`;
94let $table_dml_counter_1= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`;
95let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
96let $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'`;
97341
98SET innodb_fake_changes=1;342BEGIN;
99DELETE FROM t1 WHERE a=1;343DELETE FROM t1 WHERE a=1;
100UPDATE t1 SET a=3 WHERE a=2;344UPDATE t1 SET a=3 WHERE a=2;
101--error 1180345--error 1180
102COMMIT;346COMMIT;
103347
104let $t2_checksum_2= `CHECKSUM TABLE t2 EXTENDED`;348--source include/stop_fake_changes.inc
105let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;349
106let $innodb_rows_updated_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`;
107let $table_rows_estimate_2= `SELECT NUM_ROWS FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`;
108let $table_dml_counter_2= `SELECT MODIFIED_COUNTER FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE NAME LIKE 'test/t2'`;
109let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
110let $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'`;
111
112--disable_query_log
113eval SELECT "$t2_checksum_1" LIKE "$t2_checksum_2" AS should_be_1;
114eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0;
115eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0;
116eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0;
117eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0;
118eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0;
119eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0;
120--enable_query_log
121
122SET innodb_fake_changes=0;
123DROP TABLE t2;350DROP TABLE t2;
124351
125# Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update352# Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update
126CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;353CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;
127INSERT INTO t3 VALUES (1,'');354INSERT INTO t3 VALUES (1,'');
128COMMIT;
129let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`;355let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`;
130SET innodb_fake_changes=1;356
131357--let $fake_changes_table=t3
358--source include/start_fake_changes.inc
359
360BEGIN;
132UPDATE t3 set b=lpad('b',11000,'c') where a=1;361UPDATE t3 set b=lpad('b',11000,'c') where a=1;
133--error ER_ERROR_DURING_COMMIT362--error ER_ERROR_DURING_COMMIT
134COMMIT;363COMMIT;
135364
136SET innodb_fake_changes=default;365--source include/stop_fake_changes.inc
137--echo # Verify that the fake changes to t3 did not leak through366
138CHECK TABLE t3;
139let $t3_checksum_2= `CHECKSUM TABLE t3 EXTENDED`;
140--disable_query_log
141eval SELECT "$t3_checksum_1" LIKE "$t3_checksum_2" AS should_be_1;
142--enable_query_log
143DROP TABLE t1, t3;367DROP TABLE t1, t3;
144368
145SET @@GLOBAL.userstat= default;369SET @@GLOBAL.userstat= default;
146370
=== modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test'
--- Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test 2012-10-17 11:30:19 +0000
+++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_898306.test 2013-07-15 16:29:43 +0000
@@ -7,11 +7,15 @@
7DROP TABLE IF EXISTS t1;7DROP TABLE IF EXISTS t1;
8--enable_warnings8--enable_warnings
99
10SET @@GLOBAL.userstat=ON;
11
10CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB;12CREATE TABLE t1 (a INT primary key, b int, unique key (b)) ENGINE=InnoDB;
11INSERT INTO t1 VALUES (1,1);13INSERT INTO t1 VALUES (1,1);
1214
13SET autocommit=1;15SET autocommit=1;
14SET innodb_fake_changes=1;16
17--let $fake_changes_table=t1
18--source include/start_fake_changes.inc
1519
16--echo # Confirm that duplicate key errors on REPLACE works20--echo # Confirm that duplicate key errors on REPLACE works
1721
@@ -52,8 +56,8 @@
52--error ER_ERROR_DURING_COMMIT56--error ER_ERROR_DURING_COMMIT
53INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;57INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
5458
55SET innodb_fake_changes=0;59--source include/stop_fake_changes.inc
56SELECT * from t1;
57CHECK TABLE t1;
5860
59DROP TABLE t1;61DROP TABLE t1;
62
63SET @@GLOBAL.userstat=default;
6064
=== modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test'
--- Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test 2012-10-17 11:30:19 +0000
+++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_bug_917942.test 2013-07-15 16:29:43 +0000
@@ -7,6 +7,8 @@
7DROP TABLE IF EXISTS t1;7DROP TABLE IF EXISTS t1;
8--enable_warnings8--enable_warnings
99
10SET @@GLOBAL.userstat=ON;
11
10#12#
11# Confirm that cursor->tree_height is initialized when calling btr_cur_pessimistic_update13# Confirm that cursor->tree_height is initialized when calling btr_cur_pessimistic_update
12# for transactions with innodb_fake_changes set14# for transactions with innodb_fake_changes set
@@ -16,30 +18,25 @@
16CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;18CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;
1719
18INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));20INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));
19let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`;
2021
21SET innodb_fake_changes=1;22--let $fake_changes_table=t1
23--source include/start_fake_changes.inc
2224
23--error 118025--error 1180
24INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);26INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);
25--error 118027--error 1180
26UPDATE t1 SET T = LPAD("A", 4600, "b");28UPDATE t1 SET T = LPAD("A", 4600, "b");
2729
28SET innodb_fake_changes=0;30--source include/stop_fake_changes.inc
29CHECK TABLE t1;31
30let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`;
31--disable_query_log
32eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;
33--enable_query_log
34DROP TABLE t1;32DROP TABLE t1;
3533
36--echo Test for uncompressed34--echo Test for uncompressed
37CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;35CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;
3836
39INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));37INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));
40let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`;
4138
42SET innodb_fake_changes=1;39--source include/start_fake_changes.inc
4340
44--disable_query_log41--disable_query_log
45let $x = 50;42let $x = 50;
@@ -53,12 +50,8 @@
53}50}
54--enable_query_log51--enable_query_log
5552
56SET innodb_fake_changes=0;53--source include/stop_fake_changes.inc
57CHECK TABLE t1;54
58let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`;
59--disable_query_log
60eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;
61--enable_query_log
62DROP TABLE t1;55DROP TABLE t1;
6356
64#57#
@@ -69,19 +62,14 @@
69CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;62CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;
7063
71INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b")); 64INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b"));
72let $t1_checksum_1= `CHECKSUM TABLE t1 EXTENDED`;
7365
74SET innodb_fake_changes=1;66--source include/start_fake_changes.inc
7567
76--error 118068--error 1180
77INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));69INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));
7870
79SET innodb_fake_changes=0;71--source include/stop_fake_changes.inc
80CHECK TABLE t1;72
81let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`;
82--disable_query_log
83eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;
84--enable_query_log
85DROP TABLE t1;73DROP TABLE t1;
8674
87CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;75CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;
@@ -101,3 +89,5 @@
101eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;89eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;
102--enable_query_log90--enable_query_log
103DROP TABLE t1;91DROP TABLE t1;
92
93SET @@GLOBAL.userstat=default;
10494
=== modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test'
--- Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test 2012-10-11 14:18:34 +0000
+++ Percona-Server/mysql-test/t/percona_innodb_fake_changes_locks.test 2013-07-15 16:29:43 +0000
@@ -16,6 +16,7 @@
16--connection conn116--connection conn1
17--echo # Verifying that X_LOCK not acquired17--echo # Verifying that X_LOCK not acquired
18SET autocommit=0;18SET autocommit=0;
19# Cannot use start_fake_changes.inc as conn2 issues real workload before reverting
19SET innodb_fake_changes=1;20SET innodb_fake_changes=1;
20BEGIN;21BEGIN;
21SELECT * FROM t1 FOR UPDATE;22SELECT * FROM t1 FOR UPDATE;
2223
=== modified file 'Percona-Server/sql/sql_insert.cc'
--- Percona-Server/sql/sql_insert.cc 2013-06-25 13:13:06 +0000
+++ Percona-Server/sql/sql_insert.cc 2013-07-15 16:29:43 +0000
@@ -1860,7 +1860,7 @@
1860 2) do nothing on fake delete1860 2) do nothing on fake delete
1861 3) goto #11861 3) goto #1
1862 */1862 */
1863 if (table->file->is_fake_change_enabled(thd))1863 if (unlikely(table->file->is_fake_change_enabled(thd)))
1864 goto ok_or_after_trg_err;1864 goto ok_or_after_trg_err;
1865 /* Let us attempt do write_row() once more */1865 /* Let us attempt do write_row() once more */
1866 }1866 }
18671867
=== modified file 'Percona-Server/storage/innobase/btr/btr0cur.cc'
--- Percona-Server/storage/innobase/btr/btr0cur.cc 2013-06-25 13:13:06 +0000
+++ Percona-Server/storage/innobase/btr/btr0cur.cc 2013-07-15 16:29:43 +0000
@@ -1251,7 +1251,7 @@
1251 rec_t* rec;1251 rec_t* rec;
1252 roll_ptr_t roll_ptr;1252 roll_ptr_t roll_ptr;
12531253
1254 if (thr && thr_get_trx(thr)->fake_changes) {1254 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1255 /* skip LOCK, UNDO */1255 /* skip LOCK, UNDO */
1256 return(DB_SUCCESS);1256 return(DB_SUCCESS);
1257 }1257 }
@@ -1513,7 +1513,7 @@
1513 goto fail_err;1513 goto fail_err;
1514 }1514 }
15151515
1516 if (thr && thr_get_trx(thr)->fake_changes) {1516 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1517 /* skip CHANGE, LOG */1517 /* skip CHANGE, LOG */
1518 *big_rec = big_rec_vec;1518 *big_rec = big_rec_vec;
1519 return(err); /* == DB_SUCCESS */1519 return(err); /* == DB_SUCCESS */
@@ -1718,7 +1718,7 @@
1718 }1718 }
1719 }1719 }
17201720
1721 if (thr && thr_get_trx(thr)->fake_changes) {1721 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1722 /* skip CHANGE, LOG */1722 /* skip CHANGE, LOG */
1723 if (n_reserved > 0) {1723 if (n_reserved > 0) {
1724 fil_space_release_free_extents(index->space,1724 fil_space_release_free_extents(index->space,
@@ -1784,7 +1784,7 @@
17841784
1785 ut_ad(thr || (flags & BTR_NO_LOCKING_FLAG));1785 ut_ad(thr || (flags & BTR_NO_LOCKING_FLAG));
17861786
1787 if (thr && thr_get_trx(thr)->fake_changes) {1787 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1788 /* skip LOCK, UNDO */1788 /* skip LOCK, UNDO */
1789 return(DB_SUCCESS);1789 return(DB_SUCCESS);
1790 }1790 }
@@ -2397,7 +2397,7 @@
2397 goto func_exit;2397 goto func_exit;
2398 }2398 }
23992399
2400 if (thr && thr_get_trx(thr)->fake_changes) {2400 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
2401 /* skip CHANGE, LOG */2401 /* skip CHANGE, LOG */
2402 ut_ad(err == DB_SUCCESS);2402 ut_ad(err == DB_SUCCESS);
2403 return(DB_SUCCESS);2403 return(DB_SUCCESS);
@@ -2724,7 +2724,7 @@
2724 ut_ad(flags & BTR_KEEP_POS_FLAG);2724 ut_ad(flags & BTR_KEEP_POS_FLAG);
2725 }2725 }
27262726
2727 if (trx->fake_changes) {2727 if (UNIV_UNLIKELY(trx->fake_changes)) {
2728 /* skip CHANGE, LOG */2728 /* skip CHANGE, LOG */
2729 err = DB_SUCCESS;2729 err = DB_SUCCESS;
2730 goto return_after_reservations;2730 goto return_after_reservations;
@@ -3056,9 +3056,9 @@
3056 ut_ad(dict_index_is_clust(index));3056 ut_ad(dict_index_is_clust(index));
3057 ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets)));3057 ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets)));
30583058
3059 if (thr && thr_get_trx(thr)->fake_changes) {3059 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
3060 /* skip LOCK, UNDO, CHANGE, LOG */3060 /* skip LOCK, UNDO, CHANGE, LOG */
3061 return(DB_SUCCESS);3061 return(DB_SUCCESS);
3062 }3062 }
30633063
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,
@@ -3199,7 +3199,7 @@
3199 rec_t* rec;3199 rec_t* rec;
3200 dberr_t err;3200 dberr_t err;
32013201
3202 if (thr && thr_get_trx(thr)->fake_changes) {3202 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
3203 /* skip LOCK, CHANGE, LOG */3203 /* skip LOCK, CHANGE, LOG */
3204 return(DB_SUCCESS);3204 return(DB_SUCCESS);
3205 }3205 }
32063206
=== modified file 'Percona-Server/storage/innobase/handler/ha_innodb.cc'
--- Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:29:41 +0000
+++ Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:29:43 +0000
@@ -3784,9 +3784,11 @@
3784 trx_search_latch_release_if_reserved(trx);3784 trx_search_latch_release_if_reserved(trx);
3785 }3785 }
37863786
3787 if (trx->fake_changes &&3787 if (UNIV_UNLIKELY(trx->fake_changes &&
3788 (commit_trx ||3788 (commit_trx ||
3789 (!thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))) {3789 (!thd_test_options(thd,
3790 OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))))) {
3791
3790 /* rollback implicitly */3792 /* rollback implicitly */
3791 innobase_rollback(hton, thd, commit_trx);3793 innobase_rollback(hton, thd, commit_trx);
3792 /* because debug assertion code complains, if something left */3794 /* because debug assertion code complains, if something left */
@@ -9937,7 +9939,7 @@
99379939
9938 trx = innobase_trx_allocate(thd);9940 trx = innobase_trx_allocate(thd);
99399941
9940 if (trx->fake_changes) {9942 if (UNIV_UNLIKELY(trx->fake_changes)) {
9941 innobase_commit_low(trx);9943 innobase_commit_low(trx);
9942 trx_free_for_mysql(trx);9944 trx_free_for_mysql(trx);
9943 DBUG_RETURN(HA_ERR_WRONG_COMMAND);9945 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
@@ -10309,7 +10311,7 @@
10309 DBUG_RETURN(HA_ERR_CRASHED);10311 DBUG_RETURN(HA_ERR_CRASHED);
10310 }10312 }
1031110313
10312 if (prebuilt->trx->fake_changes) {10314 if (UNIV_UNLIKELY(prebuilt->trx->fake_changes)) {
10313 DBUG_RETURN(HA_ERR_WRONG_COMMAND);10315 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
10314 }10316 }
1031510317
@@ -10397,7 +10399,7 @@
1039710399
10398 trx = innobase_trx_allocate(thd);10400 trx = innobase_trx_allocate(thd);
1039910401
10400 if (trx->fake_changes) {10402 if (UNIV_UNLIKELY(trx->fake_changes)) {
10401 innobase_commit_low(trx);10403 innobase_commit_low(trx);
10402 trx_free_for_mysql(trx);10404 trx_free_for_mysql(trx);
10403 DBUG_RETURN(HA_ERR_WRONG_COMMAND);10405 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
@@ -10527,7 +10529,7 @@
10527#endif10529#endif
10528 trx = innobase_trx_allocate(thd);10530 trx = innobase_trx_allocate(thd);
1052910531
10530 if (trx->fake_changes) {10532 if (UNIV_UNLIKELY(trx->fake_changes)) {
10531 my_free(namebuf);10533 my_free(namebuf);
10532 innobase_commit_low(trx);10534 innobase_commit_low(trx);
10533 trx_free_for_mysql(trx);10535 trx_free_for_mysql(trx);
@@ -10707,7 +10709,7 @@
10707 trx_search_latch_release_if_reserved(parent_trx);10709 trx_search_latch_release_if_reserved(parent_trx);
1070810710
10709 trx = innobase_trx_allocate(thd);10711 trx = innobase_trx_allocate(thd);
10710 if (trx->fake_changes) {10712 if (UNIV_UNLIKELY(trx->fake_changes)) {
10711 innobase_commit_low(trx);10713 innobase_commit_low(trx);
10712 trx_free_for_mysql(trx);10714 trx_free_for_mysql(trx);
10713 DBUG_RETURN(HA_ERR_WRONG_COMMAND);10715 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
1071410716
=== modified file 'Percona-Server/storage/innobase/lock/lock0lock.cc'
--- Percona-Server/storage/innobase/lock/lock0lock.cc 2013-06-25 13:13:06 +0000
+++ Percona-Server/storage/innobase/lock/lock0lock.cc 2013-07-15 16:29:43 +0000
@@ -4415,7 +4415,7 @@
44154415
4416 trx = thr_get_trx(thr);4416 trx = thr_get_trx(thr);
44174417
4418 if (trx->fake_changes && mode == LOCK_IX) {4418 if (UNIV_UNLIKELY(trx->fake_changes && mode == LOCK_IX)) {
4419 mode = LOCK_IS;4419 mode = LOCK_IS;
4420 }4420 }
44214421
@@ -5943,7 +5943,7 @@
59435943
5944 trx = thr_get_trx(thr);5944 trx = thr_get_trx(thr);
59455945
5946 if (trx->fake_changes) {5946 if (UNIV_UNLIKELY(trx->fake_changes)) {
5947 return(DB_SUCCESS);5947 return(DB_SUCCESS);
5948 }5948 }
59495949
@@ -6159,7 +6159,7 @@
6159 return(DB_SUCCESS);6159 return(DB_SUCCESS);
6160 }6160 }
61616161
6162 if (thr && thr_get_trx(thr)->fake_changes) {6162 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
6163 return(DB_SUCCESS);6163 return(DB_SUCCESS);
6164 }6164 }
61656165
@@ -6225,7 +6225,7 @@
6225 return(DB_SUCCESS);6225 return(DB_SUCCESS);
6226 }6226 }
62276227
6228 if (thr && thr_get_trx(thr)->fake_changes) {6228 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
6229 return(DB_SUCCESS);6229 return(DB_SUCCESS);
6230 }6230 }
62316231
62326232
=== modified file 'Percona-Server/storage/innobase/que/que0que.cc'
--- Percona-Server/storage/innobase/que/que0que.cc 2013-05-10 09:39:17 +0000
+++ Percona-Server/storage/innobase/que/que0que.cc 2013-07-15 16:29:43 +0000
@@ -1273,7 +1273,7 @@
12731273
1274 ut_a(trx->error_state == DB_SUCCESS);1274 ut_a(trx->error_state == DB_SUCCESS);
12751275
1276 if (trx->fake_changes) {1276 if (UNIV_UNLIKELY(trx->fake_changes)) {
1277 /* fake_changes should not access to system tables */1277 /* fake_changes should not access to system tables */
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");
1279 return(DB_ERROR);1279 return(DB_ERROR);
12801280
=== modified file 'Percona-Server/storage/innobase/row/row0upd.cc'
--- Percona-Server/storage/innobase/row/row0upd.cc 2013-06-20 15:16:00 +0000
+++ Percona-Server/storage/innobase/row/row0upd.cc 2013-07-15 16:29:43 +0000
@@ -2015,7 +2015,7 @@
2015 the previous invocation of this function. Mark the2015 the previous invocation of this function. Mark the
2016 off-page columns in the entry inherited. */2016 off-page columns in the entry inherited. */
20172017
2018 if (!(trx->fake_changes)) {2018 if (UNIV_LIKELY(!trx->fake_changes)) {
2019 change_ownership = row_upd_clust_rec_by_insert_inherit(2019 change_ownership = row_upd_clust_rec_by_insert_inherit(
2020 NULL, NULL, entry, node->update);2020 NULL, NULL, entry, node->update);
2021 ut_a(change_ownership);2021 ut_a(change_ownership);

Subscribers

People subscribed via source and target branches