1. 21 Jul, 2021 1 commit
  2. 20 Jul, 2021 7 commits
  3. 19 Jul, 2021 4 commits
  4. 16 Jul, 2021 6 commits
    • Vladislav Vaintroub's avatar
      MDEV-19237 - Fix assertion in should_send_column_info · 74f5aa16
      Vladislav Vaintroub authored
      COM_STMT_BULK_EXECUTE, just like COM_STMT_EXECUTE can also skip result set
      metadata, if bulk is used with statement that returns result set, i.e
      INSERT/DELETE RETURNING.
      74f5aa16
    • Vladislav Vaintroub's avatar
      merge 10.5 to 10.6 · e7f4daf8
      Vladislav Vaintroub authored
      e7f4daf8
    • Sergei Golubchik's avatar
      MDEV-22221: MariaDB with WolfSSL doesn't support AES-GCM cipher for SSL · 7af5d96f
      Sergei Golubchik authored
      commit the forgotten result file
      
      followup for b81803f0
      7af5d96f
    • Sergei Golubchik's avatar
      fix perfschema.sizing_* tests to run · bd3ac675
      Sergei Golubchik authored
      still cannot be enabled permanently, but at least they
      could be run manually, if needed
      bd3ac675
    • Vladislav Vaintroub's avatar
      MDEV-26166 replace log_write_up_to(LSN_MAX,...) with log_buffer_flush_to_disk() · fc2ec257
      Vladislav Vaintroub authored
      Also, remove comparison lsn > flush/write lsn, prior to calling
      log_write_up_to. The checks and early returns are part of this function.
      fc2ec257
    • Dmitry Shulga's avatar
      MDEV-26150: The test main.opt_trace fails in case it is run in PS mode · 461cac89
      Dmitry Shulga authored
      In case the test main.opt_trace is run with the option --ps-protocol
      it fails since querying from the table INFORMATION_SCHEMA.OPTIMIZER_TRACE
      produces an output that differed from the expected one in the following way:
        @@ -2829,14 +2829,6 @@
                           }
                         },
                         {
        -                  "transformation": {
        -                    "select_id": 2,
        -                    "from": "IN (SELECT)",
        -                    "to": "semijoin",
        -                    "chosen": true
        -                  }
        -                },
        -                {
                           "expanded_query": "/* select#2 */ select t10.pk from t10"
                         }
      
      The table INFORMATION_SCHEMA.OPTIMIZER_TRACE is filled when optimizer_trace is on.
      The reason of missing above mentioned pieces in query result set is that
      the C++ macros
        OPT_TRACE_TRANSFORM(thd, trace_wrapper, trace_transform,
                            select_lex->select_number,
                            "IN (SELECT)", "semijoin");
      located in the standalone function check_and_do_in_subquery_rewrites()
      is executed twice in case the statement
        explain extended select * from t1 where a in (select pk from t10);
      is run in PS mode. The first time it is executed on PREPARE phase and
      the second time on EXECUTE phase. The output produced by this macros on
      EXECUTE phase rewrites the output produced on PREPARE phase.
      In result test failed in case it was run in PS mode.
      
      To make test output uniform regardless the test is run in PS or normal
      mode the operator '--source include/protocol.inc' has been added to
      the file opt_trace.test and extra opt_trace,ps.rdiff file has been added.
      
      Additionally, added operators
        --enable_prepared_warnings/--disable_prepared_warnings
      in order to store warnings in result file that received on PREPARE phase
      during running the statemement 'SELECT INTO'.
      461cac89
  5. 15 Jul, 2021 3 commits
    • Oleksandr Byelkin's avatar
      MDEV-21916: COM_STMT_BULK_EXECUTE with RETURNING insert wrong values · a7d880f0
      Oleksandr Byelkin authored
      The problem is that array binding uses net buffer to read parameters for each
      execution while each execiting with RETURNING write in the same buffer.
      
      Solution is to allocate new net buffer to avoid changing buffer we are reading
      from.
      a7d880f0
    • Rucha Deodhar's avatar
      826eab3f
    • Dmitry Shulga's avatar
      MDEV-26142: Fix failures of the tests main.features and... · 429382c2
      Dmitry Shulga authored
      MDEV-26142: Fix failures of the tests main.features and sys_vars.stored_program_cache_func when they are run in PS mode
      
      These tests produced different results in case they were run
      with the option --ps-protocol.
      
      These tests produced different result sets since a value of
      Feature_subquery and handler_read_key status system variables
      are updated one time more for ps-protocol (the first time it is updated
      on Prepare phase and the second time on Execute phase of PS protocol)
      So different result sets are expected for both tests. To make tests
      successfully runnable both for case it is run with and without
      the option --ps-protocol the new protocol combination [ps, nm]
      and protocol specific result files have been added.
      
      Moreover, the perl script mysql-test/mariadb-test-run.pl
      has been updated to make the variable opt_ps_protocol visible
      outside perl file containing this variable.
      429382c2
  6. 14 Jul, 2021 3 commits
    • Dmitry Shulga's avatar
      MDEV-26146: The test main.limit_rows_examined fails in case it is run in PS mode. · ff0d3bb8
      Dmitry Shulga authored
      Test failed by firing assert in append_warnings() when it is called
      from run_query_stmt() and there are more results from server.
      
      Obviously, append_warnings() should be called after the last packet
      received from server. So, to fix the assertion failure the function
      mysql_more_results() has to be called to check that now more results
      does exist and invokes append_warnings() in case the condition satisfied.
      ff0d3bb8
    • Nayuta Yanagisawa's avatar
      MDEV-26139 Spider crashes with segmentation fault (signal 11) on CREATE TABLE... · e3814a74
      Nayuta Yanagisawa authored
      MDEV-26139 Spider crashes with segmentation fault (signal 11) on CREATE TABLE when COMMENT does not contain embedded double quotes
      
      The root cause of the bug MDEV-26139 is the lack of NULL checking
      on the variable `dq`.
      
      Comments on if (dq && (!sq || sq > dq)) {...} else {...}:
      
        * The if block corresponds to the case where parameters are
          quoted by double quotes. In that case, a single quote doesn't
          appear at all or only appears in the middle of double quotes.
      
        * The else block corresponds to the case where parameters are
          quoted by single quotes. In that case, a double quote doesn't
          appear at all or only appears in the middle of single quotes.
      
        * If the program reaches the if-else statement, `sq || dq` holds.
          Thus, the negation of `dq && (!sq || sq > dq)` is equivalent to
          `sq && (!dq || sq <= dq)`.
      e3814a74
    • Otto Kekäläinen's avatar
      Implement simple Gitlab-CI pipeline for MariaDB with RPM builds · 04369f9c
      Otto Kekäläinen authored
      As Travis-CI has stopped offering free testing for open source projects,
      and they don't seem to have any plans to revert their new restrictions,
      MariaDB no longer has a good CI system outside contributors could run
      independently for basic validation before submitting Pull Requests.
      
      Implement a simple Gitlab-CI pipeline that runs basic RPM builds on
      one old, one less old and one very new distro release and then do some
      basic tests on the RPM packages to validate they installed and the
      server actually runs.
      04369f9c
  7. 13 Jul, 2021 1 commit
  8. 12 Jul, 2021 1 commit
  9. 09 Jul, 2021 1 commit
    • Igor Babaev's avatar
      MDEV-26108 Crash with query referencing twice CTE that uses embedded recursive CTE · 78735dca
      Igor Babaev authored
      This bug could affect queries that had at least two references to a CTE that
      used an embedded recursive CTE.
      Starting from version 10.4 some code in With_element::clone_parsed_spec()
      that assumed a certain order of selects after parsing the specification of
      a CTE became not valid anymore. It could lead to global select lists where
      some selects were missing. If a missing CTE happened to belong to the
      recursive part of a recursive CTE some recursive table references were not
      set as references to materialized derived tables and this caused a crash of
      the server.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      78735dca
  10. 07 Jul, 2021 1 commit
    • Sergei Petrunia's avatar
      MDEV-26106: [ERROR] InnoDB: Unlock row could not find a 2 mode lock on the record · 35294053
      Sergei Petrunia authored
      Port the following patch from MySQL:
      
        commit 1b2e8ea269c80cb93cc79d8be934c40b1c58e947
        Author: Kailasnath Nagarkar <kailasnath.nagarkar@oracle.com>
        Date:   Fri Nov 30 16:43:13 2018 +0530
      
          Bug #20939184: INNODB: UNLOCK ROW COULD NOT FIND A 2 MODE
                         LOCK ON THE RECORD
      
          Issue:
          ------
          Consdier tables t1 and t2 such that t1 has multiple rows
          and join condition for t1 left join t2 results in only
          single row from t2.
      
          In this case, access to table t2 is const since there
          is a single row that qualifies the join condition.
      
          However, while executing the query, attempt is made to
          unlock t2's row multiple times.
      
          The current algorithm to fetch rows approximates to:
          1) Retrieve the row for t1.
          2) Retrieve the row for t2.
          3) Apply the join conditions.
             a) If condition evaluates to true:
                Project the row to the result.
             b) If condition evaluates to false:
                i) If t2's qep_tab->not_null_complement is true,
                   unlock t2's row.
                ii) Null-complement the row by calling
                    "evaluate_null_complemented_join_record()". In
                    this function qep_tab->not_null_complement is
                    set to false.
      
          The t2's only one row, that qualifies join condition,
          is unlocked in Step i) when t1's row is evaluated to
          false.
          When t1's next row is also evaluated to false, another
          attempt is made to unlock t2's already unlocked row.
      
          This results in following error being logged in error.log:
      
          "[ERROR] InnoDB: Unlock row could not find a 3 mode lock on
          the record. Current statement:
          select * from t1 left join t2 ......"
      
          Solution:
          ---------
          When a table's access method is "const", set record unlock
          method for this table to do no operation.
      35294053
  11. 06 Jul, 2021 8 commits
  12. 05 Jul, 2021 2 commits
  13. 04 Jul, 2021 1 commit
  14. 03 Jul, 2021 1 commit
    • Marko Mäkelä's avatar
      fixup 0a67b15a · 789a2a36
      Marko Mäkelä authored
      trx_t::free(): Declare xid as fully initialized in order to
      avoid tripping the subsequent MEM_CHECK_DEFINED
      (in WITH_MSAN and WITH_VALGRIND builds).
      789a2a36