@@ -207,6 +207,129 @@ SELECT TABLE_NAME, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES
207207--echo # Remove copied files
208208--remove_file $MYSQL_TMP_DIR/data_80015.zip
209209--force-rmdir $MYSQLD_DATADIR
210+ 
211+ 
212+ --echo #
213+ --echo # Bug#29917793: REJECT UPGRADE 8.0.14-16 -> 8.0.17 FOR LCTN=1 AND PARTITIONED TABLES
214+ --echo #
215+ --echo # This is the test case for case sensitive file systems. A corresponding test case
216+ --echo # for case insensitive file systems can be found in dd_upgrade_ci.test.
217+ --echo #
218+ 
219+ --echo # Test with lctn=1 and no partitioned tables. Upgrade should succeed.
220+ --let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_5.log
221+ --let $name_base = data_80016_lctn1_lin_nopart
222+ --copy_file $MYSQLTEST_VARDIR/std_data/upgrade/$name_base.zip $MYSQL_TMP_DIR/$name_base.zip
223+ --file_exists $MYSQL_TMP_DIR/$name_base.zip
224+ --exec unzip -qo $MYSQL_TMP_DIR/$name_base.zip -d $MYSQL_TMP_DIR
225+ 
226+ --echo # Set different path for --datadir and check that it exists.
227+ --let $MYSQLD_DATADIR = $MYSQL_TMP_DIR/$name_base
228+ --file_exists $MYSQLD_DATADIR
229+ 
230+ --echo # Upgrade the server.
231+ --let $wait_counter= 3000
232+ --let $restart_parameters= restart: --datadir=$MYSQLD_DATADIR --log-error=$MYSQLD_LOG --lower_case_table_names=1
233+ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLD_LOG MYSQLD_LOG
234+ --source include/start_mysqld.inc
235+ 
236+ --echo # Stop the server and do cleanup.
237+ --source include/shutdown_mysqld.inc
238+ --remove_file $MYSQL_TMP_DIR/$name_base.zip
239+ --force-rmdir $MYSQLD_DATADIR
240+ 
241+ 
242+ --echo # Test with lctn=1 and partitioned tables. Upgrade should be rejected unless submitting --upgrade=FORCE.
243+ --let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_6.log
244+ --let $name_base = data_80016_lctn1_lin_part
245+ --copy_file $MYSQLTEST_VARDIR/std_data/upgrade/$name_base.zip $MYSQL_TMP_DIR/$name_base.zip
246+ --file_exists $MYSQL_TMP_DIR/$name_base.zip
247+ --exec unzip -qo $MYSQL_TMP_DIR/$name_base.zip -d $MYSQL_TMP_DIR
248+ 
249+ --echo # Set different path for --datadir and check that it exists.
250+ --let $MYSQLD_DATADIR = $MYSQL_TMP_DIR/$name_base
251+ --file_exists $MYSQLD_DATADIR
252+ 
253+ --echo # Upgrading the server should be rejected.
254+ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLD_LOG MYSQLD_LOG
255+ --error 1
256+ --exec $MYSQLD --no-defaults --secure-file-priv="" --log-error=$MYSQLD_LOG --datadir=$MYSQLD_DATADIR --lower_case_table_names=1
257+ 
258+ --let SEARCH_FILE = $MYSQLD_LOG
259+ --let SEARCH_PATTERN = with partitioned tables and lower_case_table_names == 1
260+ --source include/search_pattern.inc
261+ 
262+ --echo # Retry upgrading the server.
263+ --let $wait_counter= 3000
264+ --let $restart_parameters= restart: --datadir=$MYSQLD_DATADIR --log-error=$MYSQLD_LOG --lower_case_table_names=1 --upgrade=force
265+ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLD_LOG MYSQLD_LOG
266+ --source include/start_mysqld.inc
267+ 
268+ --echo # Table rebuild will fail.
269+ --error ER_GET_ERRNO
270+ ALTER TABLE test.t ENGINE = InnoDB;
271+ 
272+ --echo # After RENAME, table rebuild will succeed.
273+ RENAME TABLE test.t TO test.t_new;
274+ RENAME TABLE test.t_new TO test.t;
275+ ALTER TABLE test.t ENGINE = InnoDB;
276+ SHOW CREATE TABLE test.t;
277+ 
278+ --echo # Stop the server and do cleanup.
279+ --source include/shutdown_mysqld.inc
280+ --remove_file $MYSQL_TMP_DIR/$name_base.zip
281+ --force-rmdir $MYSQLD_DATADIR
282+ 
283+ 
284+ --echo # Test with lctn=0 and no partitioned tables. Upgrade should succeed.
285+ --let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_7.log
286+ --let $name_base = data_80016_lctn0_lin_nopart
287+ --copy_file $MYSQLTEST_VARDIR/std_data/upgrade/$name_base.zip $MYSQL_TMP_DIR/$name_base.zip
288+ --file_exists $MYSQL_TMP_DIR/$name_base.zip
289+ --exec unzip -qo $MYSQL_TMP_DIR/$name_base.zip -d $MYSQL_TMP_DIR
290+ 
291+ --echo # Set different path for --datadir and check that it exists.
292+ --let $MYSQLD_DATADIR = $MYSQL_TMP_DIR/$name_base
293+ --file_exists $MYSQLD_DATADIR
294+ 
295+ --echo # Upgrade the server.
296+ --let $wait_counter= 3000
297+ --let $restart_parameters= restart: --datadir=$MYSQLD_DATADIR --log-error=$MYSQLD_LOG
298+ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLD_LOG MYSQLD_LOG
299+ --source include/start_mysqld.inc
300+ 
301+ --echo # Stop the server and do cleanup.
302+ --source include/shutdown_mysqld.inc
303+ --remove_file $MYSQL_TMP_DIR/$name_base.zip
304+ --force-rmdir $MYSQLD_DATADIR
305+ 
306+ 
307+ --echo # Test with lctn=0 and partitioned tables. Upgrade should succeed.
308+ --let $MYSQLD_LOG= $MYSQLTEST_VARDIR/log/save_dd_upgrade_8.log
309+ --let $name_base = data_80016_lctn0_lin_part
310+ --copy_file $MYSQLTEST_VARDIR/std_data/upgrade/$name_base.zip $MYSQL_TMP_DIR/$name_base.zip
311+ --file_exists $MYSQL_TMP_DIR/$name_base.zip
312+ --exec unzip -qo $MYSQL_TMP_DIR/$name_base.zip -d $MYSQL_TMP_DIR
313+ 
314+ --echo # Set different path for --datadir and check that it exists.
315+ --let $MYSQLD_DATADIR = $MYSQL_TMP_DIR/$name_base
316+ --file_exists $MYSQLD_DATADIR
317+ 
318+ --echo # Upgrade the server.
319+ --let $wait_counter= 3000
320+ --let $restart_parameters= restart: --datadir=$MYSQLD_DATADIR --log-error=$MYSQLD_LOG
321+ --replace_result $MYSQLD_DATADIR MYSQLD_DATADIR $MYSQLD_LOG MYSQLD_LOG
322+ --source include/start_mysqld.inc
323+ 
324+ --echo # Table rebuild will succeed.
325+ ALTER TABLE test.t ENGINE = InnoDB;
326+ 
327+ --echo # Stop the server and do cleanup.
328+ --source include/shutdown_mysqld.inc
329+ --remove_file $MYSQL_TMP_DIR/$name_base.zip
330+ --force-rmdir $MYSQLD_DATADIR
331+ 
332+ 
210333--echo # Restart the server with default options.
211334--let $restart_parameters= restart:
212335--source include/start_mysqld.inc
0 commit comments