File: partition_debug.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (137 lines) | stat: -rw-r--r-- 4,662 bytes parent folder | download
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
# Partitioning test that require debug features

--source include/have_debug.inc

--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 SESSION debug="+d,partition_fail_index_init";
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
SELECT * FROM t1 WHERE b = "Seven";
SET SESSION debug="-d,partition_fail_index_init";
SELECT * FROM t1 WHERE b = "Seven";
DROP TABLE t1;

--echo #
--echo # Bug 29706669 ALTER EXCHANGE CAUSES INDEX CORRUPTION
--echo #

CREATE TABLE t1_part_table ( f1 INT PRIMARY KEY,
			     f2 iNT , f3 INT,
			     KEY `IDX_F2` (f2),
			     KEY `IDX_F3` (f3)
                           ) ENGINE=INNODB
PARTITION BY RANGE (f1) (
PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN (20));

CREATE TABLE t1_normal_table ( f1 INT PRIMARY KEY,
			     f2 iNT , f3 INT,
			     KEY `IDX_F3` (f3),
			     KEY `IDX_F2` (f2)
			   ) ENGINE=INNODB;

INSERT INTO t1_part_table VALUES (5,10,20),(6,30,40),(15,50,60),(17,70,80);
INSERT INTO t1_normal_table VALUES (19,90,100),(18,110,120);

SET SESSION debug='+d,skip_dd_table_access_check';

SELECT t.NAME AS TABLE_NAME , i.NAME AS INDEX_NAME , i.ORDINAL_POSITION
 FROM mysql.indexes i JOIN mysql.tables t ON i.TABLE_ID = t.ID
 WHERE t.NAME='t1_normal_table' ORDER BY i.ORDINAL_POSITION;

SHOW CREATE TABLE t1_normal_table;

SELECT t.NAME AS TABLE_NAME, p.NAME AS PARTITION_NAME , i.NAME AS INDEX_NAME, i.ORDINAL_POSITION
  FROM  mysql.tables t JOIN mysql.table_partitions p ON t.ID = p.TABLE_ID
        JOIN mysql.index_partitions ip ON p.ID = ip.PARTITION_ID
        JOIN mysql.indexes i ON i.ID = ip.INDEX_ID
  WHERE t.NAME= 't1_part_table' ORDER BY i.ORDINAL_POSITION,p.NAME;

SHOW CREATE TABLE t1_part_table;

ALTER TABLE t1_part_table EXCHANGE PARTITION p1 WITH TABLE t1_normal_table;

SELECT t.NAME AS TABLE_NAME , i.NAME AS INDEX_NAME , i.ORDINAL_POSITION
 FROM mysql.indexes i JOIN mysql.tables t ON i.TABLE_ID = t.ID
 WHERE t.NAME='t1_normal_table'  ORDER BY i.ORDINAL_POSITION;

SHOW CREATE TABLE t1_normal_table;

SELECT t.NAME AS TABLE_NAME, p.NAME AS PARTITION_NAME , i.NAME AS INDEX_NAME, i.ORDINAL_POSITION
  FROM  mysql.tables t JOIN mysql.table_partitions p ON t.ID = p.TABLE_ID
        JOIN mysql.index_partitions ip ON p.ID = ip.PARTITION_ID
        JOIN mysql.indexes i ON i.ID = ip.INDEX_ID
  WHERE t.NAME= 't1_part_table' ORDER BY i.ORDINAL_POSITION,p.NAME;

SHOW CREATE TABLE t1_part_table;

SET SESSION debug='-d,skip_dd_table_access_check';

CHECK TABLE t1_part_table;
CHECK TABLE t1_normal_table;
SELECT * FROM t1_part_table;
SELECT * FROM t1_normal_table;
DROP TABLE t1_part_table;
DROP TABLE t1_normal_table;

--echo #
--echo # Bug #30437407 ASSERTION ".NUM_ROWS == .~.HA_ROWS"
--echo #

CREATE TABLE t1(a int) PARTITION BY LIST (a) (PARTITION x1 VALUES IN
(2),PARTITION x2 VALUES IN (3));
ALTER TABLE t1 DISCARD TABLESPACE;
--skip_if_hypergraph  # Error message is worded differently.
--error ER_TABLESPACE_DISCARDED
SELECT COUNT(*)FROM t1;
DROP TABLE t1;

--echo #
--echo # Bug #31941543	EXCHANGE PARTITION ASSERT
--echo #

# Choosing a table with auto generated primary key
# and a secondary index whose name is less than  "PRIMARY".
# so when sorted "IX_LogTime" comes first  and "PRIMARY" comes
# after that. This condtion was not caught by the fix for
# Bug 29706669.
CREATE TABLE t1 (
    LogTime TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00',
    UserAgent VARCHAR(256) COLLATE utf8mb4_bin DEFAULT NULL,
    KEY IX_LogTime (LogTime)
) ENGINE=INNODB
PARTITION BY RANGE(UNIX_TIMESTAMP(LogTime))
  (
   PARTITION p201407 VALUES LESS THAN (UNIX_TIMESTAMP('2014-08-01')),
   PARTITION p201412 VALUES LESS THAN (UNIX_TIMESTAMP('2015-01-01')),
   PARTITION p201501 VALUES LESS THAN (UNIX_TIMESTAMP('2015-02-01')),
   PARTITION p201502 VALUES LESS THAN (UNIX_TIMESTAMP('2015-03-01')),
   PARTITION p201503 VALUES LESS THAN (UNIX_TIMESTAMP('2015-04-01')),
   PARTITION future VALUES LESS THAN MAXVALUE
  );
SHOW CREATE TABLE t1;

CREATE TABLE t2 (
    LogTime TIMESTAMP NOT NULL DEFAULT '2000-01-01 00:00:00',
    UserAgent VARCHAR(256) COLLATE utf8mb4_bin DEFAULT NULL,
    KEY IX_LogTime (LogTime)
) ENGINE=INNODB;
SHOW CREATE TABLE t2;

INSERT INTO t2 VALUES('2014-08-02 00:00:00','useragent');

SELECT * FROM t2;
SELECT * FROM t1;

ALTER TABLE t1 EXCHANGE PARTITION p201412 WITH TABLE t2;

SELECT * FROM t2;
SELECT * FROM t1;

DROP TABLE t1,t2;