summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2018-02-13 00:23:57 +0100
committerSergei Golubchik <serg@mariadb.org>2018-02-13 00:23:57 +0100
commit3c87973235e5f944f9ab82933a8fd00736257261 (patch)
treef889d45a281fa5df805989fe1d55420fcfc3ce6d /sql
parentf7621f17bd8a3dd08fae6ad023716cc66412e1b1 (diff)
downloadmariadb-git-3c87973235e5f944f9ab82933a8fd00736257261.tar.gz
MDEV-14990 mysql_upgrade fails with ERROR 1408 (HY000) at line 566: Event Scheduler: An error occurred when initializing system tables
Don't check mysql.db and mysql.user from event schedule on startup. Event schedule should only check its own mysql.event table, it has no business checking other system tables. In particular, it's ridiculous for event schedule to fail when privilege tables are not the newest, because sql_acl.cc supports old privilege tables just fine.
Diffstat (limited to 'sql')
-rw-r--r--sql/event_db_repository.cc37
-rw-r--r--sql/sql_acl.cc122
2 files changed, 0 insertions, 159 deletions
diff --git a/sql/event_db_repository.cc b/sql/event_db_repository.cc
index 84373e7f066..61b1c2de15d 100644
--- a/sql/event_db_repository.cc
+++ b/sql/event_db_repository.cc
@@ -1186,46 +1186,9 @@ Event_db_repository::check_system_tables(THD *thd)
{
TABLE_LIST tables;
int ret= FALSE;
- const unsigned int event_priv_column_position= 29;
-
DBUG_ENTER("Event_db_repository::check_system_tables");
DBUG_PRINT("enter", ("thd: %p", thd));
- /* Check mysql.db */
- tables.init_one_table(&MYSQL_SCHEMA_NAME, &MYSQL_DB_NAME, 0, TL_READ);
-
- if (open_and_lock_tables(thd, &tables, FALSE, MYSQL_LOCK_IGNORE_TIMEOUT))
- {
- ret= 1;
- sql_print_error("Cannot open mysql.db");
- }
- else
- {
- if (table_intact.check(tables.table, &mysql_db_table_def))
- ret= 1;
-
- close_mysql_tables(thd);
- }
- /* Check mysql.user */
- tables.init_one_table(&MYSQL_SCHEMA_NAME, &MYSQL_USER_NAME, 0, TL_READ);
-
- if (open_and_lock_tables(thd, &tables, FALSE, MYSQL_LOCK_IGNORE_TIMEOUT))
- {
- ret= 1;
- sql_print_error("Cannot open mysql.user");
- }
- else
- {
- if (tables.table->s->fields < event_priv_column_position ||
- strncmp(tables.table->field[event_priv_column_position]->field_name.str,
- STRING_WITH_LEN("Event_priv")))
- {
- sql_print_error("mysql.user has no `Event_priv` column at position %d",
- event_priv_column_position);
- ret= 1;
- }
- close_mysql_tables(thd);
- }
/* Check mysql.event */
tables.init_one_table(&MYSQL_SCHEMA_NAME, &MYSQL_EVENT_NAME, 0, TL_READ);
diff --git a/sql/sql_acl.cc b/sql/sql_acl.cc
index da12a2191a9..68d6ad6b0b8 100644
--- a/sql/sql_acl.cc
+++ b/sql/sql_acl.cc
@@ -59,128 +59,6 @@
bool mysql_user_table_is_in_short_password_format= false;
-static const
-TABLE_FIELD_TYPE mysql_db_table_fields[MYSQL_DB_FIELD_COUNT] = {
- {
- { STRING_WITH_LEN("Host") },
- { STRING_WITH_LEN("char(60)") },
- {NULL, 0}
- },
- {
- { STRING_WITH_LEN("Db") },
- { STRING_WITH_LEN("char(64)") },
- {NULL, 0}
- },
- {
- { STRING_WITH_LEN("User") },
- { STRING_WITH_LEN("char(") },
- {NULL, 0}
- },
- {
- { STRING_WITH_LEN("Select_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Insert_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Update_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Delete_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Create_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Drop_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Grant_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("References_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Index_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Alter_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Create_tmp_table_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Lock_tables_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Create_view_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Show_view_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Create_routine_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Alter_routine_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Execute_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Event_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Trigger_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- },
- {
- { STRING_WITH_LEN("Truncate_versioning_priv") },
- { STRING_WITH_LEN("enum('N','Y')") },
- { STRING_WITH_LEN("utf8") }
- }
-};
-
-const TABLE_FIELD_DEF
-mysql_db_table_def= {MYSQL_DB_FIELD_COUNT, mysql_db_table_fields, 0, (uint*) 0 };
-
static LEX_CSTRING native_password_plugin_name= {
STRING_WITH_LEN("mysql_native_password")
};