1. 12 Oct, 2007 2 commits
    • unknown's avatar
      Merge moksha.com.br:/Users/davi/mysql/bugs/post-rename-5.0 · 7eb5cdb9
      unknown authored
      into  moksha.com.br:/Users/davi/mysql/mysql-5.0-runtime
      
      7eb5cdb9
    • unknown's avatar
      Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements · bf4c0695
      unknown authored
      If mysql_lock_tables fails because the lock was aborted, we need to
      reset thd->some_tables_delete, otherwise we might loop indefinitely
      because handler's tables are not closed in a standard way, meaning
      that close_thread_tables() (which resets some_tables_deleted) is not
      used.
      
      This patch fixes sporadical failures of handler_myisam/innodb tests
      which were introduced by previous fix for this bug.
      
      
      sql/sql_handler.cc:
        Properly reset thd->some_tables_deleted if mysql_lock_tables
        fails for some reason.
      bf4c0695
  2. 10 Oct, 2007 1 commit
  3. 09 Oct, 2007 4 commits
    • unknown's avatar
      Merge virtua-cwbas201-21-158-74.ctb.virtua.com.br:/Users/davi/mysql/push/bugs/28318-5.0 · 9d99d59c
      unknown authored
      into  virtua-cwbas201-21-158-74.ctb.virtua.com.br:/Users/davi/mysql/push/mysql-5.0-runtime
      
      
      sql/sql_yacc.yy:
        Auto merged
      9d99d59c
    • unknown's avatar
      Bug#28318 CREATE FUNCTION (UDF) requires a schema · 720d5909
      unknown authored
      Bug#29816 Syntactically wrong query fails with misleading error message
      
      The core problem is that an SQL-invoked function name can be a <schema
      qualified routine name> that contains no <schema name>, but the mysql
      parser insists that all stored procedures (function, procedures and
      triggers) must have a <schema name>, which is not true for functions.
      This problem is especially visible when trying to create a function
      or when a query contains a syntax error after a function call (in the
      same query), both will fail with a "No database selected" message if
      the session is not attached to a particular schema, but the first
      one should succeed and the second fail with a "syntax error" message.
      
      Part of the fix is to revamp the sp name handling so that a schema
      name may be omitted for functions -- this means that the internal
      function name representation may not have a dot, which represents
      that the function doesn't have a schema name. The other part is
      to place schema checks after the type (function, trigger or procedure)
      of the routine is known.
      
      
      mysql-test/r/sp-error.result:
        Add test case result for Bug#29816
      mysql-test/r/udf.result:
        Add test case result for Bug#28318
      mysql-test/t/sp-error.test:
        Add test case for Bug#29816
      mysql-test/t/udf.test:
        Add test case for Bug#28318
      sql/sp.cc:
        Copy the (last) nul byte of the stored routine key and move name parsing
        code to the sp_name class constructor.
      sql/sp_head.cc:
        Revamp routine name parsing for when no schema is specified and
        omit dot from the qualified name if the routine is not associated
        with a scheme name.
      sql/sp_head.h:
        Name parsing got bigger, uninline by moving to a single unit -- the sp_head.cc
        file.
      sql/sql_yacc.yy:
        Only copy the schema name if one is actually set and check for schema
        name presence only where it's necessary.
      720d5909
    • unknown's avatar
      Merge moksha.com.br:/Users/davi/mysql/push/mysql-5.0-runtime · be03ccb8
      unknown authored
      into  moksha.com.br:/Users/davi/mysql/push/bugs/31409-5.0
      
      be03ccb8
    • unknown's avatar
      Bug#31409 RENAME TABLE causes server crash or deadlock when used with HANDLER statements · dc83df33
      unknown authored
      This deadlock occurs when a client issues a HANDLER ... OPEN statement
      that tries to open a table that has a pending name-lock on it by another
      client that also needs a name-lock on some other table which is already
      open and associated to a HANDLER instance owned by the first client.
      The deadlock happens because the open_table() function will back-off
      and wait until the name-lock goes away, causing a circular wait if some
      other name-lock is also pending for one of the open HANDLER tables.
      
      Such situation, for example, can be easily repeated by issuing a RENAME
      TABLE command in such a way that the existing table is already open
      as a HANDLER table by another client and this client tries to open
      a HANDLER to the new table name.
      
      The solution is to allow handler tables with older versions (marked for
      flush) to be closed before waiting for the name-lock completion. This is
      safe because no other name-lock can be issued between the flush and the
      check for pending name-locks.
      
      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_base.cc:
        Improve comments in the open_table() function, stating the importance
        of the handler tables flushing for the back-off process.
      sql/sql_handler.cc:
        Allows handler tables flushes when opening new tables in order to avoid
        potential deadlocks. Add comments explaining the importance of the flush.
      dc83df33
  4. 08 Oct, 2007 2 commits
  5. 07 Oct, 2007 1 commit
  6. 05 Oct, 2007 1 commit
  7. 04 Oct, 2007 6 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
      Merge trift2.:/MySQL/M50/mysql-5.0 · 711be53b
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      711be53b
    • 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
    • unknown's avatar
      Merge production.mysql.com:/usersnfs/jperkin/bk/build/5.0 · 270011cb
      unknown authored
      into  production.mysql.com:/usersnfs/jperkin/bk/bug-27692/5.0
      
      270011cb
    • unknown's avatar
      Restore creation of test databases and the anonymous user which · 4d1a88e8
      unknown authored
      were accidentally removed during a previous rototill of this
      code.  Fixes bug#27692.
        
      While it can be argued we should strive to provide a 'secure by
      default' installation, this happens to be the setup currently
      documented in the manual as the default, so defer changes that
      improve security out of the box to a co-ordinated effort later
      on.
        
      For now, make a note about the test databases and anonymous user
      in mysql_install_db and recommend that mysql_secure_installation
      be ran for users wishing to remove these defaults.
      
      [..re-commit of previously lost change..]
      
      
      scripts/mysql_system_tables_data.sql:
        Add anonymous accounts.
      scripts/mysql_install_db.sh:
        Point users at the mysql_secure_installation script.
      mysql-test/mysql-test-run.pl:
        Add a comment where removing anonymous users.
      4d1a88e8
  8. 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
  9. 02 Oct, 2007 1 commit
    • unknown's avatar
      testScanFilter.cpp: · c47eab5e
      unknown authored
         Updated variable size arrays to use vector like Jonas did for 5.1 so that my build would not break
      
      
      ndb/test/ndbapi/testScanFilter.cpp:
         Updated variable size arrays to use vector like Jonas did for 5.1 so that my build would not break
      c47eab5e
  10. 01 Oct, 2007 3 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
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 1b96170f
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      1b96170f
  11. 27 Sep, 2007 2 commits
  12. 26 Sep, 2007 1 commit
  13. 25 Sep, 2007 1 commit
  14. 22 Sep, 2007 1 commit
  15. 20 Sep, 2007 2 commits
    • unknown's avatar
      result fix · bf3d46a8
      unknown authored
      bf3d46a8
    • unknown's avatar
      Bug#27747 database metadata doesn't return sufficient column default info · b7734724
      unknown authored
      added get_field_default_value() function which obtains default value from the field
      (used in store_create_info() & get_schema_column_record() functions)
      
      
      mysql-test/r/alter_table.result:
        result fix
      mysql-test/r/create.result:
        result fix
      mysql-test/r/ctype_collate.result:
        result fix
      mysql-test/r/ctype_recoding.result:
        result fix
      mysql-test/r/default.result:
        result fix
      mysql-test/r/gis.result:
        result fix
      mysql-test/r/grant.result:
        result fix
      mysql-test/r/information_schema.result:
        result fix
      mysql-test/r/key.result:
        result fix
      mysql-test/r/mysql.result:
        result fix
      mysql-test/r/ps_1general.result:
        result fix
      mysql-test/r/show_check.result:
        result fix
      mysql-test/r/sp.result:
        result fix
      mysql-test/r/type_enum.result:
        result fix
      mysql-test/r/type_ranges.result:
        result fix
      mysql-test/t/information_schema.test:
        test case
      b7734724
  16. 19 Sep, 2007 1 commit
  17. 15 Sep, 2007 1 commit
    • unknown's avatar
      select.test: · 6bcc6c25
      unknown authored
        Post-fix for bug#27695.
      
      
      mysql-test/t/select.test:
        Post-fix for bug#27695.
      6bcc6c25
  18. 14 Sep, 2007 9 commits
    • unknown's avatar
      Merge gshchepa@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 53b29922
      unknown authored
      into  devsrv-b.mysql.com:/data0/gshchepa/mysql-5.0-opt
      
      53b29922
    • unknown's avatar
      Merge trift2.:/MySQL/M41/push-4.1 · 2d2364d1
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      2d2364d1
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · e13c5850
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      e13c5850
    • unknown's avatar
      Merge trift2.:/MySQL/M41/mysql-4.1 · 5796be40
      unknown authored
      into  trift2.:/MySQL/M41/push-4.1
      
      5796be40
    • unknown's avatar
      Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 49dee0e0
      unknown authored
      into  magare.gmz:/home/kgeorge/mysql/autopush/B31001-5.0-opt
      
      49dee0e0
    • unknown's avatar
      Bug #31001: ORDER BY DESC in InnoDB not working · 040da853
      unknown authored
      The optimizer sets index traversal in reverse order only if there are 
       used key parts that are not compared to a constant.
      However using the primary key as an ORDER BY suffix rendered the check
      incomplete : going in reverse order must still be used even if 
      all the parts of the secondary key are compared to a constant.
      
      Fixed by relaxing the check and set reverse traversal even when all
      the secondary index keyparts are compared to a const.
      Also account for the case when all the primary keys are compared to a
      constant.
      
      
      mysql-test/r/innodb_mysql.result:
        Bug #31001: test case
      mysql-test/t/innodb_mysql.test:
        Bug #31001: test case
      sql/sql_select.cc:
        Bug #31001: 
         - account for the case when all the primary key parts are compared
           to a constant
         - force test_if_skip_sort_order to go backwards over the key even 
           when the number of keyparts used is the same as the number of 
           keyparts equal to a constant. (because of the primary key 
           suffix).
      040da853
    • unknown's avatar
      Merge spetrunia@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 02c8e132
      unknown authored
      into  mysql.com:/home/psergey/mysql-5.0-bug30324
      
      02c8e132
    • unknown's avatar
      BUG#30324: Grouping queries with COUNT(DISTINCT bit column) return wrong results · e6026e22
      unknown authored
      - The bug was caused by COUNT(DISTINCT ...) code using Unique object in 
        a way that assumed that BIT(N) column occupies a contiguous space in
        temp_table->record[0] buffer. 
      - The fix is to make COUNT(DISTINCT ...) code instruct create_tmp_table to
        create temporary table with column of type BIGINT, not BIT(N).
      
      
      mysql-test/r/type_bit.result:
        BUG#30324: Grouping queries with COUNT(DISTINCT bit column) return wrong results
        - Testcase
      mysql-test/t/type_bit.test:
        BUG#30324: Grouping queries with COUNT(DISTINCT bit column) return wrong results
        - Testcase
      sql/item_sum.cc:
        BUG#30324: Grouping queries with COUNT(DISTINCT bit column) return wrong results
        - Make COUNT(DISTINCT ...) code instruct create_tmp_table to create 
          temporary table with BIGINT, not BIT(N) column.
      e6026e22
    • unknown's avatar
      Merge whalegate.ndb.mysql.com:/home/tomas/mysql-5.0 · 2f274c35
      unknown authored
      into  whalegate.ndb.mysql.com:/home/tomas/mysql-5.0-ndb-merge
      
      2f274c35