|
2 | 2 | --source include/have_innodb_max_16k.inc |
3 | 3 | --source include/have_debug_sync.inc |
4 | 4 |
|
5 | | ---echo # |
6 | | ---echo # Test that INFORMATION_SCHEMA.INNODB_COLUMNS shows warning |
7 | | ---echo # if the table is dropped while filling metadata |
8 | | ---echo # |
9 | | - |
10 | | ---disable_query_log |
11 | | -CALL mtr.add_suppression("Unable to open innodb table with id = .* in the data dictionary."); |
12 | | ---enable_query_log |
13 | | - |
14 | | -CREATE TABLE t_part (a INT PRIMARY KEY, b INT, c VARCHAR(64)) |
15 | | - PARTITION BY HASH (a) PARTITIONS 5; |
16 | | - |
17 | | -SELECT lower(t.name), lower(c.name) FROM |
18 | | - INFORMATION_SCHEMA.INNODB_COLUMNS c |
19 | | - JOIN INFORMATION_SCHEMA.INNODB_TABLES t |
20 | | - WHERE t.table_id = c.table_id AND t.name LIKE '%t_part%' |
21 | | - ORDER BY t.name, c.name; |
22 | | - |
23 | | -SET DEBUG_SYNC = 'RESET'; |
24 | | -SET DEBUG='+d,do_before_filling_i_s_innodb_columns'; |
25 | | -SET DEBUG_SYNC='wait_before_filling_i_s_innodb_columns SIGNAL parked WAIT_FOR go'; |
26 | | - |
27 | | -SEND SELECT lower(t.name), lower(c.name) FROM |
28 | | - INFORMATION_SCHEMA.INNODB_COLUMNS c |
29 | | - JOIN INFORMATION_SCHEMA.INNODB_TABLES t |
30 | | - WHERE t.table_id = c.table_id AND t.name LIKE '%t_part%' |
31 | | - ORDER BY t.name, c.name; |
32 | | - |
33 | | -CONNECT (con1, localhost, root,,); |
34 | | -SET DEBUG_SYNC='now WAIT_FOR parked'; |
35 | | -SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST; |
36 | | -DROP TABLE t_part; |
37 | | -SET DEBUG_SYNC='now SIGNAL go'; |
38 | | - |
39 | | -CONNECTION default; |
40 | | ---reap |
41 | | - |
42 | | -SHOW WARNINGS; |
43 | | - |
44 | | -# Search the warning message in the error file |
45 | | ---let SEARCH_FILE=$MYSQLTEST_VARDIR/log/mysqld.1.err |
46 | | ---let SEARCH_PATTERN= Unable to open innodb table with id = .* in the data dictionary. |
47 | | ---source include/search_pattern.inc |
48 | | - |
49 | | -DISCONNECT con1; |
50 | | -SET DEBUG_SYNC='RESET'; |
51 | | -SET DEBUG='-d,do_before_filling_i_s_innodb_columns'; |
52 | | - |
53 | | ---echo # |
54 | | ---echo # Test that INFORMATION_SCHEMA.INNODB_COLUMNS shows warning |
55 | | ---echo # if the table is locked while filling metadata |
56 | | ---echo # |
57 | | - |
58 | | -CREATE TABLE t_nopart (a INT PRIMARY KEY, b INT, c VARCHAR(64)); |
59 | | -INSERT INTO t_nopart VALUES (1, 1, 'v'); |
60 | | - |
61 | | -SET DEBUG='+d,do_before_filling_i_s_innodb_columns'; |
62 | | -SET DEBUG_SYNC='wait_before_filling_i_s_innodb_columns SIGNAL parked1 WAIT_FOR go1'; |
63 | | -SET SESSION lock_wait_timeout=1; |
64 | | - |
65 | | -SEND SELECT lower(t.name), lower(c.name) FROM |
66 | | - INFORMATION_SCHEMA.INNODB_COLUMNS c |
67 | | - JOIN INFORMATION_SCHEMA.INNODB_TABLES t |
68 | | - WHERE t.table_id = c.table_id AND t.name LIKE '%t_nopart%' |
69 | | - ORDER BY t.name, c.name; |
70 | | - |
71 | | -CONNECT (con2, localhost, root,,); |
72 | | -SET DEBUG_SYNC='now WAIT_FOR parked1'; |
73 | | -SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST; |
74 | | - |
75 | | -SET DEBUG_SYNC='mysql_rm_table_after_lock_table_names SIGNAL parked2 WAIT_FOR go2'; |
76 | | -SEND DROP TABLE t_nopart; |
77 | | - |
78 | | -CONNECT (con3, localhost, root,,); |
79 | | -SET DEBUG_SYNC='now WAIT_FOR parked2'; |
80 | | -SELECT COUNT(*) FROM INFORMATION_SCHEMA.PROCESSLIST; |
81 | | -SET DEBUG_SYNC='now SIGNAL go1'; |
82 | | - |
83 | | -CONNECTION default; |
84 | | ---error 1205 |
85 | | ---reap |
86 | | - |
87 | | -# There will be an error and a warning because the MDL lock is held |
88 | | -# at two different places while filling metadata |
89 | | -SHOW WARNINGS; |
90 | | -SET DEBUG_SYNC='now SIGNAL go2'; |
91 | | - |
92 | | -CONNECTION con2; |
93 | | ---reap |
94 | | - |
95 | | -DISCONNECT con2; |
96 | | -DISCONNECT con3; |
97 | | - |
98 | | -CONNECTION default; |
99 | | -SET SESSION lock_wait_timeout=default; |
100 | | -SET DEBUG='-d,do_before_filling_i_s_innodb_columns'; |
101 | | - |
102 | 5 | --echo # Different partitions can have different row format |
103 | 6 | --echo # Case one: between dynamic and redundant |
104 | 7 | --echo # |
|
0 commit comments