| fix the yacc code in mysql | 
|   | 
| Signed-off-by: Marcelo Gutierrez (UTN/FRH) <kuyurix@gmail.com> | 
| --- | 
| diff -uNr mysql-5.1.73.orig/sql/sql_lex.cc mysql-5.1.73/sql/sql_lex.cc | 
| --- mysql-5.1.73.orig/sql/sql_lex.cc    2013-11-04 18:52:27.000000000 +0000 | 
| +++ mysql-5.1.73/sql/sql_lex.cc    2014-02-12 14:12:04.244111625 +0000 | 
| @@ -775,14 +775,13 @@ | 
|                  (which can't be followed by a signed number) | 
|  */ | 
|   | 
| -int MYSQLlex(void *arg, void *yythd) | 
| +int MYSQLlex(void *arg, THD *thd) | 
|  { | 
|    reg1    uchar c= 0; | 
|    bool comment_closed; | 
|    int    tokval, result_state; | 
|    uint length; | 
|    enum my_lex_states state; | 
| -  THD *thd= (THD *)yythd; | 
|    Lex_input_stream *lip= & thd->m_parser_state->m_lip; | 
|    LEX *lex= thd->lex; | 
|    YYSTYPE *yylval=(YYSTYPE*) arg; | 
| diff -uNr mysql-5.1.73.orig/sql/sql_lex.h mysql-5.1.73/sql/sql_lex.h | 
| --- mysql-5.1.73.orig/sql/sql_lex.h    2013-11-04 18:52:27.000000000 +0000 | 
| +++ mysql-5.1.73/sql/sql_lex.h    2014-02-12 14:17:19.424106423 +0000 | 
| @@ -2072,7 +2072,7 @@ | 
|  extern void lex_free(void); | 
|  extern void lex_start(THD *thd); | 
|  extern void lex_end(LEX *lex); | 
| -extern int MYSQLlex(void *arg, void *yythd); | 
| +extern int MYSQLlex(void *arg, THD *thd); | 
|   | 
|  extern void trim_whitespace(CHARSET_INFO *cs, LEX_STRING *str); | 
|   | 
| diff -uNr mysql-5.1.73.orig/sql/sql_parse.cc mysql-5.1.73/sql/sql_parse.cc | 
| --- mysql-5.1.73.orig/sql/sql_parse.cc    2013-11-04 18:52:27.000000000 +0000 | 
| +++ mysql-5.1.73/sql/sql_parse.cc    2014-02-12 14:19:20.424104427 +0000 | 
| @@ -8012,7 +8012,7 @@ | 
|  } | 
|   | 
|   | 
| -extern int MYSQLparse(void *thd); // from sql_yacc.cc | 
| +extern int MYSQLparse(THD *thd); // from sql_yacc.cc | 
|   | 
|   | 
|  /** | 
| diff -uNr mysql-5.1.73.orig/sql/sql_yacc.yy mysql-5.1.73/sql/sql_yacc.yy | 
| --- mysql-5.1.73.orig/sql/sql_yacc.yy    2013-11-04 18:52:27.000000000 +0000 | 
| +++ mysql-5.1.73/sql/sql_yacc.yy    2014-02-12 20:17:06.707750140 +0000 | 
| @@ -23,19 +23,13 @@ | 
|  */ | 
|   | 
|  %{ | 
| -/* thd is passed as an argument to yyparse(), and subsequently to yylex(). | 
| -** The type will be void*, so it must be  cast to (THD*) when used. | 
| -** Use the YYTHD macro for this. | 
| -*/ | 
| -#define YYPARSE_PARAM yythd | 
| -#define YYLEX_PARAM yythd | 
| -#define YYTHD ((THD *)yythd) | 
| -#define YYLIP (& YYTHD->m_parser_state->m_lip) | 
| + | 
| +#define YYLIP (& thd->m_parser_state->m_lip) | 
|   | 
|  #define MYSQL_YACC | 
|  #define YYINITDEPTH 100 | 
|  #define YYMAXDEPTH 3200                        /* Because of 64K stack */ | 
| -#define Lex (YYTHD->lex) | 
| +#define Lex (thd->lex) | 
|  #define Select Lex->current_select | 
|  #include "mysql_priv.h" | 
|  #include "slave.h" | 
| @@ -55,7 +49,7 @@ | 
|  #pragma warning (disable : 4065) | 
|  #endif | 
|   | 
| -int yylex(void *yylval, void *yythd); | 
| +int yylex(void *yylval, THD *thd); | 
|   | 
|  const LEX_STRING null_lex_str= {0,0}; | 
|   | 
| @@ -64,7 +58,7 @@ | 
|      ulong val= *(F);                          \ | 
|      if (my_yyoverflow((B), (D), &val))        \ | 
|      {                                         \ | 
| -      yyerror((char*) (A));                   \ | 
| +      yyerror(current_thd, (char*) (A));      \ | 
|        return 2;                               \ | 
|      }                                         \ | 
|      else                                      \ | 
| @@ -76,7 +70,7 @@ | 
|  #define MYSQL_YYABORT                         \ | 
|    do                                          \ | 
|    {                                           \ | 
| -    LEX::cleanup_lex_after_parse_error(YYTHD);\ | 
| +    LEX::cleanup_lex_after_parse_error(thd);\ | 
|      YYABORT;                                  \ | 
|    } while (0) | 
|   | 
| @@ -159,9 +153,8 @@ | 
|    to abort from the parser. | 
|  */ | 
|   | 
| -void MYSQLerror(const char *s) | 
| +void MYSQLerror(THD *thd, const char *s) | 
|  { | 
| -  THD *thd= current_thd; | 
|   | 
|    /* | 
|      Restore the original LEX if it was replaced when parsing | 
| @@ -675,7 +668,10 @@ | 
|  bool my_yyoverflow(short **a, YYSTYPE **b, ulong *yystacksize); | 
|  %} | 
|   | 
| -%pure_parser                                    /* We have threads */ | 
| +/* We have threads */ | 
| +%define api.pure | 
| +%parse-param { THD *thd } | 
| +%lex-param { THD *thd } | 
|  /* | 
|    Currently there are 169 shift/reduce conflicts. | 
|    We should not introduce new conflicts any more. | 
| @@ -1516,7 +1512,6 @@ | 
|  query: | 
|            END_OF_INPUT | 
|            { | 
| -            THD *thd= YYTHD; | 
|              if (!thd->bootstrap && | 
|                (!(thd->lex->select_lex.options & OPTION_FOUND_COMMENT))) | 
|              { | 
| @@ -1530,7 +1525,7 @@ | 
|            { | 
|              Lex_input_stream *lip = YYLIP; | 
|   | 
| -            if ((YYTHD->client_capabilities & CLIENT_MULTI_QUERIES) && | 
| +            if ((thd->client_capabilities & CLIENT_MULTI_QUERIES) && | 
|                  ! lip->stmt_prepare_mode && | 
|                  ! lip->eof()) | 
|              { | 
| @@ -1626,7 +1621,6 @@ | 
|  deallocate: | 
|            deallocate_or_drop PREPARE_SYM ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->sql_command= SQLCOM_DEALLOCATE_PREPARE; | 
|              lex->prepared_stmt_name= $3; | 
| @@ -1641,7 +1635,6 @@ | 
|  prepare: | 
|            PREPARE_SYM ident FROM prepare_src | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->sql_command= SQLCOM_PREPARE; | 
|              lex->prepared_stmt_name= $2; | 
| @@ -1651,14 +1644,12 @@ | 
|  prepare_src: | 
|            TEXT_STRING_sys | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->prepared_stmt_code= $1; | 
|              lex->prepared_stmt_code_is_varref= FALSE; | 
|            } | 
|          | '@' ident_or_text | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->prepared_stmt_code= $2; | 
|              lex->prepared_stmt_code_is_varref= TRUE; | 
| @@ -1668,7 +1659,6 @@ | 
|  execute: | 
|            EXECUTE_SYM ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->sql_command= SQLCOM_EXECUTE; | 
|              lex->prepared_stmt_name= $2; | 
| @@ -1826,7 +1816,6 @@ | 
|  create: | 
|            CREATE opt_table_options TABLE_SYM opt_if_not_exists table_ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->sql_command= SQLCOM_CREATE_TABLE; | 
|              if (!lex->select_lex.add_table_to_list(thd, $5, NULL, | 
| @@ -1844,13 +1833,13 @@ | 
|            } | 
|            create2 | 
|            { | 
| -            LEX *lex= YYTHD->lex; | 
| +            LEX *lex= thd->lex; | 
|              lex->current_select= &lex->select_lex;  | 
|              if ((lex->create_info.used_fields & HA_CREATE_USED_ENGINE) && | 
|                  !lex->create_info.db_type) | 
|              { | 
| -              lex->create_info.db_type= ha_default_handlerton(YYTHD); | 
| -              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, | 
| +              lex->create_info.db_type= ha_default_handlerton(thd); | 
| +              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, | 
|                                    ER_WARN_USING_OTHER_HANDLER, | 
|                                    ER(ER_WARN_USING_OTHER_HANDLER), | 
|                                    ha_resolve_storage_engine_name(lex->create_info.db_type), | 
| @@ -1979,7 +1968,7 @@ | 
|  event_tail: | 
|            remember_name EVENT_SYM opt_if_not_exists sp_name | 
|            { | 
| -            THD *thd= YYTHD; | 
| +            THD *thd= thd; | 
|              LEX *lex=Lex; | 
|   | 
|              lex->stmt_definition_begin= $1; | 
| @@ -2046,7 +2035,7 @@ | 
|  ev_starts: | 
|            /* empty */ | 
|            { | 
| -            Item *item= new (YYTHD->mem_root) Item_func_now_local(); | 
| +            Item *item= new (thd->mem_root) Item_func_now_local(); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->event_parse_data->item_starts= item; | 
| @@ -2096,7 +2085,6 @@ | 
|   | 
|  ev_sql_stmt: | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|   | 
| @@ -2139,7 +2127,6 @@ | 
|            } | 
|            ev_sql_stmt_inner | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|   | 
|              /* return back to the original memory root ASAP */ | 
| @@ -2198,11 +2185,10 @@ | 
|              $$= new sp_name($1, $3, true); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
| -            $$->init_qname(YYTHD); | 
| +            $$->init_qname(thd); | 
|            } | 
|          | ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              LEX_STRING db; | 
|              if (check_routine_name(&$1)) | 
| @@ -2272,7 +2258,7 @@ | 
|              lex->sql_command= SQLCOM_CALL; | 
|              lex->spname= $2; | 
|              lex->value_list.empty(); | 
| -            sp_add_used_routine(lex, YYTHD, $2, TYPE_ENUM_PROCEDURE); | 
| +            sp_add_used_routine(lex, thd, $2, TYPE_ENUM_PROCEDURE); | 
|            } | 
|            opt_sp_cparam_list {} | 
|          ; | 
| @@ -2345,7 +2331,7 @@ | 
|                                                       (enum enum_field_types)$3, | 
|                                                       sp_param_in); | 
|   | 
| -            if (lex->sphead->fill_field_definition(YYTHD, lex, | 
| +            if (lex->sphead->fill_field_definition(thd, lex, | 
|                                                     (enum enum_field_types) $3, | 
|                                                     &spvar->field_def)) | 
|              { | 
| @@ -2382,7 +2368,7 @@ | 
|                                                       (enum enum_field_types)$4, | 
|                                                       (sp_param_mode_t)$1); | 
|   | 
| -            if (lex->sphead->fill_field_definition(YYTHD, lex, | 
| +            if (lex->sphead->fill_field_definition(thd, lex, | 
|                                                     (enum enum_field_types) $4, | 
|                                                     &spvar->field_def)) | 
|              { | 
| @@ -2445,13 +2431,12 @@ | 
|            { | 
|              LEX *lex= Lex; | 
|   | 
| -            lex->sphead->reset_lex(YYTHD); | 
| +            lex->sphead->reset_lex(thd); | 
|              lex->spcont->declare_var_boundary($2); | 
|            } | 
|            type | 
|            sp_opt_default | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= Lex; | 
|              sp_pcontext *pctx= lex->spcont; | 
|              uint num_vars= pctx->context_var_count(); | 
| @@ -2477,7 +2462,7 @@ | 
|                spvar->type= var_type; | 
|                spvar->dflt= dflt_value_item; | 
|               | 
| -              if (lex->sphead->fill_field_definition(YYTHD, lex, var_type, | 
| +              if (lex->sphead->fill_field_definition(thd, lex, var_type, | 
|                                                       &spvar->field_def)) | 
|                { | 
|                  MYSQL_YYABORT; | 
| @@ -2501,7 +2486,7 @@ | 
|              } | 
|   | 
|              pctx->declare_var_boundary(0); | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|              $$.vars= $2; | 
|              $$.conds= $$.hndlrs= $$.curs= 0; | 
| @@ -2516,7 +2501,7 @@ | 
|            my_error(ER_SP_DUP_COND, MYF(0), $2.str); | 
|            MYSQL_YYABORT; | 
|          } | 
| -        if(YYTHD->lex->spcont->push_cond(&$2, $5)) | 
| +        if(thd->lex->spcont->push_cond(&$2, $5)) | 
|                MYSQL_YYABORT; | 
|              $$.vars= $$.hndlrs= $$.curs= 0; | 
|              $$.conds= 1; | 
| @@ -2602,7 +2587,7 @@ | 
|   | 
|  sp_cursor_stmt: | 
|            { | 
| -            Lex->sphead->reset_lex(YYTHD); | 
| +            Lex->sphead->reset_lex(thd); | 
|            } | 
|            select | 
|            { | 
| @@ -2618,7 +2603,7 @@ | 
|              } | 
|              lex->sp_lex_in_use= TRUE; | 
|              $$= lex; | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          ; | 
| @@ -2662,7 +2647,7 @@ | 
|  sp_cond: | 
|            ulong_num | 
|            { /* mysql errno */ | 
| -            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); | 
| +            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->type= sp_cond_type_t::number; | 
| @@ -2675,7 +2660,7 @@ | 
|                my_error(ER_SP_BAD_SQLSTATE, MYF(0), $3.str); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); | 
| +            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->type= sp_cond_type_t::state; | 
| @@ -2705,21 +2690,21 @@ | 
|            } | 
|          | SQLWARNING_SYM /* SQLSTATEs 01??? */ | 
|            { | 
| -            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); | 
| +            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->type= sp_cond_type_t::warning; | 
|            } | 
|          | not FOUND_SYM /* SQLSTATEs 02??? */ | 
|            { | 
| -            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); | 
| +            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->type= sp_cond_type_t::notfound; | 
|            } | 
|          | SQLEXCEPTION_SYM /* All other SQLSTATEs */ | 
|            { | 
| -            $$= (sp_cond_type_t *)YYTHD->alloc(sizeof(sp_cond_type_t)); | 
| +            $$= (sp_cond_type_t *)thd->alloc(sizeof(sp_cond_type_t)); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->type= sp_cond_type_t::exception; | 
| @@ -2789,7 +2774,6 @@ | 
|           | 
|  sp_proc_stmt_statement: | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|   | 
| @@ -2798,7 +2782,6 @@ | 
|            } | 
|            statement | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|              sp_head *sp= lex->sphead; | 
| @@ -2845,7 +2828,7 @@ | 
|   | 
|  sp_proc_stmt_return: | 
|            RETURN_SYM  | 
| -          { Lex->sphead->reset_lex(YYTHD); } | 
| +          { Lex->sphead->reset_lex(thd); } | 
|            expr | 
|            { | 
|              LEX *lex= Lex; | 
| @@ -2867,7 +2850,7 @@ | 
|                  MYSQL_YYABORT; | 
|                sp->m_flags|= sp_head::HAS_RETURN; | 
|              } | 
| -            if (sp->restore_lex(YYTHD)) | 
| +            if (sp->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          ; | 
| @@ -3094,7 +3077,7 @@ | 
|          ; | 
|   | 
|  sp_if: | 
| -          { Lex->sphead->reset_lex(YYTHD); } | 
| +          { Lex->sphead->reset_lex(thd); } | 
|            expr THEN_SYM | 
|            { | 
|              LEX *lex= Lex; | 
| @@ -3108,7 +3091,7 @@ | 
|                  sp->add_cont_backpatch(i) || | 
|                  sp->add_instr(i)) | 
|                MYSQL_YYABORT; | 
| -            if (sp->restore_lex(YYTHD)) | 
| +            if (sp->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            sp_proc_stmts1 | 
| @@ -3147,7 +3130,7 @@ | 
|            { | 
|              LEX *lex= Lex; | 
|              case_stmt_action_case(lex); | 
| -            lex->sphead->reset_lex(YYTHD); /* For expr $3 */ | 
| +            lex->sphead->reset_lex(thd); /* For expr $3 */ | 
|            } | 
|            expr | 
|            { | 
| @@ -3156,7 +3139,7 @@ | 
|                MYSQL_YYABORT; | 
|   | 
|              /* For expr $3 */ | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            simple_when_clause_list | 
| @@ -3198,7 +3181,7 @@ | 
|  simple_when_clause: | 
|            WHEN_SYM | 
|            { | 
| -            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */ | 
| +            Lex->sphead->reset_lex(thd); /* For expr $3 */ | 
|            } | 
|            expr | 
|            { | 
| @@ -3208,7 +3191,7 @@ | 
|              if (case_stmt_action_when(lex, $3, true)) | 
|                MYSQL_YYABORT; | 
|              /* For expr $3 */ | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            THEN_SYM | 
| @@ -3223,7 +3206,7 @@ | 
|  searched_when_clause: | 
|            WHEN_SYM | 
|            { | 
| -            Lex->sphead->reset_lex(YYTHD); /* For expr $3 */ | 
| +            Lex->sphead->reset_lex(thd); /* For expr $3 */ | 
|            } | 
|            expr | 
|            { | 
| @@ -3231,7 +3214,7 @@ | 
|              if (case_stmt_action_when(lex, $3, false)) | 
|                MYSQL_YYABORT; | 
|              /* For expr $3 */ | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            THEN_SYM | 
| @@ -3395,7 +3378,7 @@ | 
|                MYSQL_YYABORT; | 
|        } | 
|          | WHILE_SYM  | 
| -          { Lex->sphead->reset_lex(YYTHD); } | 
| +          { Lex->sphead->reset_lex(thd); } | 
|            expr DO_SYM | 
|            { | 
|              LEX *lex= Lex; | 
| @@ -3409,7 +3392,7 @@ | 
|                  sp->new_cont_backpatch(i) || | 
|                  sp->add_instr(i)) | 
|                MYSQL_YYABORT; | 
| -            if (sp->restore_lex(YYTHD)) | 
| +            if (sp->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            sp_proc_stmts1 END WHILE_SYM | 
| @@ -3424,7 +3407,7 @@ | 
|              lex->sphead->do_cont_backpatch(); | 
|            } | 
|          | REPEAT_SYM sp_proc_stmts1 UNTIL_SYM  | 
| -          { Lex->sphead->reset_lex(YYTHD); } | 
| +          { Lex->sphead->reset_lex(thd); } | 
|            expr END REPEAT_SYM | 
|            { | 
|              LEX *lex= Lex; | 
| @@ -3436,7 +3419,7 @@ | 
|              if (i == NULL || | 
|                  lex->sphead->add_instr(i)) | 
|                MYSQL_YYABORT; | 
| -            if (lex->sphead->restore_lex(YYTHD)) | 
| +            if (lex->sphead->restore_lex(thd)) | 
|                MYSQL_YYABORT; | 
|              /* We can shortcut the cont_backpatch here */ | 
|              i->m_cont_dest= ip+1; | 
| @@ -3859,7 +3842,6 @@ | 
|            create3 {} | 
|          | LIKE table_ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              TABLE_LIST *src_table; | 
|              LEX *lex= thd->lex; | 
|   | 
| @@ -3873,7 +3855,6 @@ | 
|            } | 
|          | '(' LIKE table_ident ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              TABLE_LIST *src_table; | 
|              LEX *lex= thd->lex; | 
|   | 
| @@ -4342,7 +4323,6 @@ | 
|            bit_expr | 
|            { | 
|              Item *part_expr= $1; | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Name_resolution_context *context= &lex->current_select->context; | 
|              TABLE_LIST *save_list= context->table_list; | 
| @@ -4364,7 +4344,7 @@ | 
|                my_error(ER_PARTITION_FUNCTION_IS_NOT_ALLOWED, MYF(0)); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            if (part_expr->fix_fields(YYTHD, (Item**)0) || | 
| +            if (part_expr->fix_fields(thd, (Item**)0) || | 
|                  ((context->table_list= save_list), FALSE) || | 
|                  (!part_expr->const_item()) || | 
|                  (!lex->safe_to_cache_query)) | 
| @@ -4629,7 +4609,7 @@ | 
|          | TYPE_SYM opt_equal storage_engines | 
|            { | 
|              Lex->create_info.db_type= $3; | 
| -            WARN_DEPRECATED(yythd, "6.0", "TYPE=storage_engine", | 
| +            WARN_DEPRECATED(thd, "6.0", "TYPE=storage_engine", | 
|                              "'ENGINE=storage_engine'"); | 
|              Lex->create_info.used_fields|= HA_CREATE_USED_ENGINE; | 
|            } | 
| @@ -4791,19 +4771,19 @@ | 
|  storage_engines: | 
|            ident_or_text | 
|            { | 
| -            plugin_ref plugin= ha_resolve_by_name(YYTHD, &$1); | 
| +            plugin_ref plugin= ha_resolve_by_name(thd, &$1); | 
|   | 
|              if (plugin) | 
|                $$= plugin_data(plugin, handlerton*); | 
|              else | 
|              { | 
| -              if (YYTHD->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) | 
| +              if (thd->variables.sql_mode & MODE_NO_ENGINE_SUBSTITUTION) | 
|                { | 
|                  my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), $1.str); | 
|                  MYSQL_YYABORT; | 
|                } | 
|                $$= 0; | 
| -              push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_WARN, | 
| +              push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, | 
|                                    ER_UNKNOWN_STORAGE_ENGINE, | 
|                                    ER(ER_UNKNOWN_STORAGE_ENGINE), | 
|                                    $1.str); | 
| @@ -4815,7 +4795,7 @@ | 
|            ident_or_text | 
|            { | 
|              plugin_ref plugin; | 
| -            if ((plugin= ha_resolve_by_name(YYTHD, &$1))) | 
| +            if ((plugin= ha_resolve_by_name(thd, &$1))) | 
|                $$= plugin_data(plugin, handlerton*); | 
|              else | 
|              { | 
| @@ -5043,7 +5023,7 @@ | 
|                { | 
|                  char buff[sizeof("YEAR()") + MY_INT64_NUM_DECIMAL_DIGITS + 1]; | 
|                  my_snprintf(buff, sizeof(buff), "YEAR(%lu)", length); | 
| -                push_warning_printf(YYTHD, MYSQL_ERROR::WARN_LEVEL_NOTE, | 
| +                push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_NOTE, | 
|                                      ER_WARN_DEPRECATED_SYNTAX, | 
|                                      ER(ER_WARN_DEPRECATED_SYNTAX), | 
|                                      buff, "YEAR(4)"); | 
| @@ -5057,7 +5037,7 @@ | 
|            { $$=MYSQL_TYPE_TIME; } | 
|          | TIMESTAMP opt_field_length | 
|            { | 
| -            if (YYTHD->variables.sql_mode & MODE_MAXDB) | 
| +            if (thd->variables.sql_mode & MODE_MAXDB) | 
|                $$=MYSQL_TYPE_DATETIME; | 
|              else | 
|              { | 
| @@ -5189,7 +5169,7 @@ | 
|  real_type: | 
|            REAL | 
|            { | 
| -            $$= YYTHD->variables.sql_mode & MODE_REAL_AS_FLOAT ? | 
| +            $$= thd->variables.sql_mode & MODE_REAL_AS_FLOAT ? | 
|                MYSQL_TYPE_FLOAT : MYSQL_TYPE_DOUBLE; | 
|            } | 
|          | DOUBLE_SYM | 
| @@ -5263,7 +5243,7 @@ | 
|          | DEFAULT now_or_signed_literal { Lex->default_value=$2; } | 
|          | ON UPDATE_SYM NOW_SYM optional_braces | 
|            { | 
| -            Item *item= new (YYTHD->mem_root) Item_func_now_local(); | 
| +            Item *item= new (thd->mem_root) Item_func_now_local(); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->on_update_value= item; | 
| @@ -5312,7 +5292,7 @@ | 
|  now_or_signed_literal: | 
|            NOW_SYM optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_now_local(); | 
| +            $$= new (thd->mem_root) Item_func_now_local(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -5673,7 +5653,6 @@ | 
|  alter: | 
|            ALTER opt_ignore TABLE_SYM table_ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->name.str= 0; | 
|              lex->name.length= 0; | 
| @@ -5799,7 +5778,7 @@ | 
|                Event_parse_data. | 
|              */ | 
|   | 
| -            if (!(Lex->event_parse_data= Event_parse_data::new_instance(YYTHD))) | 
| +            if (!(Lex->event_parse_data= Event_parse_data::new_instance(thd))) | 
|                MYSQL_YYABORT; | 
|              Lex->event_parse_data->identifier= $4; | 
|   | 
| @@ -6192,7 +6171,6 @@ | 
|            { | 
|              if (!$4) | 
|              { | 
| -              THD *thd= YYTHD; | 
|                $4= thd->variables.collation_database; | 
|              } | 
|              $5= $5 ? $5 : $4; | 
| @@ -6556,7 +6534,7 @@ | 
|  assign_to_keycache: | 
|            table_ident cache_keys_spec | 
|            { | 
| -            if (!Select->add_table_to_list(YYTHD, $1, NULL, 0, TL_READ,  | 
| +            if (!Select->add_table_to_list(thd, $1, NULL, 0, TL_READ,  | 
|                                             Select->pop_index_hints())) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -6585,7 +6563,7 @@ | 
|  preload_keys: | 
|            table_ident cache_keys_spec opt_ignore_leaves | 
|            { | 
| -            if (!Select->add_table_to_list(YYTHD, $1, NULL, $3, TL_READ, | 
| +            if (!Select->add_table_to_list(thd, $1, NULL, $3, TL_READ, | 
|                                             Select->pop_index_hints())) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -6593,7 +6571,7 @@ | 
|   | 
|  cache_keys_spec: | 
|            { | 
| -            Lex->select_lex.alloc_index_hints(YYTHD); | 
| +            Lex->select_lex.alloc_index_hints(thd); | 
|              Select->set_index_hint_type(INDEX_HINT_USE,  | 
|                                          global_system_variables.old_mode ?  | 
|                                          INDEX_HINT_MASK_JOIN :  | 
| @@ -6813,7 +6791,6 @@ | 
|          | select_item | 
|          | '*' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Item *item= new (thd->mem_root) | 
|                            Item_field(&thd->lex->current_select->context, | 
|                                       NULL, NULL, "*"); | 
| @@ -6828,7 +6805,6 @@ | 
|  select_item: | 
|            remember_name select_item2 remember_end select_alias | 
|            { | 
| -            THD *thd= YYTHD; | 
|              DBUG_ASSERT($1 < $3); | 
|   | 
|              if (add_item_to_list(thd, $2)) | 
| @@ -6929,7 +6905,7 @@ | 
|              else | 
|              { | 
|                /* X OR Y */ | 
| -              $$ = new (YYTHD->mem_root) Item_cond_or($1, $3); | 
| +              $$ = new (thd->mem_root) Item_cond_or($1, $3); | 
|                if ($$ == NULL) | 
|                  MYSQL_YYABORT; | 
|              } | 
| @@ -6937,7 +6913,7 @@ | 
|          | expr XOR expr %prec XOR | 
|            { | 
|              /* XOR is a proprietary extension */ | 
| -            $$ = new (YYTHD->mem_root) Item_cond_xor($1, $3); | 
| +            $$ = new (thd->mem_root) Item_cond_xor($1, $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -6979,50 +6955,50 @@ | 
|              else | 
|              { | 
|                /* X AND Y */ | 
| -              $$ = new (YYTHD->mem_root) Item_cond_and($1, $3); | 
| +              $$ = new (thd->mem_root) Item_cond_and($1, $3); | 
|                if ($$ == NULL) | 
|                  MYSQL_YYABORT; | 
|              } | 
|            } | 
|          | NOT_SYM expr %prec NOT_SYM | 
|            { | 
| -            $$= negate_expression(YYTHD, $2); | 
| +            $$= negate_expression(thd, $2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS TRUE_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_istrue($1); | 
| +            $$= new (thd->mem_root) Item_func_istrue($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS not TRUE_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnottrue($1); | 
| +            $$= new (thd->mem_root) Item_func_isnottrue($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS FALSE_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isfalse($1); | 
| +            $$= new (thd->mem_root) Item_func_isfalse($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS not FALSE_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnotfalse($1); | 
| +            $$= new (thd->mem_root) Item_func_isnotfalse($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS UNKNOWN_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnull($1); | 
| +            $$= new (thd->mem_root) Item_func_isnull($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS not UNKNOWN_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnotnull($1); | 
| +            $$= new (thd->mem_root) Item_func_isnotnull($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7032,19 +7008,19 @@ | 
|  bool_pri: | 
|            bool_pri IS NULL_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnull($1); | 
| +            $$= new (thd->mem_root) Item_func_isnull($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri IS not NULL_SYM %prec IS | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_isnotnull($1); | 
| +            $$= new (thd->mem_root) Item_func_isnotnull($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bool_pri EQUAL_SYM predicate %prec EQUAL_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_equal($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_equal($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7066,13 +7042,12 @@ | 
|  predicate: | 
|            bit_expr IN_SYM '(' subselect ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_in_subselect($1, $4); | 
| +            $$= new (thd->mem_root) Item_in_subselect($1, $4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr not IN_SYM '(' subselect ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Item *item= new (thd->mem_root) Item_in_subselect($1, $5); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -7082,7 +7057,7 @@ | 
|            } | 
|          | bit_expr IN_SYM '(' expr ')' | 
|            { | 
| -            $$= handle_sql2003_note184_exception(YYTHD, $1, true, $4); | 
| +            $$= handle_sql2003_note184_exception(thd, $1, true, $4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7090,13 +7065,13 @@ | 
|            {  | 
|              $6->push_front($4); | 
|              $6->push_front($1); | 
| -            $$= new (YYTHD->mem_root) Item_func_in(*$6); | 
| +            $$= new (thd->mem_root) Item_func_in(*$6); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr not IN_SYM '(' expr ')' | 
|            { | 
| -            $$= handle_sql2003_note184_exception(YYTHD, $1, false, $5); | 
| +            $$= handle_sql2003_note184_exception(thd, $1, false, $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7104,7 +7079,7 @@ | 
|            { | 
|              $7->push_front($5); | 
|              $7->push_front($1); | 
| -            Item_func_in *item = new (YYTHD->mem_root) Item_func_in(*$7); | 
| +            Item_func_in *item = new (thd->mem_root) Item_func_in(*$7); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
|              item->negate(); | 
| @@ -7112,14 +7087,14 @@ | 
|            } | 
|          | bit_expr BETWEEN_SYM bit_expr AND_SYM predicate | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_between($1,$3,$5); | 
| +            $$= new (thd->mem_root) Item_func_between($1,$3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr not BETWEEN_SYM bit_expr AND_SYM predicate | 
|            { | 
|              Item_func_between *item; | 
| -            item= new (YYTHD->mem_root) Item_func_between($1,$4,$6); | 
| +            item= new (thd->mem_root) Item_func_between($1,$4,$6); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
|              item->negate(); | 
| @@ -7127,42 +7102,42 @@ | 
|            } | 
|          | bit_expr SOUNDS_SYM LIKE bit_expr | 
|            { | 
| -            Item *item1= new (YYTHD->mem_root) Item_func_soundex($1); | 
| -            Item *item4= new (YYTHD->mem_root) Item_func_soundex($4); | 
| +            Item *item1= new (thd->mem_root) Item_func_soundex($1); | 
| +            Item *item4= new (thd->mem_root) Item_func_soundex($4); | 
|              if ((item1 == NULL) || (item4 == NULL)) | 
|                MYSQL_YYABORT; | 
| -            $$= new (YYTHD->mem_root) Item_func_eq(item1, item4); | 
| +            $$= new (thd->mem_root) Item_func_eq(item1, item4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr LIKE simple_expr opt_escape | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_like($1,$3,$4,Lex->escape_used); | 
| +            $$= new (thd->mem_root) Item_func_like($1,$3,$4,Lex->escape_used); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr not LIKE simple_expr opt_escape | 
|            { | 
| -            Item *item= new (YYTHD->mem_root) Item_func_like($1,$4,$5, | 
| +            Item *item= new (thd->mem_root) Item_func_like($1,$4,$5, | 
|                                                               Lex->escape_used); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
| -            $$= new (YYTHD->mem_root) Item_func_not(item); | 
| +            $$= new (thd->mem_root) Item_func_not(item); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr REGEXP bit_expr | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_regex($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_regex($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr not REGEXP bit_expr | 
|            { | 
| -            Item *item= new (YYTHD->mem_root) Item_func_regex($1,$4); | 
| +            Item *item= new (thd->mem_root) Item_func_regex($1,$4); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
| -            $$= negate_expression(YYTHD, item); | 
| +            $$= negate_expression(thd, item); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7172,85 +7147,85 @@ | 
|  bit_expr: | 
|            bit_expr '|' bit_expr %prec '|' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_bit_or($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_bit_or($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '&' bit_expr %prec '&' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_bit_and($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_bit_and($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr SHIFT_LEFT bit_expr %prec SHIFT_LEFT | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_shift_left($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_shift_left($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr SHIFT_RIGHT bit_expr %prec SHIFT_RIGHT | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_shift_right($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_shift_right($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '+' bit_expr %prec '+' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_plus($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_plus($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '-' bit_expr %prec '-' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_minus($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_minus($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '+' INTERVAL_SYM expr interval %prec '+' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,0); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '-' INTERVAL_SYM expr interval %prec '-' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($1,$4,$5,1); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($1,$4,$5,1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '*' bit_expr %prec '*' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_mul($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_mul($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '/' bit_expr %prec '/' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_div($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_div($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '%' bit_expr %prec '%' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_mod($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_mod($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr DIV_SYM bit_expr %prec DIV_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_int_div($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_int_div($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr MOD_SYM bit_expr %prec MOD_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_mod($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_mod($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | bit_expr '^' bit_expr | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_bit_xor($1,$3); | 
| +            $$= new (thd->mem_root) Item_func_bit_xor($1,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7299,7 +7274,6 @@ | 
|          | function_call_conflict | 
|          | simple_expr COLLATE_SYM ident_or_text %prec NEG | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Item *i1= new (thd->mem_root) Item_string($3.str, | 
|                                                        $3.length, | 
|                                                        thd->charset()); | 
| @@ -7315,7 +7289,7 @@ | 
|          | sum_expr | 
|          | simple_expr OR_OR_SYM simple_expr | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_concat($1, $3); | 
| +            $$= new (thd->mem_root) Item_func_concat($1, $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7325,25 +7299,25 @@ | 
|            } | 
|          | '-' simple_expr %prec NEG | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_neg($2); | 
| +            $$= new (thd->mem_root) Item_func_neg($2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | '~' simple_expr %prec NEG | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_bit_neg($2); | 
| +            $$= new (thd->mem_root) Item_func_bit_neg($2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | not2 simple_expr %prec NEG | 
|            { | 
| -            $$= negate_expression(YYTHD, $2); | 
| +            $$= negate_expression(thd, $2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | '(' subselect ')' | 
|            {  | 
| -            $$= new (YYTHD->mem_root) Item_singlerow_subselect($2); | 
| +            $$= new (thd->mem_root) Item_singlerow_subselect($2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7352,20 +7326,20 @@ | 
|          | '(' expr ',' expr_list ')' | 
|            { | 
|              $4->push_front($2); | 
| -            $$= new (YYTHD->mem_root) Item_row(*$4); | 
| +            $$= new (thd->mem_root) Item_row(*$4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | ROW_SYM '(' expr ',' expr_list ')' | 
|            { | 
|              $5->push_front($3); | 
| -            $$= new (YYTHD->mem_root) Item_row(*$5); | 
| +            $$= new (thd->mem_root) Item_row(*$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | EXISTS '(' subselect ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_exists_subselect($3); | 
| +            $$= new (thd->mem_root) Item_exists_subselect($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7374,7 +7348,7 @@ | 
|          | MATCH ident_list_arg AGAINST '(' bit_expr fulltext_options ')' | 
|            { | 
|              $2->push_front($5); | 
| -            Item_func_match *i1= new (YYTHD->mem_root) Item_func_match(*$2, $6); | 
| +            Item_func_match *i1= new (thd->mem_root) Item_func_match(*$2, $6); | 
|              if (i1 == NULL) | 
|                MYSQL_YYABORT; | 
|              Select->add_ftfunc_to_list(i1); | 
| @@ -7382,7 +7356,7 @@ | 
|            } | 
|          | BINARY simple_expr %prec NEG | 
|            { | 
| -            $$= create_func_cast(YYTHD, $2, ITEM_CAST_CHAR, NULL, NULL, | 
| +            $$= create_func_cast(thd, $2, ITEM_CAST_CHAR, NULL, NULL, | 
|                                   &my_charset_bin); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -7390,27 +7364,27 @@ | 
|          | CAST_SYM '(' expr AS cast_type ')' | 
|            { | 
|              LEX *lex= Lex; | 
| -            $$= create_func_cast(YYTHD, $3, $5, lex->length, lex->dec, | 
| +            $$= create_func_cast(thd, $3, $5, lex->length, lex->dec, | 
|                                   lex->charset); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CASE_SYM opt_expr when_list opt_else END | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_case(* $3, $2, $4 ); | 
| +            $$= new (thd->mem_root) Item_func_case(* $3, $2, $4 ); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CONVERT_SYM '(' expr ',' cast_type ')' | 
|            { | 
| -            $$= create_func_cast(YYTHD, $3, $5, Lex->length, Lex->dec, | 
| +            $$= create_func_cast(thd, $3, $5, Lex->length, Lex->dec, | 
|                                   Lex->charset); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CONVERT_SYM '(' expr USING charset_name ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_conv_charset($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_conv_charset($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7423,14 +7397,14 @@ | 
|                my_error(ER_WRONG_COLUMN_NAME, MYF(0), il->my_name()->str); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context(), | 
| +            $$= new (thd->mem_root) Item_default_value(Lex->current_context(), | 
|                                                           $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | VALUES '(' simple_ident_nospvar ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_insert_value(Lex->current_context(), | 
| +            $$= new (thd->mem_root) Item_insert_value(Lex->current_context(), | 
|                                                          $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -7438,7 +7412,7 @@ | 
|          | INTERVAL_SYM expr interval '+' expr %prec INTERVAL_SYM | 
|            /* we cannot put interval before - */ | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($5,$2,$3,0); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($5,$2,$3,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7453,19 +7427,19 @@ | 
|  function_call_keyword: | 
|            CHAR_SYM '(' expr_list ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_char(*$3); | 
| +            $$= new (thd->mem_root) Item_func_char(*$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CHAR_SYM '(' expr_list USING charset_name ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_char(*$3, $5); | 
| +            $$= new (thd->mem_root) Item_func_char(*$3, $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CURRENT_USER optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_current_user(Lex->current_context()); | 
| +            $$= new (thd->mem_root) Item_func_current_user(Lex->current_context()); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->set_stmt_unsafe(); | 
| @@ -7473,31 +7447,30 @@ | 
|            } | 
|          | DATE_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_typecast($3); | 
| +            $$= new (thd->mem_root) Item_date_typecast($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | DAY_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_dayofmonth($3); | 
| +            $$= new (thd->mem_root) Item_func_dayofmonth($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | HOUR_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_hour($3); | 
| +            $$= new (thd->mem_root) Item_func_hour($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | INSERT '(' expr ',' expr ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_insert($3,$5,$7,$9); | 
| +            $$= new (thd->mem_root) Item_func_insert($3,$5,$7,$9); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | INTERVAL_SYM '(' expr ',' expr ')' %prec INTERVAL_SYM | 
|            { | 
| -            THD *thd= YYTHD; | 
|              List<Item> *list= new (thd->mem_root) List<Item>; | 
|              if (list == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -7512,7 +7485,6 @@ | 
|            } | 
|          | INTERVAL_SYM '(' expr ',' expr ',' expr_list ')' %prec INTERVAL_SYM | 
|            { | 
| -            THD *thd= YYTHD; | 
|              $7->push_front($5); | 
|              $7->push_front($3); | 
|              Item_row *item= new (thd->mem_root) Item_row(*$7); | 
| @@ -7524,103 +7496,103 @@ | 
|            } | 
|          | LEFT '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_left($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_left($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MINUTE_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_minute($3); | 
| +            $$= new (thd->mem_root) Item_func_minute($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MONTH_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_month($3); | 
| +            $$= new (thd->mem_root) Item_func_month($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | RIGHT '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_right($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_right($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SECOND_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_second($3); | 
| +            $$= new (thd->mem_root) Item_func_second($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TIME_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_time_typecast($3); | 
| +            $$= new (thd->mem_root) Item_time_typecast($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TIMESTAMP '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_datetime_typecast($3); | 
| +            $$= new (thd->mem_root) Item_datetime_typecast($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TIMESTAMP '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_add_time($3, $5, 1, 0); | 
| +            $$= new (thd->mem_root) Item_func_add_time($3, $5, 1, 0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_trim($3); | 
| +            $$= new (thd->mem_root) Item_func_trim($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' LEADING expr FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_ltrim($6,$4); | 
| +            $$= new (thd->mem_root) Item_func_ltrim($6,$4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' TRAILING expr FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_rtrim($6,$4); | 
| +            $$= new (thd->mem_root) Item_func_rtrim($6,$4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' BOTH expr FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_trim($6,$4); | 
| +            $$= new (thd->mem_root) Item_func_trim($6,$4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' LEADING FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_ltrim($5); | 
| +            $$= new (thd->mem_root) Item_func_ltrim($5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' TRAILING FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_rtrim($5); | 
| +            $$= new (thd->mem_root) Item_func_rtrim($5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' BOTH FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_trim($5); | 
| +            $$= new (thd->mem_root) Item_func_trim($5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRIM '(' expr FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_trim($5,$3); | 
| +            $$= new (thd->mem_root) Item_func_trim($5,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | USER '(' ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_user(); | 
| +            $$= new (thd->mem_root) Item_func_user(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->set_stmt_unsafe(); | 
| @@ -7628,7 +7600,7 @@ | 
|            } | 
|          | YEAR_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_year($3); | 
| +            $$= new (thd->mem_root) Item_func_year($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7649,34 +7621,34 @@ | 
|  function_call_nonkeyword: | 
|            ADDDATE_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3, $5, | 
|                                                               INTERVAL_DAY, 0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | ADDDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 0); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CURDATE optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_curdate_local(); | 
| +            $$= new (thd->mem_root) Item_func_curdate_local(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | CURTIME optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_curtime_local(); | 
| +            $$= new (thd->mem_root) Item_func_curtime_local(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | CURTIME '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_curtime_local($3); | 
| +            $$= new (thd->mem_root) Item_func_curtime_local($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
| @@ -7684,83 +7656,83 @@ | 
|          | DATE_ADD_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' | 
|            %prec INTERVAL_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,0); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | DATE_SUB_INTERVAL '(' expr ',' INTERVAL_SYM expr interval ')' | 
|            %prec INTERVAL_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3,$6,$7,1); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3,$6,$7,1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | EXTRACT_SYM '(' interval FROM expr ')' | 
|            { | 
| -            $$=new (YYTHD->mem_root) Item_extract( $3, $5); | 
| +            $$=new (thd->mem_root) Item_extract( $3, $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | GET_FORMAT '(' date_time_type  ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_get_format($3, $5); | 
| +            $$= new (thd->mem_root) Item_func_get_format($3, $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | NOW_SYM optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_now_local(); | 
| +            $$= new (thd->mem_root) Item_func_now_local(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | NOW_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_now_local($3); | 
| +            $$= new (thd->mem_root) Item_func_now_local($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | POSITION_SYM '(' bit_expr IN_SYM expr ')' | 
|            { | 
| -            $$ = new (YYTHD->mem_root) Item_func_locate($5,$3); | 
| +            $$ = new (thd->mem_root) Item_func_locate($5,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBDATE_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $5, | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3, $5, | 
|                                                               INTERVAL_DAY, 1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBDATE_SYM '(' expr ',' INTERVAL_SYM expr interval ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($3, $6, $7, 1); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($3, $6, $7, 1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBSTRING '(' expr ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); | 
| +            $$= new (thd->mem_root) Item_func_substr($3,$5,$7); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBSTRING '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_substr($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_substr($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBSTRING '(' expr FROM expr FOR_SYM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_substr($3,$5,$7); | 
| +            $$= new (thd->mem_root) Item_func_substr($3,$5,$7); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUBSTRING '(' expr FROM expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_substr($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_substr($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7775,9 +7747,9 @@ | 
|              */ | 
|              Lex->set_stmt_unsafe(); | 
|              if (global_system_variables.sysdate_is_now == 0) | 
| -              $$= new (YYTHD->mem_root) Item_func_sysdate_local(); | 
| +              $$= new (thd->mem_root) Item_func_sysdate_local(); | 
|              else | 
| -              $$= new (YYTHD->mem_root) Item_func_now_local(); | 
| +              $$= new (thd->mem_root) Item_func_now_local(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
| @@ -7785,42 +7757,42 @@ | 
|          | SYSDATE '(' expr ')' | 
|            { | 
|              if (global_system_variables.sysdate_is_now == 0) | 
| -              $$= new (YYTHD->mem_root) Item_func_sysdate_local($3); | 
| +              $$= new (thd->mem_root) Item_func_sysdate_local($3); | 
|              else | 
| -              $$= new (YYTHD->mem_root) Item_func_now_local($3); | 
| +              $$= new (thd->mem_root) Item_func_now_local($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | TIMESTAMP_ADD '(' interval_time_stamp ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_date_add_interval($7,$5,$3,0); | 
| +            $$= new (thd->mem_root) Item_date_add_interval($7,$5,$3,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TIMESTAMP_DIFF '(' interval_time_stamp ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_timestamp_diff($5,$7,$3); | 
| +            $$= new (thd->mem_root) Item_func_timestamp_diff($5,$7,$3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | UTC_DATE_SYM optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_curdate_utc(); | 
| +            $$= new (thd->mem_root) Item_func_curdate_utc(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | UTC_TIME_SYM optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_curtime_utc(); | 
| +            $$= new (thd->mem_root) Item_func_curtime_utc(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | UTC_TIMESTAMP_SYM optional_braces | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_now_utc(); | 
| +            $$= new (thd->mem_root) Item_func_now_utc(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
| @@ -7835,62 +7807,61 @@ | 
|  function_call_conflict: | 
|            ASCII_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_ascii($3); | 
| +            $$= new (thd->mem_root) Item_func_ascii($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | CHARSET '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_charset($3); | 
| +            $$= new (thd->mem_root) Item_func_charset($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COALESCE '(' expr_list ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_coalesce(* $3); | 
| +            $$= new (thd->mem_root) Item_func_coalesce(* $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COLLATION_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_collation($3); | 
| +            $$= new (thd->mem_root) Item_func_collation($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | DATABASE '(' ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_database(); | 
| +            $$= new (thd->mem_root) Item_func_database(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              Lex->safe_to_cache_query=0; | 
|            } | 
|          | IF '(' expr ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_if($3,$5,$7); | 
| +            $$= new (thd->mem_root) Item_func_if($3,$5,$7); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MICROSECOND_SYM '(' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_microsecond($3); | 
| +            $$= new (thd->mem_root) Item_func_microsecond($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MOD_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$ = new (YYTHD->mem_root) Item_func_mod($3, $5); | 
| +            $$ = new (thd->mem_root) Item_func_mod($3, $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | OLD_PASSWORD '(' expr ')' | 
|            { | 
| -            $$=  new (YYTHD->mem_root) Item_func_old_password($3); | 
| +            $$=  new (thd->mem_root) Item_func_old_password($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | PASSWORD '(' expr ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Item* i1; | 
|              if (thd->variables.old_passwords) | 
|                i1= new (thd->mem_root) Item_func_old_password($3); | 
| @@ -7902,31 +7873,30 @@ | 
|            } | 
|          | QUARTER_SYM '(' expr ')' | 
|            { | 
| -            $$ = new (YYTHD->mem_root) Item_func_quarter($3); | 
| +            $$ = new (thd->mem_root) Item_func_quarter($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | REPEAT_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_repeat($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_repeat($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | REPLACE '(' expr ',' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_replace($3,$5,$7); | 
| +            $$= new (thd->mem_root) Item_func_replace($3,$5,$7); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRUNCATE_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_round($3,$5,1); | 
| +            $$= new (thd->mem_root) Item_func_round($3,$5,1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | WEEK_SYM '(' expr ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Item *i1= new (thd->mem_root) Item_int((char*) "0", | 
|                                             thd->variables.default_week_format, | 
|                                                     1); | 
| @@ -7938,7 +7908,7 @@ | 
|            } | 
|          | WEEK_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_week($3,$5); | 
| +            $$= new (thd->mem_root) Item_func_week($3,$5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -7960,52 +7930,52 @@ | 
|  geometry_function: | 
|            CONTAINS_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_rel($3, $5, | 
|                                                 Item_func::SP_CONTAINS_FUNC)); | 
|            } | 
|          | GEOMETRYCOLLECTION '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_geometrycollection, | 
|                             Geometry::wkb_point)); | 
|            } | 
|          | LINESTRING '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_linestring, | 
|                             Geometry::wkb_point)); | 
|            } | 
|          | MULTILINESTRING '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_multilinestring, | 
|                             Geometry::wkb_linestring)); | 
|            } | 
|          | MULTIPOINT '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_multipoint, | 
|                             Geometry::wkb_point)); | 
|            } | 
|          | MULTIPOLYGON '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_multipolygon, | 
|                             Geometry::wkb_polygon)); | 
|            } | 
|          | POINT_SYM '(' expr ',' expr ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, Item_func_point($3,$5)); | 
| +            $$= GEOM_NEW(thd, Item_func_point($3,$5)); | 
|            } | 
|          | POLYGON '(' expr_list ')' | 
|            { | 
| -            $$= GEOM_NEW(YYTHD, | 
| +            $$= GEOM_NEW(thd, | 
|                           Item_func_spatial_collection(* $3, | 
|                             Geometry::wkb_polygon, | 
|                             Geometry::wkb_linestring)); | 
| @@ -8043,7 +8013,6 @@ | 
|            } | 
|            opt_udf_expr_list ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Create_func *builder; | 
|              Item *item= NULL; | 
|   | 
| @@ -8097,7 +8066,6 @@ | 
|            } | 
|          | ident '.' ident '(' opt_expr_list ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Create_qfunc *builder; | 
|              Item *item= NULL; | 
|   | 
| @@ -8161,7 +8129,7 @@ | 
|  udf_expr_list: | 
|            udf_expr | 
|            { | 
| -            $$= new (YYTHD->mem_root) List<Item>; | 
| +            $$= new (thd->mem_root) List<Item>; | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->push_back($1); | 
| @@ -8194,7 +8162,7 @@ | 
|                 remember_name we may get quoted or escaped names. | 
|              */ | 
|              else if ($2->type() != Item::FIELD_ITEM) | 
| -              $2->set_name($1, (uint) ($3 - $1), YYTHD->charset()); | 
| +              $2->set_name($1, (uint) ($3 - $1), thd->charset()); | 
|              $$= $2; | 
|            } | 
|          ; | 
| @@ -8202,46 +8170,46 @@ | 
|  sum_expr: | 
|            AVG_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_avg($3); | 
| +            $$= new (thd->mem_root) Item_sum_avg($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | AVG_SYM '(' DISTINCT in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_avg_distinct($4); | 
| +            $$= new (thd->mem_root) Item_sum_avg_distinct($4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | BIT_AND  '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_and($3); | 
| +            $$= new (thd->mem_root) Item_sum_and($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | BIT_OR  '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_or($3); | 
| +            $$= new (thd->mem_root) Item_sum_or($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | BIT_XOR  '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_xor($3); | 
| +            $$= new (thd->mem_root) Item_sum_xor($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COUNT_SYM '(' opt_all '*' ')' | 
|            { | 
| -            Item *item= new (YYTHD->mem_root) Item_int((int32) 0L,1); | 
| +            Item *item= new (thd->mem_root) Item_int((int32) 0L,1); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
| -            $$= new (YYTHD->mem_root) Item_sum_count(item); | 
| +            $$= new (thd->mem_root) Item_sum_count(item); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COUNT_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_count($3); | 
| +            $$= new (thd->mem_root) Item_sum_count($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -8251,13 +8219,13 @@ | 
|            { Select->in_sum_expr--; } | 
|            ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_count_distinct(* $5); | 
| +            $$= new (thd->mem_root) Item_sum_count_distinct(* $5); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MIN_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_min($3); | 
| +            $$= new (thd->mem_root) Item_sum_min($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -8268,55 +8236,55 @@ | 
|          */ | 
|          | MIN_SYM '(' DISTINCT in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_min($4); | 
| +            $$= new (thd->mem_root) Item_sum_min($4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MAX_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_max($3); | 
| +            $$= new (thd->mem_root) Item_sum_max($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | MAX_SYM '(' DISTINCT in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_max($4); | 
| +            $$= new (thd->mem_root) Item_sum_max($4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | STD_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_std($3, 0); | 
| +            $$= new (thd->mem_root) Item_sum_std($3, 0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | VARIANCE_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_variance($3, 0); | 
| +            $$= new (thd->mem_root) Item_sum_variance($3, 0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | STDDEV_SAMP_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_std($3, 1); | 
| +            $$= new (thd->mem_root) Item_sum_std($3, 1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | VAR_SAMP_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_variance($3, 1); | 
| +            $$= new (thd->mem_root) Item_sum_variance($3, 1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUM_SYM '(' in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_sum($3); | 
| +            $$= new (thd->mem_root) Item_sum_sum($3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | SUM_SYM '(' DISTINCT in_sum_expr ')' | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_sum_sum_distinct($4); | 
| +            $$= new (thd->mem_root) Item_sum_sum_distinct($4); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -8328,7 +8296,7 @@ | 
|            { | 
|              SELECT_LEX *sel= Select; | 
|              sel->in_sum_expr--; | 
| -            $$= new (YYTHD->mem_root) | 
| +            $$= new (thd->mem_root) | 
|                    Item_func_group_concat(Lex->current_context(), $3, $5, | 
|                                           sel->gorder_list, $7); | 
|              if ($$ == NULL) | 
| @@ -8357,7 +8325,7 @@ | 
|            ident_or_text SET_VAR expr | 
|            { | 
|              Item_func_set_user_var *item; | 
| -            $$= item= new (YYTHD->mem_root) Item_func_set_user_var($1, $3); | 
| +            $$= item= new (thd->mem_root) Item_func_set_user_var($1, $3); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              LEX *lex= Lex; | 
| @@ -8366,7 +8334,7 @@ | 
|            } | 
|          | ident_or_text | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_func_get_user_var($1); | 
| +            $$= new (thd->mem_root) Item_func_get_user_var($1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              LEX *lex= Lex; | 
| @@ -8380,7 +8348,7 @@ | 
|                my_parse_error(ER(ER_SYNTAX_ERROR)); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            if (!($$= get_system_var(YYTHD, $2, $3, $4))) | 
| +            if (!($$= get_system_var(thd, $2, $3, $4))) | 
|                MYSQL_YYABORT; | 
|              if (!((Item_func_get_system_var*) $$)->is_written_to_binlog()) | 
|                Lex->set_stmt_unsafe(); | 
| @@ -8395,7 +8363,7 @@ | 
|  opt_gconcat_separator: | 
|            /* empty */ | 
|            { | 
| -            $$= new (YYTHD->mem_root) String(",", 1, &my_charset_latin1); | 
| +            $$= new (thd->mem_root) String(",", 1, &my_charset_latin1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -8422,9 +8390,9 @@ | 
|   | 
|  gorder_list: | 
|            gorder_list ',' order_ident order_dir | 
| -          { if (add_gorder_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } | 
| +          { if (add_gorder_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } | 
|          | order_ident order_dir | 
| -          { if (add_gorder_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } | 
| +          { if (add_gorder_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } | 
|          ; | 
|   | 
|  in_sum_expr: | 
| @@ -8477,7 +8445,7 @@ | 
|  expr_list: | 
|            expr | 
|            { | 
| -            $$= new (YYTHD->mem_root) List<Item>; | 
| +            $$= new (thd->mem_root) List<Item>; | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->push_back($1); | 
| @@ -8497,7 +8465,7 @@ | 
|  ident_list: | 
|            simple_ident | 
|            { | 
| -            $$= new (YYTHD->mem_root) List<Item>; | 
| +            $$= new (thd->mem_root) List<Item>; | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              $$->push_back($1); | 
| @@ -8595,7 +8563,7 @@ | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1 && $3); | 
|              /* Change the current name resolution context to a local context. */ | 
| -            if (push_new_name_resolution_context(YYTHD, $1, $3)) | 
| +            if (push_new_name_resolution_context(thd, $1, $3)) | 
|                MYSQL_YYABORT; | 
|              Select->parsing_place= IN_ON; | 
|            } | 
| @@ -8610,7 +8578,7 @@ | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1 && $3); | 
|              /* Change the current name resolution context to a local context. */ | 
| -            if (push_new_name_resolution_context(YYTHD, $1, $3)) | 
| +            if (push_new_name_resolution_context(thd, $1, $3)) | 
|                MYSQL_YYABORT; | 
|              Select->parsing_place= IN_ON; | 
|            } | 
| @@ -8640,7 +8608,7 @@ | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1 && $5); | 
|              /* Change the current name resolution context to a local context. */ | 
| -            if (push_new_name_resolution_context(YYTHD, $1, $5)) | 
| +            if (push_new_name_resolution_context(thd, $1, $5)) | 
|                MYSQL_YYABORT; | 
|              Select->parsing_place= IN_ON; | 
|            } | 
| @@ -8676,7 +8644,7 @@ | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1 && $5); | 
|              /* Change the current name resolution context to a local context. */ | 
| -            if (push_new_name_resolution_context(YYTHD, $1, $5)) | 
| +            if (push_new_name_resolution_context(thd, $1, $5)) | 
|                MYSQL_YYABORT; | 
|              Select->parsing_place= IN_ON; | 
|            } | 
| @@ -8724,7 +8692,7 @@ | 
|            } | 
|            table_ident opt_table_alias opt_key_definition | 
|            { | 
| -            if (!($$= Select->add_table_to_list(YYTHD, $2, $3, | 
| +            if (!($$= Select->add_table_to_list(thd, $2, $3, | 
|                                                  Select->get_table_join_options(), | 
|                                                  Lex->lock_option, | 
|                                                  Select->pop_index_hints()))) | 
| @@ -8922,7 +8890,7 @@ | 
|   | 
|  opt_index_hints_list: | 
|            /* empty */ | 
| -        | { Select->alloc_index_hints(YYTHD); } index_hints_list | 
| +        | { Select->alloc_index_hints(thd); } index_hints_list | 
|          ; | 
|   | 
|  opt_key_definition: | 
| @@ -8931,15 +8899,15 @@ | 
|          ; | 
|   | 
|  opt_key_usage_list: | 
| -          /* empty */ { Select->add_index_hint(YYTHD, NULL, 0); } | 
| +          /* empty */ { Select->add_index_hint(thd, NULL, 0); } | 
|          | key_usage_list {} | 
|          ; | 
|   | 
|  key_usage_element: | 
|            ident | 
| -          { Select->add_index_hint(YYTHD, $1.str, $1.length); } | 
| +          { Select->add_index_hint(thd, $1.str, $1.length); } | 
|          | PRIMARY_SYM | 
| -          { Select->add_index_hint(YYTHD, (char *)"PRIMARY", 7); } | 
| +          { Select->add_index_hint(thd, (char *)"PRIMARY", 7); } | 
|          ; | 
|   | 
|  key_usage_list: | 
| @@ -8952,7 +8920,7 @@ | 
|            { | 
|              if (!($$= new List<String>)) | 
|                MYSQL_YYABORT; | 
| -            String *s= new (YYTHD->mem_root) String((const char *) $1.str, | 
| +            String *s= new (thd->mem_root) String((const char *) $1.str, | 
|                                                      $1.length, | 
|                                                      system_charset_info); | 
|              if (s == NULL) | 
| @@ -8961,7 +8929,7 @@ | 
|            } | 
|          | using_list ',' ident | 
|            { | 
| -            String *s= new (YYTHD->mem_root) String((const char *) $3.str, | 
| +            String *s= new (thd->mem_root) String((const char *) $3.str, | 
|                                                      $3.length, | 
|                                                      system_charset_info); | 
|              if (s == NULL) | 
| @@ -9002,7 +8970,7 @@ | 
|                                      implementation without changing its | 
|                                      resolution. | 
|                                    */ | 
| -                                  WARN_DEPRECATED(yythd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND"); | 
| +                                  WARN_DEPRECATED(thd, VER_CELOSIA, "FRAC_SECOND", "MICROSECOND"); | 
|                                  } | 
|      ; | 
|   | 
| @@ -9086,7 +9054,6 @@ | 
|            } | 
|          | /* empty */ | 
|            { | 
| -            THD *thd= YYTHD; | 
|              Lex->escape_used= FALSE; | 
|              $$= ((thd->variables.sql_mode & MODE_NO_BACKSLASH_ESCAPES) ? | 
|                   new (thd->mem_root) Item_string("", 0, &my_charset_latin1) : | 
| @@ -9107,9 +9074,9 @@ | 
|   | 
|  group_list: | 
|            group_list ',' order_ident order_dir | 
| -          { if (add_group_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } | 
| +          { if (add_group_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } | 
|          | order_ident order_dir | 
| -          { if (add_group_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } | 
| +          { if (add_group_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } | 
|          ; | 
|   | 
|  olap_opt: | 
| @@ -9156,7 +9123,6 @@ | 
|  alter_order_item: | 
|            simple_ident_nospvar order_dir | 
|            { | 
| -            THD *thd= YYTHD; | 
|              bool ascending= ($2 == 1) ? true : false; | 
|              if (add_order_to_list(thd, $1, ascending)) | 
|                MYSQL_YYABORT; | 
| @@ -9209,9 +9175,9 @@ | 
|   | 
|  order_list: | 
|            order_list ',' order_ident order_dir | 
| -          { if (add_order_to_list(YYTHD, $3,(bool) $4)) MYSQL_YYABORT; } | 
| +          { if (add_order_to_list(thd, $3,(bool) $4)) MYSQL_YYABORT; } | 
|          | order_ident order_dir | 
| -          { if (add_order_to_list(YYTHD, $1,(bool) $2)) MYSQL_YYABORT; } | 
| +          { if (add_order_to_list(thd, $1,(bool) $2)) MYSQL_YYABORT; } | 
|          ; | 
|   | 
|  order_dir: | 
| @@ -9271,19 +9237,19 @@ | 
|          } | 
|          | ULONGLONG_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); | 
| +            $$= new (thd->mem_root) Item_uint($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | LONG_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); | 
| +            $$= new (thd->mem_root) Item_uint($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); | 
| +            $$= new (thd->mem_root) Item_uint($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -9365,7 +9331,7 @@ | 
|              lex->proc_list.elements=0; | 
|              lex->proc_list.first=0; | 
|              lex->proc_list.next= &lex->proc_list.first; | 
| -            Item_field *item= new (YYTHD->mem_root) | 
| +            Item_field *item= new (thd->mem_root) | 
|                                  Item_field(&lex->current_select->context, | 
|                                             NULL, NULL, $2.str); | 
|              if (item == NULL) | 
| @@ -9390,8 +9356,7 @@ | 
|  procedure_item: | 
|            remember_name expr remember_end | 
|            { | 
| -            THD *thd= YYTHD; | 
| - | 
| +             | 
|              if (add_proc_to_list(thd, $2)) | 
|                MYSQL_YYABORT; | 
|              if (!$2->name) | 
| @@ -9560,7 +9525,6 @@ | 
|            } | 
|          | DROP FUNCTION_SYM if_exists ident '.' ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              sp_name *spname; | 
|              if ($4.str && check_db_name(&$4)) | 
| @@ -9583,7 +9547,6 @@ | 
|            } | 
|          | DROP FUNCTION_SYM if_exists ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              LEX_STRING db= {0, 0}; | 
|              sp_name *spname; | 
| @@ -9664,7 +9627,7 @@ | 
|  table_name: | 
|            table_ident | 
|            { | 
| -            if (!Select->add_table_to_list(YYTHD, $1, NULL, TL_OPTION_UPDATING)) | 
| +            if (!Select->add_table_to_list(thd, $1, NULL, TL_OPTION_UPDATING)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          ; | 
| @@ -9677,7 +9640,7 @@ | 
|  table_alias_ref: | 
|            table_ident_opt_wild | 
|            { | 
| -            if (!Select->add_table_to_list(YYTHD, $1, NULL, | 
| +            if (!Select->add_table_to_list(thd, $1, NULL, | 
|                                             TL_OPTION_UPDATING | TL_OPTION_ALIAS, | 
|                                             Lex->lock_option )) | 
|                MYSQL_YYABORT; | 
| @@ -9868,7 +9831,7 @@ | 
|            expr { $$= $1;} | 
|          | DEFAULT | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_default_value(Lex->current_context()); | 
| +            $$= new (thd->mem_root) Item_default_value(Lex->current_context()); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -9922,7 +9885,7 @@ | 
|  update_elem: | 
|            simple_ident_nospvar equal expr_or_default | 
|            { | 
| -            if (add_item_to_list(YYTHD, $1) || add_value_to_list(YYTHD, $3)) | 
| +            if (add_item_to_list(thd, $1) || add_value_to_list(thd, $3)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          ; | 
| @@ -9965,7 +9928,7 @@ | 
|  single_multi: | 
|            FROM table_ident | 
|            { | 
| -            if (!Select->add_table_to_list(YYTHD, $2, NULL, TL_OPTION_UPDATING, | 
| +            if (!Select->add_table_to_list(thd, $2, NULL, TL_OPTION_UPDATING, | 
|                                             Lex->lock_option)) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -9998,7 +9961,7 @@ | 
|              Table_ident *ti= new Table_ident($1); | 
|              if (ti == NULL) | 
|                MYSQL_YYABORT; | 
| -            if (!Select->add_table_to_list(YYTHD, | 
| +            if (!Select->add_table_to_list(thd, | 
|                                             ti, | 
|                                             $3, | 
|                                             TL_OPTION_UPDATING | TL_OPTION_ALIAS, | 
| @@ -10007,10 +9970,10 @@ | 
|            } | 
|          | ident '.' ident opt_wild opt_table_alias | 
|            { | 
| -            Table_ident *ti= new Table_ident(YYTHD, $1, $3, 0); | 
| +            Table_ident *ti= new Table_ident(thd, $1, $3, 0); | 
|              if (ti == NULL) | 
|                MYSQL_YYABORT; | 
| -            if (!Select->add_table_to_list(YYTHD, | 
| +            if (!Select->add_table_to_list(thd, | 
|                                             ti, | 
|                                             $5,  | 
|                                             TL_OPTION_UPDATING | TL_OPTION_ALIAS, | 
| @@ -10130,7 +10093,7 @@ | 
|             { | 
|               LEX *lex= Lex; | 
|               lex->sql_command= SQLCOM_SHOW_DATABASES; | 
| -             if (prepare_schema_table(YYTHD, lex, 0, SCH_SCHEMATA)) | 
| +             if (prepare_schema_table(thd, lex, 0, SCH_SCHEMATA)) | 
|                 MYSQL_YYABORT; | 
|             } | 
|           | opt_full TABLES opt_db wild_and_where | 
| @@ -10138,7 +10101,7 @@ | 
|               LEX *lex= Lex; | 
|               lex->sql_command= SQLCOM_SHOW_TABLES; | 
|               lex->select_lex.db= $3; | 
| -             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLE_NAMES)) | 
| +             if (prepare_schema_table(thd, lex, 0, SCH_TABLE_NAMES)) | 
|                 MYSQL_YYABORT; | 
|             } | 
|           | opt_full TRIGGERS_SYM opt_db wild_and_where | 
| @@ -10146,7 +10109,7 @@ | 
|               LEX *lex= Lex; | 
|               lex->sql_command= SQLCOM_SHOW_TRIGGERS; | 
|               lex->select_lex.db= $3; | 
| -             if (prepare_schema_table(YYTHD, lex, 0, SCH_TRIGGERS)) | 
| +             if (prepare_schema_table(thd, lex, 0, SCH_TRIGGERS)) | 
|                 MYSQL_YYABORT; | 
|             } | 
|           | EVENTS_SYM opt_db wild_and_where | 
| @@ -10154,7 +10117,7 @@ | 
|               LEX *lex= Lex; | 
|               lex->sql_command= SQLCOM_SHOW_EVENTS; | 
|               lex->select_lex.db= $2; | 
| -             if (prepare_schema_table(YYTHD, lex, 0, SCH_EVENTS)) | 
| +             if (prepare_schema_table(thd, lex, 0, SCH_EVENTS)) | 
|                 MYSQL_YYABORT; | 
|             } | 
|           | TABLE_SYM STATUS_SYM opt_db wild_and_where | 
| @@ -10162,7 +10125,7 @@ | 
|               LEX *lex= Lex; | 
|               lex->sql_command= SQLCOM_SHOW_TABLE_STATUS; | 
|               lex->select_lex.db= $3; | 
| -             if (prepare_schema_table(YYTHD, lex, 0, SCH_TABLES)) | 
| +             if (prepare_schema_table(thd, lex, 0, SCH_TABLES)) | 
|                 MYSQL_YYABORT; | 
|             } | 
|          | OPEN_SYM TABLES opt_db wild_and_where | 
| @@ -10170,22 +10133,22 @@ | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_OPEN_TABLES; | 
|              lex->select_lex.db= $3; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_OPEN_TABLES)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_OPEN_TABLES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | opt_full PLUGIN_SYM | 
|            { | 
|              LEX *lex= Lex; | 
| -            WARN_DEPRECATED(yythd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'"); | 
| +            WARN_DEPRECATED(thd, "6.0", "SHOW PLUGIN", "'SHOW PLUGINS'"); | 
|              lex->sql_command= SQLCOM_SHOW_PLUGINS; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | PLUGINS_SYM | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_PLUGINS; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_PLUGINS)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_PLUGINS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | ENGINE_SYM known_storage_engines show_engine_param | 
| @@ -10198,7 +10161,7 @@ | 
|              lex->sql_command= SQLCOM_SHOW_FIELDS; | 
|              if ($5) | 
|                $4->change_db($5); | 
| -            if (prepare_schema_table(YYTHD, lex, $4, SCH_COLUMNS)) | 
| +            if (prepare_schema_table(thd, lex, $4, SCH_COLUMNS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | NEW_SYM MASTER_SYM FOR_SYM SLAVE | 
| @@ -10233,7 +10196,7 @@ | 
|              lex->sql_command= SQLCOM_SHOW_KEYS; | 
|              if ($4) | 
|                $3->change_db($4); | 
| -            if (prepare_schema_table(YYTHD, lex, $3, SCH_STATISTICS)) | 
| +            if (prepare_schema_table(thd, lex, $3, SCH_STATISTICS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COLUMN_SYM TYPES_SYM | 
| @@ -10245,15 +10208,15 @@ | 
|            { | 
|              LEX *lex=Lex; | 
|              lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; | 
| -            WARN_DEPRECATED(yythd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'"); | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) | 
| +            WARN_DEPRECATED(thd, "6.0", "SHOW TABLE TYPES", "'SHOW [STORAGE] ENGINES'"); | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | opt_storage ENGINES_SYM | 
|            { | 
|              LEX *lex=Lex; | 
|              lex->sql_command= SQLCOM_SHOW_STORAGE_ENGINES; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_ENGINES)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_ENGINES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | AUTHORS_SYM | 
| @@ -10285,7 +10248,7 @@ | 
|            {  | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_PROFILE; | 
| -            if (prepare_schema_table(YYTHD, lex, NULL, SCH_PROFILES) != 0) | 
| +            if (prepare_schema_table(thd, lex, NULL, SCH_PROFILES) != 0) | 
|                YYABORT; | 
|            } | 
|          | opt_var_type STATUS_SYM wild_and_where | 
| @@ -10293,7 +10256,7 @@ | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_STATUS; | 
|              lex->option_type= $1; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_STATUS)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_STATUS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | INNOBASE_SYM STATUS_SYM | 
| @@ -10301,24 +10264,24 @@ | 
|              LEX *lex= Lex; | 
|              lex->sql_command = SQLCOM_SHOW_ENGINE_STATUS; | 
|              if (!(lex->create_info.db_type= | 
| -                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB))) | 
| +                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB))) | 
|              { | 
|                my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB"); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            WARN_DEPRECATED(yythd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'"); | 
| +            WARN_DEPRECATED(thd, "6.0", "SHOW INNODB STATUS", "'SHOW ENGINE INNODB STATUS'"); | 
|            } | 
|          | MUTEX_SYM STATUS_SYM | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command = SQLCOM_SHOW_ENGINE_MUTEX; | 
|              if (!(lex->create_info.db_type= | 
| -                  ha_resolve_by_legacy_type(YYTHD, DB_TYPE_INNODB))) | 
| +                  ha_resolve_by_legacy_type(thd, DB_TYPE_INNODB))) | 
|              { | 
|                my_error(ER_UNKNOWN_STORAGE_ENGINE, MYF(0), "InnoDB"); | 
|                MYSQL_YYABORT; | 
|              } | 
| -            WARN_DEPRECATED(yythd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'"); | 
| +            WARN_DEPRECATED(thd, "6.0", "SHOW MUTEX STATUS", "'SHOW ENGINE INNODB MUTEX'"); | 
|            } | 
|          | opt_full PROCESSLIST_SYM | 
|            { Lex->sql_command= SQLCOM_SHOW_PROCESSLIST;} | 
| @@ -10327,21 +10290,21 @@ | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_VARIABLES; | 
|              lex->option_type= $1; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_VARIABLES)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_VARIABLES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | charset wild_and_where | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_CHARSETS; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_CHARSETS)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_CHARSETS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | COLLATION_SYM wild_and_where | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_COLLATIONS; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_COLLATIONS)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_COLLATIONS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | GRANTS | 
| @@ -10371,7 +10334,7 @@ | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command = SQLCOM_SHOW_CREATE; | 
| -            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL,0)) | 
| +            if (!lex->select_lex.add_table_to_list(thd, $3, NULL,0)) | 
|                MYSQL_YYABORT; | 
|              lex->only_view= 0; | 
|              lex->create_info.storage_media= HA_SM_DEFAULT; | 
| @@ -10380,7 +10343,7 @@ | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command = SQLCOM_SHOW_CREATE; | 
| -            if (!lex->select_lex.add_table_to_list(YYTHD, $3, NULL, 0)) | 
| +            if (!lex->select_lex.add_table_to_list(thd, $3, NULL, 0)) | 
|                MYSQL_YYABORT; | 
|              lex->only_view= 1; | 
|            } | 
| @@ -10416,14 +10379,14 @@ | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_STATUS_PROC; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | FUNCTION_SYM STATUS_SYM wild_and_where | 
|            { | 
|              LEX *lex= Lex; | 
|              lex->sql_command= SQLCOM_SHOW_STATUS_FUNC; | 
| -            if (prepare_schema_table(YYTHD, lex, 0, SCH_PROCEDURES)) | 
| +            if (prepare_schema_table(thd, lex, 0, SCH_PROCEDURES)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | PROCEDURE CODE_SYM sp_name | 
| @@ -10501,7 +10464,7 @@ | 
|            /* empty */ | 
|          | LIKE TEXT_STRING_sys | 
|            { | 
| -            Lex->wild= new (YYTHD->mem_root) String($2.str, $2.length, | 
| +            Lex->wild= new (thd->mem_root) String($2.str, $2.length, | 
|                                                      system_charset_info); | 
|              if (Lex->wild == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -10525,7 +10488,7 @@ | 
|              lex->sql_command= SQLCOM_SHOW_FIELDS; | 
|              lex->select_lex.db= 0; | 
|              lex->verbose= 0; | 
| -            if (prepare_schema_table(YYTHD, lex, $2, SCH_COLUMNS)) | 
| +            if (prepare_schema_table(thd, lex, $2, SCH_COLUMNS)) | 
|                MYSQL_YYABORT; | 
|            } | 
|            opt_describe_column {} | 
| @@ -10554,7 +10517,7 @@ | 
|          | text_string { Lex->wild= $1; } | 
|          | ident | 
|            { | 
| -            Lex->wild= new (YYTHD->mem_root) String((const char*) $1.str, | 
| +            Lex->wild= new (thd->mem_root) String((const char*) $1.str, | 
|                                                      $1.length, | 
|                                                      system_charset_info); | 
|              if (Lex->wild == NULL) | 
| @@ -10697,7 +10660,6 @@ | 
|  load: | 
|            LOAD DATA_SYM | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|   | 
|              if (lex->sphead) | 
| @@ -10711,7 +10673,7 @@ | 
|          | LOAD TABLE_SYM table_ident FROM MASTER_SYM | 
|            { | 
|              LEX *lex=Lex; | 
| -            WARN_DEPRECATED(yythd, "6.0", "LOAD TABLE FROM MASTER", | 
| +            WARN_DEPRECATED(thd, "6.0", "LOAD TABLE FROM MASTER", | 
|                              "MySQL Administrator (mysqldump, mysql)"); | 
|              if (lex->sphead) | 
|              { | 
| @@ -10719,7 +10681,7 @@ | 
|                MYSQL_YYABORT; | 
|              } | 
|              lex->sql_command = SQLCOM_LOAD_MASTER_TABLE; | 
| -            if (!Select->add_table_to_list(YYTHD, $3, NULL, TL_OPTION_UPDATING)) | 
| +            if (!Select->add_table_to_list(thd, $3, NULL, TL_OPTION_UPDATING)) | 
|                MYSQL_YYABORT; | 
|            } | 
|          ; | 
| @@ -10739,7 +10701,7 @@ | 
|            opt_duplicate INTO TABLE_SYM table_ident | 
|            { | 
|              LEX *lex=Lex; | 
| -            if (!Select->add_table_to_list(YYTHD, $9, NULL, TL_OPTION_UPDATING, | 
| +            if (!Select->add_table_to_list(thd, $9, NULL, TL_OPTION_UPDATING, | 
|                                             lex->lock_option)) | 
|                MYSQL_YYABORT; | 
|              lex->field_list.empty(); | 
| @@ -10754,7 +10716,7 @@ | 
|          | FROM MASTER_SYM | 
|            { | 
|              Lex->sql_command = SQLCOM_LOAD_MASTER_DATA; | 
| -            WARN_DEPRECATED(yythd, "6.0", "LOAD DATA FROM MASTER", | 
| +            WARN_DEPRECATED(thd, "6.0", "LOAD DATA FROM MASTER", | 
|                              "mysqldump or future " | 
|                              "BACKUP/RESTORE DATABASE facility"); | 
|            } | 
| @@ -10872,7 +10834,7 @@ | 
|            simple_ident_nospvar {$$= $1;} | 
|          | '@' ident_or_text | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_user_var_as_out_param($2); | 
| +            $$= new (thd->mem_root) Item_user_var_as_out_param($2); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -10889,7 +10851,6 @@ | 
|            TEXT_STRING | 
|            { | 
|              LEX_STRING tmp; | 
| -            THD *thd= YYTHD; | 
|              CHARSET_INFO *cs_con= thd->variables.collation_connection; | 
|              CHARSET_INFO *cs_cli= thd->variables.character_set_client; | 
|              uint repertoire= thd->lex->text_string_is_7bit && | 
| @@ -10915,7 +10876,7 @@ | 
|              uint repertoire= Lex->text_string_is_7bit ? | 
|                               MY_REPERTOIRE_ASCII : MY_REPERTOIRE_UNICODE30; | 
|              DBUG_ASSERT(my_charset_is_ascii_based(national_charset_info)); | 
| -            $$= new (YYTHD->mem_root) Item_string($1.str, $1.length, | 
| +            $$= new (thd->mem_root) Item_string($1.str, $1.length, | 
|                                                    national_charset_info, | 
|                                                    DERIVATION_COERCIBLE, | 
|                                                    repertoire); | 
| @@ -10924,7 +10885,7 @@ | 
|            } | 
|          | UNDERSCORE_CHARSET TEXT_STRING | 
|            { | 
| -            Item_string *str= new (YYTHD->mem_root) Item_string($2.str, | 
| +            Item_string *str= new (thd->mem_root) Item_string($2.str, | 
|                                                                  $2.length, $1); | 
|              if (str == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -10943,7 +10904,7 @@ | 
|                   If the string has been pure ASCII so far, | 
|                   check the new part. | 
|                */ | 
| -              CHARSET_INFO *cs= YYTHD->variables.collation_connection; | 
| +              CHARSET_INFO *cs= thd->variables.collation_connection; | 
|                item->collation.repertoire|= my_string_repertoire(cs, | 
|                                                                  $2.str, | 
|                                                                  $2.length); | 
| @@ -10954,15 +10915,15 @@ | 
|  text_string: | 
|            TEXT_STRING_literal | 
|            { | 
| -            $$= new (YYTHD->mem_root) String($1.str, | 
| +            $$= new (thd->mem_root) String($1.str, | 
|                                               $1.length, | 
| -                                             YYTHD->variables.collation_connection); | 
| +                                             thd->variables.collation_connection); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | HEX_NUM | 
|            { | 
| -            Item *tmp= new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); | 
| +            Item *tmp= new (thd->mem_root) Item_hex_string($1.str, $1.length); | 
|              if (tmp == NULL) | 
|                MYSQL_YYABORT; | 
|              /* | 
| @@ -10974,7 +10935,7 @@ | 
|            } | 
|          | BIN_NUM | 
|            { | 
| -            Item *tmp= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); | 
| +            Item *tmp= new (thd->mem_root) Item_bin_string($1.str, $1.length); | 
|              if (tmp == NULL) | 
|                MYSQL_YYABORT; | 
|              /* | 
| @@ -10989,7 +10950,6 @@ | 
|  param_marker: | 
|            PARAM_MARKER | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|              Item_param *item; | 
| @@ -11022,38 +10982,38 @@ | 
|          | NUM_literal { $$ = $1; } | 
|          | NULL_SYM | 
|            { | 
| -            $$ = new (YYTHD->mem_root) Item_null(); | 
| +            $$ = new (thd->mem_root) Item_null(); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|              YYLIP->next_state= MY_LEX_OPERATOR_OR_IDENT; | 
|            } | 
|          | FALSE_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_int((char*) "FALSE",0,1); | 
| +            $$= new (thd->mem_root) Item_int((char*) "FALSE",0,1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | TRUE_SYM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_int((char*) "TRUE",1,1); | 
| +            $$= new (thd->mem_root) Item_int((char*) "TRUE",1,1); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | HEX_NUM | 
|            { | 
| -            $$ = new (YYTHD->mem_root) Item_hex_string($1.str, $1.length); | 
| +            $$ = new (thd->mem_root) Item_hex_string($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | BIN_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_bin_string($1.str, $1.length); | 
| +            $$= new (thd->mem_root) Item_bin_string($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | UNDERSCORE_CHARSET HEX_NUM | 
|            { | 
| -            Item *tmp= new (YYTHD->mem_root) Item_hex_string($2.str, $2.length); | 
| +            Item *tmp= new (thd->mem_root) Item_hex_string($2.str, $2.length); | 
|              if (tmp == NULL) | 
|                MYSQL_YYABORT; | 
|              /* | 
| @@ -11064,7 +11024,7 @@ | 
|              String *str= tmp->val_str((String*) 0); | 
|   | 
|              Item_string *item_str; | 
| -            item_str= new (YYTHD->mem_root) | 
| +            item_str= new (thd->mem_root) | 
|                          Item_string(NULL, /* name will be set in select_item */ | 
|                                      str ? str->ptr() : "", | 
|                                      str ? str->length() : 0, | 
| @@ -11082,7 +11042,7 @@ | 
|            } | 
|          | UNDERSCORE_CHARSET BIN_NUM | 
|            { | 
| -            Item *tmp= new (YYTHD->mem_root) Item_bin_string($2.str, $2.length); | 
| +            Item *tmp= new (thd->mem_root) Item_bin_string($2.str, $2.length); | 
|              if (tmp == NULL) | 
|                MYSQL_YYABORT; | 
|              /* | 
| @@ -11093,7 +11053,7 @@ | 
|              String *str= tmp->val_str((String*) 0); | 
|   | 
|              Item_string *item_str; | 
| -            item_str= new (YYTHD->mem_root) | 
| +            item_str= new (thd->mem_root) | 
|                          Item_string(NULL, /* name will be set in select_item */ | 
|                                      str ? str->ptr() : "", | 
|                                      str ? str->length() : 0, | 
| @@ -11117,7 +11077,7 @@ | 
|            NUM | 
|            { | 
|              int error; | 
| -            $$= new (YYTHD->mem_root) | 
| +            $$= new (thd->mem_root) | 
|                    Item_int($1.str, | 
|                             (longlong) my_strtoll10($1.str, NULL, &error), | 
|                             $1.length); | 
| @@ -11127,7 +11087,7 @@ | 
|          | LONG_NUM | 
|            { | 
|              int error; | 
| -            $$= new (YYTHD->mem_root) | 
| +            $$= new (thd->mem_root) | 
|                    Item_int($1.str, | 
|                             (longlong) my_strtoll10($1.str, NULL, &error), | 
|                             $1.length); | 
| @@ -11136,23 +11096,23 @@ | 
|            } | 
|          | ULONGLONG_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_uint($1.str, $1.length); | 
| +            $$= new (thd->mem_root) Item_uint($1.str, $1.length); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | DECIMAL_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_decimal($1.str, $1.length, | 
| -                                                   YYTHD->charset()); | 
| -            if (($$ == NULL) || (YYTHD->is_error())) | 
| +            $$= new (thd->mem_root) Item_decimal($1.str, $1.length, | 
| +                                                   thd->charset()); | 
| +            if (($$ == NULL) || (thd->is_error())) | 
|              { | 
|                MYSQL_YYABORT; | 
|              } | 
|            } | 
|          | FLOAT_NUM | 
|            { | 
| -            $$= new (YYTHD->mem_root) Item_float($1.str, $1.length); | 
| -            if (($$ == NULL) || (YYTHD->is_error())) | 
| +            $$= new (thd->mem_root) Item_float($1.str, $1.length); | 
| +            if (($$ == NULL) || (thd->is_error())) | 
|              { | 
|                MYSQL_YYABORT; | 
|              } | 
| @@ -11172,7 +11132,7 @@ | 
|            ident '.' '*' | 
|            { | 
|              SELECT_LEX *sel= Select; | 
| -            $$= new (YYTHD->mem_root) Item_field(Lex->current_context(), | 
| +            $$= new (thd->mem_root) Item_field(Lex->current_context(), | 
|                                                   NullS, $1.str, "*"); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -11180,7 +11140,6 @@ | 
|            } | 
|          | ident '.' ident '.' '*' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              SELECT_LEX *sel= Select; | 
|              const char* schema= thd->client_capabilities & CLIENT_NO_SCHEMA ? | 
|                                    NullS : $1.str; | 
| @@ -11200,7 +11159,6 @@ | 
|  simple_ident: | 
|            ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|              sp_variable_t *spv; | 
| @@ -11251,7 +11209,6 @@ | 
|  simple_ident_nospvar: | 
|            ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              SELECT_LEX *sel=Select; | 
|              if ((sel->parsing_place != IN_HAVING) || | 
|                  (sel->get_in_sum_expr() > 0)) | 
| @@ -11273,7 +11230,6 @@ | 
|  simple_ident_q: | 
|            ident '.' ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|   | 
|              /* | 
| @@ -11352,7 +11308,6 @@ | 
|            } | 
|          | '.' ident '.' ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              SELECT_LEX *sel= lex->current_select; | 
|              if (sel->no_table_names_allowed) | 
| @@ -11377,7 +11332,6 @@ | 
|            } | 
|          | ident '.' ident '.' ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              SELECT_LEX *sel= lex->current_select; | 
|              const char* schema= (thd->client_capabilities & CLIENT_NO_SCHEMA ? | 
| @@ -11445,7 +11399,7 @@ | 
|            } | 
|          | ident '.' ident | 
|            { | 
| -            $$= new Table_ident(YYTHD, $1,$3,0); | 
| +            $$= new Table_ident(thd, $1,$3,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -11467,7 +11421,7 @@ | 
|            } | 
|          | ident '.' ident opt_wild | 
|            { | 
| -            $$= new Table_ident(YYTHD, $1,$3,0); | 
| +            $$= new Table_ident(thd, $1,$3,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -11477,7 +11431,7 @@ | 
|            ident | 
|            { | 
|              LEX_STRING db={(char*) any_db,3}; | 
| -            $$= new Table_ident(YYTHD, db,$1,0); | 
| +            $$= new Table_ident(thd, db,$1,0); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -11487,8 +11441,7 @@ | 
|            IDENT { $$= $1; } | 
|          | IDENT_QUOTED | 
|            { | 
| -            THD *thd= YYTHD; | 
| - | 
| +             | 
|              if (thd->charset_is_system_charset) | 
|              { | 
|                CHARSET_INFO *cs= system_charset_info; | 
| @@ -11516,8 +11469,6 @@ | 
|  TEXT_STRING_sys: | 
|            TEXT_STRING | 
|            { | 
| -            THD *thd= YYTHD; | 
| - | 
|              if (thd->charset_is_system_charset) | 
|                $$= $1; | 
|              else | 
| @@ -11532,8 +11483,6 @@ | 
|  TEXT_STRING_literal: | 
|            TEXT_STRING | 
|            { | 
| -            THD *thd= YYTHD; | 
| - | 
|              if (thd->charset_is_collation_connection) | 
|                $$= $1; | 
|              else | 
| @@ -11548,8 +11497,6 @@ | 
|  TEXT_STRING_filesystem: | 
|            TEXT_STRING | 
|            { | 
| -            THD *thd= YYTHD; | 
| - | 
|              if (thd->charset_is_character_set_filesystem) | 
|                $$= $1; | 
|              else | 
| @@ -11566,7 +11513,6 @@ | 
|            IDENT_sys    { $$=$1; } | 
|          | keyword | 
|            { | 
| -            THD *thd= YYTHD; | 
|              $$.str= thd->strmake($1.str, $1.length); | 
|              if ($$.str == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -11578,7 +11524,6 @@ | 
|            IDENT_sys    { $$=$1; } | 
|          | keyword_sp | 
|            { | 
| -            THD *thd= YYTHD; | 
|              $$.str= thd->strmake($1.str, $1.length); | 
|              if ($$.str == NULL) | 
|                MYSQL_YYABORT; | 
| @@ -11595,7 +11540,6 @@ | 
|  user: | 
|            ident_or_text | 
|            { | 
| -            THD *thd= YYTHD; | 
|              if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) | 
|                MYSQL_YYABORT; | 
|              $$->user = $1; | 
| @@ -11609,7 +11553,6 @@ | 
|            } | 
|          | ident_or_text '@' ident_or_text | 
|            { | 
| -            THD *thd= YYTHD; | 
|              if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) | 
|                MYSQL_YYABORT; | 
|              $$->user = $1; $$->host=$3; | 
| @@ -11628,7 +11571,7 @@ | 
|            } | 
|          | CURRENT_USER optional_braces | 
|            { | 
| -            if (!($$=(LEX_USER*) YYTHD->alloc(sizeof(st_lex_user)))) | 
| +            if (!($$=(LEX_USER*) thd->alloc(sizeof(st_lex_user)))) | 
|                MYSQL_YYABORT; | 
|              /*  | 
|                empty LEX_USER means current_user and  | 
| @@ -11991,7 +11934,6 @@ | 
|   | 
|  option_type_value: | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|   | 
| @@ -12022,7 +11964,6 @@ | 
|            } | 
|            ext_option_value | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|   | 
| @@ -12105,7 +12046,6 @@ | 
|  sys_option_value: | 
|            option_type internal_variable_name equal set_expr_or_default | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= Lex; | 
|              LEX_STRING *name= &$2.base_name; | 
|   | 
| @@ -12117,7 +12057,7 @@ | 
|                  my_parse_error(ER(ER_SYNTAX_ERROR)); | 
|                  MYSQL_YYABORT; | 
|                } | 
| -              if (set_trigger_new_row(YYTHD, name, $4)) | 
| +              if (set_trigger_new_row(thd, name, $4)) | 
|                  MYSQL_YYABORT; | 
|              } | 
|              else if ($2.var) | 
| @@ -12147,7 +12087,6 @@ | 
|            } | 
|          | option_type TRANSACTION_SYM ISOLATION LEVEL_SYM isolation_types | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex=Lex; | 
|              lex->option_type= $1; | 
|              Item *item= new (thd->mem_root) Item_int((int32) $5); | 
| @@ -12167,7 +12106,7 @@ | 
|            '@' ident_or_text equal expr | 
|            { | 
|              Item_func_set_user_var *item; | 
| -            item= new (YYTHD->mem_root) Item_func_set_user_var($2, $4); | 
| +            item= new (thd->mem_root) Item_func_set_user_var($2, $4); | 
|              if (item == NULL) | 
|                MYSQL_YYABORT; | 
|              set_var_user *var= new set_var_user(item); | 
| @@ -12177,7 +12116,6 @@ | 
|            } | 
|          | '@' '@' opt_var_ident_type internal_variable_name equal set_expr_or_default | 
|            { | 
| -            THD *thd= YYTHD; | 
|              struct sys_var_with_base tmp= $4; | 
|              /* Lookup if necessary: must be a system variable. */ | 
|              if (tmp.var == NULL) | 
| @@ -12190,7 +12128,6 @@ | 
|            } | 
|          | charset old_or_new_charset_name_or_default | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              CHARSET_INFO *cs2; | 
|              cs2= $2 ? $2: global_system_variables.character_set_client; | 
| @@ -12238,7 +12175,6 @@ | 
|            } | 
|          | PASSWORD equal text_or_password | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              LEX_USER *user; | 
|              sp_pcontext *spc= lex->spcont; | 
| @@ -12278,7 +12214,6 @@ | 
|  internal_variable_name: | 
|            ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              sp_pcontext *spc= thd->lex->spcont; | 
|              sp_variable_t *spv; | 
|   | 
| @@ -12337,7 +12272,7 @@ | 
|              } | 
|              else | 
|              { | 
| -              sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length); | 
| +              sys_var *tmp=find_sys_var(thd, $3.str, $3.length); | 
|                if (!tmp) | 
|                  MYSQL_YYABORT; | 
|                if (!tmp->is_struct()) | 
| @@ -12348,7 +12283,7 @@ | 
|            } | 
|          | DEFAULT '.' ident | 
|            { | 
| -            sys_var *tmp=find_sys_var(YYTHD, $3.str, $3.length); | 
| +            sys_var *tmp=find_sys_var(thd, $3.str, $3.length); | 
|              if (!tmp) | 
|                MYSQL_YYABORT; | 
|              if (!tmp->is_struct()) | 
| @@ -12370,16 +12305,16 @@ | 
|            TEXT_STRING { $$=$1.str;} | 
|          | PASSWORD '(' TEXT_STRING ')' | 
|            { | 
| -            $$= $3.length ? YYTHD->variables.old_passwords ? | 
| -              Item_func_old_password::alloc(YYTHD, $3.str, $3.length) : | 
| -              Item_func_password::alloc(YYTHD, $3.str, $3.length) : | 
| +            $$= $3.length ? thd->variables.old_passwords ? | 
| +              Item_func_old_password::alloc(thd, $3.str, $3.length) : | 
| +              Item_func_password::alloc(thd, $3.str, $3.length) : | 
|                $3.str; | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | OLD_PASSWORD '(' TEXT_STRING ')' | 
|            { | 
| -            $$= $3.length ? Item_func_old_password::alloc(YYTHD, $3.str, | 
| +            $$= $3.length ? Item_func_old_password::alloc(thd, $3.str, | 
|                                                            $3.length) : | 
|                $3.str; | 
|              if ($$ == NULL) | 
| @@ -12393,19 +12328,19 @@ | 
|          | DEFAULT { $$=0; } | 
|          | ON | 
|            { | 
| -            $$=new (YYTHD->mem_root) Item_string("ON",  2, system_charset_info); | 
| +            $$=new (thd->mem_root) Item_string("ON",  2, system_charset_info); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | ALL | 
|            { | 
| -            $$=new (YYTHD->mem_root) Item_string("ALL", 3, system_charset_info); | 
| +            $$=new (thd->mem_root) Item_string("ALL", 3, system_charset_info); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
|          | BINARY | 
|            { | 
| -            $$=new (YYTHD->mem_root) Item_string("binary", 6, system_charset_info); | 
| +            $$=new (thd->mem_root) Item_string("binary", 6, system_charset_info); | 
|              if ($$ == NULL) | 
|                MYSQL_YYABORT; | 
|            } | 
| @@ -12443,7 +12378,7 @@ | 
|            table_ident opt_table_alias lock_option | 
|            { | 
|              thr_lock_type lock_type= (thr_lock_type) $3; | 
| -            if (!Select->add_table_to_list(YYTHD, $1, $2, 0, lock_type)) | 
| +            if (!Select->add_table_to_list(thd, $1, $2, 0, lock_type)) | 
|                MYSQL_YYABORT; | 
|              /* If table is to be write locked, protect from a impending GRL. */ | 
|              if (lock_type >= TL_WRITE_ALLOW_WRITE) | 
| @@ -12514,7 +12449,7 @@ | 
|              lex->expr_allows_subselect= FALSE; | 
|              lex->sql_command = SQLCOM_HA_READ; | 
|              lex->ha_rkey_mode= HA_READ_KEY_EXACT; /* Avoid purify warnings */ | 
| -            Item *one= new (YYTHD->mem_root) Item_int((int32) 1); | 
| +            Item *one= new (thd->mem_root) Item_int((int32) 1); | 
|              if (one == NULL) | 
|                MYSQL_YYABORT; | 
|              lex->current_select->select_limit= one; | 
| @@ -12836,10 +12771,10 @@ | 
|              $$=$1; $1->password=$4; | 
|              if ($4.length) | 
|              { | 
| -              if (YYTHD->variables.old_passwords) | 
| +              if (thd->variables.old_passwords) | 
|                { | 
|                  char *buff=  | 
| -                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); | 
| +                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH_323+1); | 
|                  if (buff == NULL) | 
|                    MYSQL_YYABORT; | 
|                  my_make_scrambled_password_323(buff, $4.str, $4.length); | 
| @@ -12849,7 +12784,7 @@ | 
|                else | 
|                { | 
|                  char *buff=  | 
| -                  (char *) YYTHD->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); | 
| +                  (char *) thd->alloc(SCRAMBLED_PASSWORD_CHAR_LENGTH+1); | 
|                  if (buff == NULL) | 
|                    MYSQL_YYABORT; | 
|                  my_make_scrambled_password(buff, $4.str, $4.length); | 
| @@ -12881,7 +12816,7 @@ | 
|  column_list_id: | 
|            ident | 
|            { | 
| -            String *new_str = new (YYTHD->mem_root) String((const char*) $1.str,$1.length,system_charset_info); | 
| +            String *new_str = new (thd->mem_root) String((const char*) $1.str,$1.length,system_charset_info); | 
|              if (new_str == NULL) | 
|                MYSQL_YYABORT; | 
|              List_iterator <LEX_COLUMN> iter(Lex->columns); | 
| @@ -12981,14 +12916,14 @@ | 
|   | 
|  opt_chain: | 
|            /* empty */ | 
| -          { $$= (YYTHD->variables.completion_type == 1); } | 
| +          { $$= (thd->variables.completion_type == 1); } | 
|          | AND_SYM NO_SYM CHAIN_SYM { $$=0; } | 
|          | AND_SYM CHAIN_SYM        { $$=1; } | 
|          ; | 
|   | 
|  opt_release: | 
|            /* empty */ | 
| -          { $$= (YYTHD->variables.completion_type == 2); } | 
| +          { $$= (thd->variables.completion_type == 2); } | 
|          | RELEASE_SYM        { $$=1; } | 
|          | NO_SYM RELEASE_SYM { $$=0; } | 
|  ; | 
| @@ -13102,7 +13037,6 @@ | 
|   | 
|  union_order_or_limit: | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              DBUG_ASSERT(lex->current_select->linkage != GLOBAL_OPTIONS_TYPE); | 
|              SELECT_LEX *sel= lex->current_select; | 
| @@ -13118,7 +13052,6 @@ | 
|            } | 
|            order_or_limit | 
|            { | 
| -            THD *thd= YYTHD; | 
|              thd->lex->current_select->no_table_names_allowed= 0; | 
|              thd->where= ""; | 
|            } | 
| @@ -13255,14 +13188,14 @@ | 
|                from older master servers (i.e. to create non-suid trigger in this | 
|                case). | 
|              */ | 
| -            YYTHD->lex->definer= 0; | 
| +            thd->lex->definer= 0; | 
|            } | 
|          ; | 
|   | 
|  definer: | 
|            DEFINER_SYM EQ user | 
|            { | 
| -            YYTHD->lex->definer= get_current_user(YYTHD, $3); | 
| +            thd->lex->definer= get_current_user(thd, $3); | 
|            } | 
|          ; | 
|   | 
| @@ -13307,7 +13240,6 @@ | 
|  view_tail: | 
|            view_suid VIEW_SYM table_ident | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              lex->sql_command= SQLCOM_CREATE_VIEW; | 
|              /* first table in list is target VIEW name */ | 
| @@ -13347,7 +13279,6 @@ | 
|            } | 
|            view_select_aux view_check_option | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= Lex; | 
|              uint len= YYLIP->get_cpp_ptr() - lex->create_view_select.str; | 
|              void *create_view_select= thd->memdup(lex->create_view_select.str, len); | 
| @@ -13403,7 +13334,6 @@ | 
|            EACH_SYM | 
|            ROW_SYM | 
|            { /* $15 */ | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|              sp_head *sp; | 
| @@ -13437,8 +13367,8 @@ | 
|              sp_head *sp= lex->sphead; | 
|   | 
|              lex->sql_command= SQLCOM_CREATE_TRIGGER; | 
| -            sp->set_stmt_end(YYTHD); | 
| -            sp->restore_thd_mem_root(YYTHD); | 
| +            sp->set_stmt_end(thd); | 
| +            sp->restore_thd_mem_root(thd); | 
|   | 
|              if (sp->is_not_allowed_in_function("trigger")) | 
|                MYSQL_YYABORT; | 
| @@ -13448,7 +13378,7 @@ | 
|                sp_proc_stmt alternatives are not saving/restoring LEX, so | 
|                lex->query_tables can be wiped out. | 
|              */ | 
| -            if (!lex->select_lex.add_table_to_list(YYTHD, $9, | 
| +            if (!lex->select_lex.add_table_to_list(thd, $9, | 
|                                                     (LEX_STRING*) 0, | 
|                                                     TL_OPTION_UPDATING, | 
|                                                     TL_IGNORE)) | 
| @@ -13466,7 +13396,6 @@ | 
|            AGGREGATE_SYM remember_name FUNCTION_SYM ident | 
|            RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              if (is_native_function(thd, & $4)) | 
|              { | 
| @@ -13484,7 +13413,6 @@ | 
|          | remember_name FUNCTION_SYM ident | 
|            RETURNS_SYM udf_type SONAME_SYM TEXT_STRING_sys | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              if (is_native_function(thd, & $3)) | 
|              { | 
| @@ -13507,7 +13435,6 @@ | 
|            sp_name /* $3 */ | 
|            '(' /* $4 */ | 
|            { /* $5 */ | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|              sp_head *sp; | 
| @@ -13565,7 +13492,7 @@ | 
|                MYSQL_YYABORT; | 
|              } | 
|   | 
| -            if (sp->fill_field_definition(YYTHD, lex, | 
| +            if (sp->fill_field_definition(thd, lex, | 
|                                            (enum enum_field_types) $11, | 
|                                            &sp->m_return_field_def)) | 
|                MYSQL_YYABORT; | 
| @@ -13574,7 +13501,6 @@ | 
|            } | 
|            sp_c_chistics /* $13 */ | 
|            { /* $14 */ | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              Lex_input_stream *lip= YYLIP; | 
|   | 
| @@ -13583,7 +13509,6 @@ | 
|            } | 
|            sp_proc_stmt /* $15 */ | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|              sp_head *sp= lex->sphead; | 
|   | 
| @@ -13654,10 +13579,10 @@ | 
|              sp= new sp_head(); | 
|              if (sp == NULL) | 
|                MYSQL_YYABORT; | 
| -            sp->reset_thd_mem_root(YYTHD); | 
| +            sp->reset_thd_mem_root(thd); | 
|              sp->init(lex); | 
|              sp->m_type= TYPE_ENUM_PROCEDURE; | 
| -            sp->init_sp_name(YYTHD, $3); | 
| +            sp->init_sp_name(thd, $3); | 
|   | 
|              lex->sphead= sp; | 
|            } | 
| @@ -13672,7 +13597,6 @@ | 
|            sp_pdparam_list | 
|            ')' | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|   | 
|              lex->sphead->m_param_end= YYLIP->get_cpp_tok_start(); | 
| @@ -13680,7 +13604,6 @@ | 
|            } | 
|            sp_c_chistics | 
|            { | 
| -            THD *thd= YYTHD; | 
|              LEX *lex= thd->lex; | 
|   | 
|              lex->sphead->m_chistics= &lex->sp_chistics; | 
| @@ -13691,9 +13614,9 @@ | 
|              LEX *lex= Lex; | 
|              sp_head *sp= lex->sphead; | 
|   | 
| -            sp->set_stmt_end(YYTHD); | 
| +            sp->set_stmt_end(thd); | 
|              lex->sql_command= SQLCOM_CREATE_PROCEDURE; | 
| -            sp->restore_thd_mem_root(YYTHD); | 
| +            sp->restore_thd_mem_root(thd); | 
|            } | 
|          ; | 
|   | 
| @@ -13730,21 +13653,21 @@ | 
|            text_string | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE); | 
| -            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) | 
| +            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) | 
|                MYSQL_YYABORT; | 
|              Lex->xid->set(1L, $1->ptr(), $1->length(), 0, 0); | 
|            } | 
|            | text_string ',' text_string | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE); | 
| -            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) | 
| +            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) | 
|                MYSQL_YYABORT; | 
|              Lex->xid->set(1L, $1->ptr(), $1->length(), $3->ptr(), $3->length()); | 
|            } | 
|            | text_string ',' text_string ',' ulong_num | 
|            { | 
|              MYSQL_YYABORT_UNLESS($1->length() <= MAXGTRIDSIZE && $3->length() <= MAXBQUALSIZE); | 
| -            if (!(Lex->xid=(XID *)YYTHD->alloc(sizeof(XID)))) | 
| +            if (!(Lex->xid=(XID *)thd->alloc(sizeof(XID)))) | 
|                MYSQL_YYABORT; | 
|              Lex->xid->set($5, $1->ptr(), $1->length(), $3->ptr(), $3->length()); | 
|            } |