1. 13 Aug, 2018 1 commit
    • Marko Mäkelä's avatar
      MDEV-12041: innodb_encrypt_log key rotation · f6d4f624
      Marko Mäkelä authored
      This will change the InnoDB encrypted redo log format only.
      Unencrypted redo log will keep using the MariaDB 10.3 format.
      In the new encrypted redo log format, 4 additional bytes will
      be reserved in the redo log block trailer for storing the
      encryption key version.
      
      For performance reasons, the encryption key rotation
      (checking if the latest encryption key version is being used)
      is only done at log_checkpoint().
      
      LOG_HEADER_FORMAT_CURRENT: Remove.
      
      LOG_HEADER_FORMAT_ENC_10_4: The encrypted 10.4 format.
      
      LOG_BLOCK_KEY: The encryption key version field.
      
      LOG_BLOCK_TRL_SIZE: Remove.
      
      log_t: Add accessors framing_size(), payload_size(), trailer_offset(),
      to be used instead of referring to LOG_BLOCK_TRL_SIZE.
      
      log_crypt_t: An operation passed to log_crypt().
      
      log_crypt(): Perform decryption, encryption, or encryption with key
      rotation. Return an error if key rotation at decryption fails.
      On encryption, keep using the previous key if the rotation fails.
      At startup, old-format encrypted redo log may be written before
      the redo log is upgraded (rebuilt) to the latest format.
      
      log_write_up_to(): Add the parameter rotate_key=false.
      
      log_checkpoint(): Invoke log_write_up_to() with rotate_key=true.
      f6d4f624
  2. 12 Aug, 2018 1 commit
    • Varun Gupta's avatar
      MDEV-16722: Assertion `type() != NULL_ITEM' failed · befc09f0
      Varun Gupta authored
      We hit this assert during the create of a temporary table field
      because the current code does not handle the case when the value
      of the NAME_CONST function is NULL.
      Fixed this by allowing creation of temporary table fields even
      for the case when NAME_CONST returns NULL value.
      Introduced tmp_table_field_from_field_type_maybe_null() function
      in Item class so both Item_basic_value and Item_name_const can use it.
      Introduced a virtual method get_func_item() in the Item class.
      befc09f0
  3. 11 Aug, 2018 8 commits
  4. 10 Aug, 2018 3 commits
  5. 09 Aug, 2018 4 commits
    • Alexander Barkov's avatar
      MDEV-16928 Move MYSQL_TIME initialization from Field_xxx::store_time_dec() to... · d2bba4ce
      Alexander Barkov authored
      MDEV-16928 Move MYSQL_TIME initialization from Field_xxx::store_time_dec() to new constructors Time() and Datetime()
      d2bba4ce
    • Alexander Barkov's avatar
    • Monty's avatar
      Updated compress_qpress.result · 3f01c4fb
      Monty authored
      3f01c4fb
    • Alexander Barkov's avatar
      MDEV-14032 SEC_TO_TIME executes side effect two times · 8524bb68
      Alexander Barkov authored
      - Adding a helper class Sec6 to store (neg,seconds,microseconds)
      - Adding a helper class VSec6 (Sec6  with a flag for "IS NULL")
      - Wrapping related functions as methods of Sec6;
        * number_to_datetime()
        * number_to_time()
        * my_decimal2seconds()
        * Item::get_seconds()
        * A big piece of code in Item_func_sec_to_time::get_date()
      
      - Using the new classes in places where second-to-temporal
        conversion takes place:
        * Field_timestamp::store(double)
        * Field_timestamp::store(longlong)
        * Field_timestamp_with_dec::store_decimal(my_decimal)
        * Field_temporal_with_date::store(double)
        * Field_temporal_with_date::store(longlong)
        * Field_time::store(double)
        * Field_time::store(longlong)
        * Field_time::store_decimal(my_decimal)
        * Field_temporal_with_date::store_decimal(my_decimal)
        * get_interval_value()
        * Item_func_sec_to_time::get_date()
        * Item_func_from_unixtime::get_date()
        * Item_func_maketime::get_date()
        This change simplifies these methods and functions a lot.
      
      - Warnings are now sent at VSec6 initialization time, when the source
        data is available in its original data type representation.
      
        If Sec6::to_time() or Sec6::to_datetime() truncate data again during
        conversion to MYSQL_TIME, they send warnings, but only if no warnings
        were sent during VSec6 initialization. This helps prevents double warnings.
      
        The call for val_str() in Item_func_sec_to_time::get_date() is not
        needed any more, so it's removed. This change actually fixes the problem.
      
        As a good effect, FROM_UNIXTIME() and MAKETIME() now also send warnings
        in case if the seconds arguments is out of range. Previously these
        functions returned NULL silently.
      
      - Splitting the code in the global function make_truncated_value_warning()
        into a number of methods THD::raise_warning_xxxx().
        This was needed to reuse the logic that chooses between:
        * ER_TRUNCATED_WRONG_VALUE
        * ER_WRONG_VALUE
        * ER_TRUNCATED_WRONG_VALUE_FOR_FIELD
        for non-temporal data types (Sec6).
      
      - Removing:
        * Item::get_seconds()
        * number_to_time_with_warn()
        as this code now resides inside methods of Sec6.
      
      - Cleanup (changes that are not directly related to the fix):
        * Removing calls for field_name_or_null() and passing NULL instead
          in Item_func_hybrid_field_type::get_date_from_{int|real}_op,
          because Item_func_hybrid_field_type::field_name_or_null()
          always returns NULL
        * Replacing a number of calls for make_truncated_value_warning()
          to calls for THD::raise_warning_xxx(). In these places
          we know that the execution went through a certain
          branch of make_truncated_value_warning(),
          (e.g. the exact error code is known, or field name is always NULL,
           or field name is always not-NULL). So calls for the entire
          make_truncated_value_warning() after splitting are not necessary.
      8524bb68
  6. 07 Aug, 2018 5 commits
    • Otto Kekäläinen's avatar
      Deb: Don't define libzstd1 or other libraries as install dependencies manually · a12e6c5b
      Otto Kekäläinen authored
      If something was built using a build dependency, it will automatically
      be a install dependency via ${shlibs:Depends}, so no need to define it
      manually.
      
      This also fixes a bug related to a over autobake-deb.sh mangling
      the control file architecture field on Trusty and Jessie.
      a12e6c5b
    • Monty's avatar
      Fixed compile error on windows · 5d59a7b6
      Monty authored
      5d59a7b6
    • Alexander Barkov's avatar
      A cleanup for MDEV-16852 · 385ee993
      Alexander Barkov authored
      Changing data types for:
      - seconds from longlong to ulonglong
      - microseconds from long to ulong
      in:
      - parameters of calc_time_diff()
      - parameters of calc_time_from_sec()
      - Members of Sec6_add
      
      This will help to reuse the code easier:
      all other functions use ulonglong+long
      for seconds/microsecond, e.g.:
      
      - number_to_time()
      - number_to_datetime()
      - number_to_datetime_with_warn()
      - Field_temporal_with_date::store_decimal()
      - my_decimal2seconds()
      - Item::get_seconds()
      385ee993
    • Monty's avatar
      9da706fa
    • Alexander Barkov's avatar
      MDEV-16910 Add class VDec · cb7b5fbf
      Alexander Barkov authored
      Adding classes VDec and VDec2_lazy, according to the task description.
      This patch removes around 250 duplicate code lines.
      cb7b5fbf
  7. 05 Aug, 2018 6 commits
  8. 04 Aug, 2018 1 commit
  9. 03 Aug, 2018 1 commit
  10. 02 Aug, 2018 3 commits
  11. 01 Aug, 2018 2 commits
  12. 31 Jul, 2018 2 commits
  13. 30 Jul, 2018 1 commit
  14. 29 Jul, 2018 1 commit
    • Galina Shalygina's avatar
      MDEV-16730: Server crashes in Bitmap<64u>::merge · aee3d162
      Galina Shalygina authored
      The problem appears because of the pushdown of a non-pushable condition 'cond'
      into the materialized derived table/view. To prevent pushdown a map of
      tables that are used in 'cond' should be updated. This call is missing
      because of the MDEV-12387 changes. The call is added in the
      setup_jtbm_semi_joins() method.
      aee3d162
  15. 27 Jul, 2018 1 commit
    • Galina Shalygina's avatar
      MDEV-16721: Assertion `ctx.compare_type_handler()->cmp_type() != STRING_RESULT' · 2a3d3e05
      Galina Shalygina authored
      failed
      
      The bug appeared as in MDEV-12387 setup_jtbm_semi_joins() procedure had been
      devided into two functions, one called before optimization of WHERE clause
      and another after this optimization. When the second function was called for
      a degenerated jtbm semi join equalities connecting the subselect and
      the parent select were created but invocation of fix_fields() for these
      equalities was missing.
      2a3d3e05