summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Vojtovich <svoj@mariadb.org>2013-06-06 19:27:17 +0400
committerSergey Vojtovich <svoj@mariadb.org>2013-06-06 19:27:17 +0400
commiteec66e2f655bc976377db7620a884b97acf9618c (patch)
treede32f1db13a1ef9533f45bc00349cc431f891c1f
parent7f58eb4f79f3b856258b4e1d1203b6e7f27aa3de (diff)
downloadmariadb-git-eec66e2f655bc976377db7620a884b97acf9618c.tar.gz
MDEV-4594 - CREATE SERVER crashes embedded
mysql-test/r/servers.result: Added test case for MDEV-4594. mysql-test/t/servers.test: Added test case for MDEV-4594. sql/mysqld.cc: Move servers_init() call to init_server_components(), so it is called for embedded as well. Call servers_free() even if NO_EMBEDDED_ACCESS_CHECKS defined (because we call servers_init() anyway).
-rw-r--r--mysql-test/r/servers.result8
-rw-r--r--mysql-test/t/servers.test8
-rw-r--r--sql/mysqld.cc7
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