1. 10 Mar, 2020 15 commits
    • Marko Mäkelä's avatar
      589a21c6
    • Alexander Barkov's avatar
    • Varun Gupta's avatar
      Fixing a compilation failure on windows · 00749980
      Varun Gupta authored
      00749980
    • Sujatha's avatar
      MDEV-10047: table-based master info repository · 9ae01587
      Sujatha authored
      Problem:
      =======
      When we upgrade from "mysql" to "mariadb" if slave is using repositories as
      tables their data is completely ignored and no warning is issued in error log.
      
      Fix:
      ===
      "mysql_upgrade" test should check for the presence of data in
      "mysql.slave_master_info" and "mysql.slave_relay_log_info" tables. When tables
      have some data the upgrade script should report a warning which hints users
      that the data in repository tables will be ignored.
      9ae01587
    • Varun Gupta's avatar
      MDEV-21580: Allow packed sort keys in sort buffer · b753ac06
      Varun Gupta authored
      This task deals with packing the sort key inside the sort buffer, which  would
      lead to efficient usage of the memory allocated for the sort buffer.
      
      The changes brought by this feature are
        1) Sort buffers would have sort keys of variable length
        2) The format for sort keys inside the sort buffer would look like
           |<sort_length><null_byte><key_part1><null_byte><key_part2>.......|
            sort_length is the extra bytes that are required to store the variable
            length of a sort key.
        3) When packing of sort key is done we store the ORIGINAL VALUES inside
           the sort buffer and not the STRXFRM form (mem-comparable sort keys).
        4) Special comparison function packed_keys_comparison() is introduced
           to compare 2 sort keys.
      
      This patch also contains contributions from Sergei Petrunia.
      b753ac06
    • Marko Mäkelä's avatar
      MDEV-21748 ASAN use-after-poison in PageBulk::insertPage() · 561b5ce3
      Marko Mäkelä authored
      PageBulk::insertPage(): Check the array bounds before comparing.
      We used to read one byte beyond the end of the 'rec' payload.
      The incorrect logic was originally introduced in
      commit 7ae21b18.
      561b5ce3
    • Marko Mäkelä's avatar
      MDEV-15528: Minor cleanup · e2e2f893
      Marko Mäkelä authored
      buf_flush_freed_page(): Reformat in the common style, and
      simplify some code. Prefer to request all information from
      smaller data structures (buf_page_t) than from fil_space_t
      or the global variable srv_immediate_scrub_data_uncompressed.
      
      SysTablespace::open_or_create(): Assert that the temporary
      tablespace will not be created in page_compressed format, so that
      buf_flush_freed_page() can avoid checking that on every call.
      
      IORequest: Remove duplicated constructors, and do not explicitly
      declare a default constructor.
      e2e2f893
    • Otto Kekäläinen's avatar
      Deb: Update Debian packaging to include mytop and all new man pages · e0e5d8c5
      Otto Kekäläinen authored
      Related to MDEV-21769.
      e0e5d8c5
    • Otto Kekäläinen's avatar
      Add a man page for mytop that is in sources · 86070765
      Otto Kekäläinen authored
      Related to MDEV-21769.
      86070765
    • Otto Kekäläinen's avatar
      Use correct reference in man page links · c7c0959c
      Otto Kekäläinen authored
      After the '.so' one is supposed to use the directory name, like we have
      correctly in all old man pages:
        mysql_client_test_embedded.1:.so man1/mysql_client_test.1
        mysql_embedded.1:.so man1/mysql.1
        mysqltest_embedded.1:.so man1/mysqltest.1
      
      This change adds the 'man1/' component so the link has the correct format.
      Actually using man links is a deprecated practice and using symlinks
      would be better, but that can be fixed in a later commit.
      
      From https://www.debian.org/doc/debian-policy/ch-docs.html#manual-pages:
      > If one man page needs to be accessible via several names it is better
      > to use a symbolic link than the .so feature
      
      Detected via Lintian errors:
        E: mariadb-server-10.5: bad-so-link-within-manual-page usr/share/man/man1/mariadb-show.1.gz
        E: mariadb-client-10.5: bad-so-link-within-manual-page usr/share/man/man1/mariadb-binlog.1.gz
        E: mariadb-client-10.5: bad-so-link-within-manual-page usr/share/man/man1/mariadb-plugin.1.gz
      
      Related to MDEV-21769.
      c7c0959c
    • Otto Kekäläinen's avatar
      Fix syntax error mysql-test-run in man page · 32fdf81f
      Otto Kekäläinen authored
      This fixes errors like:
      
        $ LC_ALL=en_US.UTF-8 MANROFFSEQ='' MANWIDTH=80 \
          man --warnings -E UTF-8 -l -Tutf8 -Z mysql-test-run.pl.1 > /dev/null
      
        troff: <standard input>:246: warning [p 2, 6.0i, div '3tbd1,1', 0.3i]: can't break line
        troff: <standard input>:275: warning [p 2, 6.0i, div '3tbd6,1', 0.8i]: can't break line
      
      Related to MDEV-21769.
      32fdf81f
    • Otto Kekäläinen's avatar
      Add missing man pages for myrocks_hotbackup · 0335af74
      Otto Kekäläinen authored
      Related to MDEV-21769.
      0335af74
    • Oleksandr Byelkin's avatar
      MDEV-20632: Recursive CTE cycle detection using CYCLE clause (nonstandard) · 50c09391
      Oleksandr Byelkin authored
      Added CYCLE ... RESTRICT (nonstandard) clause to recursive CTE.
      50c09391
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-15528 Punch holes when pages are freed · a5584b13
      Thirunarayanan Balathandayuthapani authored
      The following parameters are deprecated:
      
        innodb-background-scrub-data-uncompressed
        innodb-background-scrub-data-compressed
        innodb-background-scrub-data-interval
        innodb-background-scrub-data-check-interval
      
      Removed scrubbing code completely(btr0scrub.h, btr0scrub.cc)
      Removed information_schema.innodb_tablespaces_scrubbing tables
      Removed the scrubbing logic from fil_crypt_thread()
      a5584b13
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-15528 Punch holes when pages are freed · a35b4ae8
      Thirunarayanan Balathandayuthapani authored
      When a InnoDB data file page is freed, its contents becomes garbage,
      and any storage allocated in the data file is wasted. During flushing,
      InnoDB initializes the page with zeros if scrubbing is enabled. If the
      tablespace is compressed then InnoDB should punch a hole else ignore the
      flushing of the freed page.
      
      buf_page_t:
      - Replaced the variable file_page_was_freed, init_on_flush in buf_page_t
      with status enum variable.
      - Changed all debug assert of file_page_was_freed to DBUG_ASSERT
      of buf_page_t::status
      
      Removed buf_page_set_file_page_was_freed(),
      buf_page_reset_file_page_was_freed().
      
      buf_page_free(): Newly added function which takes X-lock on the page
      before marking the status as FREED. So that InnoDB flush handler can
      avoid concurrent flush of the freed page. Also while flushing the page,
      InnoDB make sure that redo log which does freeing of the page also written
      to the disk. Currently, this function only marks the page as FREED if
      it is in buffer pool
      
      buf_flush_freed_page(): Newly added function which initializes zeros
      asynchorously if innodb_immediate_scrub_data_uncompressed is enabled.
      Punch a hole to the file synchorously if page_compressed is enabled.
      Reset the io_fix to NORMAL. Release the block from flush list and
      associated mutex before writing zeros or punch a hole to the file.
      
      buf_flush_page(): Removed the unnecessary usage of temporary
      variable "flush"
      
      fil_io(): Introduce new parameter called punch_hole. It allows fil_io()
      to punch the hole to the file for the given offset.
      
      buf_page_create(): Let the callers assign buf_page_t::status.
      Every caller should eventually invoke mtr_t::init().
      
      fsp_page_create(): Remove the unused mtr_t parameter.
      
      In all other callers of buf_page_create() except fsp_page_create(),
      before invoking mtr_t::init(), invoke
      mtr_t::sx_latch_at_savepoint() or mtr_t::x_latch_at_savepoint().
      
      mtr_t::init(): Initialize buf_page_t::status also for the temporary
      tablespace (when redo logging is disabled), to avoid assertion failures.
      a35b4ae8
  2. 09 Mar, 2020 7 commits
  3. 07 Mar, 2020 3 commits
    • Marko Mäkelä's avatar
      Cleanup: Remove recv_sys.remove_extra_log_files · 57c592f7
      Marko Mäkelä authored
      create_log_file(): Delete all old redo log files where they used to be
      deleted, after the crash injection point innodb_log_abort_6,
      before commit 9ef2d29f
      deprecated and ignored the setting innodb_log_files_in_group.
      57c592f7
    • Marko Mäkelä's avatar
      Cleanup: log upgrade and encryption · 70f0dbe4
      Marko Mäkelä authored
      log_crypt_101_read_checkpoint(), log_crypt_101_read_block():
      Declare as ATTRIBUTE_COLD. These are only used when
      checking that a MariaDB 10.1 encrypted redo log is clean.
      
      log_block_calc_checksum_format_0(): Define in the only
      compilation unit where it is needed. This is only used
      when reading the checkpoint information from redo logs
      before MariaDB 10.2.2.
      
      crypt_info_t: Declare the byte arrays directly with alignas().
      
      log_crypt(): Use memcpy_aligned instead of reinterpret_cast
      on integers.
      70f0dbe4
    • Marko Mäkelä's avatar
      Cleanup: Remove recv_sys.buf_size · 522fbfcb
      Marko Mäkelä authored
      Also, correctly document what recv_sys.mutex is protecting.
      522fbfcb
  4. 06 Mar, 2020 4 commits
  5. 05 Mar, 2020 7 commits
  6. 04 Mar, 2020 4 commits