Commit 360a5e3c authored by unknown's avatar unknown
Browse files

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
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -414,6 +414,13 @@ bool mysql_ha_read(THD *thd, TABLE_LIST *tables,
  }
  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 &&
                cond->fix_fields(thd, &cond)) || cond->check_cols(1)))
    goto err0;
@@ -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,
                    tables->db, tables->alias, &it, 0))
    goto err0;
+3 −2
Original line number Diff line number Diff line
@@ -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;
      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;
      if (res)
      if (err_status)
      {
        sp_restore_security_context(thd, save_ctx);
        return TRUE;