Commit 360a5e3c authored by unknown's avatar unknown

After merge fix and a safety fix for handler


sql/sql_handler.cc:
  Move lock tables before conditions as lock tables may reopen tables
sql/sql_trigger.cc:
  After merge fix
parent 29fde528
...@@ -414,6 +414,13 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, ...@@ -414,6 +414,13 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
} }
tables->table=table; tables->table=table;
HANDLER_TABLES_HACK(thd);
lock= mysql_lock_tables(thd, &tables->table, 1, 0, &not_used);
HANDLER_TABLES_HACK(thd);
if (!lock)
goto err0; // mysql_lock_tables() printed error message already
if (cond && ((!cond->fixed && if (cond && ((!cond->fixed &&
cond->fix_fields(thd, &cond)) || cond->check_cols(1))) cond->fix_fields(thd, &cond)) || cond->check_cols(1)))
goto err0; goto err0;
...@@ -427,13 +434,6 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables, ...@@ -427,13 +434,6 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
} }
} }
HANDLER_TABLES_HACK(thd);
lock= mysql_lock_tables(thd, &tables->table, 1, 0, &not_used);
HANDLER_TABLES_HACK(thd);
if (!lock)
goto err0; // mysql_lock_tables() printed error message already
if (insert_fields(thd, &thd->lex->select_lex.context, if (insert_fields(thd, &thd->lex->select_lex.context,
tables->db, tables->alias, &it, 0)) tables->db, tables->alias, &it, 0))
goto err0; goto err0;
......
...@@ -1189,9 +1189,10 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event, ...@@ -1189,9 +1189,10 @@ bool Table_triggers_list::process_triggers(THD *thd, trg_event_type event,
save_query_tables_own_last= thd->lex->query_tables_own_last; save_query_tables_own_last= thd->lex->query_tables_own_last;
thd->lex->query_tables_own_last= 0; thd->lex->query_tables_own_last= 0;
res= check_table_access(thd, SELECT_ACL | UPDATE_ACL, &table_list, 0); err_status= check_table_access(thd, SELECT_ACL | UPDATE_ACL,
&table_list, 0);
thd->lex->query_tables_own_last= save_query_tables_own_last; thd->lex->query_tables_own_last= save_query_tables_own_last;
if (res) if (err_status)
{ {
sp_restore_security_context(thd, save_ctx); sp_restore_security_context(thd, save_ctx);
return TRUE; return TRUE;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment