1. 05 Oct, 2007 1 commit
  2. 04 Oct, 2007 3 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 923f23e5
      unknown authored
      into  moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
      
      923f23e5
    • unknown's avatar
      Bug#21587 FLUSH TABLES causes server crash when used with HANDLER statements · 9db14715
      unknown 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).
      
      
      sql/sql_handler.cc:
        Backup and reset the open_tables and handler_table lists when opening
        a new handler table and merge the opened table into the handler_tables
        list afterwards. When locking, do the same but possibly close the table
        if a refresh is pending.
      9db14715
    • unknown's avatar
      Fix for BUG#31035: select from function, group by result crasher. · c6c68c45
      unknown 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.
      
      
      mysql-test/r/sp.result:
        Update result file.
      mysql-test/t/sp.test:
        Add test cases for BUG-31035, BUG-31191, BUG-31226
      sql/item_func.cc:
        Make Item::const_item() be consistent with Item::used_tables().
      c6c68c45
  3. 03 Oct, 2007 1 commit
    • unknown's avatar
      Bug#30992 Wrong implementation of pthread_mutex_trylock() · 62db27de
      unknown authored
      It's not possible to use WaitForSingleObject to wait
      on a CRITICAL_SECTION, instead use the TryEnterCriticalSection function.
       - if "mutex" was already taken => return EBUSY
       - if "mutex" was aquired => return 0
      
      
      include/config-win.h:
        Make windows.h define TryEnterCriticalSection
      mysys/my_winthread.c:
        Use the TryEnterCriticalSection function to implement pthread_mutex_trylock
        Prevent recursive behaviour by looking at the RecursionCount variable
        in the CRITICAL_SECTION struct and return EBUSY from function if
        the mutex was already locked once.
      62db27de
  4. 01 Oct, 2007 2 commits
    • unknown's avatar
      Merge kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-rpl · 79e4f390
      unknown authored
      into  kindahl-laptop.dnsalias.net:/home/bk/b30992-mysql-5.0-runtime
      
      
      include/my_pthread.h:
        Auto merged
      79e4f390
    • unknown's avatar
      BUG#30992 (Wrong implementation of pthread_mutex_trylock()): · 87ecdf32
      unknown authored
      Adding support for correct handling of pthread_mutex_trylock() on Win32
      systems as well as when using the safe mutexes. 
      
      
      include/my_pthread.h:
        Adding win_pthread_mutex_trylock() function as wrapper function for
        Windows implementation of pthread_mutex_trylock().
        
        Adding flag to safe_mutex_lock() that is shall not abort if the mutex
        is already locked and instead return EBUSY since this is the POSIX
        behaviour.
      mysys/my_winthread.c:
        Added Win32 wrappper function to handle pthread_mutex_trylock().
      mysys/thr_mutex.c:
        Added parameter 'try_lock' to safe_mutex_lock() to allow it to do double-
        duty as a pthread_mutex_trylock() in addition to working as
        pthread_mutex_lock().
        
        The code needs to return EBUSY instead of throwing an error in the event
        that the mutex is re-locked (we do not have recursive mutexes), but it
        also requires some special handling to avoid race conditions when
        calling the real pthread_mutex_{lock,trylock}().
      87ecdf32
  5. 13 Sep, 2007 1 commit
    • unknown's avatar
      Bug#16918: Aborted_clients > Connections. · 9a81edf3
      unknown authored
      The problem was that aborted_threads variable was updated
      twice when a client connection had been aborted.
      
      The fix is to refactor a code to have aborted_threads updated
      only in one place.
      
      
      sql/mysql_priv.h:
        Make do_command() a private function.
      sql/sql_parse.cc:
        1. Make do_command() a private function;
        2. Update aborted_threads in the only one place.
      9a81edf3
  6. 04 Sep, 2007 2 commits
  7. 03 Sep, 2007 5 commits
  8. 30 Aug, 2007 5 commits
    • unknown's avatar
      Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-base · 49046ff0
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-runtime
      
      
      sql/item_cmpfunc.h:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      49046ff0
    • unknown's avatar
      Bug#28587 SELECT is blocked by INSERT waiting on read lock, even with low_priority_updates · bca7cdf5
      unknown authored
      The problem is that a SELECT on one thread is blocked by INSERT ... ON
      DUPLICATE KEY UPDATE on another thread even when low_priority_updates is
      activated.
      
      The solution is to possibly downgrade the lock type to the setting of
      low_priority_updates if the INSERT cannot be concurrent.
      
      
      sql/sql_insert.cc:
        Possibly downgrade lock type to the the setting of low_priority_updates if
        if the INSERT cannot be concurrent.
      bca7cdf5
    • unknown's avatar
      Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · 6d0145d2
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-28779-b
      
      6d0145d2
    • unknown's avatar
      Use double quotes instead of single ones which make the test fail on Windows.... · 9b845d82
      unknown authored
      Use double quotes instead of single ones which make the test fail on Windows. This is for bug #30164.
      
      
      mysql-test/t/mysql.test:
        Use double quotes instead of single ones which make the test fail on Windows.
      9b845d82
    • unknown's avatar
      Bug #30164: Using client side macro inside server side comments generates broken queries · 72f86a4a
      unknown authored
        
      Problem:
        
      In cases when a client-side macro appears inside a server-side comment, the add_line() function in mysql.cc discarded all characters until the next delimiter to remove macro arguments from the query string. This resulted in broken queries being sent to the server when the next delimiter character appeared past the comment's boundaries, because the comment closing sequence ('*/') was discarded.
        
      Fix:
        
      If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro (that is, until the end of the comment rather than the next delimiter).
      This is a minimal fix to allow only simple cases used by the mysqlbinlog utility. Limitations that are worth documenting:
        
      - Nested server-side and/or client-side comments are not supported by mysql.cc
      - Using client-side macros in multi-line server-side comments is not supported
      - All characters after a client-side macro in a server-side comment will be omitted from the query string (and thus, will not be sent to server).
      
      
      client/mysql.cc:
        If a client-side macro appears inside a server-side comment, discard all characters in the comment after the macro.
      mysql-test/r/mysql.result:
        Added a test case for bug #30164.
      mysql-test/t/mysql.test:
        Added a test case for bug #30164.
      72f86a4a
  9. 29 Aug, 2007 13 commits
  10. 28 Aug, 2007 7 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · fdb5f1c3
      unknown authored
      into  moksha.local:/Users/davi/mysql/push/mysql-5.0-runtime
      
      fdb5f1c3
    • unknown's avatar
      Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/b27694/50 · d394aaf4
      unknown authored
      into  ramayana.hindu.god:/home/tsmith/m/bk/maint/50
      
      d394aaf4
    • unknown's avatar
      Bug#30625 (Performance, reduce depth for expressions) · be8db2de
      unknown authored
      This is a performance bug, affecting in particular the bison generated code
      for the parser.
      
      Prior to this fix, the grammar used a long chain of reduces to parse an
      expression, like:
        bit_expr -> bit_term
        bit_term -> bit_factor
        bit_factor -> value_expr
        value_expr -> term
        term -> factor
      etc
      
      This chain of reduces cause the internal state automaton in the generated
      parser to execute more state transitions and more reduces, so that the
      generated MySQLParse() function would spend a lot of time looping to execute
      all the grammar reductions.
      
      With this patch, the grammar has been reorganized so that rules are more
      "flat", limiting the depth of reduces needed to parse <expr>.
      
      Tests have been written to enforce that relative priorities and properties
      of operators have not changed while changing the grammar.
      
      See the bug report for performance data.
      
      
      mysql-test/r/parser_precedence.result:
        Improved test coverage for operator precedence
      mysql-test/t/parser_precedence.test:
        Improved test coverage for operator precedence
      sql/sql_yacc.yy:
        Simplified the grammar to improve performances
      be8db2de
    • unknown's avatar
      Streamline "do_close_connection" and "do_send_quit" · 3e02808d
      unknown authored
      Fix typo, "next_con" -> "con"
      
      
      client/mysqltest.c:
        Reuse "find_connection_by_name" both from "do_close_connection" and "do_send_quit"
        Adjust alignment of comment
        Fix typo in "do_close_connection", it used the global variable "next_con" instead
        of local variable "con"
      3e02808d
    • unknown's avatar
      Remove unportable constructs in loaddata.test · 92f1cf38
      unknown authored
      92f1cf38
    • unknown's avatar
      Move "analyze_testcase_failure" to mysqltest(since it knows best when · c71a28d8
      unknown authored
      to perform this analyzis)
      
      
      client/mysqltest.c:
        Add function 'show_query' and use it to output some debug queries when
        "sync_with_master" has failed.
      mysql-test/mysql-test-run.pl:
        Move "analyze_testcase_failure" to mysqltest
      c71a28d8
    • unknown's avatar
      Merge pilot.(none):/data/msvensson/mysql/bug28812/my50-bug28812 · 22be5295
      unknown authored
      into  pilot.(none):/data/msvensson/mysql/mysql-5.0-maint
      
      22be5295