1. 26 Oct, 2022 8 commits
  2. 25 Oct, 2022 12 commits
    • Alexey Botchkov's avatar
      MDEV-26161 crash in Gis_point::calculate_haversine · 77951dd7
      Alexey Botchkov authored
      More checks for bad geometry data added.
      77951dd7
    • Sergei Golubchik's avatar
      MDEV-26161 crash in Gis_point::calculate_haversine · e910dff8
      Sergei Golubchik authored
      return an error on invalid gis data
      e910dff8
    • Igor Babaev's avatar
      MDEV-28846 Poor performance when rowid filter contains no elements · 58cd0bd5
      Igor Babaev authored
      When a range rowid filter was used with an index ref access the cost of
      accessing the index entries for the records rejected by the filter was not
      taken into account. For a ref access by an index with big average number
      of records per key this led to poor execution plans if selectivity of the
      used filter was high.
      The patch resolves this problem. It also introduces a minor optimization
      that skips look-ups into a filter that turns out to be empty.
      With this patch the output of ANALYZE stmt reports the number of look-ups
      into used rowid filters.
      The patch also back-ports from 10.5 the code that properly sets the field
      TABLE::file::table for opened temporary tables.
      
      The test cases that were supposed to use rowid filters have been adjusted
      in order to use similar execution plans after this fix.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      58cd0bd5
    • Sergei Golubchik's avatar
      cleanup: put casts in a separate statement · 72e79eaa
      Sergei Golubchik authored
      remove useless if()
      72e79eaa
    • Alexander Barkov's avatar
      MDEV-28545 MyISAM reorganize partition corrupt older table format · f1bbc1cd
      Alexander Barkov authored
      The ALTER related code cannot do at the same time both:
      - modify partitions
      - change column data types
      
      Explicit changing of a column data type together with a partition change is
      prohibited by the parter, so this is not allowed and returns a syntax error:
      
        ALTER TABLE t MODIFY ts BIGINT, DROP PARTITION p1;
      
      This fix additionally disables implicit data type upgrade
      (e.g. from "MariaDB 5.3 TIME" to "MySQL 5.6 TIME", or the other way
      around according to the current mysql56_temporal_format) in case of
      an ALTER modifying partitions, e.g.:
      
        ALTER TABLE t DROP PARTITION p1;
      
      In such commands now only the partition change happens, while
      the data types stay unchanged.
      
      One can additionally run:
      
        ALTER TABLE t FORCE;
      
      either before or after the ALTER modifying partitions to
      upgrade data types according to mysql56_temporal_format.
      f1bbc1cd
    • Lawrin Novitsky's avatar
      MDEV-29490 Renaming internally used client API to avoid name conflicts · 1ff476b4
      Lawrin Novitsky authored
      with C/C.
      The patch introduces mariadb_capi_rename.h which is included into
      mysql.h. The hew header contains macro definitions for the names being
      renamed. In versions 10.6+(i.e. where sql service exists) the renaming
      condition in the mariadb_capi_rename.h should be added with
      && !defined(MYSQL_DYNAMIC_PLUGIN)
      and look like
      The patch also contains removal of mysql.h from the api check.
      
      Disabling false_duper-6543 test for embedded.
      
      ha_federated.so uses C API. C API functions are being renamed in the server,
      but not renamed in embedded, since embedded server library should have proper
      C API, as expected by programs using it.
      Thus the same ha_federated.so cannot work both for server and embedded
      server library.
      
      As all federated tests are already disabled for embedded,
      federated isn't supposed to work for embedded anyway, and thus the test
      is being disabled.
      1ff476b4
    • Vladislav Vaintroub's avatar
      MDEV-29811 server advertises ssl even if it's unusable. · 32158be7
      Vladislav Vaintroub authored
      Abort startup, if SSL setup fails.
      Also, for the server always check that certificate matches private key
      (even if ssl_cert is not set, OpenSSL will try to use default one)
      32158be7
    • Jan Lindström's avatar
      Additional fixes · 8c5d3233
      Jan Lindström authored
      * galera_many_rows : reduce the time used
      * wsrep_thd.cc : remove incorrect assertion
      * disabled.def : disable failing test cases
      8c5d3233
    • Brandon Nesterenko's avatar
      MDEV-25616 XA PREPARE event group is not binlogged when.. · 42802ad6
      Brandon Nesterenko authored
      the only query of the XA transaction is on a non-transactional table
      errors out:
      
      XA BEGIN 'x';
      --error ER_DUP_ENTRY
      INSERT INTO t1 VALUES (1),(1);
      XA END 'x';
      XA PREPARE 'x';
      
      The binlogging pattern is correctly started as expected with
      the errored-out Query or its ROW format events, but there is
      no empty XA_prepare_log_event group.
      The following
      
      XA COMMIT 'x';
      
      therefore should not be logged either, but it does.
      
      The bug is fixed with proper maintaining of a read-write binlog hton
      property and use it to enforce correct binlogging decisions.
      Specifically in the bug description case XA COMMIT won't be binlogged
      in both when given in the same connection and externally after disconnect.
      The same continue to apply to an empty XA that do not change any data in all
      transactional engines involved.
      42802ad6
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 4b4c2b8c
      Marko Mäkelä authored
      4b4c2b8c
    • Marko Mäkelä's avatar
      Merge 10.4 into 10.5 · 9a0b9e33
      Marko Mäkelä authored
      9a0b9e33
    • Marko Mäkelä's avatar
      Merge 10.3 into 10.4 · 667d3fbb
      Marko Mäkelä authored
      667d3fbb
  3. 24 Oct, 2022 8 commits
  4. 22 Oct, 2022 9 commits
    • Sergei Golubchik's avatar
      MDEV-29851 Cached role privileges are not invalidated when needed · 68fb05c3
      Sergei Golubchik authored
      GRANT ROLE can update db-level privileges -> must invalidate acl_cache
      68fb05c3
    • Sergei Golubchik's avatar
      cleanup: rename test file · 7a2f9956
      Sergei Golubchik authored
      7a2f9956
    • Sergei Golubchik's avatar
      remove two acl_cache->clear() · 741c14cb
      Sergei Golubchik authored
      * to "clear hostname cache" one needs to use hostname_cache->clear()
      * no need to clear acl_cache for SET DEFAULT ROLE
      741c14cb
    • Alexander Barkov's avatar
      MDEV-29481 mariadb-upgrade prints confusing statement · 2a57396e
      Alexander Barkov authored
      This is a new version of the patch instead of the reverted:
      
        MDEV-28727 ALTER TABLE ALGORITHM=NOCOPY does not work after upgrade
      
      Ignore the difference in key packing flags HA_BINARY_PACK_KEY and HA_PACK_KEY
      during ALTER to allow ALGORITHM=INSTANT and ALGORITHM=NOCOPY in more cases.
      
      If for some reasons (e.g. due to a bug fix such as MDEV-20704) these
      cumulative (over all segments) flags in KEY::flags are different for
      the old and new table inside compare_keys_but_name(), the difference
      in HA_BINARY_PACK_KEY and HA_PACK_KEY in KEY::flags is not really important:
      
      MyISAM and Aria can handle such cases well: per-segment flags are stored in
      MYI and MAI files anyway and they are read during ha_myisam::open()
      ha_maria::open() time. So indexes get opened with correct per-segment
      flags that were calculated during the table CREATE time, no matter
      what the old (CREATE time) and new (ALTER TIME) per-index compression
      flags are, and no matter if they are equal or not.
      
      All other engine ignore key compression flags, so this change
      is safe for other engines as well.
      2a57396e
    • Sergei Golubchik's avatar
      CONNECT: compile with libxml2 2.10.x · 16d4431a
      Sergei Golubchik authored
      storage/connect/libdoc.cpp:603:17: error: 'void xmlXPathInit()' is deprecated [-Werror=deprecated-declarations]
      16d4431a
    • Sergei Golubchik's avatar
      disable LTO in debian builds · 0609b345
      Sergei Golubchik authored
      0609b345
    • Sergei Golubchik's avatar
      MDEV-15795 Stack exceeded if pthread_attr_setstacksize(&thr_attr,8196) succeeds · 3e377fd3
      Sergei Golubchik authored
      on Linux this pthread_attr_setstacksize() fails with EINVAL
      "The stack size is less than PTHREAD_STACK_MIN (16384) bytes".
      
      But on FreeBSD it succeeds and causes a crash later, as 8196 is too little.
      
      Let's keep the stack at its default size in the timer thread.
      3e377fd3
    • Sergei Golubchik's avatar
      fix for x86 and other 32-bit little engian arch · 68391ace
      Sergei Golubchik authored
      (and for 64-bit big endian)
      68391ace
    • Haidong Ji's avatar
      Use OPENSSL_free instead of free to avoid instance crash · 45755c4e
      Haidong Ji authored
      OpenSSL handles memory management using **OPENSSL_xxx** API[^1]. For
      allocation, there is `OPENSSL_malloc`. To free it, `OPENSSL_free` should
      be called.
      
      We've been lucky that OPENSSL (and wolfSSL)'s implementation allowed the
      usage of `free` for memory cleanup. However, other OpenSSL forks, such
      as AWS-LC[^2], is not this forgiving. It will cause a server crash.
      
      Test case `openssl_1` provides good coverage for this issue. If a user
      is created using:
      `grant select on test.* to user1@localhost require SUBJECT "...";`
      user1 will crash the instance during connection under AWS-LC.
      
      There have been numerous OpenSSL forks[^3]. Due to FIPS[^4] and other
      related regulatory requirements, MariaDB will be built using them. This
      fix will increase MariaDB's adaptability by using more compliant and
      generally accepted API.
      
      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.
      
      [^1]: https://www.openssl.org/docs/man1.1.1/man3/OPENSSL_malloc.html
      [^2]: https://github.com/awslabs/aws-lc
      [^3]: https://en.wikipedia.org/wiki/OpenSSL#Forks
      [^4]: https://en.wikipedia.org/wiki/FIPS_140-2
      45755c4e
  5. 21 Oct, 2022 3 commits
    • Daniel Black's avatar
      MDEV-29678 Valgrind/MSAN uninitialised value errors upon PS with ALTER under ONLY_FULL_GROUP_BY · e4621718
      Daniel Black authored
      st_select_lex::init_query is called in the exectuion of EXECUTE
      IMMEDIATE 'alter table ...'. so reset the initialization at the
      same point we set join= 0.
      e4621718
    • Sergei Petrunia's avatar
      MDEV-23160: SIGSEGV in Explain_node::print_explain_for_children on UNION SELECT · 6bc2e933
      Sergei Petrunia authored
      and also MDEV-25564, MDEV-18157.
      
      Attempt to produce EXPLAIN output caused a crash in
      Explain_node::print_explain_for_children. The cause of this was that an
      Explain_node (actually a derived) had a link to child select#N, but
      there was no query plan present for select#N.
      
      The query plan wasn't present because the subquery was eliminated.
      - Either it was a degenerate subquery like "(SELECT 1)" in MDEV-25564.
      - Or it was a subquery in a UNION subquery's ORDER BY clause:
         col IN (SELECT ... UNION
                 SELECT ... ORDER BY (SELECT FROM t1))
      
      In such cases, legacy code structure in subquery/union processing code(*)
      makes it hard to detect that the subquery was eliminated, so we end up
      with EXPLAIN data structures (Explain_node::children) having dangling
      links to child subqueries.
      Do make the checks and don't follow the dangling links.
      
      (In ideal world, we should not have these dangling links. But fixing
      the code (*) would have high risk for the stable versions).
      6bc2e933
    • Anel's avatar
      MDEV-29687:ODBC tables do not quote identifier names correctly (#2295) · 0c06320a
      Anel authored
      Reviewer: andrew@mariadb.org
      0c06320a