Merge lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.5 into lp:percona-server/5.5

Proposed by Laurynas Biveinis
Status: Superseded
Proposed branch: lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.5
Merge into: lp:percona-server/5.5
Prerequisite: lp:~laurynas-biveinis/percona-server/fake-changes-binlog-5.5
Diff against target: 1845 lines (+1146/-174)
17 files modified
Percona-Server/mysql-test/include/start_fake_changes.inc (+32/-0)
Percona-Server/mysql-test/include/stop_fake_changes.inc (+32/-0)
Percona-Server/mysql-test/r/percona_innodb_fake_changes.result (+548/-40)
Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_898306.result (+48/-3)
Percona-Server/mysql-test/r/percona_innodb_fake_changes_bug_917942.result (+128/-0)
Percona-Server/mysql-test/t/percona_innodb_fake_changes.test (+302/-73)
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.c (+10/-10)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+10/-7)
Percona-Server/storage/innobase/handler/handler0alter.cc (+4/-4)
Percona-Server/storage/innobase/lock/lock0lock.c (+4/-4)
Percona-Server/storage/innobase/que/que0que.c (+1/-1)
Percona-Server/storage/innobase/row/row0ins.c (+2/-2)
Percona-Server/storage/innobase/row/row0upd.c (+1/-1)
To merge this branch: bzr merge lp:~laurynas-biveinis/percona-server/fake-changes-from-fb-5.5
Reviewer Review Type Date Requested Status
Laurynas Biveinis (community) Needs Fixing
Registry Administrators Pending
Review via email: mp+174192@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.5-param/798/

Fix bug 1190604 (Missing branch predictor annotations for fake
changes) by adding likely/unlikely/UNIV_LIKELY/UNIV_LIKELY annotations
to all the fake changes check branches that are missing them.

Fix bug 1200162 (Missing MTR tests for fake changes with BLOBs and
secondary indexes) by reviewing Facebook patch and adding
corresponding tests to our fake changes tests.

At the same time: create two new include files start_fake_changes.inc
and stop_fake_changes.inc. They start or stop fake changes and also
take the snapshot of the server state that should not change during
the fake changes workload. Use these files instead of setting
fake_changes session variable directly where applicable for additional
verification.

To post a comment you must log in.
Revision history for this message
Laurynas Biveinis (laurynas-biveinis) wrote :

start|stop_fake_changes.inc:

SELECT ROWS FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS and SHOW INDEXES may cause test instabilities if there is a non-fake-change session workload for the same table running in parallel to the fake change one and the automatic stat recalculation kicks in at a wrong time. This need either ANALYZE TABLE, either disabling auto recalc. Right now the former seems like a better option IMHO.

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:19:41 +0000
@@ -0,0 +1,32 @@
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';
22eval 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 ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table';
24eval 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';
25
26#
27# Index stats should not change, but it's only possible to inspect them
28# manually.
29#
30eval SHOW INDEXES IN $fake_changes_table;
31
32SET innodb_fake_changes=1;
033
=== 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:19:41 +0000
@@ -0,0 +1,32 @@
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';
14eval 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 ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '$fake_changes_table';
16eval 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';
17
18--disable_query_log
19eval SELECT "$t_checksum_1" LIKE "$t_checksum_2" AS should_be_1;
20--enable_query_log
21SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
22SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
23SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
24SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
25SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
26SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
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;
033
=== modified file 'Percona-Server/mysql-test/r/percona_innodb_fake_changes.result'
--- Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2012-10-17 11:56:00 +0000
+++ Percona-Server/mysql-test/r/percona_innodb_fake_changes.result 2013-07-15 16:19:41 +0000
@@ -22,10 +22,23 @@
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 ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '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';
40SHOW INDEXES IN t1;
41Table 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;42SET innodb_fake_changes=1;
30BEGIN;43BEGIN;
31INSERT INTO t1 VALUES (2);44INSERT INTO t1 VALUES (2);
@@ -36,29 +49,417 @@
361491
37COMMIT;50COMMIT;
38ERROR HY000: Got error 131 during COMMIT51ERROR HY000: Got error 131 during COMMIT
39SET innodb_fake_changes=default;52SET innodb_fake_changes=0;
40# Verify that the fake changes to t1 did not leak through53CHECK TABLE t1;
41CHECK TABLE t1;54Table Op Msg_type Msg_text
42Table Op Msg_type Msg_text55test.t1 check status OK
43test.t1 check status OK56SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
44should_be_157SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
45158SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
46should_be_059SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
47060SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
48should_be_061SELECT 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';
49062should_be_1
50should_be_0631
51064SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
52should_be_065should_be_0
530660
54should_be_067SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
55068should_be_0
56should_be_0690
57070SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
58DROP TABLE t1;71should_be_0
720
73SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
74should_be_0
750
76SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
77should_be_0
780
79SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
80should_be_0
810
82SHOW INDEXES IN t1;
83Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
84DROP TABLE t1;
85CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB;
86INSERT INTO t1 VALUES (1,1);
87SELECT @@global.userstat = 1 AS should_be_1;
88should_be_1
891
90ANALYZE TABLE t1;
91Table Op Msg_type Msg_text
92test.t1 analyze status OK
93SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
94SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
95SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
96SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
97SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
98SELECT 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';
99SHOW INDEXES IN t1;
100Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
101t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
102t1 0 b 1 b A 1 NULL NULL YES BTREE
103SET innodb_fake_changes=1;
104SELECT * FROM t1;
105ERROR HY000: Got error 131 during COMMIT
106INSERT INTO t1 VALUES (2,2);
107ERROR HY000: Got error 131 during COMMIT
108UPDATE t1 SET a=0 where b=1;
109ERROR 23000: Duplicate entry '1' for key 'b'
110UPDATE t1 SET b=0 where a=1;
111ERROR HY000: Got error 131 during COMMIT
112UPDATE t1 SET b=0 where a=2;
113ERROR HY000: Got error 131 during COMMIT
114DELETE FROM t1 where b=2;
115ERROR HY000: Got error 131 during COMMIT
116DELETE FROM t1 where b=1;
117ERROR HY000: Got error 131 during COMMIT
118DELETE FROM t1 where a=2;
119ERROR HY000: Got error 131 during COMMIT
120DELETE FROM t1 where a=1;
121ERROR HY000: Got error 131 during COMMIT
122REPLACE INTO t1 values (2,3);
123ERROR HY000: Got error 131 during COMMIT
124BEGIN;
125SELECT * FROM t1;
126a b
1271 1
128COMMIT;
129ERROR HY000: Got error 131 during COMMIT
130BEGIN;
131INSERT INTO t1 VALUES (2,2);
132COMMIT;
133ERROR HY000: Got error 131 during COMMIT
134BEGIN;
135UPDATE t1 SET a=0 where b=1;
136ERROR 23000: Duplicate entry '1' for key 'b'
137COMMIT;
138ERROR HY000: Got error 131 during COMMIT
139BEGIN;
140UPDATE t1 SET b=0 where a=1;
141COMMIT;
142ERROR HY000: Got error 131 during COMMIT
143BEGIN;
144UPDATE t1 SET b=0 where a=2;
145COMMIT;
146ERROR HY000: Got error 131 during COMMIT
147BEGIN;
148DELETE FROM t1 where b=2;
149COMMIT;
150ERROR HY000: Got error 131 during COMMIT
151BEGIN;
152DELETE FROM t1 where b=1;
153COMMIT;
154ERROR HY000: Got error 131 during COMMIT
155BEGIN;
156DELETE FROM t1 where a=2;
157COMMIT;
158ERROR HY000: Got error 131 during COMMIT
159BEGIN;
160DELETE FROM t1 where a=1;
161COMMIT;
162ERROR HY000: Got error 131 during COMMIT
163BEGIN;
164REPLACE INTO t1 values (2,3);
165COMMIT;
166ERROR HY000: Got error 131 during COMMIT
167INSERT INTO t1 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
168ERROR HY000: Got error 131 during COMMIT
169CREATE INDEX bx ON t1(b);
170ERROR HY000: Got error 131 during COMMIT
171SET innodb_fake_changes=0;
172CHECK TABLE t1;
173Table Op Msg_type Msg_text
174test.t1 check status OK
175SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
176SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
177SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
178SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
179SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
180SELECT 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';
181should_be_1
1821
183SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
184should_be_0
1850
186SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
187should_be_0
1880
189SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
190should_be_0
1910
192SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
193should_be_0
1940
195SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
196should_be_0
1970
198SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
199should_be_0
2000
201SHOW INDEXES IN t1;
202Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
203t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
204t1 0 b 1 b A 1 NULL NULL YES BTREE
205DROP TABLE t1;
206CREATE TABLE t2 (a INT PRIMARY KEY, b INT) ENGINE=InnoDB;
207INSERT INTO t2 VALUES (1, 1);
208SELECT @@global.userstat = 1 AS should_be_1;
209should_be_1
2101
211ANALYZE TABLE t2;
212Table Op Msg_type Msg_text
213test.t2 analyze status OK
214SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
215SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
216SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
217SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
218SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
219SELECT 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';
220SHOW INDEXES IN t2;
221Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
222t2 0 PRIMARY 1 a A 1 NULL NULL BTREE
223SET innodb_fake_changes=1;
224SELECT * FROM t2;
225ERROR HY000: Got error 131 during COMMIT
226INSERT INTO t2 VALUES (2,2);
227ERROR HY000: Got error 131 during COMMIT
228UPDATE t2 SET b=0 where a=1;
229ERROR HY000: Got error 131 during COMMIT
230UPDATE t2 SET b=0 where a=2;
231ERROR HY000: Got error 131 during COMMIT
232DELETE FROM t2 where b=2;
233ERROR HY000: Got error 131 during COMMIT
234DELETE FROM t2 where b=1;
235ERROR HY000: Got error 131 during COMMIT
236DELETE FROM t2 where a=2;
237ERROR HY000: Got error 131 during COMMIT
238DELETE FROM t2 where a=1;
239ERROR HY000: Got error 131 during COMMIT
240REPLACE INTO t2 values (2,3);
241ERROR HY000: Got error 131 during COMMIT
242REPLACE INTO t2 VALUES (1,1);
243ERROR HY000: Got error 131 during COMMIT
244REPLACE INTO t2 VALUES (1,2);
245ERROR HY000: Got error 131 during COMMIT
246BEGIN;
247SELECT * FROM t2;
248a b
2491 1
250COMMIT;
251ERROR HY000: Got error 131 during COMMIT
252BEGIN;
253INSERT INTO t2 VALUES (2,2);
254COMMIT;
255ERROR HY000: Got error 131 during COMMIT
256BEGIN;
257UPDATE t2 SET b=0 where a=1;
258COMMIT;
259ERROR HY000: Got error 131 during COMMIT
260BEGIN;
261UPDATE t2 SET b=0 where a=2;
262COMMIT;
263ERROR HY000: Got error 131 during COMMIT
264BEGIN;
265DELETE FROM t2 where b=2;
266COMMIT;
267ERROR HY000: Got error 131 during COMMIT
268BEGIN;
269DELETE FROM t2 where b=1;
270COMMIT;
271ERROR HY000: Got error 131 during COMMIT
272BEGIN;
273DELETE FROM t2 where a=2;
274COMMIT;
275ERROR HY000: Got error 131 during COMMIT
276BEGIN;
277DELETE FROM t2 where a=1;
278COMMIT;
279ERROR HY000: Got error 131 during COMMIT
280BEGIN;
281REPLACE INTO t2 values (2,3);
282COMMIT;
283ERROR HY000: Got error 131 during COMMIT
284BEGIN;
285REPLACE INTO t2 VALUES (1,1);
286COMMIT;
287ERROR HY000: Got error 131 during COMMIT
288BEGIN;
289REPLACE INTO t2 VALUES (1,2);
290COMMIT;
291ERROR HY000: Got error 131 during COMMIT
292BEGIN;
293REPLACE INTO t2 VALUES (1,2);
294SELECT * from t2;
295a b
2961 1
297REPLACE INTO t2 VALUES (1,1);
298SELECT * from t2;
299a b
3001 1
301ROLLBACK;
302BEGIN;
303INSERT INTO t2 VALUES (1,1);
304ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
305INSERT INTO t2 VALUES (1,2);
306ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
307ROLLBACK;
308INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=2;
309ERROR HY000: Got error 131 during COMMIT
310INSERT INTO t2 VALUES (1,1) ON DUPLICATE KEY UPDATE b=b+10;
311ERROR HY000: Got error 131 during COMMIT
312INSERT INTO t2 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
313ERROR HY000: Got error 131 during COMMIT
314CREATE INDEX bx ON t2(b);
315ERROR HY000: Got error 131 during COMMIT
316SET innodb_fake_changes=0;
317CHECK TABLE t2;
318Table Op Msg_type Msg_text
319test.t2 check status OK
320SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
321SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
322SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
323SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
324SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2';
325SELECT 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';
326should_be_1
3271
328SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
329should_be_0
3300
331SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
332should_be_0
3330
334SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
335should_be_0
3360
337SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
338should_be_0
3390
340SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
341should_be_0
3420
343SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
344should_be_0
3450
346SHOW INDEXES IN t2;
347Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
348t2 0 PRIMARY 1 a A 1 NULL NULL BTREE
349DROP TABLE t2;
350CREATE TABLE t3 (a INT PRIMARY KEY, B TEXT) ENGINE=InnoDB;
351INSERT INTO t3 VALUES (1, '');
352SELECT @@global.userstat = 1 AS should_be_1;
353should_be_1
3541
355ANALYZE TABLE t3;
356Table Op Msg_type Msg_text
357test.t3 analyze status OK
358SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
359SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
360SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
361SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
362SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
363SELECT 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';
364SHOW INDEXES IN t3;
365Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
366t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
367SET innodb_fake_changes=1;
368SELECT * FROM t3;
369ERROR HY000: Got error 131 during COMMIT
370INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
371ERROR HY000: Got error 131 during COMMIT
372UPDATE t3 SET a=0 where a=1;
373ERROR HY000: Got error 131 during COMMIT
374DELETE FROM t3 where a=2;
375ERROR HY000: Got error 131 during COMMIT
376DELETE FROM t3 where a=1;
377ERROR HY000: Got error 131 during COMMIT
378REPLACE INTO t3 values (2,lpad('a',9000,'q'));
379ERROR HY000: Got error 131 during COMMIT
380INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
381ERROR HY000: Got error 131 during COMMIT
382BEGIN;
383SELECT * FROM t3;
384a B
3851
386COMMIT;
387ERROR HY000: Got error 131 during COMMIT
388BEGIN;
389INSERT INTO t3 VALUES (2,lpad('a',10000, 'b'));
390COMMIT;
391ERROR HY000: Got error 131 during COMMIT
392BEGIN;
393UPDATE t3 SET a=0 where a=1;
394COMMIT;
395ERROR HY000: Got error 131 during COMMIT
396BEGIN;
397DELETE FROM t3 where a=2;
398COMMIT;
399ERROR HY000: Got error 131 during COMMIT
400BEGIN;
401DELETE FROM t3 where a=1;
402COMMIT;
403ERROR HY000: Got error 131 during COMMIT
404BEGIN;
405REPLACE INTO t3 values (2,lpad('a',9000,'q'));
406COMMIT;
407ERROR HY000: Got error 131 during COMMIT
408BEGIN;
409INSERT INTO t3 VALUES (1,1) ON DUPLICATE KEY UPDATE b=lpad('b',11000,'c');
410COMMIT;
411ERROR HY000: Got error 131 during COMMIT
412SET innodb_fake_changes=0;
413CHECK TABLE t3;
414Table Op Msg_type Msg_text
415test.t3 check status OK
416SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
417SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
418SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
419SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
420SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
421SELECT 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';
422should_be_1
4231
424SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
425should_be_0
4260
427SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
428should_be_0
4290
430SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
431should_be_0
4320
433SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
434should_be_0
4350
436SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
437should_be_0
4380
439SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
440should_be_0
4410
442SHOW INDEXES IN t3;
443Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
444t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
445DROP TABLE t3;
59# DDL must result in error446# DDL must result in error
60CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;447CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
61SET autocommit=0;448SELECT @@global.userstat = 1 AS should_be_1;
449should_be_1
4501
451ANALYZE TABLE t1;
452Table Op Msg_type Msg_text
453test.t1 analyze status OK
454SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
455SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
456SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
457SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
458SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
459SELECT 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';
460SHOW INDEXES IN t1;
461Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
462t1 0 PRIMARY 1 a A 0 NULL NULL BTREE
62SET innodb_fake_changes=1;463SET innodb_fake_changes=1;
63BEGIN;464BEGIN;
64CREATE TABLE t2 (a INT) ENGINE=InnoDB;465CREATE TABLE t2 (a INT) ENGINE=InnoDB;
@@ -66,50 +467,157 @@
66DROP TABLE t1;467DROP TABLE t1;
67ERROR 42S02: Unknown table 't1'468ERROR 42S02: Unknown table 't1'
68TRUNCATE TABLE t1;469TRUNCATE TABLE t1;
69ERROR HY000: Got error 131 during COMMIT470ERROR HY000: Table storage engine for 't1' doesn't have this option
70ALTER TABLE t1 ENGINE=MyISAM;471ALTER TABLE t1 ENGINE=MyISAM;
71ERROR HY000: Got error 131 during COMMIT472ERROR HY000: Got error 131 during COMMIT
72ROLLBACK;473ROLLBACK;
73SET innodb_fake_changes=0;474SET innodb_fake_changes=0;
475CHECK TABLE t1;
476Table Op Msg_type Msg_text
477test.t1 check status OK
478SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
479SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
480SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
481SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
482SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
483SELECT 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';
484should_be_1
4851
486SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
487should_be_0
4880
489SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
490should_be_0
4910
492SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
493should_be_0
4940
495SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
496should_be_0
4970
498SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
499should_be_0
5000
501SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
502should_be_0
5030
504SHOW INDEXES IN t1;
505Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
506t1 0 PRIMARY 1 a A 0 NULL NULL BTREE
74INSERT INTO t1 VALUES (1), (2);507INSERT INTO t1 VALUES (1), (2);
75COMMIT;
76CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),508CREATE TABLE t2 (a INT PRIMARY KEY, b INT, INDEX b_ind (b),
77FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;509FOREIGN KEY (b) REFERENCES t1(a) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB;
78INSERT INTO t2 VALUES (1, 1);510INSERT INTO t2 VALUES (1, 1);
79INSERT INTO t2 VALUES (2, 2);511INSERT INTO t2 VALUES (2, 2);
80COMMIT;512SELECT @@global.userstat = 1 AS should_be_1;
513should_be_1
5141
515ANALYZE TABLE t1;
516Table Op Msg_type Msg_text
517test.t1 analyze status OK
518SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
519SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
520SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
521SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
522SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
523SELECT 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';
524SHOW INDEXES IN t1;
525Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
526t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
81SET innodb_fake_changes=1;527SET innodb_fake_changes=1;
528BEGIN;
82DELETE FROM t1 WHERE a=1;529DELETE FROM t1 WHERE a=1;
83UPDATE t1 SET a=3 WHERE a=2;530UPDATE t1 SET a=3 WHERE a=2;
84COMMIT;531COMMIT;
85ERROR HY000: Got error 131 during COMMIT532ERROR HY000: Got error 131 during COMMIT
533SET innodb_fake_changes=0;
534CHECK TABLE t1;
535Table Op Msg_type Msg_text
536test.t1 check status OK
537SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
538SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
539SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
540SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
541SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
542SELECT 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';
86should_be_1543should_be_1
8715441
88should_be_0545SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
890546should_be_0
90should_be_05470
910548SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
92should_be_0549should_be_0
9305500
94should_be_0551SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
950552should_be_0
96should_be_05530
970554SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
98SET innodb_fake_changes=0;555should_be_0
5560
557SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
558should_be_0
5590
560SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
561should_be_0
5620
563SHOW INDEXES IN t1;
564Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
565t1 0 PRIMARY 1 a A 2 NULL NULL BTREE
99DROP TABLE t2;566DROP TABLE t2;
100CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;567CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;
101INSERT INTO t3 VALUES (1,'');568INSERT INTO t3 VALUES (1,'');
102COMMIT;569SELECT @@global.userstat = 1 AS should_be_1;
570should_be_1
5711
572ANALYZE TABLE t3;
573Table Op Msg_type Msg_text
574test.t3 analyze status OK
575SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
576SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
577SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
578SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
579SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
580SELECT 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';
581SHOW INDEXES IN t3;
582Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
583t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
103SET innodb_fake_changes=1;584SET innodb_fake_changes=1;
585BEGIN;
104UPDATE t3 set b=lpad('b',11000,'c') where a=1;586UPDATE t3 set b=lpad('b',11000,'c') where a=1;
105COMMIT;587COMMIT;
106ERROR HY000: Got error 131 during COMMIT588ERROR HY000: Got error 131 during COMMIT
107SET innodb_fake_changes=default;589SET innodb_fake_changes=0;
108# Verify that the fake changes to t3 did not leak through
109CHECK TABLE t3;590CHECK TABLE t3;
110Table Op Msg_type Msg_text591Table Op Msg_type Msg_text
111test.t3 check status OK592test.t3 check status OK
593SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
594SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
595SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
596SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
597SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't3';
598SELECT 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';
112should_be_1599should_be_1
11316001
601SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
602should_be_0
6030
604SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
605should_be_0
6060
607SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
608should_be_0
6090
610SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
611should_be_0
6120
613SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
614should_be_0
6150
616SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
617should_be_0
6180
619SHOW INDEXES IN t3;
620Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
621t3 0 PRIMARY 1 a A 1 NULL NULL BTREE
114DROP TABLE t1, t3;622DROP TABLE t1, t3;
115SET @@GLOBAL.userstat= default;623SET @@GLOBAL.userstat= default;
116624
=== 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:19:41 +0000
@@ -1,7 +1,24 @@
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 ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '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';
18SHOW INDEXES IN t1;
19Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
20t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
21t1 0 b 1 b A 1 NULL NULL YES BTREE
5SET innodb_fake_changes=1;22SET innodb_fake_changes=1;
6# Confirm that duplicate key errors on REPLACE works23# Confirm that duplicate key errors on REPLACE works
7REPLACE INTO t1 VALUES (1,1);24REPLACE INTO t1 VALUES (1,1);
@@ -34,10 +51,38 @@
34INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;51INSERT INTO t1 VALUES (1,2) ON DUPLICATE KEY UPDATE b=b+10;
35ERROR HY000: Got error 131 during COMMIT52ERROR HY000: Got error 131 during COMMIT
36SET innodb_fake_changes=0;53SET innodb_fake_changes=0;
37SELECT * from t1;
38a b
391 1
40CHECK TABLE t1;54CHECK TABLE t1;
41Table Op Msg_type Msg_text55Table Op Msg_type Msg_text
42test.t1 check status OK56test.t1 check status OK
57SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
58SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
59SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
60SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
61SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
62SELECT 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';
63should_be_1
641
65SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
66should_be_0
670
68SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
69should_be_0
700
71SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
72should_be_0
730
74SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
75should_be_0
760
77SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
78should_be_0
790
80SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
81should_be_0
820
83SHOW INDEXES IN t1;
84Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
85t1 0 PRIMARY 1 a A 1 NULL NULL BTREE
86t1 0 b 1 b A 1 NULL NULL YES BTREE
43DROP TABLE t1;87DROP TABLE t1;
88SET @@GLOBAL.userstat=default;
4489
=== 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:19:41 +0000
@@ -1,7 +1,23 @@
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 ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE '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';
18SHOW INDEXES IN t1;
19Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
20t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
5SET innodb_fake_changes=1;21SET innodb_fake_changes=1;
6INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);22INSERT INTO t1 VALUES(1, "foo", LPAD("a", 4600, "b")) ON DUPLICATE KEY UPDATE T = VALUES(T);
7ERROR HY000: Got error 131 during COMMIT23ERROR HY000: Got error 131 during COMMIT
@@ -11,12 +27,54 @@
11CHECK TABLE t1;27CHECK TABLE t1;
12Table Op Msg_type Msg_text28Table Op Msg_type Msg_text
13test.t1 check status OK29test.t1 check status OK
30SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
31SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
32SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
33SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
34SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
35SELECT 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';
14should_be_136should_be_1
151371
38SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
39should_be_0
400
41SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
42should_be_0
430
44SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
45should_be_0
460
47SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
48should_be_0
490
50SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
51should_be_0
520
53SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
54should_be_0
550
56SHOW INDEXES IN t1;
57Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
58t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
16DROP TABLE t1;59DROP TABLE t1;
17Test for uncompressed60Test for uncompressed
18CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;61CREATE 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"));62INSERT INTO t1 VALUES(NULL, LPAD("v", 2, "b"), LPAD("a", 100, "b"));
63SELECT @@global.userstat = 1 AS should_be_1;
64should_be_1
651
66ANALYZE TABLE t1;
67Table Op Msg_type Msg_text
68test.t1 analyze status OK
69SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
70SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
71SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
72SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
73SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
74SELECT 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';
75SHOW INDEXES IN t1;
76Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
77t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
20SET innodb_fake_changes=1;78SET innodb_fake_changes=1;
21ERROR HY000: Got error 131 during COMMIT79ERROR HY000: Got error 131 during COMMIT
22ERROR HY000: Got error 131 during COMMIT80ERROR HY000: Got error 131 during COMMIT
@@ -122,11 +180,53 @@
122CHECK TABLE t1;180CHECK TABLE t1;
123Table Op Msg_type Msg_text181Table Op Msg_type Msg_text
124test.t1 check status OK182test.t1 check status OK
183SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
184SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
185SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
186SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
187SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
188SELECT 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';
125should_be_1189should_be_1
12611901
191SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
192should_be_0
1930
194SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
195should_be_0
1960
197SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
198should_be_0
1990
200SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
201should_be_0
2020
203SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
204should_be_0
2050
206SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
207should_be_0
2080
209SHOW INDEXES IN t1;
210Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
211t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
127DROP TABLE t1;212DROP TABLE t1;
128CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB KEY_BLOCK_SIZE=8;213CREATE 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"));214INSERT INTO t1 VALUES(2, LPAD("v", 2, "b"), LPAD("a", 200, "b"));
215SELECT @@global.userstat = 1 AS should_be_1;
216should_be_1
2171
218ANALYZE TABLE t1;
219Table Op Msg_type Msg_text
220test.t1 analyze status OK
221SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
222SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_deleted';
223SELECT VARIABLE_VALUE INTO @innodb_rows_updated_1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_updated';
224SELECT ROWS INTO @table_rows_estimate_1 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
225SELECT ROWS_CHANGED INTO @table_rows_changed_1 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
226SELECT 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';
227SHOW INDEXES IN t1;
228Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
229t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
130SET innodb_fake_changes=1;230SET innodb_fake_changes=1;
131INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));231INSERT INTO t1 VALUES (3, "foo", LPAD("a", 4600, "b"));
132ERROR HY000: Got error 131 during COMMIT232ERROR HY000: Got error 131 during COMMIT
@@ -134,8 +234,35 @@
134CHECK TABLE t1;234CHECK TABLE t1;
135Table Op Msg_type Msg_text235Table Op Msg_type Msg_text
136test.t1 check status OK236test.t1 check status OK
237SELECT VARIABLE_VALUE INTO @innodb_rows_inserted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME = 'Innodb_rows_inserted';
238SELECT VARIABLE_VALUE INTO @innodb_rows_deleted_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted';
239SELECT VARIABLE_VALUE INTO @innodb_rows_updated_2 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated';
240SELECT ROWS INTO @table_rows_estimate_2 FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
241SELECT ROWS_CHANGED INTO @table_rows_changed_2 FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1';
242SELECT 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';
137should_be_1243should_be_1
13812441
245SELECT @innodb_rows_inserted_2 - @innodb_rows_inserted_1 AS should_be_0;
246should_be_0
2470
248SELECT @innodb_rows_deleted_2 - @innodb_rows_deleted_1 AS should_be_0;
249should_be_0
2500
251SELECT @innodb_rows_updated_2 - @innodb_rows_updated_1 AS should_be_0;
252should_be_0
2530
254SELECT @table_rows_estimate_2 - @table_rows_estimate_1 AS should_be_0;
255should_be_0
2560
257SELECT @table_rows_changed_2 - @table_rows_changed_1 AS should_be_0;
258should_be_0
2590
260SELECT @table_rows_changed_x_indexes_2 - @table_rows_changed_x_indexes_1 AS should_be_0;
261should_be_0
2620
263SHOW INDEXES IN t1;
264Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
265t1 0 PRIMARY 1 id A 1 NULL NULL BTREE
139DROP TABLE t1;266DROP TABLE t1;
140CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, v VARCHAR(200), t TEXT) ENGINE=INNODB;267CREATE 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"));268INSERT INTO t1 VALUES(2, LPAD("v", 3, "b"), LPAD("a", 100, "b"));
@@ -149,3 +276,4 @@
149should_be_1276should_be_1
15012771
151DROP TABLE t1;278DROP TABLE t1;
279SET @@GLOBAL.userstat=default;
152280
=== modified file 'Percona-Server/mysql-test/t/percona_innodb_fake_changes.test'
--- Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2012-10-17 11:56:00 +0000
+++ Percona-Server/mysql-test/t/percona_innodb_fake_changes.test 2013-07-15 16:19:41 +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,20 +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 ROWS FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;
29let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;
30let $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'`;
3125
32SET autocommit=0;
33SET innodb_fake_changes=1;
34BEGIN;26BEGIN;
35INSERT INTO t1 VALUES (2);27INSERT INTO t1 VALUES (2);
36UPDATE t1 SET a=0;28UPDATE t1 SET a=0;
@@ -38,102 +30,339 @@
38SELECT * FROM t1;30SELECT * FROM t1;
39--error 118031--error 1180
40COMMIT;32COMMIT;
41SET innodb_fake_changes=default;33
42--echo # Verify that the fake changes to t1 did not leak through34--source include/stop_fake_changes.inc
43CHECK TABLE t1;35
44let $t1_checksum_2= `CHECKSUM TABLE t1 EXTENDED`;36DROP TABLE t1;
45let $innodb_rows_inserted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_inserted'`;37
46let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;38#
47let $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
48let $table_rows_estimate_2= `SELECT ROWS FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;40#
49let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't1'`;41CREATE TABLE t1 (a INT PRIMARY KEY, b INT, UNIQUE KEY (b)) ENGINE=InnoDB;
50let $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'`;42INSERT INTO t1 VALUES (1,1);
51--disable_query_log43
52eval SELECT "$t1_checksum_1" LIKE "$t1_checksum_2" AS should_be_1;44--source include/start_fake_changes.inc
53eval SELECT "$innodb_rows_inserted_2" - "$innodb_rows_inserted_1" AS should_be_0;45
54eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0;46# Test with autocommit
55eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0;47--error ER_ERROR_DURING_COMMIT
56eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0;48SELECT * FROM t1;
57eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0;49--error ER_ERROR_DURING_COMMIT
58eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0;50INSERT INTO t1 VALUES (2,2);
59--enable_query_log51--error ER_DUP_ENTRY
60DROP TABLE t1;52UPDATE t1 SET a=0 where b=1;
53--error ER_ERROR_DURING_COMMIT
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;
61310
62--echo # DDL must result in error311--echo # DDL must result in error
63CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;312CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
64SET autocommit=0;313
65SET innodb_fake_changes=1;314--let $fake_changes_table=t1
315--source include/start_fake_changes.inc
316
66BEGIN;317BEGIN;
67--error 1005318--error 1005
68CREATE TABLE t2 (a INT) ENGINE=InnoDB;319CREATE TABLE t2 (a INT) ENGINE=InnoDB;
69--error 1051320--error 1051
70DROP TABLE t1;321DROP TABLE t1;
71--error 1180322--error 1031
72TRUNCATE TABLE t1;323TRUNCATE TABLE t1;
73--error 1180324--error 1180
74ALTER TABLE t1 ENGINE=MyISAM;325ALTER TABLE t1 ENGINE=MyISAM;
75ROLLBACK;326ROLLBACK;
76327
328--source include/stop_fake_changes.inc
329
77# Test stat counters foreign key constraints330# Test stat counters foreign key constraints
78SET innodb_fake_changes=0;
79INSERT INTO t1 VALUES (1), (2);331INSERT INTO t1 VALUES (1), (2);
80COMMIT;332
81CREATE 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),
82 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;
83INSERT INTO t2 VALUES (1, 1);335INSERT INTO t2 VALUES (1, 1);
84INSERT INTO t2 VALUES (2, 2);336INSERT INTO t2 VALUES (2, 2);
85COMMIT;337
86338--let $fake_changes_table=t1
87let $t2_checksum_1= `CHECKSUM TABLE t2 EXTENDED`;339--source include/start_fake_changes.inc
88let $innodb_rows_deleted_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;340
89let $innodb_rows_updated_1= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`;341BEGIN;
90let $table_rows_estimate_1= `SELECT ROWS FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
91let $table_rows_changed_1= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
92let $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'`;
93
94SET innodb_fake_changes=1;
95DELETE FROM t1 WHERE a=1;342DELETE FROM t1 WHERE a=1;
96UPDATE t1 SET a=3 WHERE a=2;343UPDATE t1 SET a=3 WHERE a=2;
97--error 1180344--error 1180
98COMMIT;345COMMIT;
99346
100let $t2_checksum_2= `CHECKSUM TABLE t2 EXTENDED`;347--source include/stop_fake_changes.inc
101let $innodb_rows_deleted_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_deleted'`;348
102let $innodb_rows_updated_2= `SELECT VARIABLE_VALUE FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME='Innodb_rows_updated'`;
103let $table_rows_estimate_2= `SELECT ROWS FROM INFORMATION_SCHEMA.INNODB_TABLE_STATS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
104let $table_rows_changed_2= `SELECT ROWS_CHANGED FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_SCHEMA LIKE 'test' AND TABLE_NAME LIKE 't2'`;
105let $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'`;
106
107--disable_query_log
108eval SELECT "$t2_checksum_1" LIKE "$t2_checksum_2" AS should_be_1;
109eval SELECT "$innodb_rows_deleted_2" - "$innodb_rows_deleted_1" AS should_be_0;
110eval SELECT "$innodb_rows_updated_2" - "$innodb_rows_updated_1" AS should_be_0;
111eval SELECT "$table_rows_estimate_2" - "$table_rows_estimate_1" AS should_be_0;
112eval SELECT "$table_rows_changed_2" - "$table_rows_changed_1" AS should_be_0;
113eval SELECT "$table_rows_changed_x_indexes_2" - "$table_rows_changed_x_indexes_1" AS should_be_0;
114--enable_query_log
115
116SET innodb_fake_changes=0;
117DROP TABLE t2;349DROP TABLE t2;
118350
119# Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update351# Test for bug 890404: uninitialized value warning in btr_cur_pessimistic_update
120CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;352CREATE TABLE t3 (a INT primary key, b text) ENGINE=InnoDB;
121INSERT INTO t3 VALUES (1,'');353INSERT INTO t3 VALUES (1,'');
122COMMIT;
123let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`;354let $t3_checksum_1= `CHECKSUM TABLE t3 EXTENDED`;
124SET innodb_fake_changes=1;355
125356--let $fake_changes_table=t3
357--source include/start_fake_changes.inc
358
359BEGIN;
126UPDATE t3 set b=lpad('b',11000,'c') where a=1;360UPDATE t3 set b=lpad('b',11000,'c') where a=1;
127--error ER_ERROR_DURING_COMMIT361--error ER_ERROR_DURING_COMMIT
128COMMIT;362COMMIT;
129363
130SET innodb_fake_changes=default;364--source include/stop_fake_changes.inc
131--echo # Verify that the fake changes to t3 did not leak through365
132CHECK TABLE t3;
133let $t3_checksum_2= `CHECKSUM TABLE t3 EXTENDED`;
134--disable_query_log
135eval SELECT "$t3_checksum_1" LIKE "$t3_checksum_2" AS should_be_1;
136--enable_query_log
137DROP TABLE t1, t3;366DROP TABLE t1, t3;
138367
139SET @@GLOBAL.userstat= default;368SET @@GLOBAL.userstat= default;
140369
=== 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:19:41 +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:19:41 +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:19:41 +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-27 15:35:20 +0000
+++ Percona-Server/sql/sql_insert.cc 2013-07-15 16:19:41 +0000
@@ -1758,7 +1758,7 @@
1758 2) do nothing on fake delete1758 2) do nothing on fake delete
1759 3) goto #11759 3) goto #1
1760 */1760 */
1761 if (table->file->is_fake_change_enabled(thd))1761 if (unlikely(table->file->is_fake_change_enabled(thd)))
1762 goto ok_or_after_trg_err;1762 goto ok_or_after_trg_err;
1763 /* Let us attempt do write_row() once more */1763 /* Let us attempt do write_row() once more */
1764 }1764 }
17651765
=== modified file 'Percona-Server/storage/innobase/btr/btr0cur.c'
--- Percona-Server/storage/innobase/btr/btr0cur.c 2013-06-27 15:35:20 +0000
+++ Percona-Server/storage/innobase/btr/btr0cur.c 2013-07-15 16:19:41 +0000
@@ -1189,7 +1189,7 @@
1189 rec_t* rec;1189 rec_t* rec;
1190 roll_ptr_t roll_ptr;1190 roll_ptr_t roll_ptr;
11911191
1192 if (thr && thr_get_trx(thr)->fake_changes) {1192 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1193 /* skip LOCK, UNDO */1193 /* skip LOCK, UNDO */
1194 return(DB_SUCCESS);1194 return(DB_SUCCESS);
1195 }1195 }
@@ -1427,7 +1427,7 @@
1427 goto fail_err;1427 goto fail_err;
1428 }1428 }
14291429
1430 if (thr && thr_get_trx(thr)->fake_changes) {1430 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1431 /* skip CHANGE, LOG */1431 /* skip CHANGE, LOG */
1432 *big_rec = big_rec_vec;1432 *big_rec = big_rec_vec;
1433 return(err); /* == DB_SUCCESS */1433 return(err); /* == DB_SUCCESS */
@@ -1641,7 +1641,7 @@
1641 }1641 }
1642 }1642 }
16431643
1644 if (thr && thr_get_trx(thr)->fake_changes) {1644 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1645 /* skip CHANGE, LOG */1645 /* skip CHANGE, LOG */
1646 if (n_extents > 0) {1646 if (n_extents > 0) {
1647 fil_space_release_free_extents(index->space,1647 fil_space_release_free_extents(index->space,
@@ -1707,7 +1707,7 @@
17071707
1708 ut_ad(cursor && update && thr && roll_ptr);1708 ut_ad(cursor && update && thr && roll_ptr);
17091709
1710 if (thr && thr_get_trx(thr)->fake_changes) {1710 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
1711 /* skip LOCK, UNDO */1711 /* skip LOCK, UNDO */
1712 return(DB_SUCCESS);1712 return(DB_SUCCESS);
1713 }1713 }
@@ -1914,7 +1914,7 @@
1914 return(FALSE);1914 return(FALSE);
1915 }1915 }
19161916
1917 if (trx && trx->fake_changes) {1917 if (UNIV_UNLIKELY(trx && trx->fake_changes)) {
1918 /* Don't call page_zip_compress_write_log_no_data as that has1918 /* Don't call page_zip_compress_write_log_no_data as that has
1919 assert which would fail. Assume there won't be a compression1919 assert which would fail. Assume there won't be a compression
1920 failure. */1920 failure. */
@@ -2021,7 +2021,7 @@
2021 return(err);2021 return(err);
2022 }2022 }
20232023
2024 if (trx->fake_changes) {2024 if (UNIV_UNLIKELY(trx->fake_changes)) {
2025 /* skip CHANGE, LOG */2025 /* skip CHANGE, LOG */
2026 if (UNIV_LIKELY_NULL(heap)) {2026 if (UNIV_LIKELY_NULL(heap)) {
2027 mem_heap_free(heap);2027 mem_heap_free(heap);
@@ -2256,7 +2256,7 @@
2256 goto err_exit;2256 goto err_exit;
2257 }2257 }
22582258
2259 if (thr && thr_get_trx(thr)->fake_changes) {2259 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
2260 /* skip CHANGE, LOG */2260 /* skip CHANGE, LOG */
2261 goto err_exit; /* == DB_SUCCESS */2261 goto err_exit; /* == DB_SUCCESS */
2262 }2262 }
@@ -2552,7 +2552,7 @@
2552 ut_ad(flags & BTR_KEEP_POS_FLAG);2552 ut_ad(flags & BTR_KEEP_POS_FLAG);
2553 }2553 }
25542554
2555 if (trx->fake_changes) {2555 if (UNIV_UNLIKELY(trx->fake_changes)) {
2556 /* skip CHANGE, LOG */2556 /* skip CHANGE, LOG */
2557 err = DB_SUCCESS;2557 err = DB_SUCCESS;
2558 goto return_after_reservations;2558 goto return_after_reservations;
@@ -2888,7 +2888,7 @@
2888 ut_ad(dict_index_is_clust(index));2888 ut_ad(dict_index_is_clust(index));
2889 ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets)));2889 ut_ad(!rec_get_deleted_flag(rec, rec_offs_comp(offsets)));
28902890
2891 if (thr && thr_get_trx(thr)->fake_changes) {2891 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
2892 /* skip LOCK, UNDO, CHANGE, LOG */2892 /* skip LOCK, UNDO, CHANGE, LOG */
2893 return(DB_SUCCESS);2893 return(DB_SUCCESS);
2894 }2894 }
@@ -3027,7 +3027,7 @@
3027 rec_t* rec;3027 rec_t* rec;
3028 ulint err;3028 ulint err;
30293029
3030 if (thr && thr_get_trx(thr)->fake_changes) {3030 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
3031 /* skip LOCK, CHANGE, LOG */3031 /* skip LOCK, CHANGE, LOG */
3032 return(DB_SUCCESS);3032 return(DB_SUCCESS);
3033 }3033 }
30343034
=== modified file 'Percona-Server/storage/innobase/handler/ha_innodb.cc'
--- Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:19:40 +0000
+++ Percona-Server/storage/innobase/handler/ha_innodb.cc 2013-07-15 16:19:41 +0000
@@ -3605,7 +3605,10 @@
3605 trx_search_latch_release_if_reserved(trx);3605 trx_search_latch_release_if_reserved(trx);
3606 }3606 }
36073607
3608 if (trx->fake_changes && (all || (!thd_test_options(thd, OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))) {3608 if (UNIV_UNLIKELY(trx->fake_changes
3609 && (all || (!thd_test_options(thd,
3610 OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN))))) {
3611
3609 innobase_rollback(hton, thd, all); /* rollback implicitly */3612 innobase_rollback(hton, thd, all); /* rollback implicitly */
3610 thd->stmt_da->reset_diagnostics_area(); /* because debug assertion code complains, if something left */3613 thd->stmt_da->reset_diagnostics_area(); /* because debug assertion code complains, if something left */
3611 DBUG_RETURN(HA_ERR_WRONG_COMMAND);3614 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
@@ -8169,7 +8172,7 @@
81698172
8170 trx = innobase_trx_allocate(thd);8173 trx = innobase_trx_allocate(thd);
81718174
8172 if (trx->fake_changes) {8175 if (UNIV_UNLIKELY(trx->fake_changes)) {
8173 innobase_commit_low(trx);8176 innobase_commit_low(trx);
8174 trx_free_for_mysql(trx);8177 trx_free_for_mysql(trx);
8175 DBUG_RETURN(HA_ERR_WRONG_COMMAND);8178 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
@@ -8395,7 +8398,7 @@
8395 DBUG_RETURN(HA_ERR_CRASHED);8398 DBUG_RETURN(HA_ERR_CRASHED);
8396 }8399 }
83978400
8398 if (prebuilt->trx->fake_changes) {8401 if (UNIV_UNLIKELY(prebuilt->trx->fake_changes)) {
8399 DBUG_RETURN(HA_ERR_WRONG_COMMAND);8402 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
8400 }8403 }
84018404
@@ -8460,7 +8463,7 @@
84608463
8461 trx = innobase_trx_allocate(thd);8464 trx = innobase_trx_allocate(thd);
84628465
8463 if (trx->fake_changes) {8466 if (UNIV_UNLIKELY(trx->fake_changes)) {
8464 innobase_commit_low(trx);8467 innobase_commit_low(trx);
8465 trx_free_for_mysql(trx);8468 trx_free_for_mysql(trx);
8466 DBUG_RETURN(HA_ERR_WRONG_COMMAND);8469 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
@@ -8552,13 +8555,13 @@
8552 trx->mysql_thd = NULL;8555 trx->mysql_thd = NULL;
8553#else8556#else
8554 trx = innobase_trx_allocate(thd);8557 trx = innobase_trx_allocate(thd);
8555 if (trx->fake_changes) {8558#endif
8559 if (UNIV_UNLIKELY(trx->fake_changes)) {
8556 my_free(namebuf);8560 my_free(namebuf);
8557 innobase_commit_low(trx);8561 innobase_commit_low(trx);
8558 trx_free_for_mysql(trx);8562 trx_free_for_mysql(trx);
8559 return; /* ignore */8563 return; /* ignore */
8560 }8564 }
8561#endif
8562 row_drop_database_for_mysql(namebuf, trx);8565 row_drop_database_for_mysql(namebuf, trx);
8563 my_free(namebuf);8566 my_free(namebuf);
85648567
@@ -8671,7 +8674,7 @@
8671 trx_search_latch_release_if_reserved(parent_trx);8674 trx_search_latch_release_if_reserved(parent_trx);
86728675
8673 trx = innobase_trx_allocate(thd);8676 trx = innobase_trx_allocate(thd);
8674 if (trx->fake_changes) {8677 if (UNIV_UNLIKELY(trx->fake_changes)) {
8675 innobase_commit_low(trx);8678 innobase_commit_low(trx);
8676 trx_free_for_mysql(trx);8679 trx_free_for_mysql(trx);
8677 DBUG_RETURN(HA_ERR_WRONG_COMMAND);8680 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
86788681
=== modified file 'Percona-Server/storage/innobase/handler/handler0alter.cc'
--- Percona-Server/storage/innobase/handler/handler0alter.cc 2013-05-23 08:39:28 +0000
+++ Percona-Server/storage/innobase/handler/handler0alter.cc 2013-07-15 16:19:41 +0000
@@ -697,7 +697,7 @@
697 possible adaptive hash latch to avoid deadlocks of threads. */697 possible adaptive hash latch to avoid deadlocks of threads. */
698 trx_search_latch_release_if_reserved(prebuilt->trx);698 trx_search_latch_release_if_reserved(prebuilt->trx);
699699
700 if (prebuilt->trx->fake_changes) {700 if (UNIV_UNLIKELY(prebuilt->trx->fake_changes)) {
701 DBUG_RETURN(HA_ERR_WRONG_COMMAND);701 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
702 }702 }
703703
@@ -742,7 +742,7 @@
742 /* Create a background transaction for the operations on742 /* Create a background transaction for the operations on
743 the data dictionary tables. */743 the data dictionary tables. */
744 trx = innobase_trx_allocate(user_thd);744 trx = innobase_trx_allocate(user_thd);
745 if (trx->fake_changes) {745 if (UNIV_UNLIKELY(trx->fake_changes)) {
746 mem_heap_free(heap);746 mem_heap_free(heap);
747 trx_general_rollback_for_mysql(trx, NULL);747 trx_general_rollback_for_mysql(trx, NULL);
748 trx_free_for_mysql(trx);748 trx_free_for_mysql(trx);
@@ -1116,7 +1116,7 @@
1116 trx_search_latch_release_if_reserved(prebuilt->trx);1116 trx_search_latch_release_if_reserved(prebuilt->trx);
1117 trx = prebuilt->trx;1117 trx = prebuilt->trx;
11181118
1119 if (trx->fake_changes) {1119 if (UNIV_UNLIKELY(trx->fake_changes)) {
1120 DBUG_RETURN(HA_ERR_WRONG_COMMAND);1120 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
1121 }1121 }
11221122
@@ -1328,7 +1328,7 @@
1328 /* Create a background transaction for the operations on1328 /* Create a background transaction for the operations on
1329 the data dictionary tables. */1329 the data dictionary tables. */
1330 trx = innobase_trx_allocate(user_thd);1330 trx = innobase_trx_allocate(user_thd);
1331 if (trx->fake_changes) {1331 if (UNIV_UNLIKELY(trx->fake_changes)) {
1332 trx_general_rollback_for_mysql(trx, NULL);1332 trx_general_rollback_for_mysql(trx, NULL);
1333 trx_free_for_mysql(trx);1333 trx_free_for_mysql(trx);
1334 DBUG_RETURN(HA_ERR_WRONG_COMMAND);1334 DBUG_RETURN(HA_ERR_WRONG_COMMAND);
13351335
=== modified file 'Percona-Server/storage/innobase/lock/lock0lock.c'
--- Percona-Server/storage/innobase/lock/lock0lock.c 2013-06-26 07:01:13 +0000
+++ Percona-Server/storage/innobase/lock/lock0lock.c 2013-07-15 16:19:41 +0000
@@ -4019,7 +4019,7 @@
40194019
4020 trx = thr_get_trx(thr);4020 trx = thr_get_trx(thr);
40214021
4022 if (trx->fake_changes && mode == LOCK_IX) {4022 if (UNIV_UNLIKELY(trx->fake_changes && mode == LOCK_IX)) {
4023 mode = LOCK_IS;4023 mode = LOCK_IS;
4024 }4024 }
40254025
@@ -5268,7 +5268,7 @@
52685268
5269 trx = thr_get_trx(thr);5269 trx = thr_get_trx(thr);
52705270
5271 if (trx->fake_changes) {5271 if (UNIV_UNLIKELY(trx->fake_changes)) {
5272 return(DB_SUCCESS);5272 return(DB_SUCCESS);
5273 }5273 }
52745274
@@ -5453,7 +5453,7 @@
5453 return(DB_SUCCESS);5453 return(DB_SUCCESS);
5454 }5454 }
54555455
5456 if (thr && thr_get_trx(thr)->fake_changes) {5456 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
5457 return(DB_SUCCESS);5457 return(DB_SUCCESS);
5458 }5458 }
54595459
@@ -5515,7 +5515,7 @@
5515 return(DB_SUCCESS);5515 return(DB_SUCCESS);
5516 }5516 }
55175517
5518 if (thr && thr_get_trx(thr)->fake_changes) {5518 if (UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)) {
5519 return(DB_SUCCESS);5519 return(DB_SUCCESS);
5520 }5520 }
55215521
55225522
=== modified file 'Percona-Server/storage/innobase/que/que0que.c'
--- Percona-Server/storage/innobase/que/que0que.c 2012-05-10 07:49:14 +0000
+++ Percona-Server/storage/innobase/que/que0que.c 2013-07-15 16:19:41 +0000
@@ -1417,7 +1417,7 @@
14171417
1418 ut_a(trx->error_state == DB_SUCCESS);1418 ut_a(trx->error_state == DB_SUCCESS);
14191419
1420 if (trx->fake_changes) {1420 if (UNIV_UNLIKELY(trx->fake_changes)) {
1421 /* fake_changes should not access to system tables */1421 /* fake_changes should not access to system tables */
1422 fprintf(stderr, "InnoDB: ERROR: innodb_fake_changes tried to access to system tables.\n");1422 fprintf(stderr, "InnoDB: ERROR: innodb_fake_changes tried to access to system tables.\n");
1423 return(DB_ERROR);1423 return(DB_ERROR);
14241424
=== modified file 'Percona-Server/storage/innobase/row/row0ins.c'
--- Percona-Server/storage/innobase/row/row0ins.c 2013-06-26 07:01:13 +0000
+++ Percona-Server/storage/innobase/row/row0ins.c 2013-07-15 16:19:41 +0000
@@ -1512,7 +1512,7 @@
1512 mem_heap_free(heap);1512 mem_heap_free(heap);
1513 }1513 }
15141514
1515 if (trx->fake_changes) {1515 if (UNIV_UNLIKELY(trx->fake_changes)) {
1516 err = DB_SUCCESS;1516 err = DB_SUCCESS;
1517 }1517 }
15181518
@@ -2214,7 +2214,7 @@
2214 rec_t* rec;2214 rec_t* rec;
2215 ulint* offsets;2215 ulint* offsets;
22162216
2217 if (thr_get_trx(thr)->fake_changes) {2217 if (UNIV_UNLIKELY(thr_get_trx(thr)->fake_changes)) {
2218 /* skip store extern */2218 /* skip store extern */
2219 if (modify) {2219 if (modify) {
2220 dtuple_big_rec_free(big_rec);2220 dtuple_big_rec_free(big_rec);
22212221
=== modified file 'Percona-Server/storage/innobase/row/row0upd.c'
--- Percona-Server/storage/innobase/row/row0upd.c 2012-10-29 08:53:24 +0000
+++ Percona-Server/storage/innobase/row/row0upd.c 2013-07-15 16:19:41 +0000
@@ -1854,7 +1854,7 @@
1854 the previous invocation of this function. Mark the1854 the previous invocation of this function. Mark the
1855 off-page columns in the entry inherited. */1855 off-page columns in the entry inherited. */
18561856
1857 if (!(trx->fake_changes)) {1857 if (UNIV_LIKELY(!trx->fake_changes)) {
1858 change_ownership = row_upd_clust_rec_by_insert_inherit(1858 change_ownership = row_upd_clust_rec_by_insert_inherit(
1859 NULL, NULL, entry, node->update);1859 NULL, NULL, entry, node->update);
1860 ut_a(change_ownership);1860 ut_a(change_ownership);

Subscribers

People subscribed via source and target branches