1. 14 Aug, 2020 6 commits
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · cf87f3e0
      Marko Mäkelä authored
      cf87f3e0
    • Marko Mäkelä's avatar
      1bf77cde
    • Alexander Barkov's avatar
      MDEV-23478 Improve Protocol performance for numeric data - version 2 · 48cbb2c0
      Alexander Barkov authored
      The previous commit was erroneously marked as MDEV-23162.
      The correct issue is MDEV-23478.
      48cbb2c0
    • Alexander Barkov's avatar
      MDEV-23162 Improve Protocol performance for numeric data · c55f24cd
      Alexander Barkov authored
      An alternative implementation (replacing the one based on repertoire).
      
      This implementation makes Field send itself to Protocol_text using
      data type specific Protocol methods rather than field->val_str()
      followed by protocol_text->store_str().
      
      As now Field sends itself in the same way to all protocol types
      (e.g. Protocol_binary, Protocol_text, Protocol_local),
      the method Field::send_binary() was renamed just to Field::send().
      
      Note, this change introduces symmetry between Field and Item,
      because Items also send themself using a single method Item::send(),
      which is used for *all* protocol types.
      
      Performance improvement is achieved by the fact that Protocol_text
      implements these data type specific methods using store_numeric_string_aux()
      rather than store_string_aux(). The conversion now happens only when
      character_set_results is not ASCII compatible character sets
      (e.g. UCS2, UTF16, UTF32).
      
      In the old code (before any MDEV-23162 work, e.g. as of 10.5.4),
      Protocol_text::store(Field*) used val_str() for all data types.
      So the execution went through the character set conversion routines
      even for numeric and temporal data types.
      
      Benchmarking summary (see  details in MDEV-23478):
      
      The new approach stably demonstrates additional improvement comparing
      to the previous implementation (the smaller time - the better):
      
      Original   - the commit before MDEV-23162
                   be98036f
      
              1m9.336s
              1m9.290s
              1m9.300s
      
      MDEV-23162 - the repertoire optimization
      
              1m6.101s
              1m5.988s
              1m6.264s
      
      MDEV-23478 - this commit
      
              1m2.150s
              1m2.079s
              1m2.099s
      c55f24cd
    • Alexander Barkov's avatar
      Revert "MDEV-23162 Improve Protocol performance for numeric data" · f1a9700f
      Alexander Barkov authored
      This reverts commit eb2eaba7.
      
      A different implementation of MDEV-23162 is coming.
      f1a9700f
    • Alexander Barkov's avatar
  2. 13 Aug, 2020 7 commits
  3. 12 Aug, 2020 7 commits
    • Vladislav Vaintroub's avatar
      MDEV-23462 Upgrade wizard not offered during 10.5 MSI installation on Windows · 5eff7c02
      Vladislav Vaintroub authored
      There is no mysql_upgrade_wizard target, only mariadb-upgrade-wizard
      5eff7c02
    • Vladislav Vaintroub's avatar
      MDEV-23461 mysql_upgrade_wizard.exe differs from mariadb-upgrade-wizard.exe · 75410802
      Vladislav Vaintroub authored
      The post-build custom command to embed Vista elevation manifest into
      mariadb-upgrade-wizard.exe seems to do
      something nasty to the executable, perhaps it removes and recreates it.
      
      Thus the previously created hardlink mysql_upgrade_wizard is not marked
      to require elevation.
      
      Solved by using MANIFESTUAC linker flag, rather than invoke mt.exe.
      This avoids an extra post-build step that modifies mariadb-upgrade-wizard.exe
      75410802
    • 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 15 commits
  5. 10 Aug, 2020 5 commits