1. 07 Oct, 2018 1 commit
    • Igor Babaev's avatar
      MDEV-17360 Server crashes in optimize_keyuse · d03581bf
      Igor Babaev authored
      This was a bug in the code of MDEV-12387 "Push conditions into materialized
      subqueries". The bug manifested itself in rather rare situations. An
      affected query must contain IN subquery predicate whose left operand
      was an outer field of a mergeable derived table or view and right operand
      was a materialized subquery.
      The erroneous code in fact stripped off the Item_direct_ref wrapper from
      the left operand of the IN subquery predicate when building equalities
      produced by the conversion of the predicate into a semi-join. As a result
      the left operand was not considered as an outer reference anymore and
      used_tables() was calculated incorrectly. This caused a crash in the
      function optimize_keyuse().
      d03581bf
  2. 05 Oct, 2018 4 commits
  3. 04 Oct, 2018 2 commits
    • Marko Mäkelä's avatar
      MDEV-11369: Perform validation at IMPORT TABLESPACE · 941ca92a
      Marko Mäkelä authored
      btr_cur_instant_root_init(): Check the "infimum" and "supremum"
      record strings already here, and not later in btr_cur_instant_root_init().
      In this way, we can properly reject files from later versions where
      instant ALTER TABLE could support further operations that change the
      format of InnoDB clustered indexes.
      941ca92a
    • Marko Mäkelä's avatar
      Fix a Galera result · 2badefb0
      Marko Mäkelä authored
      2badefb0
  4. 03 Oct, 2018 2 commits
    • Marko Mäkelä's avatar
      MDEV-11369: Implement accurate checks for the metadata record · ae4f464f
      Marko Mäkelä authored
      Because changes of the FIL_PAGE_TYPE or PAGE_INSTANT in the root
      page are not undo-logged, it is possible that the fields suggest
      that instant ADD COLUMN is in effect, even though no metadata
      record exists. If the fields are set, proceed to fetch the
      metadata record. If the metadata record does not exist, return
      success if !index->is_instant().
      
      Also, check that the "infimum" and "supremum" records carry the
      strings in the root page. In a later format that supports instant
      DROP COLUMN, we will have to store more information in the root
      page, so that index->n_core_null_bytes can be determined accurately.
      ae4f464f
    • Marko Mäkelä's avatar
      MDEV-11369: Implement stricter checks for the metadata record · c134f565
      Marko Mäkelä authored
      btr_cur_instant_init_low(): If columns were instantly added and dropped,
      then index->is_instant() might not hold even though the root page type
      was FIL_PAGE_TYPE_INSTANT. MariaDB 10.3 must refuse to open such files,
      because instant DROP COLUMN is not supported.
      
      Also, refuse to open the table if the metadata record has
      wrong info OR status bits. Previously, we only refused to open
      if both bits were wrong.
      c134f565
  5. 02 Oct, 2018 3 commits
  6. 01 Oct, 2018 6 commits
  7. 30 Sep, 2018 3 commits
    • Marko Mäkelä's avatar
      Remove an unused function · c58e5024
      Marko Mäkelä authored
      rec_offs_nth_extern_old() was introduced in
      commit a4948daf
      and never used.
      c58e5024
    • Marko Mäkelä's avatar
      Fix -Wunused-variable · ac8c7a1c
      Marko Mäkelä authored
      ac8c7a1c
    • Alexander Barkov's avatar
      MDEV-17318 CAST(LEAST(zero_date,non_zero_date) AS numeric_data_type) returns a wrong result · f79bab3a
      Alexander Barkov authored
      Also fixes:
      MDEV-17330 Wrong result for 0 + LEAST(TIME'-10:00:00',TIME'10:00:00')
      
      Problems:
      
      1. These methods did not take into account the current session date flags
      and passed date_mode_t(0) to func->get_date():
      
      Type_handler_temporal_result::Item_func_min_max_val_real
      Type_handler_temporal_result::Item_func_min_max_val_int
      Type_handler_temporal_result::Item_func_min_max_val_decimal
      
      Fixing to pass sql_mode_for_dates(thd) instead of date_mode_t(0).
      Note, sql_mode_for_dates(thd) is only needed for DATE/DATETIME
      data types. It is not needed for TIME.
      So splitting value methods Type_handler_temporal_result::Item_func_min_max_xxx
      into individual implementations for
      Type_handler_{time|date|datetime|timestamp}_common
      and, instead of calling get_date(), reusing inside classes
      Time(), Date(), Datetime() and their methods to_longlong().
      sql_mode_for_dates(thd) is automatically passed to get_date()
      inside Date() and Datetime() constructors.
      
      The switch to classes also fixed the problem reported in MDEV-17330.
      Type_handler_temporal_result::Item_func_min_max_val_int() used to
      call TIME_to_ulonglong(), which was not correct for TIME.
      Changing the code to use Time().to_longlong() solved this.
      
      2. Type_handler_temporal_result::Item_func_min_max_get_date
      also did not take into account the current session
      date flags in case of conversion from DATE/DATETIME to time
      and passed date_mode_t(0) to get_date_native().
      Fixing to pass sql_mode_for_dates(thd) in case of conversion
      from DATE/DATETIME to TIME.
      f79bab3a
  8. 29 Sep, 2018 1 commit
  9. 28 Sep, 2018 6 commits
  10. 27 Sep, 2018 1 commit
  11. 26 Sep, 2018 2 commits
  12. 25 Sep, 2018 1 commit
  13. 24 Sep, 2018 2 commits
  14. 23 Sep, 2018 6 commits