1. 04 Oct, 2007 3 commits
    • davi@moksha.local's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · a8f2ba0f
      davi@moksha.local authored
      into  moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
      a8f2ba0f
    • davi@moksha.local's avatar
      Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements · 305ebc1e
      davi@moksha.local authored
      This bug is a symptom of the way handler's tables are managed. The
      most different aspect, compared to the conventional behavior, is that
      the handler's tables are long lived, meaning that their lifetimes are
      not bounded by the duration of the command that opened them. For this
      effect the handler code uses its own list (handler_tables instead of
      open_tables) to hold open handler tables so that the tables won't be
      closed at the end of the command/statement. Besides the handler_tables
      list, there is a hash (handler_tables_hash) which is used to associate
      handler aliases to tables and to refresh the tables upon demand (flush
      tables).
      
      The current implementation doesn't work properly with refreshed tables
      -- more precisely when flush commands are issued by other initiators.
      This happens because when a handler open or read statement is being
      processed, the associated table has to be opened or locked and, for this
      matter, the open_tables and handler_tables lists are swapped so that the
      new table being opened is inserted into the handler_tables list. But when
      opening or locking the table, if the refresh version is different from the
      thread refresh version then all used tables in the open_tables list (now
      handler_tables) are refreshed. In the "refreshing" process the handler
      tables are flushed (closed) without being properly unlinked from the
      handler hash.
      
      The current implementation also fails to properly discard handlers of
      dropped tables, but this and other problems are going to be addressed
      in the fixes for bugs 31397 and 31409.
      
      The chosen approach tries to properly save and restore the table state
      so that no table is flushed during the table open and lock operations.
      The logic is almost the same as before with the list swapping, but with
      a working glue code.
      
      The test case for this bug is going to be committed into 5.1 because it
      requires a test feature only avaiable in 5.1 (wait_condition).
      305ebc1e
    • anozdrin/alik@station.'s avatar
      Fix for BUG#31035: select from function, group by result crasher. · 707f0674
      anozdrin/alik@station. authored
      This actually, fix for the patch for bug-27354. The problem with
      the patch was that Item_func_sp::used_tables() was updated, but
      Item_func_sp::const_item() was not. So, for Item_func_sp, we had
      the following inconsistency:
        - used_tables() returned RAND_TABLE, which means that the item
          can produce "random" results;
        - but const_item() returned TRUE, which means that the item is
          a constant one.
      
      The fix is to change Item_func_sp::const_item() behaviour: it must
      return TRUE (an item is a constant one) only if a stored function
      is deterministic and each of its arguments (if any) is a constant
      item.
      707f0674
  2. 01 Oct, 2007 2 commits
  3. 13 Sep, 2007 1 commit
  4. 04 Sep, 2007 2 commits
  5. 03 Sep, 2007 5 commits
  6. 30 Aug, 2007 5 commits
  7. 29 Aug, 2007 13 commits
  8. 28 Aug, 2007 9 commits