Commit 6f17e233 authored by Sergei Golubchik's avatar Sergei Golubchik

post-merge fixes

parent f9c02d7c
...@@ -79,7 +79,6 @@ enum options_client ...@@ -79,7 +79,6 @@ enum options_client
OPT_SLAP_COMMIT, OPT_SLAP_COMMIT,
OPT_SLAP_DETACH, OPT_SLAP_DETACH,
OPT_SLAP_NO_DROP, OPT_SLAP_NO_DROP,
OPT_UPGRADE_VIEWS,
OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT_MODE, OPT_SERVER_ID, OPT_MYSQL_REPLACE_INTO, OPT_BASE64_OUTPUT_MODE, OPT_SERVER_ID,
OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT, OPT_FIX_TABLE_NAMES, OPT_FIX_DB_NAMES, OPT_SSL_VERIFY_SERVER_CERT,
OPT_AUTO_VERTICAL_OUTPUT, OPT_AUTO_VERTICAL_OUTPUT,
......
...@@ -741,6 +741,12 @@ static void print_conn_args(const char *tool_name) ...@@ -741,6 +741,12 @@ static void print_conn_args(const char *tool_name)
static int run_mysqlcheck_upgrade(void) static int run_mysqlcheck_upgrade(void)
{ {
int retch; int retch;
if (opt_systables_only)
{
verbose("Phase %d/%d: Checking and upgrading tables... Skipped",
phase++, phases_total);
return 0;
}
verbose("Phase %d/%d: Checking and upgrading tables", phase++, phases_total); verbose("Phase %d/%d: Checking and upgrading tables", phase++, phases_total);
print_conn_args("mysqlcheck"); print_conn_args("mysqlcheck");
retch= run_tool(mysqlcheck_path, retch= run_tool(mysqlcheck_path,
...@@ -755,8 +761,6 @@ static int run_mysqlcheck_upgrade(void) ...@@ -755,8 +761,6 @@ static int run_mysqlcheck_upgrade(void)
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog", opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
"2>&1", "2>&1",
NULL); NULL);
if (retch || opt_systables_only)
verbose("Phase %d/%d: Skipping 'mysql_fix_privilege_tables'... not needed", phase++, phases_total);
return retch; return retch;
} }
...@@ -784,15 +788,15 @@ static my_bool is_mysql() ...@@ -784,15 +788,15 @@ static my_bool is_mysql()
static int run_mysqlcheck_views(void) static int run_mysqlcheck_views(void)
{ {
const char *upgrade_views="--upgrade-views=YES"; const char *upgrade_views="--process-views=YES";
if (is_mysql()) if (is_mysql())
{ {
upgrade_views="--upgrade-views=FROM_MYSQL"; upgrade_views="--process-views=UPGRADE_FROM_MYSQL";
verbose("Phase %d/%d: Fixing views from mysql", phase++, phases_total); verbose("Phase %d/%d: Fixing views from mysql", phase++, phases_total);
} }
else if (opt_systables_only) else if (opt_systables_only)
{ {
verbose("Phase %d/%d: Fixing views - skipped - not required", phase++, phases_total); verbose("Phase %d/%d: Fixing views... Skipped", phase++, phases_total);
return 0; return 0;
} }
else else
...@@ -803,9 +807,9 @@ static int run_mysqlcheck_views(void) ...@@ -803,9 +807,9 @@ static int run_mysqlcheck_views(void)
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
"--no-defaults", "--no-defaults",
ds_args.str, ds_args.str,
"--all-databases", "--all-databases", "--repair",
upgrade_views, upgrade_views,
"--skip-fix-tables", "--skip-process-tables",
opt_verbose ? "--verbose": "", opt_verbose ? "--verbose": "",
opt_silent ? "--silent": "", opt_silent ? "--silent": "",
opt_write_binlog ? "--write-binlog" : "--skip-write-binlog", opt_write_binlog ? "--write-binlog" : "--skip-write-binlog",
...@@ -815,7 +819,14 @@ static int run_mysqlcheck_views(void) ...@@ -815,7 +819,14 @@ static int run_mysqlcheck_views(void)
static int run_mysqlcheck_fixnames(void) static int run_mysqlcheck_fixnames(void)
{ {
verbose("Phase %d/%d: Fixing table and database names", phase++, phases_total); if (opt_systables_only)
{
verbose("Phase %d/%d: Fixing table and database names ... Skipped",
phase++, phases_total);
return 0;
}
verbose("Phase %d/%d: Fixing table and database names",
phase++, phases_total);
print_conn_args("mysqlcheck"); print_conn_args("mysqlcheck");
return run_tool(mysqlcheck_path, return run_tool(mysqlcheck_path,
NULL, /* Send output from mysqlcheck directly to screen */ NULL, /* Send output from mysqlcheck directly to screen */
...@@ -896,7 +907,8 @@ static int run_sql_fix_privilege_tables(void) ...@@ -896,7 +907,8 @@ static int run_sql_fix_privilege_tables(void)
if (init_dynamic_string(&ds_result, "", 512, 512)) if (init_dynamic_string(&ds_result, "", 512, 512))
die("Out of memory"); die("Out of memory");
verbose("Phase %d/%d: Running 'mysql_fix_privilege_tables'...", phase++, phases_total); verbose("Phase %d/%d: Running 'mysql_fix_privilege_tables'",
phase++, phases_total);
run_query(mysql_fix_privilege_tables, run_query(mysql_fix_privilege_tables,
&ds_result, /* Collect result */ &ds_result, /* Collect result */
TRUE); TRUE);
...@@ -1058,10 +1070,8 @@ int main(int argc, char **argv) ...@@ -1058,10 +1070,8 @@ int main(int argc, char **argv)
/* /*
Run "mysqlcheck" and "mysql_fix_privilege_tables.sql" Run "mysqlcheck" and "mysql_fix_privilege_tables.sql"
*/ */
if ((!opt_systables_only && if (run_mysqlcheck_views() || run_mysqlcheck_fixnames() ||
(run_mysqlcheck_views() || run_mysqlcheck_upgrade() || run_sql_fix_privilege_tables())
run_mysqlcheck_fixnames() || run_mysqlcheck_upgrade())) ||
run_sql_fix_privilege_tables())
{ {
/* /*
The upgrade failed to complete in some way or another, The upgrade failed to complete in some way or another,
......
This diff is collapsed.
...@@ -11,8 +11,9 @@ Table Op Msg_type Msg_text ...@@ -11,8 +11,9 @@ Table Op Msg_type Msg_text
test.bug49823 repair status OK test.bug49823 repair status OK
RENAME TABLE general_log TO renamed_general_log; RENAME TABLE general_log TO renamed_general_log;
RENAME TABLE test.bug49823 TO general_log; RENAME TABLE test.bug49823 TO general_log;
Phase 1/3: Fixing table and database names Phase 1/4: Fixing views
Phase 2/3: Checking and upgrading tables Phase 2/4: Fixing table and database names
Phase 3/4: Checking and upgrading tables
Processing databases Processing databases
information_schema information_schema
mtr mtr
...@@ -44,7 +45,7 @@ mysql.time_zone_transition_type OK ...@@ -44,7 +45,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 3/3: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
DROP TABLE general_log; DROP TABLE general_log;
RENAME TABLE renamed_general_log TO general_log; RENAME TABLE renamed_general_log TO general_log;
......
...@@ -32,7 +32,7 @@ mysql.time_zone_transition_type OK ...@@ -32,7 +32,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
Run it again - should say already completed Run it again - should say already completed
This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade This installation of MySQL is already upgraded to VERSION, use --force if you still need to run mysql_upgrade
...@@ -70,7 +70,7 @@ mysql.time_zone_transition_type OK ...@@ -70,7 +70,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila'; CREATE USER mysqltest1@'%' IDENTIFIED by 'sakila';
GRANT ALL ON *.* TO mysqltest1@'%'; GRANT ALL ON *.* TO mysqltest1@'%';
...@@ -108,7 +108,7 @@ mysql.time_zone_transition_type OK ...@@ -108,7 +108,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
DROP USER mysqltest1@'%'; DROP USER mysqltest1@'%';
Version check failed. Got the following error when calling the 'mysql' command line client Version check failed. Got the following error when calling the 'mysql' command line client
...@@ -151,7 +151,7 @@ mysql.time_zone_transition_type OK ...@@ -151,7 +151,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
set GLOBAL sql_mode=default; set GLOBAL sql_mode=default;
# #
...@@ -195,7 +195,7 @@ mysql.time_zone_transition_type OK ...@@ -195,7 +195,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
CALL testproc(); CALL testproc();
DROP PROCEDURE testproc; DROP PROCEDURE testproc;
...@@ -242,7 +242,7 @@ mysql.time_zone_transition_type OK ...@@ -242,7 +242,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
SHOW GRANTS FOR 'user3'@'%'; SHOW GRANTS FOR 'user3'@'%';
Grants for user3@% Grants for user3@%
...@@ -251,7 +251,10 @@ GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%' ...@@ -251,7 +251,10 @@ GRANT ALL PRIVILEGES ON `roelt`.`test2` TO 'user3'@'%'
DROP USER 'user3'@'%'; DROP USER 'user3'@'%';
End of 5.1 tests End of 5.1 tests
The --upgrade-system-tables option was used, databases won't be touched. The --upgrade-system-tables option was used, databases won't be touched.
Phase 1/4: Running 'mysql_fix_privilege_tables'... Phase 1/4: Fixing views... Skipped
Phase 2/4: Fixing table and database names ... Skipped
Phase 3/4: Checking and upgrading tables... Skipped
Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
# #
# Bug#11827359 60223: MYSQL_UPGRADE PROBLEM WITH OPTION # Bug#11827359 60223: MYSQL_UPGRADE PROBLEM WITH OPTION
...@@ -292,7 +295,7 @@ mysql.time_zone_transition_type OK ...@@ -292,7 +295,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
# #
# MDEV-4332 Increase username length from 16 characters # MDEV-4332 Increase username length from 16 characters
...@@ -353,7 +356,7 @@ mysql.time_zone_transition_type OK ...@@ -353,7 +356,7 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
SELECT definer FROM mysql.proc WHERE db = 'test' AND name = 'pr'; SELECT definer FROM mysql.proc WHERE db = 'test' AND name = 'pr';
definer definer
......
# #
# Bug#55672 mysql_upgrade dies with internal error # Bug#55672 mysql_upgrade dies with internal error
# #
Phase 1/3: Fixing table and database names Phase 1/4: Fixing views
Phase 2/3: Checking and upgrading tables Phase 2/4: Fixing table and database names
Phase 3/4: Checking and upgrading tables
Processing databases Processing databases
information_schema information_schema
mtr mtr
...@@ -33,5 +34,5 @@ mysql.time_zone_transition_type OK ...@@ -33,5 +34,5 @@ mysql.time_zone_transition_type OK
mysql.user OK mysql.user OK
performance_schema performance_schema
test test
Phase 3/3: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
...@@ -4,6 +4,30 @@ drop view if exists t1,v1,v2,v3,v4,v1badcheck; ...@@ -4,6 +4,30 @@ drop view if exists t1,v1,v2,v3,v4,v1badcheck;
create table t1(a int); create table t1(a int);
create table kv(k varchar(30) NOT NULL PRIMARY KEY,v varchar(50)); create table kv(k varchar(30) NOT NULL PRIMARY KEY,v varchar(50));
flush tables; flush tables;
check view v1;
Table Op Msg_type Msg_text
test.v1 check status OK
check view v1badcheck;
Table Op Msg_type Msg_text
test.v1badcheck check note View text checksum failed
check view v2;
Table Op Msg_type Msg_text
test.v2 check status OK
check view v3;
Table Op Msg_type Msg_text
test.v3 check status OK
check view v1 for upgrade;
Table Op Msg_type Msg_text
test.v1 check error Upgrade required. Please do "REPAIR VIEW `v1`" or dump/reload to fix it!
check view v1badcheck for upgrade;
Table Op Msg_type Msg_text
test.v1badcheck check note View text checksum failed
check view v2 for upgrade;
Table Op Msg_type Msg_text
test.v2 check error Upgrade required. Please do "REPAIR VIEW `v2`" or dump/reload to fix it!
check view v3 for upgrade;
Table Op Msg_type Msg_text
test.v3 check error Upgrade required. Please do "REPAIR VIEW `v3`" or dump/reload to fix it!
Phase 1/4: Fixing views Phase 1/4: Fixing views
test.v1 OK test.v1 OK
test.v1badcheck OK test.v1badcheck OK
...@@ -43,7 +67,7 @@ performance_schema ...@@ -43,7 +67,7 @@ performance_schema
test test
test.kv OK test.kv OK
test.t1 OK test.t1 OK
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
show create view v1; show create view v1;
View Create View character_set_client collation_connection View Create View character_set_client collation_connection
...@@ -107,6 +131,7 @@ k ...@@ -107,6 +131,7 @@ k
mariadb-version mariadb-version
truncate table kv; truncate table kv;
drop view if exists v1,v2,v3,v1badcheck; drop view if exists v1,v2,v3,v1badcheck;
rename table mysql.event to mysql.ev_bk;
flush tables; flush tables;
create algorithm=temptable view v4 as select a from t1; create algorithm=temptable view v4 as select a from t1;
show create view v1; show create view v1;
...@@ -162,7 +187,7 @@ performance_schema ...@@ -162,7 +187,7 @@ performance_schema
test test
test.kv OK test.kv OK
test.t1 OK test.t1 OK
Phase 4/4: Running 'mysql_fix_privilege_tables'... Phase 4/4: Running 'mysql_fix_privilege_tables'
OK OK
show create view v1; show create view v1;
View Create View character_set_client collation_connection View Create View character_set_client collation_connection
...@@ -186,7 +211,10 @@ k ...@@ -186,7 +211,10 @@ k
mariadb-version mariadb-version
truncate table kv; truncate table kv;
drop view if exists v1,v2,v3; drop view if exists v1,v2,v3;
flush tables; drop table mysql.event;
rename table mysql.ev_bk to mysql.event;
test.kv OK
test.t1 OK
test.v1 OK test.v1 OK
test.v2 OK test.v2 OK
test.v3 OK test.v3 OK
...@@ -195,11 +223,12 @@ show binlog events from <binlog_start>; ...@@ -195,11 +223,12 @@ show binlog events from <binlog_start>;
Log_name Pos Event_type Server_id End_log_pos Info Log_name Pos Event_type Server_id End_log_pos Info
master-bin.000001 # Query # # use `test`; REPAIR VIEW v1,v2 master-bin.000001 # Query # # use `test`; REPAIR VIEW v1,v2
master-bin.000001 # Query # # use `test`; REPAIR VIEW v1badcheck master-bin.000001 # Query # # use `test`; REPAIR VIEW v1badcheck
master-bin.000001 # Query # # use `test`; REPAIR TABLE `kv` USE_FRM
master-bin.000001 # Query # # use `test`; REPAIR TABLE `t1` USE_FRM
master-bin.000001 # Query # # use `test`; REPAIR VIEW `v1` FROM MYSQL master-bin.000001 # Query # # use `test`; REPAIR VIEW `v1` FROM MYSQL
master-bin.000001 # Query # # use `test`; REPAIR VIEW `v2` FROM MYSQL master-bin.000001 # Query # # use `test`; REPAIR VIEW `v2` FROM MYSQL
master-bin.000001 # Query # # use `test`; REPAIR VIEW `v3` FROM MYSQL master-bin.000001 # Query # # use `test`; REPAIR VIEW `v3` FROM MYSQL
master-bin.000001 # Query # # use `test`; REPAIR VIEW `v4` FROM MYSQL master-bin.000001 # Query # # use `test`; REPAIR VIEW `v4` FROM MYSQL
flush tables;
drop table if exists kv; drop table if exists kv;
drop view v1,v2,v3,v4; drop view v1,v2,v3,v4;
drop table t1; drop table t1;
...@@ -18,6 +18,16 @@ let $MYSQLD_DATADIR= `select @@datadir`; ...@@ -18,6 +18,16 @@ let $MYSQLD_DATADIR= `select @@datadir`;
flush tables; flush tables;
check view v1;
check view v1badcheck;
check view v2;
check view v3;
check view v1 for upgrade;
check view v1badcheck for upgrade;
check view v2 for upgrade;
check view v3 for upgrade;
--replace_result $MYSQLTEST_VARDIR var --replace_result $MYSQLTEST_VARDIR var
--exec $MYSQL_UPGRADE --force 2>&1 --exec $MYSQL_UPGRADE --force 2>&1
...@@ -67,12 +77,7 @@ drop view if exists v1,v2,v3,v1badcheck; ...@@ -67,12 +77,7 @@ drop view if exists v1,v2,v3,v1badcheck;
# Make it look like a MySQL directory now # Make it look like a MySQL directory now
--copy_file $MYSQLD_DATADIR/mysql/event.MYI $MYSQLD_DATADIR/mysql/ev_bk.MYI rename table mysql.event to mysql.ev_bk;
--copy_file $MYSQLD_DATADIR/mysql/event.MYD $MYSQLD_DATADIR/mysql/ev_bk.MYD
--copy_file $MYSQLD_DATADIR/mysql/event.frm $MYSQLD_DATADIR/mysql/ev_bk.frm
--remove_file $MYSQLD_DATADIR/mysql/event.MYI
--remove_file $MYSQLD_DATADIR/mysql/event.MYD
--remove_file $MYSQLD_DATADIR/mysql/event.frm
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm
...@@ -108,38 +113,19 @@ truncate table kv; ...@@ -108,38 +113,19 @@ truncate table kv;
drop view if exists v1,v2,v3; drop view if exists v1,v2,v3;
--enable_warnings --enable_warnings
# back to mariadb default
--remove_file $MYSQLD_DATADIR/mysql/event.MYI drop table mysql.event;
--remove_file $MYSQLD_DATADIR/mysql/event.MYD rename table mysql.ev_bk to mysql.event;
--remove_file $MYSQLD_DATADIR/mysql/event.frm
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYI $MYSQLD_DATADIR/mysql/event.MYI
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.MYD $MYSQLD_DATADIR/mysql/event.MYD
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/event.frm $MYSQLD_DATADIR/mysql/event.frm
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v1.frm $MYSQLD_DATADIR/test/v1.frm
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v2.frm $MYSQLD_DATADIR/test/v2.frm
--copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm --copy_file $MYSQL_TEST_DIR/std_data/mysql_upgrade/v3.frm $MYSQLD_DATADIR/test/v3.frm
flush tables;
# check of binlog # check of binlog and mixing tables (with table specific options) and views
--exec $MYSQL_CHECK --write-binlog --upgrade-views=FROM_MYSQL --skip-fix-tables --all-databases 2>&1 --exec $MYSQL_CHECK --repair --write-binlog --process-tables --use-frm --process-views=UPGRADE_FROM_MYSQL test 2>&1
--source include/show_binlog_events.inc --source include/show_binlog_events.inc
# back to mariadb default
--remove_file $MYSQLD_DATADIR/mysql/event.MYI
--remove_file $MYSQLD_DATADIR/mysql/event.MYD
--remove_file $MYSQLD_DATADIR/mysql/event.frm
--copy_file $MYSQLD_DATADIR/mysql/ev_bk.MYI $MYSQLD_DATADIR/mysql/event.MYI
--copy_file $MYSQLD_DATADIR/mysql/ev_bk.MYD $MYSQLD_DATADIR/mysql/event.MYD
--copy_file $MYSQLD_DATADIR/mysql/ev_bk.frm $MYSQLD_DATADIR/mysql/event.frm
--remove_file $MYSQLD_DATADIR/mysql/ev_bk.MYI
--remove_file $MYSQLD_DATADIR/mysql/ev_bk.MYD
--remove_file $MYSQLD_DATADIR/mysql/ev_bk.frm
flush tables;
drop table if exists kv; drop table if exists kv;
drop view v1,v2,v3,v4; drop view v1,v2,v3,v4;
drop table t1; drop table t1;
......
...@@ -869,7 +869,16 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables, ...@@ -869,7 +869,16 @@ static bool mysql_admin_table(THD* thd, TABLE_LIST* tables,
size_t length; size_t length;
protocol->store(STRING_WITH_LEN("error"), system_charset_info); protocol->store(STRING_WITH_LEN("error"), system_charset_info);
if (table->table->file->ha_table_flags() & HA_CAN_REPAIR) #if MYSQL_VERSION_ID > 100104
#error fix the error message to take TABLE or VIEW as an argument
#else
if (table->view)
length= my_snprintf(buf, sizeof(buf),
"Upgrade required. Please do \"REPAIR VIEW %`s\" or dump/reload to fix it!",
table->table_name);
else
#endif
if (table->table->file->ha_table_flags() & HA_CAN_REPAIR || table->view)
length= my_snprintf(buf, sizeof(buf), ER(ER_TABLE_NEEDS_UPGRADE), length= my_snprintf(buf, sizeof(buf), ER(ER_TABLE_NEEDS_UPGRADE),
table->table_name); table->table_name);
else else
......
...@@ -828,25 +828,6 @@ int mariadb_fix_view(THD *thd, TABLE_LIST *view, bool wrong_checksum, ...@@ -828,25 +828,6 @@ int mariadb_fix_view(THD *thd, TABLE_LIST *view, bool wrong_checksum,
if (!view->timestamp.str) if (!view->timestamp.str)
view->timestamp.str= view->timestamp_buffer; view->timestamp.str= view->timestamp_buffer;
/* check old .frm */
{
char path_buff[FN_REFLEN];
LEX_STRING path;
File_parser *parser;
path.str= path_buff;
fn_format(path_buff, file.str, dir.str, "", MY_UNPACK_FILENAME);
path.length= strlen(path_buff);
if (access(path.str, F_OK))
DBUG_RETURN(HA_ADMIN_INVALID);
if (!(parser= sql_parse_prepare(&path, thd->mem_root, 0)))
DBUG_RETURN(HA_ADMIN_INTERNAL_ERROR);
if (!parser->ok() || !is_equal(&view_type, parser->type()))
DBUG_RETURN(HA_ADMIN_INVALID);
}
if (swap_alg && view->algorithm != VIEW_ALGORITHM_UNDEFINED) if (swap_alg && view->algorithm != VIEW_ALGORITHM_UNDEFINED)
{ {
DBUG_ASSERT(view->algorithm == VIEW_ALGORITHM_MERGE || DBUG_ASSERT(view->algorithm == VIEW_ALGORITHM_MERGE ||
...@@ -877,13 +858,13 @@ int mariadb_fix_view(THD *thd, TABLE_LIST *view, bool wrong_checksum, ...@@ -877,13 +858,13 @@ int mariadb_fix_view(THD *thd, TABLE_LIST *view, bool wrong_checksum,
view->db, view->table_name); view->db, view->table_name);
DBUG_RETURN(HA_ADMIN_INTERNAL_ERROR); DBUG_RETURN(HA_ADMIN_INTERNAL_ERROR);
} }
sql_print_information("View '%-.192s'.'%-.192s': versioned to %llu%s%s", sql_print_information("View %`s.%`s: the version is set to %llu%s%s",
view->db, view->table_name, view->mariadb_version, view->db, view->table_name, view->mariadb_version,
(wrong_checksum ? ", and checksum corrected" : ""), (wrong_checksum ? ", checksum corrected" : ""),
(swap_alg ? (swap_alg ?
((view->algorithm == VIEW_ALGORITHM_MERGE) ? ((view->algorithm == VIEW_ALGORITHM_MERGE) ?
", and algorithm swapped to 'MERGE'" ", algorithm restored to be MERGE"
: ", and algorithm swapped to 'TEMPTABLE'") : ", algorithm restored to be TEMPTABLE")
: "")); : ""));
...@@ -2046,20 +2027,15 @@ int view_checksum(THD *thd, TABLE_LIST *view) ...@@ -2046,20 +2027,15 @@ int view_checksum(THD *thd, TABLE_LIST *view)
*/ */
int view_check(THD *thd, TABLE_LIST *view, HA_CHECK_OPT *check_opt) int view_check(THD *thd, TABLE_LIST *view, HA_CHECK_OPT *check_opt)
{ {
int res;
DBUG_ENTER("view_check"); DBUG_ENTER("view_check");
if ((res= view_checksum(thd, view)) != HA_ADMIN_OK)
int res= view_checksum(thd, view);
if (res != HA_ADMIN_OK)
DBUG_RETURN(res); DBUG_RETURN(res);
if (((check_opt->sql_flags & TT_FOR_UPGRADE) &&
!view->mariadb_version)) if (((check_opt->sql_flags & TT_FOR_UPGRADE) && !view->mariadb_version))
{
push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE,
ER_TABLE_NEEDS_UPGRADE,
ER(ER_TABLE_NEEDS_UPGRADE),
view->db,
view->table_name);
DBUG_RETURN(HA_ADMIN_NEEDS_UPGRADE); DBUG_RETURN(HA_ADMIN_NEEDS_UPGRADE);
}
DBUG_RETURN(HA_ADMIN_OK); DBUG_RETURN(HA_ADMIN_OK);
} }
...@@ -2080,7 +2056,7 @@ int view_repair(THD *thd, TABLE_LIST *view, HA_CHECK_OPT *check_opt) ...@@ -2080,7 +2056,7 @@ int view_repair(THD *thd, TABLE_LIST *view, HA_CHECK_OPT *check_opt)
{ {
DBUG_ENTER("view_repair"); DBUG_ENTER("view_repair");
bool swap_alg= (check_opt->sql_flags & TT_FROM_MYSQL); bool swap_alg= (check_opt->sql_flags & TT_FROM_MYSQL);
bool wrong_checksum= view_checksum(thd, view); bool wrong_checksum= view_checksum(thd, view) != HA_ADMIN_OK;
int ret; int ret;
if (wrong_checksum || swap_alg || (!view->mariadb_version)) if (wrong_checksum || swap_alg || (!view->mariadb_version))
{ {
......
...@@ -13806,19 +13806,13 @@ lock: ...@@ -13806,19 +13806,13 @@ lock:
; ;
table_or_tables: table_or_tables:
TABLE_SYM TABLE_SYM { Lex->only_view= FALSE; }
{ Lex->only_view= FALSE; } | TABLES { Lex->only_view= FALSE; }
| TABLES
{ Lex->only_view= FALSE; }
; ;
table_or_view: table_or_view:
TABLE_SYM table_or_tables
{ Lex->only_view= FALSE; } | VIEW_SYM { Lex->only_view= TRUE; }
| TABLES
{ Lex->only_view= FALSE; }
| VIEW_SYM
{ Lex->only_view= TRUE; }
; ;
table_lock_list: table_lock_list:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment