mariadb/mysql-test/t/log_tables_upgrade.test
Davi Arnaut b0a1ae09ae Bug#49823: mysql_upgrade fatal error due to general_log / slow_low CSV NULL
The problem was that the CSV storage engine does not support NULL
fields, yet in some early 5.1 version the log tables (general_log
and slow_log) were created with null fields. On top of this, when
altering a CSV table column, all fields of the table must be NOT
NULL otherwise the alteration fails.

The solution is to ensure that during upgrade all columns of the
log tables are NOT NULL.

mysql-test/r/log_tables_upgrade.result:
  Add test case result for Bug#49823.
mysql-test/std_data/bug49823.CSV:
  Sample data for test.
mysql-test/std_data/bug49823.frm:
  Add a CSV table which mimics the general_log table, except that
  it contains a nullable column.
mysql-test/t/log_tables_upgrade.test:
  Add test case for Bug#49823.
scripts/mysql_system_tables_fix.sql:
  Ensure that all columns of the log tables are NOT NULL.
2010-02-26 09:22:48 -03:00

32 lines
1,002 B
Text

--source include/not_embedded.inc
--source include/have_csv.inc
# Only run test if "mysql_upgrade" is found
--require r/have_mysql_upgrade.result
--disable_query_log
select LENGTH("$MYSQL_UPGRADE")>0 as have_mysql_upgrade;
--enable_query_log
--echo #
--echo # Bug#49823: mysql_upgrade fatal error due to general_log / slow_low CSV NULL
--echo #
USE test;
let $MYSQLD_DATADIR= `SELECT @@datadir`;
copy_file std_data/bug49823.frm $MYSQLD_DATADIR/test/bug49823.frm;
copy_file std_data/bug49823.CSM $MYSQLD_DATADIR/test/bug49823.CSM;
copy_file std_data/bug49823.CSV $MYSQLD_DATADIR/test/bug49823.CSV;
SET @saved_general_log = @@GLOBAL.general_log;
SET GLOBAL general_log = OFF;
USE mysql;
FLUSH TABLES;
REPAIR TABLE test.bug49823;
RENAME TABLE general_log TO renamed_general_log;
RENAME TABLE test.bug49823 TO general_log;
--exec $MYSQL_UPGRADE --skip-verbose --force 2>&1
DROP TABLE general_log;
RENAME TABLE renamed_general_log TO general_log;
SET GLOBAL general_log = @saved_general_log;
USE test;