1. 23 Feb, 2021 3 commits
    • Sergei Golubchik's avatar
      Merge branch 'github/10.4' into 10.4 · 245d33db
      Sergei Golubchik authored
      245d33db
    • Robert Bindar's avatar
      MDEV-24114 SHOW CREATE USER doesnt display correct password expiry status · 8b77e6c6
      Robert Bindar authored
      Given PASSWORD EXPIRE and PASSWORD EXPIRE [NEVER|INTERVAL x DAY] are
      two different mechanisms, SHOW CREATE USER should display all the
      information required to restore the state of an account which
      includes both a manual expired state and an automatic policy.
      
      The solution proposed here keeps a CREATE USER ... PASSWORD EXPIRE
      statement and adds an aditional
      ALTER USER .. PASSWORD EXPIRE [NEVER|INTERVAL x DAY] when necessary
      
      This way a tool can restore almost the complete state of an account
      as it was before a dump. The only information left still is the
      value of the password_last_changed column from mysql.global_priv
      8b77e6c6
    • Sergei Golubchik's avatar
      Merge branch '10.3' into 10.4 · e8419574
      Sergei Golubchik authored
      e8419574
  2. 22 Feb, 2021 20 commits
    • Sergei Golubchik's avatar
      34fcd726
    • Monty's avatar
      MDEV-24929 Server crash in thr_multi_unlock or in get_schema_tables_result · 640f4231
      Monty authored
      This was caused by two different bugs:
      1) Information_schema tables where not locked by lock_tables, but
         get_lock_data() was not filtering these out. This caused a crash when
         mysql_unlock_some_tables() tried to unlock tables early, including
         not locked information schema tables.
      
      Fixed by not locking SYSTEM_TMP_TABLES
      
      2) In some cases the optimizer will notice that we do not need to read
         the information_schema tables at all. In this case
         join_tab->read_record is not set, which caused a crash in
         get_schema_tables_result()
      
      Fixed by ignoring const tables in get_schema_tables_result()
      640f4231
    • Sergei Golubchik's avatar
      Merge branch '10.2' into 10.3 · 0ab1e391
      Sergei Golubchik authored
      0ab1e391
    • Sergei Golubchik's avatar
      ca126d96
    • Sergei Golubchik's avatar
      fix binlog_xa_recover test · 3c021485
      Sergei Golubchik authored
      1. wait for the binlog thread to reach the certain state, don't use
         a debug_sync that's incorrectly placed to detect the state
      2. no need to do a (non-deterministic) `show binlog events` to verify
         what is guaranteed by the directly preceding line
      3c021485
    • Sergei Golubchik's avatar
      cleanup: renames, no need to create a new .inc file · bb98c6bf
      Sergei Golubchik authored
      if it's the whole content of a test anyway.
      bb98c6bf
    • Sergei Golubchik's avatar
      mtr fixes for old (5.10.1) perl · 7fe351ab
      Sergei Golubchik authored
      7fe351ab
    • Sergei Golubchik's avatar
      support for mtr --valgdb · 77c23c62
      Sergei Golubchik authored
      add a new "debugger" to mtr, that runs the executable
      under valgrind in gdb. valgrind pid is auto-detected,
      but the delay (sleep) and vgdb path are hard-coded for now
      77c23c62
    • Sergei Golubchik's avatar
      unify mtr handling of debuggers · feacc0aa
      Sergei Golubchik authored
      "debugger" is anything that wraps execution of a target
      binary (mysqld or mysqltest). Currently the list includes:
      gdb, ddd, dbx, lldb, valgrind, strace, ktrace, rr,
      devenv, windbg, vsjitdebugger.
      
      for every debugger xxx, mtr will recognize four options:
      --xxx, --boot-xxx, --manual-xxx, --client-xxx.
      They all support an optional "=string" argument. String
      being a semicolon-separated list of commands (e.g. for gdb)
      or one (not semicolon-separated) command line of options
      (e.g. for valgrind). Or both (e.g. --gdb='-quiet -nh;info files'
      
      In embedded both --xxx and --client-xxx work.
      
      Functionality changed/removed:
      * --rr-args is gone
      * --rr-dir is gone
      * --manual-debug is gone
      * --debugger={devenv|vc|windbg|vc_express|vsjitdebugger} is gone
      * --strace-option is gone
      * --stracer={strace|ktrace} is gone
      * --valgrind only enables it for the server, not for everything
      * --valgrind-all is gone
      * --valgrind-mysqltest is gone
      * --valgrind-mysqld is gone
      * --valgrind-options is gone
      * --valgrind-option is gone
      * --valgrind-path is gone
      * --callgrind is gone
      * one cannot combine --valgrind --gdb anymore
      * valgrind report doesn't add a fake test line to the output
      * vc and vcexpress on windows are no longer supported
      feacc0aa
    • Sergei Golubchik's avatar
      cleanup: remove dead code in mtr · 3b0b4e61
      Sergei Golubchik authored
      3b0b4e61
    • Sergei Golubchik's avatar
      cleanup: stat tables · c4f01334
      Sergei Golubchik authored
      don't allocate Column_statistics_collected objects that won't
      be used.
      
      minor style fixes (StringBuffer<>, etc)
      c4f01334
    • Sergei Golubchik's avatar
      MDEV-23753: SIGSEGV in Column_stat::store_stat_fields · 06a791aa
      Sergei Golubchik authored
      only collect persistent stats for columns explicitly listed
      by the user in the  ANALYZE TABLE PERSISTENT FOR COLUMNS (...)
      clause. The engine can extend table->read_set as much as
      it wants, it should not affect the collected statistics.
      
      Test case from the 3b94309a applies - it used to crash,
      because ha_partition extended table->read_set after the loop that
      initialized some objects based on bits in the read_set but before the
      loop that used these objects based on bits in the read_set.
      06a791aa
    • Sergei Golubchik's avatar
      Revert "MDEV-23753: SIGSEGV in Column_stat::store_stat_fields" · caad32ca
      Sergei Golubchik authored
      This reverts the commit 3b94309a but keeps the test
      
      Because the fix is a hack that isn't supposed to do anything,
      and relies on a side-effect of rnd_init inside ha_partition.
      
      A different fix is coming up.
      caad32ca
    • Sergei Golubchik's avatar
      a638f157
    • Igor Babaev's avatar
      MDEV-24936 EXPLAIN for query based on table value constructor lacks info · a5b18613
      Igor Babaev authored
                 on used subqueries
      
      If a query was based on a table value constructor that contained subqueries
      then EXPLAIN for such query did not contain any lines explaining the
      execution plans of the subqueries.
      This happened because
      - no optimize() method was called for any subquery used by the table value
        constructor when EXPLAIN command for the query was processed;
      - EXPLAIN node created for the table value constructor itself did not
        assume that some child nodes could be attached to it.
      
      Approved by Oleksandr Byelkin <sanja@mariadb.com>
      a5b18613
    • Daniel Bartholomew's avatar
      bump the VERSION · 6aa90974
      Daniel Bartholomew authored
      6aa90974
    • Daniel Bartholomew's avatar
      bump the VERSION · a49ce0bf
      Daniel Bartholomew authored
      a49ce0bf
    • Daniel Bartholomew's avatar
      bump the VERSION · 7b8dacc4
      Daniel Bartholomew authored
      7b8dacc4
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-24863 AHI entries mismatch with the index while reloading the evicted tables. · d7fc4f52
      Thirunarayanan Balathandayuthapani authored
      - This is caused by commit ad6171b9
      (MDEV-22456). InnoDB reloads the evicted table again from dictionary.
      In that case, AHI entries and current index object mismatches
      happens. When index object mismatches then InnoDB should drop
      the page hash AHI entries for the block. In
      btr_search_drop_page_hash_index(), InnoDB should take exclusive
      lock on the AHI latch if index is already freed to avoid the
      freed memory access during buf_pool_resize()
      d7fc4f52
    • Jan Lindström's avatar
      374f4c3f
  3. 21 Feb, 2021 1 commit
    • Monty's avatar
      MDEV-22703 DEFAULT() on a BLOB column can overwrite the default record · 8db5274d
      Monty authored
      This can cause crashes when accessing already released memory
      
      The issue was the Item_default created a internal field, pointing to
      share->default_values, to be used with the DEFAULT() function.
      This does not work for BLOB fields as these are freed at end of query.
      Fixed by storing BLOB field data inside and area allocated by
      Item_default_value,  like we do for nondeterministic default values.
      8db5274d
  4. 18 Feb, 2021 4 commits
  5. 17 Feb, 2021 4 commits
  6. 16 Feb, 2021 5 commits
    • Marko Mäkelä's avatar
      MDEV-15641 fixup: Make the test faster · 067465cd
      Marko Mäkelä authored
      Let us avoid the excessive allocation of explicit record locks
      (a work-around of MDEV-24813) so that the test will execute
      much faster under AddressSanitizer, MemorySanitizer, Valgrind.
      067465cd
    • Jan Lindström's avatar
      MDEV-24865 : Server crashes when truncate mysql user table · a5bcec72
      Jan Lindström authored
      For truncate we try to find out possible foreign key tables
      using open_tables. However, table_list was not cleaned up
      properly and there was no error handling. Fixed by cleaning
      table_list and adding proper error handling.
      a5bcec72
    • Varun Gupta's avatar
      MDEV-23291: SUM column from a derived table returns invalid values · 3544643f
      Varun Gupta authored
      The issue here was the read_set bitmap was not set for a field which
      was used as a reference in an inner select.
      We need to make sure that if we are in an inner select and we have
      references from outer select then we update the table bitmaps for
      such references.
      
      Introduced a function in the class Item_subselect that would
      update bitmaps of table for the references within a
      subquery that are defined in outer selects.
      3544643f
    • Varun Gupta's avatar
      MDEV-24779: main.subselect fails in buildbot with --ps-protocol · 7e9a6b7f
      Varun Gupta authored
      Follow-up fix to commit 26f50335(MDEV-23449)
      The GROUP BY clause inside IN/ALL/ANY subquery is removed
      when there is no aggregate function or HAVING clause in the subquery.
      
      When the GROUP BY clause is removed, a subquery can also be removed
      if it part of the GROUP BY clause. This is done inside the function
      remove_redundant_subquery_clauses. Here we walk over the GROUP BY list
      and remove a subselect from its unit via the callback function
      eliminate_subselect_processor.
      
      The issue here was that when the query was being re-executed it was trying
      to reinitialize the select that was removed as stated above.
      This is not required, so the fix would be to remove select_lex
      both from tree lex structure and the global list of nodes so that
      we don't do the reinitialization again.
      7e9a6b7f
    • Varun Gupta's avatar
      MDEV-19474: Histogram statistics are used even with optimizer_use_condition_selectivity=3 · a461e4d3
      Varun Gupta authored
      The issue here was histogram statistics were being used even when
      the level of optimizer_use_condition_selectivity doesn't allow
      usage of statistics from histogram.
      
      The histogram statistics are read for a table only when
      optimizer_use_condition_selectivity > 3. But the TABLE structure can be
      stored in the internal table cache and be reused for the next query.
      So in this case the histogram statistics will be available for the next query.
      
      The fix would be to make sure to use the histogram statistics only when
      optimizer_use_condition_selectivity > 3.
      a461e4d3
  7. 15 Feb, 2021 2 commits
  8. 14 Feb, 2021 1 commit
    • Sergei Golubchik's avatar
      updating @@wsrep_cluster_address deadlocks · 26965387
      Sergei Golubchik authored
      wsrep_cluster_address_update() causes LOCK_wsrep_slave_threads
      to be locked under LOCK_wsrep_cluster_config, while normally
      the order should be the opposite.
      
      Fix: don't protect @@wsrep_cluster_address value with the
      LOCK_wsrep_cluster_config, LOCK_global_system_variables is enough.
      
      Only protect wsrep reinitialization with the LOCK_wsrep_cluster_config.
      And make it use a local copy of the global @@wsrep_cluster_address.
      
      Also, introduce a helper function that checks whether
      wsrep_cluster_address is set and also asserts that it can be safely
      read by the caller.
      26965387