mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
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.
This commit is contained in:
@ -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,
|
|||||||
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,
|
|||||||
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[]=
|
|||||||
#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},
|
||||||
|
Reference in New Issue
Block a user