1. 14 Aug, 2020 2 commits
  2. 13 Aug, 2020 6 commits
  3. 12 Aug, 2020 5 commits
    • Marko Mäkelä's avatar
      MDEV-20672 Inconsistent usage message for innodb_compression_algorithm · 101ce10d
      Marko Mäkelä authored
      The usage message for the innodb_compression_algorithm system variable
      did not list snappy, which was added as an optional compression algorithm
      in MariaDB 10.1.3 and might actually work since
      commit 90c52e52 (MDEV-12615)
      in MariaDB 10.1.24.
      
      Unfortunately, we will include also unavailable compression algorithms
      in the list, because ENUM parameters allow numeric values, and we do
      not want innodb_compression_algorithm=3 to change meaning depending on
      the way how the source code was compiled.
      101ce10d
    • Marko Mäkelä's avatar
      MDEV-19526 heap number overflow on innodb_page_size=64k · efd8af53
      Marko Mäkelä authored
      InnoDB only reserves 13 bits for the heap number in the record header,
      limiting the heap number to be at most 8191. But, when using
      innodb_page_size=64k and secondary index records of 7 bytes each,
      it is possible to exceed the maximum heap number.
      
      btr_cur_optimistic_insert(): Let the operation fail if the
      maximum number of records would be exceeded.
      
      page_mem_alloc_heap(): Move to the same compilation unit with the
      only caller, and let the operation fail if the maximum heap number
      has been allocated already.
      efd8af53
    • Marko Mäkelä's avatar
      MDEV-23439 Assertion size == space->size failed in buf_read_ahead_random · 18f374cb
      Marko Mäkelä authored
      The debug assertion is bogus, and we had removed it in
      commit b1ab211d (MDEV-15053)
      in the MariaDB Server 10.5 branch.
      
      For a small data file, fil_space_extend_must_retry() would always
      allocate a minimum size of 4*innodb_page_size.
      
      It is possible that random read-ahead will be triggered for
      a smaller file than this. In the observed case, the read-ahead
      was triggered for a 6-page file that used ROW_FORMAT=COMPRESSED
      with 8KiB page size. So, the desired file size was 49152 bytes,
      but the actual size was 65536 bytes.
      18f374cb
    • Marko Mäkelä's avatar
      Use DBUG_ASSERT(ptr != NULL) to ease merging to 10.3 · 4387e3a1
      Marko Mäkelä authored
      In 10.3, DBUG_ASSERT() may expand to something that includes
      __builtin_expect(), which expects integer arguments, not pointers.
      To avoid any compiler warnings, let us use an explicit rather than
      implicit comparison to the null pointer.
      4387e3a1
    • Eugene Kosov's avatar
      replace assert() with DBUG_ASSERT() · 5a4ae142
      Eugene Kosov authored
      5a4ae142
  4. 11 Aug, 2020 12 commits
  5. 10 Aug, 2020 14 commits
  6. 08 Aug, 2020 1 commit
    • Alexander Barkov's avatar
      MDEV-23415 Server crash or Assertion `dec_length <= str_length' failed in... · fe555b9c
      Alexander Barkov authored
      MDEV-23415 Server crash or Assertion `dec_length <= str_length' failed in Item_func_format::val_str_ascii
      
      Problem:
      
      The crash happened in FORMAT(double, dec>=31, 'de_DE').
      
      The patch for MDEV-23118 (commit 0041dacc)
      did not take into account that String::set_real() has a limit of 31
      (FLOATING_POINT_DECIMALS) fractional digits. So for the range of 31..38
      digits, set_real() switches to use:
      - my_fcvt() - decimal point notation, e.g. 1.9999999999
      - my_gcvt() - scientific notation,    e.g. 1e22
      
      my_gcvt() returned a shorter string than Item_func_format::val_str_ascii()
      expected to get after the my_fcvt() call, so it crashed on assert.
      
      Solution:
      
      We cannot extend set_real() to use the my_fcvt() mode for the range of
      31..38 fractional digits, because set_real() is used in a lot of places
      and such a change will break everything.
      
      Introducing String::set_fcvt() which always prints using my_fcvt()
      for the whole range of decimals 0..38, supported by the FORMAT() function.
      fe555b9c