From 544eeda30d740bf8eaa99e8a1f47fbbbc3ef2086 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Mon, 7 Dec 2015 20:27:58 +0100 Subject: [PATCH] MDEV-8644 Using a UDF in a virtual column causes a crash when stopping the server first close all tables, then unload UDFs --- mysql-test/r/udf_notembedded.result | 6 ++++++ mysql-test/t/udf_notembedded.test | 14 ++++++++++++++ sql/mysqld.cc | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 mysql-test/r/udf_notembedded.result create mode 100644 mysql-test/t/udf_notembedded.test diff --git a/mysql-test/r/udf_notembedded.result b/mysql-test/r/udf_notembedded.result new file mode 100644 index 00000000000..3fdcdbbe9d3 --- /dev/null +++ b/mysql-test/r/udf_notembedded.result @@ -0,0 +1,6 @@ +create function sequence returns integer soname "UDF_EXAMPLE_LIB"; +create table t1 (n int key not null auto_increment, msg int as (sequence()) virtual); +select * from t1; +n msg +drop table t1; +drop function sequence; diff --git a/mysql-test/t/udf_notembedded.test b/mysql-test/t/udf_notembedded.test new file mode 100644 index 00000000000..bf54af7256c --- /dev/null +++ b/mysql-test/t/udf_notembedded.test @@ -0,0 +1,14 @@ +--source include/not_embedded.inc +--source include/have_udf.inc + +# +# MDEV-8644 Using a UDF in a virtual column causes a crash when stopping the server +# +--replace_result $UDF_EXAMPLE_SO UDF_EXAMPLE_LIB +eval create function sequence returns integer soname "$UDF_EXAMPLE_SO"; +create table t1 (n int key not null auto_increment, msg int as (sequence()) virtual); +select * from t1; +source include/restart_mysqld.inc; +drop table t1; +drop function sequence; + diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 6c72954e9c2..6a14b5c2e7e 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1813,9 +1813,9 @@ void clean_up(bool print_message) item_user_lock_free(); lex_free(); /* Free some memory */ item_create_cleanup(); - udf_free(); table_def_start_shutdown(); plugin_shutdown(); + udf_free(); ha_end(); if (tc_log) tc_log->close();