1. 02 Nov, 2010 1 commit
  2. 31 Oct, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #52160: crash and inconsistent results when grouping · 20d70497
      Gleb Shchepa authored
                  by a function and column
      
      The bugreport reveals two different bugs about grouping
      on a function:
      
      1) grouping by the TIME_TO_SEC function result caused
         a server crash or wrong results and
      2) grouping by the function returning a blob caused
         an unexpected "Duplicate entry" error and wrong
         result.
      
      Details for the 1st bug:
      
      TIME_TO_SEC() returns NULL if its argument is invalid (empty
      string for example). Thus its nullability depends not only
      on the nullability of its arguments but also on their values.
      Fixed by (overoptimistically) setting TIME_TO_SEC() to be
      nullable despite the nullability of its arguments.
      
      Details for the 2nd bug:
      
      The server is unable to create indices on blobs without
      explicit blob key part length. However, this fact was
      ignored for blob function result fields of GROUP BY
      intermediate tables.
      Fixed by disabling GROUP BY index creation for blob
      function result fields like regular blob fields.
      
      
      mysql-test/r/func_time.result:
        Test case for bug #52160.
      mysql-test/r/type_blob.result:
        Test case for bug #52160.
      mysql-test/t/func_time.test:
        Test case for bug #52160.
      mysql-test/t/type_blob.test:
        Test case for bug #52160.
      sql/item_timefunc.h:
        Bug #52160: crash and inconsistent results when grouping
                    by a function and column
        
        TIME_TO_SEC() returns NULL if its argument is invalid (empty
        string for example). Thus its nullability depends not only
        Fixed by (overoptimistically) setting TIME_TO_SEC() to be
        nullable despite the nullability of its arguments.
      sql/sql_select.cc:
        Bug #52160: crash and inconsistent results when grouping
                    by a function and column
        
        The server is unable to create indices on blobs without
        explicit blob key part length. However, this fact was
        ignored for blob function result fields of GROUP BY
        intermediate tables.
        Fixed by disabling GROUP BY index creation for blob
        function result fields like regular blob fields.
      20d70497
  3. 29 Oct, 2010 1 commit
  4. 28 Oct, 2010 2 commits
    • Calvin Sun's avatar
      Bug#52062: Compiler warning in os0file.c on windows 64-bit · 460ad14e
      Calvin Sun authored
      On Windows, the parameter for number of bytes passed into WriteFile()
      and ReadFile() is DWORD. Casting is needed to silence the warning on
      64-bit Windows.
      
      Also, adding several asserts to ensure the variable for number of bytes
      is no more than 32 bits, even on 64-bit Windows.
      
      This is for InnoDB Plugin.
      
      rb://415
      Approved by: Inaam
      460ad14e
    • Calvin Sun's avatar
      Bug#52062: Compiler warning in os0file.c on windows 64-bit · 16feea41
      Calvin Sun authored
      On Windows, the parameter for number of bytes passed into WriteFile()
      and ReadFile() is DWORD. Casting is needed to silence the warning on
      64-bit Windows.
      
      Also, adding several asserts to ensure the variable for number of bytes
      is no more than 32 bits, even on 64-bit Windows.
      
      This is for built-in InnoDB.
      
      rb://415
      Approved by: Inaam
      16feea41
  5. 27 Oct, 2010 2 commits
  6. 26 Oct, 2010 1 commit
  7. 25 Oct, 2010 2 commits
  8. 23 Oct, 2010 1 commit
    • unknown's avatar
      Bug#27606 GRANT statement should be replicated with DEFINER information · 06c49d57
      unknown authored
      "Grantor" columns' data is lost when replicating mysql.tables_priv.
      Slave SQL thread used its default user ''@'' as the grantor of GRANT|REVOKE
      statements executing on it.
      
      In this patch, current user is put in query log event for all GRANT and REVOKE
      statement, SQL thread uses the user in query log event as grantor.
      
      
      mysql-test/suite/rpl/r/rpl_do_grant.result:
        Add test for this bug.
      mysql-test/suite/rpl/t/rpl_do_grant.test:
        Add test for this bug.
      sql/log_event.cc:
        Refactoring THD::current_user_used and related functions.
        current_user_used is used to judge if current user should be
        binlogged in query log event. So it is better to call it m_binlog_invoker.
        The related functions are renamed too.
      sql/sql_class.cc:
        Refactoring THD::current_user_used and related functions.
        current_user_used is used to judge if current user should be
        binlogged in query log event. So it is better to call it m_binlog_invoker.
        The related functions are renamed too.
      sql/sql_class.h:
        Refactoring THD::current_user_used and related functions.
        current_user_used is used to judge if current user should be
        binlogged in query log event. So it is better to call it m_binlog_invoker.
        The related functions are renamed too.
      sql/sql_parse.cc:
        Call binlog_invoker() for GRANT and REVOKE statements.
      06c49d57
  9. 21 Oct, 2010 3 commits
    • Bjorn Munch's avatar
      Follow-up to Bug #55582 which allows checking strings in if · 909f0bf9
      Bjorn Munch authored
        Simplified cases where a select was used to compare variable against ''
      909f0bf9
    • unknown's avatar
      Bug#55478 Row events wrongly apply on the temporary table of the same name · 6646fecc
      unknown authored
      Rows events were applied wrongly on the temporary table with the same name.
      But rows events are generated only for base tables. As temporary
      table's data never be binlogged on row mode. Normally, base table of the
      same name cannot be updated if a temporary table has the same name.
      But there are two cases which can generate rows events on 
      the base table of same name.
            
      Case1: 'CREATE TABLE ... SELECT' statement.
      In mixed format, it will generate rows events if it is unsafe.
            
      Case2: Drop a transactional temporary table in a transaction
             (happens only on 5.5+).
      BEGIN;
      DROP TEMPORARY TABLE t1;       # t1 is a InnoDB table
      INSERT INTO t1 VALUES(rand()); # t1 is a MyISAM table
      COMMIT;
      'DROP TEMPORARY TABLE' will be put in the transaction cache and
      binlogged after the rows events generated by the 'INSERT' statement.
            
      After this patch, slave opens only base table when applying a rows event.
      6646fecc
    • Jimmy Yang's avatar
      Fix Bug #57616 Sig 11 in dict_load_table() when failed to load · e8f228e7
      Jimmy Yang authored
      index or foreign key
      
      Approved by Sunny Bains
      e8f228e7
  10. 20 Oct, 2010 6 commits
  11. 19 Oct, 2010 14 commits
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings · 1040f98c
      Davi Arnaut authored
      Tag or remove unused arguments and variables.
      
      regex/main.c:
        Use the real prototype.
      sql/ha_ndbcluster.cc:
        Make conditions less ambiguous.
      1040f98c
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings · 7406b38e
      Davi Arnaut authored
      Ensure that fdatasync is properly declared as on Mac OS X, the
      function is available but there is no prototype. Also, port a
      fix for a warning from the InnoDB plugin over to the builtin. 
      
      configure.in:
        Check that fdatasync is declared.
      mysys/my_sync.c:
        Use fdatasync only if it is declared.
      storage/innobase/include/ut0dbg.h:
        Port over from the plugin a fix for a warning.
      7406b38e
    • Vasil Dimov's avatar
      Fix Bug#53916 storage/innodb_plugin does not compile on NetBSD/sparc64 · cb010506
      Vasil Dimov authored
      Just check for all the functions that we are going to use, not a subset
      of them.
      
      Reviewed by:	Davi (via IRC)
      cb010506
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings on linux · be170c21
      Davi Arnaut authored
      Tag unused arguments.
            
      Approved by: Marko (via IRC)
      be170c21
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings on linux · 8875c2c2
      Davi Arnaut authored
      Tag unused arguments.
      
      Approved by: Marko (via IRC)
      8875c2c2
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings on linux · 18371055
      Davi Arnaut authored
      Fix assorted compiler warnings on Mac OS X.
      
      BUILD/SETUP.sh:
        Remove -Wctor-dtor-privacy flag to workaround a GCC bug that
        causes it to not properly detect that implicitly generated
        constructors are always public.
      cmd-line-utils/readline/terminal.c:
        tgetnum and tgetflag might not take a const string argument.
      mysys/my_gethostbyname.c:
        Tag unused arguments.
      mysys/my_sync.c:
        Tag unused arguments.
      18371055
    • Bjorn Munch's avatar
      Bug #56654 pb2 log is very hard to read · 05062d57
      Bjorn Munch authored
      Added some more info in a number of fail cases
      (re-commit for administrative reasons)
      05062d57
    • Bjorn Munch's avatar
      Bug #52828 Tests that use perl fail when perl is not in path · 84c57a5e
      Bjorn Munch authored
      main.mysqltest skipped on Windows because a perl intentionally does exit(1)
      Use exit(2), as exit(1) on Windows is indistinguishable from failing to
      execute perl.
      84c57a5e
    • Bjorn Munch's avatar
    • Magne Mahre's avatar
      Bug #46941 crash with lower_case_table_names=2 and foreign key · 95d91c0f
      Magne Mahre authored
                 data dictionary confusion
      
      On file systems with case insensitive file names, and
      lower_case_table_names set to '2', the server could crash
      due to a table definition cache inconsistency.  This is 
      the default setting on MacOSX, but may also be set and
      used on MS Windows.
      
      The bug is caused by using two different strategies for
      creating the hash key for the table definition cache, resulting
      in failure to look up an entry which is present in the cache,
      or failure to delete an existing entry.  One strategy was to
      use the real table name (with case preserved), and the other
      to use a normalized table name (i.e a lower case version).
      
      This is manifested in two cases.  One is  during 'DROP DATABASE', 
      where all known files are removed.  The removal from
      the table definition cache is done via a generated list of
      TABLE_LIST with keys (wrongly) created using the case preserved 
      name.  The other is during CREATE TABLE, where the cache lookup
      is also (wrongly) based on the case preserved name.
         
      The fix was to use only the normalized table name when
      creating hash keys.
      
      
      sql/sql_db.cc:
        Normalize table name (i.e lower case it)
      sql/sql_table.cc:
        table_name contains the normalized name
        alias contains the real table name
      95d91c0f
    • Jon Olav Hauglid's avatar
      Bug #57274 SET GLOBAL debug crashes on Solaris in embedded server mode · 4776282b
      Jon Olav Hauglid authored
                 (variables_debug fails)
      
      The problem was that "SET GLOBAL debug" could cause a crash on Solaris.
      The crash happened if the server failed to open the trace file given in 
      the "SET GLOBAL debug" statement. This caused an error message to be
      printed to stderr containing the process name. However, printing to
      stderr crashed the server since the pointer to the process name had
      not been initialized.
      
      This patch fixes the problem by initializing the process name 
      properly when doing "SET GLOBAL debug".
      
      No test case added as this bug was repeatable with existing test
      coverage in variables_debug.test.
      4776282b
    • Tor Didriksen's avatar
      af665ea9
    • Marko Mäkelä's avatar
      Bug #56680 wrong InnoDB results from a case-insensitive covering index · c38071ec
      Marko Mäkelä authored
      row_search_for_mysql(): When a secondary index record might not be
      visible in the current transaction's read view and we consult the
      clustered index and optionally some undo log records, return the
      relevant columns of the clustered index record to MySQL instead of the
      secondary index record.
      
      ibuf_insert_to_index_page_low(): New function, refactored from
      ibuf_insert_to_index_page().
      
      ibuf_insert_to_index_page(): When we are inserting a record in place
      of a delete-marked record and some fields of the record differ, update
      that record just like row_ins_sec_index_entry_by_modify() would do.
      
      btr_cur_update_alloc_zip(): Make the function public.
      
      mysql_row_templ_t: Add clust_rec_field_no.
      
      row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the
      flag rec_clust, for returning data at clust_rec_field_no instead of
      rec_field_no. Resurrect the debug assertion that the record not be
      marked for deletion. (Bug #55626)
      
      [UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(),
      buf_flush_page_try():
      Implement innodb_change_buffering_debug=1 for evicting pages from the
      buffer pool, so that change buffering will be attempted more
      frequently.
      c38071ec
    • Marko Mäkelä's avatar
      Bug #56680 wrong InnoDB results from a case-insensitive covering index · a8f2f7af
      Marko Mäkelä authored
      row_search_for_mysql(): When a secondary index record might not be
      visible in the current transaction's read view and we consult the
      clustered index and optionally some undo log records, return the
      relevant columns of the clustered index record to MySQL instead of the
      secondary index record.
      
      REC_INFO_DELETED_FLAG: Move the definition from rem0rec.ic to rem0rec.h.
      
      ibuf_insert_to_index_page_low(): New function, refactored from
      ibuf_insert_to_index_page().
      
      ibuf_insert_to_index_page(): When we are inserting a record in place
      of a delete-marked record and some fields of the record differ, update
      that record just like row_ins_sec_index_entry_by_modify() would do.
      
      mysql_row_templ_t: Add clust_rec_field_no.
      
      row_sel_store_mysql_rec(), row_sel_push_cache_row_for_mysql(): Add the
      flag rec_clust, for returning data at clust_rec_field_no instead of
      rec_field_no. Resurrect the debug assertion that the record not be
      marked for deletion. (Bug #55626)
      
      buf_LRU_free_block(): Refactored from
      buf_LRU_search_and_free_block(). This is needed for the
      innodb_change_buffering_debug diagnostics.
      
      [UNIV_DEBUG || UNIV_IBUF_DEBUG] ibuf_debug, buf_page_get_gen(),
      buf_flush_page_try():
      Implement innodb_change_buffering_debug=1 for evicting pages from the
      buffer pool, so that change buffering will be attempted more
      frequently.
      a8f2f7af
  12. 18 Oct, 2010 5 commits
    • Davi Arnaut's avatar
      Bug#45288: pb2 returns a lot of compilation warnings on linux · 5aa81e38
      Davi Arnaut authored
      Enable the MySQL maintainer-specific development environment
      (which add various warning related options to the compiler
      flags) if debugging support is enabled.
      
      config/ac-macros/maintainer.m4:
        Enable the maintainer mode if debug support is enabled.
      configure.in:
        Move debug argument to before the maintainer mode check.
      5aa81e38
    • Dmitry Shulga's avatar
      Follow up for bug#36742. Changed test case for bug#19828 · cdddc7bf
      Dmitry Shulga authored
      because currently hostname stored in db in lowercase.
      cdddc7bf
    • Tor Didriksen's avatar
      Bug#52172 test binlog.binlog_index needs --skip-core-file to avoid leaving core files · 90743071
      Tor Didriksen authored
      For crash testing: kill the server without generating core file.
      
      include/my_dbug.h
        Use kill(getpid(), SIGKILL) which cannot be caught by signal handlers.
        All DBUG_XXX macros should be no-ops in optimized mode, do that for DBUG_ABORT as well.
      sql/handler.cc
        Kill server without generating core.
      sql/log.cc
        Kill server without generating core.
      90743071
    • Vasil Dimov's avatar
      Fix Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE · 78804bc8
      Vasil Dimov authored
      This is a merge from 5.1/builtin to 5.1/plugin of:
      
        --------------
        revision-id: vasil.dimov@oracle.com-20101018104811-nwqhg9vav17kl5s1
        committer: Vasil Dimov <vasil.dimov@oracle.com>
        timestamp: Mon 2010-10-18 13:48:11 +0300
        message:
          Fix Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE
          
          In order to fix this bug we need to distinguish whether ha_innobase::info()
          has been called from ::analyze() or not. Rename ::info() to ::info_low()
          and add a boolean parameter that tells whether the call is from ::analyze()
          or not. Create a new simple ::info() that just calls
          ::info_low(false => not called from analyze). From ::analyze() instead of
          ::info() call ::info_low(true => called from analyze).
          
          Approved by:	Jimmy (rb://487)
        --------------
      78804bc8
    • Vasil Dimov's avatar
      Fix Bug#57252 disabling innobase_stats_on_metadata disables ANALYZE · 902b13fa
      Vasil Dimov authored
      In order to fix this bug we need to distinguish whether ha_innobase::info()
      has been called from ::analyze() or not. Rename ::info() to ::info_low()
      and add a boolean parameter that tells whether the call is from ::analyze()
      or not. Create a new simple ::info() that just calls
      ::info_low(false => not called from analyze). From ::analyze() instead of
      ::info() call ::info_low(true => called from analyze).
      
      Approved by:	Jimmy (rb://487)
      902b13fa
  13. 16 Oct, 2010 1 commit
    • unknown's avatar
      Bug#56118 STOP SLAVE does not wait till trx with CREATE TMP TABLE ends, · 211552cc
      unknown authored
                replication aborts
      
      When recieving a 'SLAVE STOP' command, slave SQL thread will roll back the
      transaction and stop immidiately if there is only transactional table updated,
      even through 'CREATE|DROP TEMPOARY TABLE' statement are in it. But These
      statements can never be rolled back. Because the temporary tables to the user
      session mapping remain until 'RESET SLAVE', Therefore it will abort SQL thread
      with an error that the table already exists or doesn't exist, when it restarts
      and executes the whole transaction again.
      
      After this patch, SQL thread always waits till the transaction ends and then stops,
      if 'CREATE|DROP TEMPOARY TABLE' statement are in it.
      
      mysql-test/extra/rpl_tests/rpl_stop_slave.test:
        Auxiliary file which is used to test this bug.
      mysql-test/suite/rpl/t/rpl_stop_slave.test:
        Test case for this bug.
      sql/slave.cc:
        Checking if OPTION_KEEP_LOG is set. If it is set, SQL thread should wait
        until the transaction ends.
      sql/sql_parse.cc:
        Add a debug point for testing this bug.
      211552cc