From: Date: May 12 2008 12:09pm Subject: bk commit into 5.1 tree (thek:1.2621) BUG#35997 List-Archive: http://lists.mysql.com/commits/46619 X-Bug: 35997 Message-Id: <20080512100917.8D5B64B42C0@Adventure> Below is the list of changes that have just been committed into a local 5.1 repository of thek. When thek does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository. For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html ChangeSet@stripped, 2008-05-12 12:09:10+02:00, thek@adventure.(none) +2 -0 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@stripped, 2008-05-12 12:09:08+02:00, thek@adventure.(none) +1 -1 Fixed type conversion warning. sql/sql_show.cc@stripped, 2008-05-12 12:09:08+02:00, thek@adventure.(none) +6 -1 Leave entry for EVENTS to keep array consistent but set the fill_table function pointer to a dummy function instead. diff -Nrup a/libmysqld/lib_sql.cc b/libmysqld/lib_sql.cc --- a/libmysqld/lib_sql.cc 2008-05-01 03:14:40 +02:00 +++ b/libmysqld/lib_sql.cc 2008-05-12 12:09:08 +02:00 @@ -285,7 +285,7 @@ static int emb_stmt_execute(MYSQL_STMT * my_bool res; int4store(header, stmt->stmt_id); - header[4]= stmt->flags; + header[4]= (uchar)stmt->flags; thd= (THD*)stmt->mysql->thd; thd->client_param_count= stmt->param_count; thd->client_params= stmt->params; diff -Nrup a/sql/sql_show.cc b/sql/sql_show.cc --- a/sql/sql_show.cc 2008-05-09 09:43:00 +02:00 +++ b/sql/sql_show.cc 2008-05-12 12:09:08 +02:00 @@ -3898,7 +3898,6 @@ static my_bool iter_schema_engines(THD * DBUG_RETURN(0); } - int fill_schema_engines(THD *thd, TABLE_LIST *tables, COND *cond) { 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() && 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 */ if (thd->lex->describe && @@ -6548,6 +6550,9 @@ ST_SCHEMA_TABLE schema_tables[]= #ifdef HAVE_EVENT_SCHEDULER {"EVENTS", events_fields_info, create_schema_table, 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 {"FILES", files_fields_info, create_schema_table, fill_schema_files, 0, 0, -1, -1, 0, 0},