summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2022-07-05 10:47:03 +0200
committerVladislav Vaintroub <wlad@mariadb.com>2022-07-05 10:47:03 +0200
commit9d1723528939267397aa92f69ad9aecc591e56e2 (patch)
tree322f0c7dca476b1fe94b9ee15f9b57d333f17e53
parent494a75c851949091c9822a200a8a148c48c93c67 (diff)
downloadmariadb-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.txt3
-rw-r--r--libmysqld/examples/test.cc28
-rw-r--r--sql/derror.cc1
-rw-r--r--sql/mysqld.cc1
-rw-r--r--sql/sql_type.h8
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;