1. 01 Sep, 2010 2 commits
  2. 31 Aug, 2010 1 commit
  3. 30 Aug, 2010 11 commits
  4. 28 Aug, 2010 1 commit
  5. 27 Aug, 2010 6 commits
    • Marc Alff's avatar
      local merge · 73570819
      Marc Alff authored
      73570819
    • Sergey Vojtovich's avatar
      Merge 5.1-bugteam to 5.5-merge. · ab241457
      Sergey Vojtovich authored
      ab241457
    • Alexey Kopytov's avatar
      Bug #54465: assert: field_types == 0 || field_types[field_pos] · b409a221
      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.
      b409a221
    • Ramil Kalimullin's avatar
      Fix for bug #54253: memory leak when using I_S plugins w/o deinit method · 1087cfc4
      Ramil Kalimullin authored
      Free memory allocated by the server for all plugins,
      with or without deinit() method.
      1087cfc4
    • Sergey Vojtovich's avatar
      c2c833e4
    • Sergey Vojtovich's avatar
      BUG#52821 - plugin_ftparser.h and plugin_audit.h are · 7ceb92ff
      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.
      7ceb92ff
  6. 26 Aug, 2010 12 commits
  7. 25 Aug, 2010 7 commits