1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Bug#43733 Select on processlist let the embedded server crash (concurrent_innodb_safelog)

the thread->mysys_var parameter should be empty for the idle
    embedded-server threads so that working threads can safely free
    this memory.

per-file comments:
  libmysqld/lib_sql.cc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    set thread->mysys_var= 0 after the query is handled

  mysql-test/include/concurrent.inc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    enable these for the embedded-server mode

  sql/sql_show.cc
Bug#43733      Select on processlist let the embedded server crash (concurrent_innodb_safelog)
    show thread lock status in the query result
This commit is contained in:
Alexey Botchkov
2009-06-04 23:36:34 +05:00
parent 0f742616ce
commit e43df58ead
3 changed files with 4 additions and 3 deletions

View File

@ -142,6 +142,8 @@ emb_advanced_command(MYSQL *mysql, enum enum_server_command command,
if (!skip_check) if (!skip_check)
result= thd->is_error() ? -1 : 0; result= thd->is_error() ? -1 : 0;
thd->mysys_var= 0;
#if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER) #if defined(ENABLED_PROFILING) && defined(COMMUNITY_SERVER)
thd->profiling.finish_current_query(); thd->profiling.finish_current_query();
#endif #endif
@ -634,6 +636,7 @@ void *create_embedded_thd(int client_flag)
thread_count++; thread_count++;
threads.append(thd); threads.append(thd);
thd->mysys_var= 0;
return thd; return thd;
err: err:
delete(thd); delete(thd);

View File

@ -25,8 +25,6 @@
# new wrapper t/concurrent_innodb_safelog.test # new wrapper t/concurrent_innodb_safelog.test
# #
--source include/not_embedded.inc
connection default; connection default;
# #
# Show prerequisites for this test. # Show prerequisites for this test.

View File

@ -1888,7 +1888,7 @@ int fill_schema_processlist(THD* thd, TABLE_LIST* tables, COND* cond)
tmp->mysys_var->current_cond ? tmp->mysys_var->current_cond ?
"Waiting on cond" : NullS); "Waiting on cond" : NullS);
#else #else
val= (char *) "Writing to net"; val= (char *) (tmp->proc_info ? tmp->proc_info : NullS);
#endif #endif
if (val) if (val)
{ {