1. 22 Feb, 2022 4 commits
    • Julius Goryavsky's avatar
      MDEV-27524: Incorrect binlogs after Galera SST using rsync and mariabackup · 17e0f522
      Julius Goryavsky authored
      This commit adds correct handling of binlogs for SST using rsync
      or mariabackup. Before this fix, binlogs were handled incorrectly -
      - only one (last) binary log file was transferred during SST, which
      then led to various failures (for example, when trying to list all
      events from the binary log). These bugs were long masked by flaws
      in the primitive binlogs handling code in the SST scripts, which
      causing binary logs files to be erased after transfer or not added
      to the binlog index on the joiner node. Now the correct transfer
      of all binary logs (not just the last of the binary log files) has
      been implemented both for the rsync (at the script level) and for
      the mariabackup (at the level of the main utility code).
      
      This commit also adds a new sst_max_binlogs=<n> parameter, which
      can be located in the [sst] section or in the [xtrabackup] section
      (historically, supported for mariabackup only, not for rsync), or
      in one of the server sections. This parameter specifies the number
      of binary log files to be sent to the joiner node during SST. This
      option is added for compatibility with old SST scripting behavior,
      which can be emulated by setting the sst_max_binlogs=1 (although
      in general this can cause problems for the reasons described above).
      In addition, setting the sst_max_binlogs=0 can be used to suppress
      the transmission of binary logs to the joiner nodes during SST
      (although sometimes a single file with the current binary log can
      still be transmitted to the joiner, even with sst_max_binlogs=0,
      because this sometimes necessary in modes that involve the use of
      GTIDs with Galera).
      
      Also, this commit ensures correct handling of paths to various
      innodb files and directories in the SST scripts, and fixes some
      problems with this that existed in mariabackup utility (which
      were associated with incorrect handling of the innodb_data_dir
      parameter in some scenarios).
      
      In addition, this commit contains the following enhancements:
      
       1) Added tests for mtr, which check the correct work with binlogs
          after SST (using rsync and mariabackup);
       2) Added correct handling of slashes at the end of all paths that
          the SST script receives as parameters;
       3) Improved parsing code for --mysqld-args parameters. Now it
          correctly processes the sequence "--" after the name of the
          one-letter option;
       4) Checking the secret signature during joiner authentication
          is made independent of presence of bash (as a unix shell)
          in the system and diff utility no longer needed to check
          certificates compliance;
       5) All directories that are necessary for the correct placement
          of various logs are automatically created by SST scripts in
          advance (before running mariabackup on the joiner node);
       6) Removal of old binary logs on joiner is done using the binlog
          index (if it exists) (not only by fixed pattern that based
          on the current binlog name, as before);
       7) Paths for placing binary logs are correctly processed if they
          are set as relative paths (to the datadir);
       8) SST scripts are made even more resistant to spaces in filenames
          (now for binlogs);
       9) In case of failure, SST scripts now always end with an exit
          code other than zero;
      10) SST script for rsync now correctly create a tar file with
          the binlogs, even if the paths to them (in the binlog index
          file) are specified as a mix of absolute and relative paths,
          and even if they do not match with the datadir path specified
          in the current configuration settings.
      17e0f522
    • Julius Goryavsky's avatar
    • Julius Goryavsky's avatar
      MDEV-27534: mariabackup: missing line in the compress_qpress.result · c753b3f6
      Julius Goryavsky authored
      This commit adds the missing line to the .result file for compress_qpress
      (in the mariabackup test suite).
      c753b3f6
    • Varun Gupta's avatar
      MDEV-15208: server crashed, when using ORDER BY with window function and UNION · 647e9523
      Varun Gupta authored
      (Edits by SergeiP: fix encryption.tempfiles_encrypted, re-word comment)
      
      Global ORDER BY clause of a UNION may not refer to 1) aggregate functions
      or 2) window functions.  setup_order() checked for #1 but not for #2.
      647e9523
  2. 21 Feb, 2022 2 commits
  3. 20 Feb, 2022 1 commit
  4. 17 Feb, 2022 4 commits
  5. 16 Feb, 2022 2 commits
  6. 15 Feb, 2022 2 commits
    • Brandon Nesterenko's avatar
      MDEV-16091: Seconds_Behind_Master spikes to millions of seconds · cdf19cd6
      Brandon Nesterenko authored
      The rpl.rpl_seconds_behind_master_spike test would sometimes
      timeout or take a very long time to complete. This happened
      because an MTR DEBUG_SYNC signal would be lost due to a
      subsequent call to RESET. I.e., the slave SQL thread would
      be paused due to the WAIT_FOR signal being lost, resulting in
      either a failed test if the `select master_pos_wait` timeout
      occurs first, or a very long run-time if the DBUG_SYNC timeout
      occurs first.
      
      The fix ensures that the MTR signal is processed by the slave
      SQL thread before issuing the call to RESET
      
      Reviewed By:
      ============
      Andrei Elkin <andrei.elkin@mariadb.com>
      cdf19cd6
    • Ustun Ozgur's avatar
      Fix typo in mysqadmin manpage · b557f263
      Ustun Ozgur authored
      b557f263
  7. 12 Feb, 2022 1 commit
  8. 11 Feb, 2022 2 commits
    • Marko Mäkelä's avatar
      Disable innodb_gis.rtree_compress2 · 1a7573d5
      Marko Mäkelä authored
      1a7573d5
    • Vlad Lesin's avatar
      MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB... · 3b10e8f8
      Vlad Lesin authored
      MDEV-27746 Wrong comparision of BLOB's empty preffix with non-preffixed BLOB causes rows count mismatch for clustered and secondary indexes during non-locking read
      
      row_sel_sec_rec_is_for_clust_rec() treats empty BLOB prefix field in
      secondary index as a field equal to any external BLOB field in clustered
      index. Row_sel_get_clust_rec_for_mysql::operator() doesn't zerro out
      clustered record pointer in row_search_mvcc(), and row_search_mvcc()
      thinks that delete-marked secondary index record has visible for
      "CHECK TABLE"'s read view old-versioned clustered index record, and
      row_scan_index_for_mysql() counts it as a row.
      
      The fix is to execute row_sel_sec_rec_is_for_blob() in
      row_sel_sec_rec_is_for_clust_rec() if clustered field contains BLOB's
      reference.
      3b10e8f8
  9. 10 Feb, 2022 5 commits
    • Sergei Petrunia's avatar
      MDEV-25636: Bug report: abortion in sql/sql_parse.cc:6294 · 3a525694
      Sergei Petrunia authored
      The asserion failure was caused by this query
      
        select /*id=1*/ from t1
        where
         col= ( select /*id=2*/ from ... where corr_cond1
                union
                select /*id=4*/ from ... where corr_cond2)
      
      Here,
      - select with id=2 was correlated due to corr_cond1.
      - select with id=4 was initially correlated due to corr_cond2, but then
        the optimizer optimized away the correlation, making the select with id=4
        uncorrelated.
      
      However, since select with id=2 remained correlated, the execution had to
      re-compute the whole UNION. When it tried to execute select with id=4, it
      hit an assertion  (join buffer already free'd).
      
      This is because select with id=4 has freed its execution structures after
      it has been executed once. The select is uncorrelated, so it did not expect
      it would need to be executed for the second time.
      
      Fixed this by adding this logic in
      st_select_lex::optimize_unflattened_subqueries():
      
        If a member of a UNION is correlated, mark all its members as
        correlated, so that they are prepared to be executed multiple times.
      3a525694
    • Sergei Golubchik's avatar
      MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra · 9e2c26b0
      Sergei Golubchik authored
      don't let Aria create a table that it cannot open
      9e2c26b0
    • Sergei Golubchik's avatar
      MDEV-26351 segfault - (MARIA_HA *) 0x0 in ha_maria::extra · 1b8bb441
      Sergei Golubchik authored
      use the correct check. before invoking handler methods we
      need to know that the table was opened, not only created.
      1b8bb441
    • Oleksandr Byelkin's avatar
      MDEV-25766 Unused CTE lead to a crash in find_field_in_tables/find_order_in_list · 0168d1ed
      Oleksandr Byelkin authored
      Do not assume that subquery Item always present.
      0168d1ed
    • Monty's avatar
      MDEV-27789 mysql_upgrade / mariadb-upgrade in 10.6.6 is putting password in host argument · ad1fb069
      Monty authored
      Removed all dependencies of command line arguments based on positions in
      an array (this kind of code should never have been written).
      Instead use option names, which are stable.
      
      Reviewer: Sergei Golubchik
      ad1fb069
  10. 09 Feb, 2022 1 commit
  11. 08 Feb, 2022 3 commits
  12. 07 Feb, 2022 1 commit
    • Sergei Petrunia's avatar
      MDEV-17785: Window functions not working in ONLY_FULL_GROUP_BY mode · 5c89386f
      Sergei Petrunia authored
      (Backport Varun Gupta's patch + edit the commit comment)
      
      Name resolution code produced errors for valid queries with window
      functions (but not for queries which used aggregate functions as
      window functions).
      
      Name resolution code worked incorrectly, because window function
      objects had is_window_func_sum_expr()=false. This was so, because
      mark_as_window_func_sum_expr() was only called for aggregate functions
      used as window functions.
      
      The fix is to call it for any window function.
      5c89386f
  13. 02 Feb, 2022 1 commit
  14. 29 Jan, 2022 2 commits
    • Sergei Golubchik's avatar
      e2b50213
    • Sergei Golubchik's avatar
      ASAN/valgrind errors in connect.misc test · 8afcda93
      Sergei Golubchik authored
      accessing freed memory.
      Before XMLCOL::WriteColumn() Tdbp->Clist gets assigned
      a nodelist in
      
            Clist = RowNode->SelectNodes(g, Colname, Clist);
      
      which is RowNode->Doc->Xop->nodesetval.
      
      In XMLCOL::WriteColumn()
      
              ValNode = ColNode->SelectSingleNode(g, Xname, Vxnp);
      
      calls LIBXMLDOC::GetNodeList() again, which frees the previous
      XPath object Xop and replaces it with a new one.
      
      In this case RowNode->Doc == ColNode->Doc, so Clist->Listp
      points to a freed memory now.
      8afcda93
  15. 28 Jan, 2022 3 commits
    • Sergei Golubchik's avatar
    • Monty's avatar
      Fixed result for embedded server · a1f630cc
      Monty authored
      - Revert wrongly record embedded result files. These were either
        recorded with normal server (not embedded) or an embedded server
        with not default compile option. This can be seen that the committed
        result file had replication variables which should never happen.
      
      - Reverted back change of include/is_embedded.inc. One cannot check for
        $MYSQL_EMBEDDED as this only tells if there exists an embedded
        server, not if the current server we are testing is the embedded
        server. This could easily be verified by doing
        'mtr sys_vars.sysvars_server_embedded'. This would fail with a wrong
        result instead of being marked as skipped as --embedded was not
        used.
      a1f630cc
    • Monty's avatar
      Fixed wrong function call in embedded server · 7045ec27
      Monty authored
      This happens when compiled with HAVE_EMBEDDED_PRIVILEGE_CONTROL.
      There is a lot of other problems with the above option that should
      be fixed at some point
      7045ec27
  16. 27 Jan, 2022 6 commits