1. 01 Sep, 2010 1 commit
  2. 31 Aug, 2010 1 commit
  3. 30 Aug, 2010 8 commits
  4. 28 Aug, 2010 1 commit
  5. 27 Aug, 2010 6 commits
    • Marc Alff's avatar
      local merge · 3b56ef04
      Marc Alff authored
      3b56ef04
    • Sergey Vojtovich's avatar
      Merge 5.1-bugteam to 5.5-merge. · 98df5f7c
      Sergey Vojtovich authored
      98df5f7c
    • Alexey Kopytov's avatar
      Bug #54465: assert: field_types == 0 || field_types[field_pos] · 36e234a8
      Alexey Kopytov authored
                  == MYSQL_TYPE_LONGLONG
      
      A MIN/MAX() function with a subquery as its argument could lead
      to a debug assertion on debug builds or wrong data on release
      ones.
      
      The problem was a combination of the following factors:
      
      - Item_sum_hybrid::fix_fields() might use the argument
      (args[0]) to calculate 'hybrid_field_type' which was later used
      to decide how the data should be sent to the client.
      
      - Item_sum::make_field() might use the argument again to
      calculate the field's type when sending result set metadata to
      the client.
      
      - The argument could be changed in between these two calls via
        Item::set_arg() leading to inconsistent metadata being
        reported.
      
      Here is what was happening for the bug's test case:
      
      1. Item_sum_hybrid::fix_fields() calculates hybrid_field_type
      as MYSQL_TYPE_LONGLONG based on args[0] which is an
      Item::SUBSELECT_ITEM at that time.
      
      2. A temporary table is created to execute the
      query. create_tmp_field_from_item() creates a Field_long object
      according to the subselect's max_length.
      
      3. The subselect item in Item_sum_hybrid is replaced by the
      Item_field object referencing the newly created Field_long.
      
      4. Item_sum::make_field() rightfully returns the
      MYSQL_TYPE_LONG type when calculating the result set metadata.
      
      5. When sending the actual data, Item::send() relies on the
      virtual field_type() function which in our case returns
      previously calculated hybrid_field_type == MYSQL_TYPE_LONGLONG.
      
      It looks like the only solution is to never refer to the
      argument's metadata after the result metadata has been
      calculated in fix_fields(), since the argument itself may be
      different by then. In this sense, Item_sum::make_field() should
      never be used, because it may rely on the argument's metadata
      and is only called after fix_fields(). The "default"
      implementation in Item::make_field() should be used instead as
      it relies only on field_type(), but not on the argument's type.
      
      Fixed by removing Item_sum::make_field() so that the superclass
      implementation Item::make_field() is always used.
      
      mysql-test/r/func_group.result:
        Added a test case for bug #54465.
      mysql-test/t/func_group.test:
        Added a test case for bug #54465.
      sql/item_sum.cc:
        Removed Item_sum::make_field() so that the superclass
        implementation Item::make_field() is always used.
      sql/item_sum.h:
        Removed Item_sum::make_field() so that the superclass
        implementation Item::make_field() is always used.
      36e234a8
    • Ramil Kalimullin's avatar
      Fix for bug #54253: memory leak when using I_S plugins w/o deinit method · e433cb33
      Ramil Kalimullin authored
      Free memory allocated by the server for all plugins,
      with or without deinit() method.
      
      e433cb33
    • Sergey Vojtovich's avatar
      e1af6730
    • Sergey Vojtovich's avatar
      BUG#52821 - plugin_ftparser.h and plugin_audit.h are · 8f773e6f
      Sergey Vojtovich authored
                  not tested by ABI check
      
      plugin_audit.h and plugin_ftparser.h are now subject
      for ABI check. plugin.h is now tested implicitly.
      
      Also fixed broken ABI check cmake rules.
      
      Makefile.am:
        plugin_audit.h and plugin_ftparser.h are now subject
        for ABI check. plugin.h is now tested implicitly.
      cmake/abi_check.cmake:
        plugin_audit.h and plugin_ftparser.h are now subject
        for ABI check. plugin.h is now tested implicitly.
        
        Also fixed broken ABI check rules: -DMYSQL_ABI_CHECK is
        compiler (not cmake) definition, incorrect definitions
        were passed to do_abi_check.cmake for abi_check_all rule.
      cmake/do_abi_check.cmake:
        Inform sources that we do ABI check.
      include/mysql/plugin.h.pp:
        plugin.h is now tested implicitly.
      include/mysql/plugin_audit.h.pp:
        plugin_audit.h is now subject for ABI check.
      include/mysql/plugin_ftparser.h.pp:
        plugin_ftparser.h is now subject for ABI check.
      8f773e6f
  6. 26 Aug, 2010 12 commits
    • Marc Alff's avatar
      local merge · c723902d
      Marc Alff authored
      c723902d
    • Christopher Powers's avatar
      Bug# 53874 "SETUP_INSTRUMENTS.TIMED='NO' should not change TIMER_WAIT · c696ec92
      Christopher Powers authored
      Handle combined instrument states of ENABLED and/or TIMED:
      
      ENABLED TIMED
      1 1 Aggregate stats, increment counter
      1 0 Increment counter
      0 1 Do nothing
      0 0 Do nothing 
      
      storage/perfschema/pfs.cc:
        Aggregate stats only if state is both ENABLED and TIMED. If ENABLED
        but not TIMED, only increment the value counter.
      storage/perfschema/pfs_stat.h:
        Split aggregate and counter increment into separate
        methods for performance.
      c696ec92
    • Alexander Nozdrin's avatar
    • Marc Alff's avatar
      local merge · d0dea5e4
      Marc Alff authored
      d0dea5e4
    • Marc Alff's avatar
      Implemented code review comments · e965de76
      Marc Alff authored
      e965de76
    • Bjorn Munch's avatar
      44d221d7
    • Alexey Kopytov's avatar
      Automerge. · 1e854f9c
      Alexey Kopytov authored
      1e854f9c
    • Alexander Barkov's avatar
      Bug#42511 mysqld: ctype-ucs2.c:2044: my_strnncollsp_utf32: Assertion (tlen % 4) == 0' fai · 7afb648f
      Alexander Barkov authored
      Problem: trailing spaces were stripped using 8-bit code,
      so the truncation result length was incorrect, which led
      to an assertion failure.
      Fix: using multi-byte safe code.
      7afb648f
    • Alexey Kopytov's avatar
      Automerge. · b1824004
      Alexey Kopytov authored
      b1824004
    • Sergey Vojtovich's avatar
      d61b21c3
    • Evgeny Potemkin's avatar
      Bug #55656: mysqldump can be slower after bug 39653 fix. · 94100243
      Evgeny Potemkin authored
      After fix for bug 39653 the shortest available secondary index was used for
      full table scan. Primary clustered key was used only if no secondary index
      can be used. However, when chosen secondary index includes all fields of the
      table being scanned it's better to use primary index since the amount of
      data to scan is the same but the primary index is clustered.
      Now the find_shortest_key function takes this into account.
      
      
      mysql-test/suite/innodb/r/innodb_mysql.result:
        Added a test case for the bug#55656.
      mysql-test/suite/innodb/t/innodb_mysql.test:
        Added a test case for the bug#55656.
      sql/sql_select.cc:
        Bug #55656: mysqldump can be slower after bug #39653 fix.
        The find_shortest_key function now prefers clustered primary key
        if found secondary key includes all fields of the table.
      94100243
    • Marc Alff's avatar
      Bug#55873 short startup options do not work in 5.5 · 6f0e7b9d
      Marc Alff authored
      Before this fix, the server did not recognize 'short' (as in -a)
      options but only 'long' (as in --ansi) options
      in the startup command line, due to earlier changes in 5.5
      introduced for the performance schema.
      
      The root cause is that handle_options() did not honor the
      my_getopt_skip_unknown flag when parsing 'short' options.
      
      The fix changes handle_options(), so that my_getopt_skip_unknown is
      honored in all cases.
      
      Note that there are limitations to this,
      see the added doxygen documentation in handle_options().
      
      The current usage of handle_options() by the server to
      parse early performance schema options fits within the limitations.
      This has been enforced by an assert for PARSE_EARLY options, for safety.
      6f0e7b9d
  7. 25 Aug, 2010 11 commits