Commit 3703bbf6 authored by unknown's avatar unknown

Bug#35997 Event scheduler seems to let the server crash, if it is embedded.

SHOW commands fail in embedded mode because schema_table array doesn't
correspond to enum_schema_tables.

This patch implements a dummy implementation of the abstract fill_table
function to be used when the event scheduler (or other core feature)
isn't part of the build.


libmysqld/lib_sql.cc:
  Fixed type conversion warning.
sql/sql_show.cc:
  Leave entry for EVENTS to keep array consistent but set the 
  fill_table function pointer to a dummy function instead.
parent 5908a32e
...@@ -285,7 +285,7 @@ static int emb_stmt_execute(MYSQL_STMT *stmt) ...@@ -285,7 +285,7 @@ static int emb_stmt_execute(MYSQL_STMT *stmt)
my_bool res; my_bool res;
int4store(header, stmt->stmt_id); int4store(header, stmt->stmt_id);
header[4]= stmt->flags; header[4]= (uchar)stmt->flags;
thd= (THD*)stmt->mysql->thd; thd= (THD*)stmt->mysql->thd;
thd->client_param_count= stmt->param_count; thd->client_param_count= stmt->param_count;
thd->client_params= stmt->params; thd->client_params= stmt->params;
......
...@@ -3898,7 +3898,6 @@ static my_bool iter_schema_engines(THD *thd, plugin_ref plugin, ...@@ -3898,7 +3898,6 @@ static my_bool iter_schema_engines(THD *thd, plugin_ref plugin,
DBUG_RETURN(0); DBUG_RETURN(0);
} }
int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond) int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond)
{ {
return plugin_foreach(thd, iter_schema_engines, return plugin_foreach(thd, iter_schema_engines,
...@@ -5870,6 +5869,9 @@ bool get_schema_tables_result(JOIN *join, ...@@ -5870,6 +5869,9 @@ bool get_schema_tables_result(JOIN *join,
bool is_subselect= (&lex->unit != lex->current_select->master_unit() && bool is_subselect= (&lex->unit != lex->current_select->master_unit() &&
lex->current_select->master_unit()->item); lex->current_select->master_unit()->item);
/* A value of 0 indicates a dummy implementation */
if (table_list->schema_table->fill_table == 0)
continue;
/* skip I_S optimizations specific to get_all_tables */ /* skip I_S optimizations specific to get_all_tables */
if (thd->lex->describe && if (thd->lex->describe &&
...@@ -6548,6 +6550,9 @@ ST_SCHEMA_TABLE schema_tables[]= ...@@ -6548,6 +6550,9 @@ ST_SCHEMA_TABLE schema_tables[]=
#ifdef HAVE_EVENT_SCHEDULER #ifdef HAVE_EVENT_SCHEDULER
{"EVENTS", events_fields_info, create_schema_table, {"EVENTS", events_fields_info, create_schema_table,
Events::fill_schema_events, make_old_format, 0, -1, -1, 0, 0}, Events::fill_schema_events, make_old_format, 0, -1, -1, 0, 0},
#else
{"EVENTS", events_fields_info, create_schema_table,
0, make_old_format, 0, -1, -1, 0, 0},
#endif #endif
{"FILES", files_fields_info, create_schema_table, {"FILES", files_fields_info, create_schema_table,
fill_schema_files, 0, 0, -1, -1, 0, 0}, fill_schema_files, 0, 0, -1, -1, 0, 0},
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment