1. 11 Oct, 2023 1 commit
    • Dmitry Shulga's avatar
      MDEV-32123: require_secure_transport doesn't allow TCP connections · a05b5dd5
      Dmitry Shulga authored
      In case the option require_secure_transport is on the user can't
      establish a secure ssl connection over TCP protocol. Inability to set up
      a ssl session over TCP was caused by the fact that a type of client's
      connection was checked before ssl handshake performed (ssl handshake
      happens at the function acl_authenticate()). At that moment vio type has
      the value VIO_TYPE_TCPIP for client connection that uses TCP transport.
      In result, checking for allowable vio type for fails despite the fact
      that SSL session being established. To fix the issue move checking of
      vio type for allowable values inside the function
        parse_client_handshake_packet()
      right after client's capabilities discovered that SSL is not requested
      by the client.
      a05b5dd5
  2. 30 Sep, 2023 1 commit
  3. 29 Sep, 2023 3 commits
  4. 27 Sep, 2023 1 commit
  5. 25 Sep, 2023 1 commit
  6. 24 Sep, 2023 3 commits
  7. 23 Sep, 2023 2 commits
  8. 19 Sep, 2023 1 commit
    • Marko Mäkelä's avatar
      MDEV-32044 Mariadb crash after upgrading to 11.0.3 · 030ee267
      Marko Mäkelä authored
      ibuf_bitmap_buffered(): A new predicate, to check if the
      IBUF_BITMAP_BUFFERED bit for a particular page is set.
      
      ibuf_merge(): If ibuf_bitmap_buffered() does not hold,
      skip the records for the page. One reason why we might have
      this situation is the bug that was fixed in
      commit 34c283ba (MDEV-32132).
      030ee267
  9. 15 Sep, 2023 1 commit
  10. 11 Sep, 2023 1 commit
  11. 09 Sep, 2023 2 commits
    • Monty's avatar
      Updated sql-bench to run with PostgreSQL 14.9 · e39ed5d7
      Monty authored
      - Updated capabilities for PostgreSQL in server.cfg
      - Updated test-ATIS & test-table-elimination to work with PostgreSQL
      - Updated test-transaction test to also work with non transactional tables
      
      Other things:
      - Added test of tables with many keys in test-insert
      - Added 2 new GROUP BY .. ORDER BY test
      e39ed5d7
    • Monty's avatar
      Added support for --skip-secure-file-priv · 69c420be
      Monty authored
      This works the same as secure-file-priv="", but is more obvious way to
      turn of secure-file-priv.
      69c420be
  12. 08 Sep, 2023 2 commits
  13. 30 Aug, 2023 1 commit
  14. 29 Aug, 2023 1 commit
  15. 28 Aug, 2023 2 commits
  16. 25 Aug, 2023 1 commit
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-31835 Remove unnecessary extra HA_EXTRA_IGNORE_INSERT call · bf3b787e
      Thirunarayanan Balathandayuthapani authored
      - This commit is different from 10.6 commit c4382848.
      Due to Commit 045757af (MDEV-24621),
      InnoDB does buffer and pre-sort the records for each index, and build
      the indexes one page at a time.
      
      Multiple large insert ignore statment aborts the server during bulk
      insert operation. Problem is that InnoDB merge record exceeds
      the page size. To avoid this scenario, InnoDB should catch
      too big record while buffering the insert operation itself.
      
      row_merge_buf_encode(): returns length of the encoded index record
      
      row_merge_buf_write(): Catches the DB_TOO_BIG_RECORD earlier and
      returns error
      bf3b787e
  17. 24 Aug, 2023 3 commits
  18. 21 Aug, 2023 2 commits
  19. 18 Aug, 2023 3 commits
  20. 17 Aug, 2023 3 commits
  21. 16 Aug, 2023 3 commits
    • Sergei Petrunia's avatar
      MDEV-31432 tmp_table field accessed after free · 8aaacb55
      Sergei Petrunia authored
      Before this patch, the code in Item_field::print() used
      this convention (described in sql_explain.h:ExplainDataStructureLifetime):
      
      - By default, the table that Item_field refers to is accessible.
      - ANALYZE and SHOW {EXPLAIN|ANALYZE} may print Items after some
        temporary tables have been dropped. They use
        QT_DONT_ACCESS_TMP_TABLES flag. When it is ON, Item_field::print
        will not access the table it refers to, if it is a temp.table
      
      The bug was that EXPLAIN statement also may compute subqueries (depending
      on subquery context and @@expensive_subquery_limit setting). After the
      computation, the subquery calls JOIN::cleanup(true) which drops some of
      its temporary tables. Calling Item_field::print() that refer to such table
      will cause an access to free'd memory.
      
      In this patch, we take into account that query optimization can compute
      a subquery and discard its temporary tables. Item_field::print() now
      assumes that any temporary table might have already been dropped.
      This means QT_DONT_ACCESS_TMP_TABLES flag is not needed - we imply it is
      always present.
      
      But we also make one exception: derived tables are not freed in
      JOIN::cleanup() call. They are freed later in close_thread_tables(),
      at the same time when regular tables are closed.
      Because of that, Item_field::print may assume that temp.tables
      representing derived tables are available.
      
      Initial patch by: Rex Jonston
      Reviewed by: Monty <monty@mariadb.org>
      8aaacb55
    • Marko Mäkelä's avatar
      Merge 10.6 into 10.10 · 9cd29895
      Marko Mäkelä authored
      9cd29895
    • Alexander Barkov's avatar
      After-merge cleanup for MDEV-27207 + MDEV-31719 · 88dd50b8
      Alexander Barkov authored
      Something went wrong during a merge (from 10.5 to 10.6)
      of 68403eed
      (fixing bugs MDEV-27207 and MDEV-31719).
      
      Originally (in 10.5) the fix was done in_inet6::set() in
      plugin/type_inet/sql_type_inet.cc.
      In 10.6 this code resides in a different place:
      in the method in_fbt::set() of a template class
      in sql/sql_type_fixedbin.h.
      
      During the merge:
      - the fix did not properly migrate to in_fbt::set()
      - the related MTR tests disappeared
      
      This patch fixes in_fbt::set() properly and restores MTR tests.
      88dd50b8
  22. 15 Aug, 2023 2 commits
    • Monty's avatar
      MDEV-9938 Prepared statement return wrong result (missing row) · ca5c122a
      Monty authored
      The problem is that the first execution of the prepared statement makes
      a permanent optimization of converting the LEFT JOIN to an INNER JOIN.
      
      This is based on the assumption that all the user parameters (?) are
      always constants and that parameters to Item_cond() will not change value
      from true and false between different executions.
      
      (The example was using IS NULL, which will change value if parameter
      depending on if the parameter is NULL or not).
      
      The fix is to change Item_cond::fix_fields() and
      Item_cond::eval_not_null_tables() to not threat user parameters as
      constants. This will ensure that we don't do the LEFT_JOIN -> INNER
      JOIN conversion that causes problems.
      
      There is also some things that needs to be improved regarding
      calculations of not_null_tables_cache as we get a different value for
      WHERE 1 or t1.a=1
      compared to
      WHERE t1.a= or 1
      
      Changes done:
      - Mark Item_param with the PARAM flag to be able to quickly check
        in Item_cond::eval_not_null_tables() if an item contains a
        prepared statement parameter (just like we check for stored procedure
        parameters).
      - Fixed that Item_cond::not_null_tables_cache is not depending on
        order of arguments.
      - Don't call item->eval_const_cond() for items that are NOT on the top
        level of the WHERE clause. This removed a lot of unnecessary
        warnings in the test suite!
      - Do not reset not_null_tables_cache for not top level items.
      - Simplified Item_cond::fix_fields by calling eval_not_null_tables()
        instead of having duplication of all the code in
        eval_not_null_tables().
      - Return an error if Item_cond::fix_field() generates an error
        The old code did generate an error in some cases, but not in all
         cases.
        - Fixed all handling of the above error in make_cond_for_tables().
          The error handling by the callers did not exists before which
          could lead to asserts in many different places in the old code).
        - All changes in sql_select.cc are just checking the return value of
          fix_fields() and make_cond_for_tables() and returning an error
          value if fix_fields() returns true or make_cond_for_tables()
          returns NULL and is_error() is set.
      - Mark Item_cond as const_item if all arguments returns true for
        can_eval_in_optimize().
      
      Reviewer: Sergei Petrunia <sergey@mariadb.com>
      ca5c122a
    • Kristian Nielsen's avatar
      (Null) Merge 10.5 -> 10.6 · f6dd1308
      Kristian Nielsen authored
      Signed-off-by: default avatarKristian Nielsen <knielsen@knielsen-hq.org>
      f6dd1308