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 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
|
--source include/have_case_sensitive_file_system.inc
--source include/not_valgrind.inc
###############################################################################
#
# Bug#29941988 : PREFIX INDEX LENGTH IGNORED WHILE UPGRADING PARTITIONED TABLES
# Bug#29941959 : PREFIX KEYS REFERRED BY PARTITIONING FUNC NOT REQUIRED TO BE
# PART OF UNIQUE KEY
# WL#13588 : Deprecate support for prefix keys in partition functions
#
###############################################################################
# To create the file std_data/data57_partition_prefix_key.zip
#
# - In 5.7, execute:
#
# CREATE SCHEMA test;
# USE test;
#
# CREATE TABLE t1(
# a VARCHAR(10000),
# b VARCHAR(10),
# PRIMARY KEY(a(100), b)
# ) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY KEY() PARTITIONS 3;
#
# INSERT INTO t1 VALUES
# ('a','a'),
# ('a','b'),
# ('b','a'),
# ('a','aa'),
# ('aa','a'),
# ('a','zz'),
# ('zz','a');
#
# CREATE TABLE t3(a VARCHAR(10000),
# b VARCHAR(10),
# PRIMARY KEY(a(25), b),
# UNIQUE KEY i (b)
# ) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY KEY() PARTITIONS 2;
#
# - then zip the data folder
#
# zip -r data57_partition_prefix_key.zip db/
#
###############################################################################
--echo # Copy the 5.7 data zip file to working directory.
--copy_file $MYSQLTEST_VARDIR/std_data/data57_partition_prefix_key.zip $MYSQL_TMP_DIR/data57_partition_prefix_key.zip
--echo # Check that the zip file exists in the working directory.
--file_exists $MYSQL_TMP_DIR/data57_partition_prefix_key.zip
--echo # Unzip 5.7 data directory.
--exec unzip -qo $MYSQL_TMP_DIR/data57_partition_prefix_key.zip -d $MYSQL_TMP_DIR/data57_partition_prefix_key
--echo # Set data directory to the 5.7 data directory.
--let $MYSQLD_DATADIR1= $MYSQL_TMP_DIR/data57_partition_prefix_key/db
--echo # Set log directory.
--let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/data57_partition_prefix_key.log
--replace_result $MYSQLD MYSQLD $MYSQLD_DATADIR1 MYSQLD_DATADIR1 $MYSQLD_LOG MYSQLD_LOG
--echo # Stop DB server which was created by MTR default
--exec echo "wait" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--shutdown_server
--source include/wait_until_disconnected.inc
--echo # Restart server to trigger upgrade.
--exec echo "restart: --datadir=$MYSQLD_DATADIR1 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--let $wait_counter= 10000
--enable_reconnect
--source include/wait_until_connected_again.inc
--echo # Check for errors in the error log.
--let SEARCH_FILE= $MYSQLD_LOG
--let SEARCH_PATTERN= \[ERROR\]
--source include/search_pattern.inc
--echo
--echo # Should show deprecation warnings in the error log when upgrading
--echo # from 5.7.
--let SEARCH_FILE= $MYSQLD_LOG
--let SEARCH_PATTERN= Usage of column 'test\.t1\.a' having prefix key part 'a\(100\)' in the PARTITION BY KEY\(\) clause is deprecated and will be removed in a future release\.
--source include/search_pattern.inc
--let SEARCH_FILE= $MYSQLD_LOG
--let SEARCH_PATTERN= Usage of column 'test\.t3\.a' having prefix key part 'a\(25\)' in the PARTITION BY KEY\(\) clause is deprecated and will be removed in a future release\.
--source include/search_pattern.inc
--echo # Check output of SHOW CREATE TABLE.
SHOW CREATE TABLE t1;
--echo # Create equivalent table after upgrade and insert the same data.
CREATE TABLE t2 (
a VARCHAR(10000) NOT NULL,
b VARCHAR(10) NOT NULL,
PRIMARY KEY (a(100),b)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 PARTITION BY KEY() PARTITIONS 3;
INSERT INTO t2 VALUES
('a','a'),
('a','b'),
('b','a'),
('a','aa'),
('aa','a'),
('a','zz'),
('zz','a');
--echo # Ensure that partition calculations are the same for upgraded table
--echo # and newly created table.
SELECT (SELECT GROUP_CONCAT('(',a,',',b,')') FROM t1 PARTITION(p0))
= (SELECT GROUP_CONCAT('(',a,',',b,')') FROM t2 PARTITION(p0))
as `p0_equal`,
(SELECT GROUP_CONCAT('(',a,',',b,')') FROM t1 PARTITION(p1))
= (SELECT GROUP_CONCAT('(',a,',',b,')') FROM t2 PARTITION(p1))
as `p1_equal`,
(SELECT GROUP_CONCAT('(',a,',',b,')') FROM t1 PARTITION(p2))
= (SELECT GROUP_CONCAT('(',a,',',b,')') FROM t2 PARTITION(p2))
as `p2_equal`;
--echo # Stop the server.
--let $shutdown_server_timeout = 300
--source include/shutdown_mysqld.inc
--echo # Check for mysql_upgrade_info file in data directory.
--file_exists $MYSQLD_DATADIR1/mysql_upgrade_info
--echo # Cleanup.
--remove_file $MYSQL_TMP_DIR/data57_partition_prefix_key.zip
--force-rmdir $MYSQL_TMP_DIR/data57_partition_prefix_key
################################################################################
#
# WL#13588 : Deprecate support for prefix keys in partition functions
#
################################################################################
# Test for deprecation warning to be shown in the error log on upgrade
# from an earlier 8.0.x version.
#
# To create the file std_data/data80019_partition_prefix_key.zip
#
# - In 8.0.19, execute:
#
# CREATE SCHEMA test;
# USE test;
#
# CREATE TABLE `t1` (
# `a` VARCHAR(10000) NOT NULL,
# `b` VARCHAR(10) NOT NULL,
# PRIMARY KEY (`a`(100),`b`)
# ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
# PARTITION BY KEY () PARTITIONS 3;
#
# - then zip the data folder
#
# zip -r data80019_partition_prefix_key.zip db/
#
################################################################################
--echo
--echo # Copy the 8.0.19 data zip file to working directory.
--copy_file $MYSQLTEST_VARDIR/std_data/data80019_partition_prefix_key.zip $MYSQL_TMP_DIR/data80019_partition_prefix_key.zip
--echo
--echo # Check that the zip file exists in the working directory.
--file_exists $MYSQL_TMP_DIR/data80019_partition_prefix_key.zip
--echo
--echo # Unzip 8.0.19 data directory.
--exec unzip -qo $MYSQL_TMP_DIR/data80019_partition_prefix_key.zip -d $MYSQL_TMP_DIR/data80019_partition_prefix_key
--echo
--echo # Set data directory to the 8.0.19 data directory.
--let $MYSQLD_DATADIR1= $MYSQL_TMP_DIR/data80019_partition_prefix_key/db
--echo
--echo # Set log directory.
--let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/data80019_partition_prefix_key.log
--replace_result $MYSQLD MYSQLD $MYSQLD_DATADIR1 MYSQLD_DATADIR1 $MYSQLD_LOG MYSQLD_LOG
--echo
--echo # Restart server to trigger upgrade.
--exec echo "restart: --datadir=$MYSQLD_DATADIR1 --log-error=$MYSQLD_LOG" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
--let $wait_counter= 10000
--enable_reconnect
--source include/wait_until_connected_again.inc
--echo
--echo # Check for errors in the error log.
--let SEARCH_FILE= $MYSQLD_LOG
--let SEARCH_PATTERN= \[ERROR\]
--source include/search_pattern.inc
--echo
--echo # Should show a deprecation warning in the error log when upgrading
--echo # from 8.0.19.
--let SEARCH_FILE= $MYSQLD_LOG
--let SEARCH_PATTERN= Column 'test\.t1\.a' having prefix key part 'a\(100\)' is ignored by the partitioning function. Use of prefixed columns in the PARTITION BY KEY\(\) clause is deprecated and will be removed in a future release\.
--source include/search_pattern.inc
--echo
--echo # Stop the server.
--let $shutdown_server_timeout = 300
--source include/shutdown_mysqld.inc
--echo
--echo # Check for mysql_upgrade_info file in data directory
--file_exists $MYSQLD_DATADIR1/mysql_upgrade_info
--echo
--echo # Cleanup.
--remove_file $MYSQL_TMP_DIR/data80019_partition_prefix_key.zip
--force-rmdir $MYSQL_TMP_DIR/data80019_partition_prefix_key
--echo
--echo # Restart the server with default options.
--let $restart_parameters=
--source include/start_mysqld.inc
|