1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

Backport of:

revno: 2476.784.2
committer: davi@moksha.local
timestamp: Thu 2007-09-27 16:56:27 -0300 
message:
Bug#28870 check that table locks are released/reset
    
The problem is that some mysql_lock_tables error paths are not
resetting the tables lock type back to TL_UNLOCK. If the lock
types are not reset properly, a table might be returned to the
table cache with wrong lock_type.
      
The proposed fix is to ensure that the tables lock type is always
properly reset when mysql_lock_tables fails. This is a
incompatible change with respect to the process state information.


sql/lock.cc:
  Merge mysql_lock_tables cleanup sequence and the reset_lock_data
  function into a single function and take steps to ensure it is
  always called for each error exit path. Also remove references
  to the redundant THD::locked variable which was almost exclusively
  used by this function and the same information is already on proc_info.
sql/sql_class.cc:
  Remove references to the THD::locked variable.
sql/sql_class.h:
  Remove the THD::locked variable.
sql/sql_show.cc:
  Remove references to THD:locked, state_info will now default to proc_info.
This commit is contained in:
Konstantin Osipov
2009-11-20 22:15:50 +03:00
parent 830a772814
commit fcf6c1548e
4 changed files with 77 additions and 71 deletions

View File

@@ -483,7 +483,7 @@ THD::THD()
catalog= (char*)"std"; // the only catalog we have for now
main_security_ctx.init();
security_ctx= &main_security_ctx;
locked=some_tables_deleted=no_errors=password= 0;
some_tables_deleted=no_errors=password= 0;
query_start_used= 0;
count_cuted_fields= CHECK_FIELD_IGNORE;
killed= NOT_KILLED;