Commit graph

3 commits

Author SHA1 Message Date
unknown
c69e2fc7a8 Fix for bug #9486 "Can't perform multi-update in stored procedure".
New more SP-locking friendly approach to handling locks in multi-update.
Now we mark all tables of multi-update as needing write lock at parsing
stage and if possible downgrade lock at execution stage (For its work
SP-locking mechanism needs to know all lock types right after parsing
stage).


mysql-test/r/sp-threads.result:
  Added test for bug #9486 "Can't perform multi-update in stored procedure".
mysql-test/t/sp-threads.test:
  Added test for bug #9486 "Can't perform multi-update in stored procedure".
sql/sp_head.cc:
  SP_TABLE, sp_head::merge_table_list()/add_used_tables_to_table_list():
    Since some queries during their execution (e.g. multi-update)
    may change type of lock for some of their tables and thus change
    lock_type member for some of elements of table list, we should
    store type of lock in SP_TABLE struct explicitly instead of using
    lock_type member of TABLE_LIST object pointed by SP_TABLE::table.
sql/sql_lex.h:
  Removed no longer used LEX::multi_lock_option member.
sql/sql_prepare.cc:
  mysql_test_update():
    We don't need to bother about LEX::multi_lock_option if we convert
    multi-update to update anymore. Since nowdays multi-update uses 
    TABLE_LIST::lock_type for specifying lock level of updated tables
    instead of LEX::multi_lock_option.
sql/sql_update.cc:
  mysql_update()/mysql_multi_update_prepare():
   Now we mark all tables of multi-update as needing write lock at parsing
   stage and if possible downgrade lock at execution stage. Old approach
   (don't set lock type until execution stage) was not working well with
   SP-locking (For its work SP-locking mechanism needs to know all lock 
   types right after parsing stage).
  
  mysql_multi_update():
    We should return FALSE if no error occurs.
sql/sql_yacc.yy:
  update:
   Now we mark all tables of multi-update as needing write lock at parsing
   stage and if possible downgrade lock at execution stage. Old approach
   (don't set lock type until execution stage) was not working well with
   SP-locking (For its work SP-locking mechanism needs to know all lock 
   types right after parsing stage).
2005-04-15 20:31:47 +04:00
unknown
7e79e70515 Did some SP test style changes and added explanatory comments,
and removed a have_innodb.inc inclusion which was left by mistake
in an earlier change.


mysql-test/r/sp_trans.result:
  Changed procedure name and delimiter setting to follow the style of the other SP test files.
mysql-test/t/sp-error.test:
  Added comment with hint for bug test case style.
mysql-test/t/sp-threads.test:
  Added comments, with hint for bug test case style.
mysql-test/t/sp.test:
  Removed have_innodb.inc inclusion.
  Added comments about different SP test files, table usage and
  hint for bug test case style.
mysql-test/t/sp_trans.test:
  Changed procedure name and delimiter setting to follow the style of the other SP test files.
2005-03-18 14:33:46 +01:00
unknown
98f85188cc Fixed BUG#4934: Caching issue with stored procedures.
...and added new test file, sp-threads, for multiple connection tests
  (apart from the security tests that are in sp-security).


sql/sp.cc:
  When removing an SP, invalidate the caches even if the
  removing thread doesn't have one.
2004-08-06 18:11:14 +02:00