1. 25 Jun, 2007 2 commits
    • gkodinov/kgeorge@magare.gmz's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 7d14564d
      gkodinov/kgeorge@magare.gmz authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B29154-5.0-opt
      7d14564d
    • gkodinov/kgeorge@magare.gmz's avatar
      Bug #29154: LOCK TABLES is not atomic when >1 InnoDB tables are locked · f93607d2
      gkodinov/kgeorge@magare.gmz authored
        LOCK TABLES takes a list of tables to lock. It may lock several 
        tables successfully and then encounter a tables that it can't lock, 
        e.g. because it's locked. In such case it needs to undo the locks on
        the already locked tables. And it does that. But it has also notified
        the relevant table storage engine handlers that they should lock.
        The only reliable way to ensure that the table handlers will give up
        their locks is to end the transaction. This is what UNLOCK TABLE 
        does : it ends the transaction if there were locked tables by LOCK 
        tables.
        It is possible to end the transaction when the lock fails in 
        LOCK TABLES because LOCK TABLES ends the transaction at its start 
        already. 
        Fixed by ending (again) the transaction when LOCK TABLES fails to
        lock a table.
      f93607d2
  2. 24 Jun, 2007 3 commits
    • igor@olga.mysql.com's avatar
      Merge olga.mysql.com:/home/igor/mysql-5.0-opt · da416060
      igor@olga.mysql.com authored
      into  olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug25602
      da416060
    • gshchepa/uchum@gleb.loc's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0 · 684d0ced
      gshchepa/uchum@gleb.loc authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      684d0ced
    • igor@olga.mysql.com's avatar
      Fixed bug #25602. A query with DISTINCT in the select list to which · 59b9077c
      igor@olga.mysql.com authored
      the loose scan optimization for grouping queries was applied returned 
      a wrong result set when the query was used with the SQL_BIG_RESULT
      option.
      
      The SQL_BIG_RESULT option forces to use sorting algorithm for grouping
      queries instead of employing a suitable index. The current loose scan
      optimization is applied only for one table queries when the suitable
      index is covering. It does not make sense to use sort algorithm in this
      case. However the create_sort_index function does not take into account
      the possible choice of the loose scan to implement the DISTINCT operator
      which makes sorting unnecessary. Moreover the current implementation of
      the loose scan for queries with distinct assumes that sorting will
      never happen. Thus in this case create_sort_index should not call
      the function filesort.
      59b9077c
  3. 23 Jun, 2007 3 commits
  4. 22 Jun, 2007 6 commits
    • gkodinov/kgeorge@magare.gmz's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 6a6f7234
      gkodinov/kgeorge@magare.gmz authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B28400-5.0-opt
      6a6f7234
    • gkodinov/kgeorge@magare.gmz's avatar
      Bug #27383: Crash in test "mysql_client_test" · f45601ce
      gkodinov/kgeorge@magare.gmz authored
      The C optimizer may decide that data access operations
      through pointer of different type are not related to 
      the original data (strict aliasing).
      This is what happens in fetch_long_with_conversion(),
      when called as part of mysql_stmt_fetch() : it tries 
      to check for truncation errors by first storing float
      (and other types of data) into a char * buffer and then 
      accesses them through a float pointer.
      This is done to prevent the effects of excess precision
      when using FPU registers.
      However the doublestore() macro converts a double pointer
      to an union pointer. This violates the strict aliasing rule.
      Fixed by making the intermediary variables volatile (
      to not re-introduce the excess precision bug) and using
      the intermediary value instead of the char * buffer.
      Note that there can be loss of precision for both signed
      and unsigned 64 bit integers converted to double and back,
      so the check must stay there (even for compatibility 
      reasons).
      Based on the excellent analysis in bug 28400.
      f45601ce
    • tsmith@maint1.mysql.com's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-maint · 9f234274
      tsmith@maint1.mysql.com authored
      into  maint1.mysql.com:/data/localhome/tsmith/bk/maint/50
      9f234274
    • holyfoot/hf@hfmain.(none)'s avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 287f3485
      holyfoot/hf@hfmain.(none) authored
      into  mysql.com:/home/hf/work/28839/my50-28839
      287f3485
    • holyfoot/hf@mysql.com/hfmain.(none)'s avatar
      78c53ea3
    • dkatz@damien-katzs-computer.local's avatar
      Bug #29138 'kill' fails in pushbuild · a393b215
      dkatz@damien-katzs-computer.local authored
      The reason the "reap;" succeeds unexpectedly is because the query was completing(almost always) and the network buffer was big enough to store the query result (sometimes) on Windows, meaning the response was completely sent before the server thread could be killed.
      
      Therefore we use a much longer running query that doesn't have a chance to fully complete before the reap happens, testing the kill properly.
      a393b215
  5. 21 Jun, 2007 16 commits
  6. 20 Jun, 2007 10 commits