1. 30 Aug, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#50036: Inconsistent errors when using TIMESTAMP columns/expressions · e7dc80b8
      Mattias Jonsson authored
      It was hard to understand what the error really meant.
      
      The error checking in partitioning is done in several different
      parts during the execution of a query which can make it
      hard to return useful errors.
      
      Added a new error for bad VALUES part in the per PARTITION clause.
      Using the more verbose error that a column is not allowed in
      the partitioning function instead of just that the function is
      not allowed.
      e7dc80b8
  2. 23 Aug, 2010 2 commits
  3. 20 Aug, 2010 3 commits
    • Mattias Jonsson's avatar
      Bug#54747: Deadlock between REORGANIZE PARTITION and SELECT is not detected · 0c2b883d
      Mattias Jonsson authored
      The ALTER PARTITION and SELECT seemed to be deadlocked
      when having innodb_thread_concurrency = 1.
      
      Problem was that there was unreleased latches
      in the ALTER PARTITION thread which was needed
      by the SELECT thread to be able to continue.
      
      Solution was to release the latches by commit 
      before requesting upgrade to exclusive MDL lock.
      
      Updated according to reviewers comments (3).
      0c2b883d
    • Christopher Powers's avatar
      merge · a32b74cf
      Christopher Powers authored
      a32b74cf
    • Sergey Vojtovich's avatar
      BUG#54989 - With null_audit installed, server hangs on an · b8aceb70
      Sergey Vojtovich authored
                  attempt to install a plugin twice
      
      Server crashes when [UN]INSTALL PLUGIN fails (returns an
      error) and general log is disabled and there are audit
      plugins interested in MYSQL_AUDIT_GENERAL_CLASS. 
      
      When audit event is triggered, audit subsystem acquires interested
      plugins by walking through plugin list. Evidently plugin list
      iterator protects plugin list by acquiring LOCK_plugin, see
      plugin_foreach_with_mask().
      
      On the other hand [UN]INSTALL PLUGIN is acquiring LOCK_plugin
      rather for a long time.
      
      When audit event is triggered during [UN]INSTALL PLUGIN, plugin
      list iterator acquires the same lock (within the same thread)
      second time.
      
      Repeatable only with general_log disabled, because general_log
      triggers MYSQL_AUDIT_GENERAL_LOG event, which acquires audit
      plugins before [UN]INSTALL PLUGIN acquired LOCK_plugin.
      
      With this fix we pre-acquire audit plugins for events that
      may potentially occur during [UN]INSTALL PLUGIN.
      
      This hack should be removed when LOCK_plugin is fixed so it
      protects only what it supposed to protect.
      
      No test case for this fix - we do not have facility to test
      audit plugins yet.
      b8aceb70
  4. 19 Aug, 2010 3 commits
  5. 20 Aug, 2010 5 commits
    • Alexander Barkov's avatar
      Bug#55912 FORMAT with locale set fails for numbers < 1000 · bf78f476
      Alexander Barkov authored
      Problems:
      - dot character was always printed as decimal point
        instead of localized decimal point for short
        numbers without thousands
      - Item_func_format::val_str always returned values in ASCII
      format,
        regargless of @@character_set_connection, which in case of utf32
        led to crash in debug build, or to incorrect values in release build.
      
      Fix:
      - Adding a piece of code to replace dot character to
        localized decimal point in short numbers.
      - Changing parent class for Item_func_format to
        Item_str_ascii_func, because its val_str() implementation is heavily ASCII oriented.
      bf78f476
    • Jon Olav Hauglid's avatar
      39ac44d6
    • Dmitry Lenev's avatar
      Fixed failure of parts.partition_debug_sync_innodb.test which · 27cb76cd
      Dmitry Lenev authored
      was caused by change of thread state name from "Waiting for
      table" to "Waiting for table metadata lock" (which has 
      happened as part of fix for bug 52044 "FLUSH TABLES WITH READ
      LOCK and FLUSH TABLES <list> WITH READ LOCK are incompati").
      27cb76cd
    • Jon Olav Hauglid's avatar
      Bug #55973 Assertion `thd->transaction.stmt.is_empty()' · 9bd8a62d
      Jon Olav Hauglid authored
                 on CREATE TABLE .. SELECT I_S.PART
      
      This assert was triggered if an InnoDB table was created using
      CREATE TABLE ... AS SELECT where the query used an I_S table, and
      a view existed in the database. It would also be triggered for
      any statement changing an InnoDB table (e.g. INSERT, UPDATE, DELETE)
      which had a subquery referencing an I_S table.
      
      The assert was triggered if open_normal_and_derived_tables() failed
      and a statement transaction had been started. This will usually not
      happen as tables are opened before a statement transaction is started.
      However, e.g. CREATE TABLE ... AS SELECT starts a transaction in order
      to insert tuples into the new table. And if the subquery references
      an I_S table, all current tables and views can be opened in order to
      fill the I_S table on the fly. If a view is discovered, open will fail
      as it is instructed to open tables only (OPEN_TABLE_ONLY). This would
      cause the assert to be triggered.
      
      The assert was added in the patch for Bug#52044 and was therefore
      not in any released versions of the server.
      
      This patch fixes the problem by adjusting the assert to take into
      consideration the possibility of tables being opened as part of
      an I_S query. This is similar to what is already done for 
      close_tables_for_reopen().
      
      Test case added to information_schema_inno.test.
      9bd8a62d
    • Alfranio Correia's avatar
      BUG#53452 Inconsistent behavior of binlog_direct_non_transactional_updates with · c6d4915f
      Alfranio Correia authored
      temp table
                  
      This patch introduces two key changes in the replication's behavior.
                  
      Firstly, it reverts part of BUG#51894 which puts any update to temporary tables
      into the trx-cache. Now, updates to temporary tables are handled according to
      the type of their engines as a regular table.
                  
      Secondly, an unsafe mixed statement, (i.e. a statement that access transactional
      table as well non-transactional or temporary table, and writes to any of them),
      are written into the trx-cache in order to minimize errors in the execution when
      the statement logging format is in use.
                  
      Such changes has a direct impact on which statements are classified as unsafe
      statements and thus part of BUG#53259 is reverted.
      c6d4915f
  6. 19 Aug, 2010 5 commits
    • Alexander Barkov's avatar
      Bug#54916 GROUP_CONCAT + IFNULL truncates output · 6e9298bd
      Alexander Barkov authored
      Problem: a few functions did not calculate their max_length correctly.
      This is an after-fix for WL#2649 Number-to-string conversions".
      
      Fix: changing the buggy functions to calculate max_length
      using fix_char_length() introduced in WL#2649,
      instead of setting max_length directly
      
        mysql-test/include/ctype_numconv.inc
           Adding new tests
      
        mysql-test/r/ctype_binary.result
           Adding new tests
      
        mysql-test/r/ctype_cp1251.result
           Adding new tests
      
        mysql-test/r/ctype_latin1.result
           Adding new tests
      
        mysql-test/r/ctype_ucs.result
           Adding new tests
      
        mysql-test/r/ctype_utf8.result
           Adding new tests
      
        mysql-test/t/ctype_utf8.test
          Including ctype_numconv
      
        sql/item.h
          - Introducing new method fix_char_length_ulonglong(),
          for the cases when length is potentially greater
          than UINT_MAX32. This method removes a few
          instances of duplicate code, e.g. in item_strfunc.cc.
          - Setting collation in Item_copy properly. This change
          fixes wrong metadata on client side in some cases, when
          "binary" instead of the real character set was reported.
      
        sql/item_cmpfunc.cc
          - Using fix_char_length() and max_char_length() methods,
          instead of direct access to max_length, to calculate
          item length properly.
          - Moving count_only_length() in COALESCE after
          agg_arg_charsets_for_string_result(). The old
          order was incorrect and led to wrong length
          calucation in case of multi-byte character sets.
          
        sql/item_func.cc
          Fixing that count_only_length() didn't work
          properly for multi-byte character sets.
          Using fix_char_length() and max_char_length()
          instead of direct access to max_length.
      
        sql/item_strfunc.cc
          - Using fix_char_length(), fix_char_length_ulonglong(),
          max_char_length() instead of direct access to max_length.
          - Removing wierd condition: "if (collation.collation->mbmaxlen > 0)",
          which is never FALSE.
      6e9298bd
    • Alexey Botchkov's avatar
      Bug#54466 client 5.5 built from source lacks "pager" support · 15ee13fb
      Alexey Botchkov authored
                    #ifdef THREAD removed from mysql.cc.
                     No reason was found for this limitation to persist.
      
      per-file comments:
        client/mysql.cc
      Bug#54466      client 5.5 built from source lacks "pager" support
              now we have USE_POPEN always if not __WIN__
        mysql-test/r/mysql.result
      Bug#54466      client 5.5 built from source lacks "pager" support
              result updated.
        mysql-test/t/mysql.test
      Bug#54466      client 5.5 built from source lacks "pager" support
              test case added.
      15ee13fb
    • Jon Olav Hauglid's avatar
      Bug #56085 Embedded server tests fails with assert in · b02f5dd8
      Jon Olav Hauglid authored
                 check_if_table_exists()
      
      This assert was triggered when the server tried to load plugins
      while running in embedded server mode. In embedded server mode,
      check_if_table_exists() was used to check if mysql.plugin existed
      so that ER_NO_SUCH_TABLE could be silently ignored.
      The problem was that this check was done without acquiring a metadata
      lock on mysql.plugin first. This triggered the assert.
      
      This patch fixes the problem by removing the call to
      check_if_table_exists() from plugin_load(). Instead an error handler
      which traps ER_NO_SUCH_TABLE is installed before trying to open
      mysql.plugin when running in embedded server mode.
      
      No test coverage added since this assert was triggered by 
      existing tests running in embedded server mode.
      b02f5dd8
    • Bernt M. Johnsen's avatar
    • Alexander Barkov's avatar
      Backporting Bug#32391 Character sets: crash with --character-set-server · 89e6eb0b
      Alexander Barkov authored
      from mysql-trunk-bugfixing (5.6.1-m5) from mysql-5.5-bugfixing (5.5.6-m3).
      89e6eb0b
  7. 18 Aug, 2010 9 commits
  8. 17 Aug, 2010 10 commits
    • Joerg Bruehe's avatar
      Merge the fix for bug#55015. · 49652079
      Joerg Bruehe authored
      49652079
    • Marko Mäkelä's avatar
      A non-functional change: · 332a41ce
      Marko Mäkelä authored
      dict_load_index_low(): Rename the parameter "cached" to "allocated"
      and clarify the comments.
      332a41ce
    • Vasil Dimov's avatar
      Make main.endspace more deterministic · 793dee2d
      Vasil Dimov authored
      Followup to vasil.dimov@oracle.com-20100817063430-inglmzgdtj95t29d
      which didn't fully fix the test because the order of the returned
      rows was different in embedded and non-embedded version. So the only
      way to fix this is to add an ORDER BY clause.
      793dee2d
    • Magne Mahre's avatar
      Bug #54850 rpl_ndb.rpl_ndb_stm_innodb and · 7d2d2e0f
      Magne Mahre authored
                 rpl_ndb.rpl_ndb_2other fails
      
      The two regressions tests failed after WL#5349 was
      pushed, since they were writted with the implicit
      requirement that MyISAM is the default storage engine.
      
      Adding --default-storage-engine=MyISAM as startup
      parameter, to mimic the pre-wl#5349 situation.
      7d2d2e0f
    • Jimmy Yang's avatar
      Fix bug #53496 Use Lock_time in slow query log output for InnoDB row · da24a208
      Jimmy Yang authored
      lock wait time. Including the InnoDB lock time in the exiting "Lock_time"
      output.
      da24a208
    • Vasil Dimov's avatar
      Adjust endspace.result · 15fd2b4f
      Vasil Dimov authored
      This is a followup to vasil.dimov@oracle.com-20100816142329-yimenbuktd416z1a
      which improved the sampling algorithm. The endspace test is non-deterministic
      because it does not include ORDER BY clause in its queries.
      15fd2b4f
    • Vasil Dimov's avatar
      Adjust type_bit_innodb.result · 260ff5be
      Vasil Dimov authored
      This is a followup to vasil.dimov@oracle.com-20100816142329-yimenbuktd416z1a
      which improved the sampling algorithm.
      260ff5be
    • Vasil Dimov's avatar
      Adjust rowid_order_innodb.result · 0c7b3904
      Vasil Dimov authored
      This is a followup to vasil.dimov@oracle.com-20100816142329-yimenbuktd416z1a
      which improved the sampling algorithm.
      0c7b3904
    • Vasil Dimov's avatar
      Adjust innodb_gis.result · 4a3ba734
      Vasil Dimov authored
        
      This is a followup to vasil.dimov@oracle.com-20100816142329-yimenbuktd416z1a
      which improved the sampling algorithm.
      4a3ba734
    • Vasil Dimov's avatar
      Adjust innodb_mysql.result · f8b58430
      Vasil Dimov authored
      This is a followup to vasil.dimov@oracle.com-20100816142329-yimenbuktd416z1a
      which improved the sampling algorithm. I have manually checked that the new
      values are actually the correct ones, for example:
      -rows	16
      +rows	32
      the number of rows returned by the query is 32.
      f8b58430
  9. 16 Aug, 2010 2 commits