1. 15 Dec, 2021 3 commits
    • Monty's avatar
      Fixed some tests that failes when built with valgrind · 20f22dfa
      Monty authored
      Example build: ./BUILD/compile-pentium64-valgrind-max
      
      Fixes:
      - sp-no-valgrind failed if binary was built for valgrind as in this case
        mem_root is allocated in very small hunks which the test cannot handle.
        Fixed by testing of valgrind build
      - truncate_notembedded failed in reap because of more memory used.
        Fixed by allowing reap to fail too
      20f22dfa
    • Monty's avatar
      Add --optimizer_trace option to mysqltest · 607b14c4
      Monty authored
      This enables optimizer_trace output for the next SQL command.
      Identical as if one would have done:
      - Store value of @@optimizer_trace
      - Set @optimizer_trace="enabled=on"
      - Run query
      - SELECT * from OPTIMIZER_TRACE
      - Restore value of @@optimizer_trace
      
      This is a great time saver when one wants to quickly check the optimizer
      trace for a query in a mtr test.
      607b14c4
    • Monty's avatar
      MDEV-18187 Aria engine: Redo phase failed with "error 192 when executing... · 3691cc15
      Monty authored
      MDEV-18187 Aria engine: Redo phase failed with "error 192 when executing record redo_index_new_page" upon startup on a restored datadir
      
      The issue is that when recovery is about to create a new data or index
      page it check if the page already exits.
      If the page does not exists (file is too short) or contains wrong checksum,
      then the recovery code will recreate the page.
      The bug was that the code that checked if the page existed didn't take
      into account encrypted pages.
      
      Fixed by adding a check if page could not be encrypted solved the issue.
      I also added some code to silence decryption errors for new pages.
      
      Test case and some inspiration for how to solve this come from
      the pull request by alexandr.miloslavsky
      3691cc15
  2. 14 Dec, 2021 2 commits
    • Julius Goryavsky's avatar
      MDEV-27181: Galera SST scripts should use ssl_capath for CA directory · dda0bfaa
      Julius Goryavsky authored
      1. Galera SST scripts should use ssl_capath (not ssl_ca) for CA
         directory. The current implementation tries to automatically
         detect the path using the trailing slash in the ssl_ca variable
         value, but this approach is not compatible with the server
         configuration. Now, by analogy with the server, SST scripts
         also use a separate ssl_capath variable. In addition, a similar
         tcapath variable has been added for the old-style configuration
         (in the "sst" section).
      2. Openssl utility detection made more reliable.
      3. Removed extra spaces in automatically generated command lines -
         to simplify debugging of the SST scripts.
      4. In general, the code for detecting the presence or absence of
         auxiliary utilities has been improved - it is made more reliable
         in some configurations (and for shells other than bash).
      dda0bfaa
    • sjaakola's avatar
      Fix for the test galera.galera_UK_conflict · 66b492f3
      sjaakola authored
      mtr test galera.galera_UK_conflict, has rather distorted logic in test scenario 2.
      
      The test would fail always with:
      
      CURRENT_TEST: galera.galera_UK_conflict
      mysqltest: In included file "./include/galera_wait_sync_point.inc":
      included from /home/seppo/work/wsrep/mariadb-server/mysql-test/suite/galera/t/galera_UK_conflict.test at line 216:
      At line 3: query 'SET SESSION wsrep_on = 0' failed: 1179: You are not allowed to execute this command in a transaction
      
      This happens because wait_condition is called in wrong connection (node_1, which is excuting MST transaction)
      
      This test is fixed by using contl connection for wait contdition check, and new result is recorded as well
      66b492f3
  3. 10 Dec, 2021 1 commit
  4. 08 Dec, 2021 2 commits
  5. 07 Dec, 2021 1 commit
  6. 06 Dec, 2021 3 commits
  7. 03 Dec, 2021 3 commits
  8. 02 Dec, 2021 1 commit
  9. 01 Dec, 2021 1 commit
    • Jan Lindström's avatar
      Fix bad galera tests · d7b37de9
      Jan Lindström authored
      * galera_kill_applier : we should make sure that node has
        correct number of wsrep appliers
      * galera_bad_wsrep_new_cluster: This test restarts both nodes,
      so it is bad on mtr. Make sure it is run alone
      * galera_update_limit : Make sure we have PK when needed
      galera_as_slave_replay : bf abort was not consistent
      * galera_unicode_pk : Add wait_conditions so that all nodes
      are part of cluster and DDL and INSERT has replicated before
      any further operations are done.
      * galera_bf_abort_at_after_statement : Add wait_conditions
      to make sure all nodes are part of cluster and that DDL
      and INSERT has replicated. Make sure we reset DEBUG_SYNC.
      d7b37de9
  10. 30 Nov, 2021 2 commits
    • Martin Beck's avatar
      MDEV-27088: lf unit tests - cycles insufficient · 17802165
      Martin Beck authored
      Per bug report, cycles was woefully insufficient to
      detect any implementation error.
      17802165
    • Martin Beck's avatar
      MDEV-27088: Server crash on ARM (WMM architecture) due to missing barriers in lf-hash · 4e0dcf10
      Martin Beck authored
      MariaDB server crashes on ARM (weak memory model architecture) while
      concurrently executing l_find to load node->key and add_to_purgatory
      to store node->key = NULL. l_find then uses key (which is NULL), to
      pass it to a comparison function.
      
      The specific problem is the out-of-order execution that happens on a
      weak memory model architecture. Two essential reorderings are possible,
      which need to be prevented.
      
      a) As l_find has no barriers in place between the optimistic read of
      the key field lf_hash.cc#L117 and the verification of link lf_hash.cc#L124,
      the processor can reorder the load to happen after the while-loop.
      
      In that case, a concurrent thread executing add_to_purgatory on the same
      node can be scheduled to store NULL at the key field lf_alloc-pin.c#L253
      before key is loaded in l_find.
      
      b) A node is marked as deleted by a CAS in l_delete lf_hash.cc#L247 and
      taken off the list with an upfollowing CAS lf_hash.cc#L252. Only if both
      CAS succeed, the key field is written to by add_to_purgatory. However,
      due to a missing barrier, the relaxed store of key lf_alloc-pin.c#L253
      can be moved ahead of the two CAS operations, which makes the value of
      the local purgatory list stored by add_to_purgatory visible to all threads
      operating on the list. As the node is not marked as deleted yet, the
      same error occurs in l_find.
      
      This change three accesses to be atomic.
      
      * optimistic read of key in l_find lf_hash.cc#L117
      * read of link for verification lf_hash.cc#L124
      * write of key in add_to_purgatory lf_alloc-pin.c#L253
      
      Reviewers: Sergei Vojtovich, Sergei Golubchik
      
      Fixes: MDEV-23510 / d30c1331a18d875e553f3fcf544997e4f33fb943
      4e0dcf10
  11. 29 Nov, 2021 4 commits
  12. 26 Nov, 2021 5 commits
    • Igor Babaev's avatar
      MDEV-26553 NOT IN subquery construct crashing 10.1 and up · ac963142
      Igor Babaev authored
      This bug was introduced by commit be00e279
      The commit was applied for the task MDEV-6480 that allowed to remove top
      level disjuncts from WHERE conditions if the range optimizer evaluated them
      as always equal to FALSE/NULL.
      If such disjuncts are removed the WHERE condition may become an AND formula
      and if this formula contains multiple equalities the field JOIN::item_equal
      must be updated to refer to these equalities. The above mentioned commit
      forgot to do this and it could cause crashes for some queries.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      ac963142
    • Sergei Golubchik's avatar
      MDEV-26972 MTR worker aborts after server restart failure · f5441ef4
      Sergei Golubchik authored
      restore the old behavior where without a debugger mtr does not
      wait for mysqld to start. It was broken in feacc0aa
      f5441ef4
    • Sergei Golubchik's avatar
      MDEV-26755 innodb.undo_truncate: ilink::assert_linked(): Assertion `prev != 0 && next != 0' failed · a96b4282
      Sergei Golubchik authored
      close_connections() in mysqld.cc sends a signal to all threads.
      But InnoDB is too busy purging, doesn't react immediately.
      close_connections() waits 20 seconds, which isn't enough in this
      particular case, and then unlinks all threads from
      the list and forcibly closes their vio connection.
      
      InnoDB background  threads have no vio connection to close, but
      they're unlinked all the same. So when later they finally notice
      the shutdown request and try to unlink themselves, they fail to
      assert that they're still linked.
      
      Fix: don't assert_linked, as another thread can unlink this THD anytime
      a96b4282
    • Sergei Golubchik's avatar
      add a test case · 4ba74785
      Sergei Golubchik authored
      MDEV-20330 Combination of "," (comma), cross join and left join fails to parse
      4ba74785
    • Hugo Wen's avatar
      MDEV-27124: Update definer of Add/DropGeometryColumn procedures from 'root' to 'mariadb.sys' · e9572e53
      Hugo Wen authored
      From 10.4.13, the `mariadb.sys` user was created to replace `root` definers.
       - In commit 0253ea7f, definer of
         Add/DropGeometryColumn procedures was changed to `mariadb.sys`, in
         `scripts/maria_add_gis_sp.sql.in`.
         However, maria_add_gis_sp.sql only applies to new databases created by
         installation script. Databases upgraded from old versions will miss this
         change.
       - In addition, according to commit
         0d6d801e(MDEV-23102), in some scenarios
         when root user is replaced it will skip creating `mariadb.sys` user.
      
      This commit is to update the definer from `root` to `mariadb.sys` during
      upgrade. It only makes the change if the original definers are root.
      
      Doesn't choose to execute `maria_add_gis_sp.sql` in upgrade script to
      recreate the procedures is because of considering the scenarios of
      MDEV-23102 that `root` user is replaced and `mariadb.sys` is not created.
      
      All new code of the whole pull request, including one or several files
      that are either new files or modified ones, are contributed under the
      BSD-new license. I am contributing on behalf of my employer Amazon Web
      Services, Inc.
      e9572e53
  13. 24 Nov, 2021 5 commits
  14. 23 Nov, 2021 6 commits
    • Alexey Bychko's avatar
      MDEV-22522 RPM packages have meaningless summary/description · fe065f8d
      Alexey Bychko authored
      this patch moves cpack summury and description for optional packages
      to the appropriate CMakeLists.txt files
      fe065f8d
    • Julius Goryavsky's avatar
      1c7dd233
    • Julius Goryavsky's avatar
      MDEV-26915: SST scripts do not take log_bin_index setting into account · 2f51511c
      Julius Goryavsky authored
      Currently, SST scripts assume that the filename specified in
      the --log-bin-index argument either does not contain an extension
      or uses the standard ".index" extension. Similar assumptions are
      used for the log_bin_index parameter read from the configuration
      file. This commit adds support for arbitrary extensions for the
      index file paths.
      2f51511c
    • Julius Goryavsky's avatar
      MDEV-26064: mariabackup SST fails when starting with --innodb-force-recovery · b9525997
      Julius Goryavsky authored
      If the server is started with the --innodb-force-recovery argument
      on the command line, then during SST this argument can be passed to
      mariabackup only at the --prepare stage, and accordingly it must be
      removed from the --mysqld-args list (and it is not should be passed
      to mariabackup otherwise).
      
      This commit fixes a flaw in the SST scripts and add a test that
      checks the ability to run the joiner node in a configuration that
      uses --innodb-force-recovery=1.
      b9525997
    • Julius Goryavsky's avatar
      MDEV-26915: SST scripts do not take log_bin_index setting into account · 1ea7d596
      Julius Goryavsky authored
      Currently, SST scripts assume that the filename specified in
      the --log-bin-index argument either does not contain an extension
      or uses the standard ".index" extension. Similar assumptions are
      used for the log_bin_index parameter read from the configuration
      file. This commit adds support for arbitrary extensions for the
      index file paths.
      1ea7d596
    • Julius Goryavsky's avatar
      MDEV-26064: mariabackup SST fails when starting with --innodb-force-recovery · f21a36d5
      Julius Goryavsky authored
      If the server is started with the --innodb-force-recovery argument
      on the command line, then during SST this argument can be passed to
      mariabackup only at the --prepare stage, and accordingly it must be
      removed from the --mysqld-args list (and it is not should be passed
      to mariabackup otherwise).
      
      This commit fixes a flaw in the SST scripts and add a test that
      checks the ability to run the joiner node in a configuration that
      uses --innodb-force-recovery=1.
      f21a36d5
  15. 21 Nov, 2021 1 commit
    • Igor Babaev's avatar
      MDEV-26470 "No database" selected when using CTE in a subquery of DELETE statement · 114e18b8
      Igor Babaev authored
      This bug led to reporting bogus messages "No database selected" for DELETE
      statements if they used subqueries in their WHERE conditions and these
      subqueries contained references to CTEs.
      The bug happened because the grammar rule for DELETE statement did not
      call the function LEX::check_cte_dependencies_and_resolve_references() and
      as a result of it references to CTEs were not identified as such.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      114e18b8