Hi all,

 

The following script crashs the server (built with last bb-10.2-ext sources).

 

use test;

CREATE or replace TABLE `gtfmt` (

  `numgtfmt` char(10) COLLATE utf8_bin NOT NULL 

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

 

create or replace view gtfmtl(numgtfmt)

as

select 'x' from gtfmt

union

select 'x' from gtfmt ;

 

SELECT * FROM gtfmtl WHERE numgtfmt =  NAME_CONST('wnumgtfmt',_utf8'QEDITIONS' COLLATE 'utf8_bin');

 

Stack :

>             mysqld.exe!my_sigabrt_handler(int sig) Line 488           C

               mysqld.exe!raise(int signum) Line 516  C++

               mysqld.exe!abort() Line 64        C++

               mysqld.exe!common_assert_to_stderr_direct(const wchar_t * const expression, const wchar_t * const file_name, const unsigned int line_number) Line 123           C++

               mysqld.exe!common_assert_to_stderr<wchar_t>(const wchar_t * const expression, const wchar_t * const file_name, const unsigned int line_number) Line 142   C++

               mysqld.exe!_wassert(const wchar_t * expression, const wchar_t * file_name, unsigned int line_number) Line 404                C++

               mysqld.exe!Item_func::fix_fields(THD * thd, Item * * ref) Line 330      C++

               mysqld.exe!Item_str_func::fix_fields(THD * thd, Item * * ref) Line 106              C++

               mysqld.exe!Item_name_const::fix_fields(THD * thd, Item * * ref) Line 2186   C++

               mysqld.exe!Item_func::fix_fields(THD * thd, Item * * ref) Line 361      C++

               mysqld.exe!JOIN::optimize_inner() Line 1311  C++

               mysqld.exe!JOIN::optimize() Line 1121                C++

               mysqld.exe!st_select_lex_unit::optimize() Line 1344   C++

               mysqld.exe!mysql_derived_optimize(THD * thd, LEX * lex, TABLE_LIST * derived) Line 887      C++

               mysqld.exe!mysql_handle_single_derived(LEX * lex, TABLE_LIST * derived, unsigned int phases) Line 197      C++

               mysqld.exe!JOIN::optimize_inner() Line 1356  C++

               mysqld.exe!JOIN::optimize() Line 1121                C++

               mysqld.exe!mysql_select(THD * thd, TABLE_LIST * tables, unsigned int wild_num, List<Item> & fields, Item * conds, unsigned int og_num, st_order * order, st_order * group, Item * having, st_order * proc_param, unsigned __int64 select_options, select_result * result, st_select_lex_unit * unit, st_select_lex * select_lex) Line 3758                C++

               mysqld.exe!handle_select(THD * thd, LEX * lex, select_result * result, unsigned long setup_tables_done_option) Line 364               C++

               mysqld.exe!execute_sqlcom_select(THD * thd, TABLE_LIST * all_tables) Line 6473      C++

               mysqld.exe!mysql_execute_command(THD * thd) Line 3717   C++

               mysqld.exe!mysql_parse(THD * thd, char * rawbuf, unsigned int length, Parser_state * parser_state, bool is_com_multi, bool is_next_command) Line 7935           C++

               mysqld.exe!dispatch_command(enum_server_command command, THD * thd, char * packet, unsigned int packet_length, bool is_com_multi, bool is_next_command) Line 1820                C++

               mysqld.exe!do_command(THD * thd) Line 1369             C++

               mysqld.exe!threadpool_process_request(THD * thd) Line 366               C++

               mysqld.exe!tp_callback(TP_connection * c) Line 192    C++

               mysqld.exe!tp_callback(_TP_CALLBACK_INSTANCE * instance, void * context) Line 377            C++

               mysqld.exe!work_callback(_TP_CALLBACK_INSTANCE * instance, void * context, _TP_WORK * work) Line 451                C++

 

Best regard,

Jérôme.