diff options
author | Vladislav Vaintroub <wlad@mariadb.com> | 2022-07-05 10:47:03 +0200 |
---|---|---|
committer | Vladislav Vaintroub <wlad@mariadb.com> | 2022-07-05 10:47:03 +0200 |
commit | 9d1723528939267397aa92f69ad9aecc591e56e2 (patch) | |
tree | 322f0c7dca476b1fe94b9ee15f9b57d333f17e53 | |
parent | 494a75c851949091c9822a200a8a148c48c93c67 (diff) | |
download | mariadb-git-10.6-MDEV-24071.tar.gz |
MDEV-24071 - repro10.6-MDEV-24071
fixed a couple of assertions or crashes in the server.
Now Innodb is acting up
-rw-r--r-- | libmysqld/examples/CMakeLists.txt | 3 | ||||
-rw-r--r-- | libmysqld/examples/test.cc | 28 | ||||
-rw-r--r-- | sql/derror.cc | 1 | ||||
-rw-r--r-- | sql/mysqld.cc | 1 | ||||
-rw-r--r-- | sql/sql_type.h | 8 |
5 files changed, 39 insertions, 2 deletions
diff --git a/libmysqld/examples/CMakeLists.txt b/libmysqld/examples/CMakeLists.txt index 2a10def8e2e..921520beac8 100644 --- a/libmysqld/examples/CMakeLists.txt +++ b/libmysqld/examples/CMakeLists.txt @@ -56,6 +56,9 @@ ELSE() ENDIF() TARGET_LINK_LIBRARIES(mariadb-client-test-embedded mysqlserver) +ADD_EXECUTABLE(embtest test.cc) +TARGET_LINK_LIBRARIES(embtest mysqlserver) + IF(UNIX) SET_TARGET_PROPERTIES(mariadb-embedded PROPERTIES ENABLE_EXPORTS TRUE) SET_TARGET_PROPERTIES(mariadb-test-embedded PROPERTIES ENABLE_EXPORTS TRUE) diff --git a/libmysqld/examples/test.cc b/libmysqld/examples/test.cc new file mode 100644 index 00000000000..852ed8195ab --- /dev/null +++ b/libmysqld/examples/test.cc @@ -0,0 +1,28 @@ +#include <mysql.h> +#include <stdlib.h> +#include <cstdio> + +static const char *server_args[]= {"this_program", /* this string is not used */ + "--datadir=.", "--key_buffer_size=32M"}; +static const char *server_groups[]= {"embedded", "server", "this_program_SERVER", + (char *) NULL}; + +int main(void) +{ + if (mysql_library_init(sizeof(server_args) / sizeof(char *), (char **)server_args, + NULL)) + { + fprintf(stderr, "could not initialize MySQL client library\n"); + exit(1); + } + + /* Use any MySQL API functions here */ + + mysql_library_end(); + + mysql_library_init(sizeof(server_args) / sizeof(char *), (char **)server_args, NULL); + + mysql_library_end(); + + return EXIT_SUCCESS; +} diff --git a/sql/derror.cc b/sql/derror.cc index 187d5bc20d2..22d6c291886 100644 --- a/sql/derror.cc +++ b/sql/derror.cc @@ -176,6 +176,7 @@ void free_error_messages() errors_per_range[i]= 0; } } + original_error_messages= 0; } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 84d944b7649..544c10d6c3d 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2002,7 +2002,6 @@ static void clean_up(bool print_message) if (print_message && my_default_lc_messages && server_start_time) sql_print_information(ER_DEFAULT(ER_SHUTDOWN_COMPLETE),my_progname); MYSQL_CALLBACK(thread_scheduler, end, ()); - thread_scheduler= 0; mysql_library_end(); finish_client_errs(); free_root(&startup_root, MYF(0)); diff --git a/sql/sql_type.h b/sql/sql_type.h index 0f74489719a..f80b8d9f106 100644 --- a/sql/sql_type.h +++ b/sql/sql_type.h @@ -3654,7 +3654,13 @@ public: static const Name & version_mysql56(); static const Name & version_mariadb53(); - void set_name(Name n) { DBUG_ASSERT(!m_name.ptr()); m_name= n; } + void set_name(Name n) + { +#ifndef EMBEDDED_LIBRARY + DBUG_ASSERT(!m_name.ptr()); +#endif + m_name= n; + } const Name name() const { return m_name; } virtual const Name version() const; virtual const Name &default_value() const= 0; |