diff options
-rw-r--r-- | mysql-test/r/servers.result | 8 | ||||
-rw-r--r-- | mysql-test/t/servers.test | 8 | ||||
-rw-r--r-- | sql/mysqld.cc | 7 |
3 files changed, 19 insertions, 4 deletions
diff --git a/mysql-test/r/servers.result b/mysql-test/r/servers.result new file mode 100644 index 00000000000..c9d82c9cfcc --- /dev/null +++ b/mysql-test/r/servers.result @@ -0,0 +1,8 @@ +# +# MDEV-4594 - CREATE SERVER crashes embedded +# +CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(HOST 'localhost'); +SELECT * FROM mysql.servers; +Server_name Host Db Username Password Port Socket Wrapper Owner +s1 localhost 0 mysql +DROP SERVER s1; diff --git a/mysql-test/t/servers.test b/mysql-test/t/servers.test new file mode 100644 index 00000000000..ee0fa637b87 --- /dev/null +++ b/mysql-test/t/servers.test @@ -0,0 +1,8 @@ +# Generic tests for servers (do not require FEDERATED) + +--echo # +--echo # MDEV-4594 - CREATE SERVER crashes embedded +--echo # +CREATE SERVER s1 FOREIGN DATA WRAPPER mysql OPTIONS(HOST 'localhost'); +SELECT * FROM mysql.servers; +DROP SERVER s1; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index eb102696f64..6e762fd6516 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1847,8 +1847,8 @@ void clean_up(bool print_message) my_tz_free(); my_dboptions_cache_free(); ignore_db_dirs_free(); -#ifndef NO_EMBEDDED_ACCESS_CHECKS servers_free(1); +#ifndef NO_EMBEDDED_ACCESS_CHECKS acl_free(1); grant_free(); #endif @@ -4668,6 +4668,8 @@ a file name for --log-bin-index option", opt_binlog_index_name); init_update_queries(); init_global_user_stats(); init_global_client_stats(); + if (!opt_bootstrap) + servers_init(0); DBUG_RETURN(0); } @@ -5074,9 +5076,6 @@ int mysqld_main(int argc, char **argv) if (!opt_noacl) (void) grant_init(); - if (!opt_bootstrap) - servers_init(0); - if (!opt_noacl) { #ifdef HAVE_DLOPEN |