summaryrefslogtreecommitdiff
path: root/mysql-test/suite/parts/t/partition_debug.test
blob: 2f8994705f3f57586cd2093047b1e668818db7e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
# Partitioning test that require debug features
# including crashing tests.

--source include/have_debug.inc
--source include/have_partition.inc
# Don't test this under valgrind, memory leaks will occur
--source include/not_valgrind.inc
# Crash tests don't work with embedded
--source include/not_embedded.inc

# Make sure system tables are not open, as the test will kill the server
# and it will cause corruption errors in the log
FLUSH TABLES;

# Partitioning test that require debug features

--echo #
--echo # Bug#13737949: CRASH IN HA_PARTITION::INDEX_INIT
--echo # Bug#18694052: SERVER CRASH IN HA_PARTITION::INIT_RECORD_PRIORITY_QUEUE
--echo #
CREATE TABLE t1 (a INT, b VARCHAR(64), KEY(b,a))
  PARTITION BY HASH (a) PARTITIONS 3;
  INSERT INTO t1 VALUES (1, "1"), (2, "2"), (3, "3"), (4, "Four"), (5, "Five"),
  (6, "Six"), (7, "Seven"), (8, "Eight"), (9, "Nine");
SET @saved_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,ha_partition_fail_index_init";
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
SELECT * FROM t1 WHERE b = "Seven";
SET SESSION debug_dbug=@saved_dbug;
SELECT * FROM t1 WHERE b = "Seven";
DROP TABLE t1;


--let $DATADIR= `SELECT @@datadir;`

--echo #
--echo # WL#4445: EXCHANGE PARTITION WITH TABLE
--echo # Verify ddl_log in case of crashing.
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
call mtr.add_suppression('InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles!');

let $create_statement= CREATE TABLE t1 (a INT, b VARCHAR(64)) PARTITION BY RANGE (a)
(PARTITION p0 VALUES LESS THAN (10),
 PARTITION p1 VALUES LESS THAN MAXVALUE);
let $insert_statement= INSERT INTO t1 VALUES (1, "Original from partition p0"), (2, "Original from partition p0"), (3, "Original from partition p0"), (4, "Original from partition p0"), (11, "Original from partition p1"), (12, "Original from partition p1"), (13, "Original from partition p1"), (14, "Original from partition p1"), (21, "Original from partition p1"), (22, "Original from partition p1"), (23, "Original from partition p1"), (24, "Original from partition p1");

let $create_statement2= CREATE TABLE t2 (a INT, b VARCHAR(64));
let $insert_statement2= INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
let $crash_statement= ALTER TABLE t1 EXCHANGE PARTITION p0 WITH TABLE t2;
--source suite/parts/inc/partition_crash_exchange.inc
let $fail_statement= $crash_statement;
--source suite/parts/inc/partition_fail_exchange.inc

--echo #
--echo # MDEV-22165 CONVERT PARTITION: move in partition from existing table
--echo #
let $create_statement= create or replace table t1 (x int primary key)
  partition by range(x) (
    partition p1 values less than (10),
    partition p2 values less than (20),
    partition p3 values less than (30));

let $create_statement2= create or replace table t2 (x int primary key);
let $insert_statement= insert into t1 values (2), (12), (22);
let $insert_statement2= insert into t2 values (32), (42), (52);

let $fail_statement= alter table t1 convert table t2 to partition pn values less than maxvalue;

set @save_dbug=@@debug_dbug;
set session debug_dbug="+d,fail_convert_partition_1";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_2";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_3";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_4";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_5";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_6";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_7";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_8";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_9";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_11";
--source suite/parts/inc/partition_fail_t2.inc
set session debug_dbug=@save_dbug;


--echo #
--echo # MDEV-22166 CONVERT PARTITION: move out partition into a table
--echo #
let $create_statement= create or replace table t1 (x int primary key)
  partition by range(x) (
    partition p1 values less than (10),
    partition p2 values less than (20),
    partition p3 values less than (30),
    partition p4 values less than (40),
    partition p5 values less than (50),
    partition pn values less than maxvalue);

let $insert_statement= insert into t1 values (2), (12), (22), (32), (42), (52);
let $fail_statement= alter table t1 convert partition p2 to table tp2;

set @save_dbug=@@debug_dbug;
set session debug_dbug="+d,fail_create_before_create_frm";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_alter_partition_after_write_frm";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,error_convert_partition_00";
--source suite/parts/inc/partition_fail.inc
#set session debug_dbug=@save_dbug;
#set session debug_dbug="+d,fail_convert_partition_01";
#--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_1";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_2";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_3";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_4";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_5";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_6";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_7";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_8";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_9";
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
set session debug_dbug="+d,fail_convert_partition_11";
--echo # Already finished DDL logging, so tp2 now exists:
--source suite/parts/inc/partition_fail.inc
set session debug_dbug=@save_dbug;
show create table tp2;
select * from tp2;
drop table tp2;