1. 08 Nov, 2022 1 commit
  2. 07 Nov, 2022 2 commits
  3. 03 Nov, 2022 1 commit
  4. 02 Nov, 2022 4 commits
  5. 01 Nov, 2022 1 commit
    • Sergei Golubchik's avatar
      MDEV-29924 Assertion `(((nr) % (1LL << 24)) % (int) log_10_int[6 - dec]) == 0'... · 1a3859ff
      Sergei Golubchik authored
      MDEV-29924 Assertion `(((nr) % (1LL << 24)) % (int) log_10_int[6 - dec]) == 0' failed in my_time_packed_to_binary on SELECT when using TIME field
      
      when assigning the cached item to the Item_cache for the first time
      make sure to use Item_cache::setup(), not Item_cache::store().
      Because the former copies the metadata (and allocates memory, in case
      of Item_cache_row), and Item_cache::decimal must be set for
      comparisons to work correctly.
      1a3859ff
  6. 29 Oct, 2022 3 commits
  7. 28 Oct, 2022 1 commit
    • Vlad Lesin's avatar
      MDEV-28709 unexpected X lock on Supremum in READ COMMITTED · 2f421688
      Vlad Lesin authored
      Post-push fix. The flag of transaction which indicates that it's necessary
      to forbid gap lock inheritance after XA PREPARE could be inverted if
      lock_release_on_prepare_try() is invoked several times. The fix is to
      toggle it on lock_release_on_prepare() exit.
      2f421688
  8. 27 Oct, 2022 1 commit
  9. 26 Oct, 2022 13 commits
    • Sergei Golubchik's avatar
      columnstore 5.6.8-1 · b4a58581
      Sergei Golubchik authored
      b4a58581
    • Oleksandr Byelkin's avatar
      Merge branch '10.4' into 10.5 · 4519b42e
      Oleksandr Byelkin authored
      4519b42e
    • Oleksandr Byelkin's avatar
      Merge branch '10.3' into 10.4 · 29633dc0
      Oleksandr Byelkin authored
      29633dc0
    • Marko Mäkelä's avatar
      Disable perfschema.mdl_func on Windows · 79dc3989
      Marko Mäkelä authored
      The test fails extremely often on a Windows builder, and nobody seems
      to be interested in fixing it.
      79dc3989
    • Marko Mäkelä's avatar
      MDEV-29886 Assertion !index->table->is_temporary() failed in CHECK TABLE · cf96db4f
      Marko Mäkelä authored
      ha_innobase::check(): Do not enable READ UNCOMMITTED isolation level
      for temporary tables, because it would report index count mismatch
      for secondary indexes.
      
      row_check_index(): Ignore EXTENDED for temporary tables, because
      the tables are private to the current connection and there will be
      no purge of committed transaction history.
      cf96db4f
    • Marko Mäkelä's avatar
      MDEV-29883 Deadlock between InnoDB statistics update and BLOB insert · 8b6a308e
      Marko Mäkelä authored
      The test innodb.innodb-wl5522-debug would occasionally hang
      (especially when run with ./mtr --rr) due to a deadlock between
      btr_store_big_rec_extern_fields() and dict_stats_analyze_index().
      The two threads would acquire the clustered index root page latch and
      the tablespace latch in the opposite order. The deadlock was possible
      because dict_stats_analyze_index() was holding the index latch in
      shared mode and an index root page latch, while waiting for the
      tablespace latch. If a stronger dict_index_t::lock had been held
      by dict_stats_analyze_index(), any operations that free or allocate
      index pages would have been blocked.
      
      In each caller of fseg_n_reserved_pages() except ibuf_init_at_db_start()
      which is a special case for ibuf.index at database startup, we must hold
      an index latch that prevents concurrent allocation or freeing of index
      pages.
      
      Any operation that allocates or free pages that belong to an index tree
      must first acquire an index latch in Update or Exclusive mode, and while
      holding that, acquire an index root page latch in Update or Exclusive
      mode.
      
      dict_index_t::clear(): Also acquire an index latch. Otherwise,
      the test innodb.insert_into_empty could hang.
      
      btr_get_size_and_reserved(): Assert that a strong enough index latch
      is being held. Only acquire a shared fil_space_t::latch; we are only
      reading, not modifying any data.
      
      dict_stats_update_transient_for_index(),
      dict_stats_analyze_index(): Acquire a strong enough index latch. Only
      acquire a shared fil_space_t::latch.
      
      These operations had followed the same order of acquiring latches in
      every InnoDB version since the very beginning
      (commit c533308a).
      The calls for acquiring tablespace latch had previously been moved in
      commit 87839258 and
      commit 1e9c922f.
      
      The hang was introduced in
      commit 2e814d47 which imported
      mysql/mysql-server@ac74632293bea967b352d1b472abedeeaa921b98
      which failed to strengthen the locking requirements of the function
      btr_get_size().
      8b6a308e
    • Vlad Lesin's avatar
      MDEV-29869 mtr failure: innodb.deadlock_wait_thr_race · 78a04a4c
      Vlad Lesin authored
      1. The merge aeccbbd9 has overwritten
      lock0lock.cc, and the changes of MDEV-29622 and MDEV-29635 were
      partially lost, this commit restores the changes.
      
      2. innodb.deadlock_wait_thr_race test:
      
      The following hang was found during testing.
      
      There is deadlock_report_before_lock_releasing sync point in
      Deadlock::report(), which is waiting for sel_cont signal under lock_sys_t
      lock. The signal must be issued after "UPDATE t SET b = 100" rollback,
      and that rollback is executing undo record, which is blocked
      on dict_sys latch request. dict_sys is locked by the thread of statistics
      update(dict_stats_save()), and during that update lock_sys lock is
      requested, and can't be acquired as Deadlock::report() holds it. We have
      to disable statistics update to make the test stable.
      
      But even if statistics update is disabled, and transaction with consistent
      snapshot is started at the very beginning of the test to prevent purging,
      the purge can still be invoked for system tables, and it tries to open
      system table by id, what causes dict_sys.freeze() call and dict_sys
      latching. What, in combination with lock_sys::xx_lock() causes the same
      deadlock as described above. We need to disable purging globally for the
      test as well.
      
      All the above is applicable to innodb.deadlock_wait_lock_race test also.
      78a04a4c
    • Oleksandr Byelkin's avatar
      278fbe61
    • Andrew Hutchings's avatar
      MDEV-29578 Fix CONNECT build warnings · fa5f26b4
      Andrew Hutchings authored
      Fix a couple of build warnings that fire with CONNECT engine.
      fa5f26b4
    • Alexander Barkov's avatar
      MDEV-28822 Table from older version requires table rebuild when adding column... · f90d9c34
      Alexander Barkov authored
      MDEV-28822 Table from older version requires table rebuild when adding column to table with multi-column index
      
      This problem was earlier fixed in 10.4 by the patch for MDEV-29481.
      
      Adding MTR tests only.
      f90d9c34
    • Brad Smith's avatar
      Rocksdb: Add initial OpenBSD support · 055cb3fc
      Brad Smith authored
      055cb3fc
    • Oleg Smirnov's avatar
      MDEV-29662 Replace same values in 'IN' list with an equality · 5027cb2b
      Oleg Smirnov authored
      If all elements in the list of 'IN' or 'NOT IN' clause are equal
      and there are no NULLs then clause
      -  "a IN (e1,..,en)" can be converted to "a = e1"
      -  "a NOT IN (e1,..,en)" can be converted to "a <> e1".
      This means an object of Item_func_in can be replaced with an object
      of Item_func_eq for IN (e1,..,en) clause and Item_func_ne for
      NOT IN (e1,...,en). Such a replacement allows the optimizer to choose
      a better execution plan
      5027cb2b
    • Oleg Smirnov's avatar
      MDEV-29640 FederatedX does not properly handle pushdown in case of difference... · 5f296f3a
      Oleg Smirnov authored
      MDEV-29640  FederatedX does not properly handle pushdown in case of difference in local and remote table names
      
      FederatedX table may refer to a table with a different name on the
      remote server:
        test> CREATE TABLE t2 (...) ENGINE="FEDERATEDX"
        CONNECTION="mysql://user:pass@192.168.1.111:9308/federatedx/t1";
        test> select * from t2 where ...;
      This could cause an issue with federated_pushdown=1, because FederatedX
      pushes the query (or derived table's) text to the remote server. The remote
      server will try to read from table t2 (while it should read from t1).
      
      Solution: do not allow pushing down queries with tables that have different
      db_name.table name on the local and remote server.
      
      This patch also fixes:
      MDEV-29863 Server crashes in federatedx_txn::acquire after select from the
      FederatedX table with partitions
      
      Solution: disallow pushdown when partitioned FederatedX tables are used.
      5f296f3a
  10. 25 Oct, 2022 13 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
    • Vladislav Vaintroub's avatar
      MDEV-29843 Do not use asynchronous log_write_upto() for system THDs · b7fe6179
      Vladislav Vaintroub authored
      Non-blocking log_write_upto (MDEV-24341) was only designed  for the
      client connections. Fix, so it is not be triggered for any system THD.
      
      Previously, an incomplete solution only excluded Innodb purge THDs, but
      not  the slave for example.
      
      The hang in MDEV still remains somewhat a mystery though, it is not
      immediately clear how exactly condition variable can become corrupted.
      But it is clear that it can be avoided.
      b7fe6179
    • 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
    • Marko Mäkelä's avatar
      MDEV-29871: Temporarily disable the test · 5dd411c7
      Marko Mäkelä authored
      5dd411c7
    • Marko Mäkelä's avatar
      Merge 10.5 into 10.6 · aeccbbd9
      Marko Mäkelä authored
      To prevent ASAN heap-use-after-poison in the MDEV-16549 part of
      ./mtr --repeat=6 main.derived
      the initialization of Name_resolution_context was cleaned up.
      aeccbbd9
    • 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
    • Marko Mäkelä's avatar
      75f7c568
    • 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