1. 24 Jul, 2019 1 commit
    • Anushree Prakash B's avatar
      Bug#27259654 - ISSUES FOUND BY PVS-STUDIO STATIC ANALYZER · 9c6777c0
      Anushree Prakash B authored
      DESCRIPTION
      ===========
      PVS-Studio static code analyzer found several suspicious
      fragments of code across various files.
      
      i)   sizeof() is using the pointer
      ii)  memcpy() doesn't copy the whole string.
      iii) enumeration constant 'wkb_multilinestring' is used as
           a variable of a Boolean-type.
      iv) 'throw' keyword is missing from std::runtime_error()
      
      FIX
      ===
      i)   Use sizeof({actual object/data type})
      ii)  Use strncpy() and set last char as '\0'
      iii) N/A (Issue has already been fixed)
      iv)  Add 'throw' before the exception.
      
      RB: 21502
      9c6777c0
  2. 23 Jul, 2019 4 commits
    • Marko Mäkelä's avatar
      MDEV-8827: Fix the 32-bit build · 9d93f9da
      Marko Mäkelä authored
      Follow-up to 07ba5560:
      Use the correct 64-bit type name ulonglong instead of ulint,
      like in mysql/mysql-server@4e0100d86b1b46be0107ebd46a98a0c2dbb0fab4
      9d93f9da
    • Rahul Malik's avatar
      Bug#15851528 DUPLICATE KEY ERROR ON AUTO-INC PK WITH MIXED AUTO_INCREMENT_INCREMENT CLIENTS · 739f5239
      Rahul Malik authored
      Problem: Clients running different values for auto_increment_increment
      and doing concurrent inserts leads to "Duplicate key error" in one of them.
      
      Analysis:
      When auto_increment_increment value is reduced in a session,
      InnoDB uses last auto_increment_increment value
      to recalculate the autoinc value.
      In case, some other session has inserted a value
      with different auto_increment_increment, InnoDB recalculate
      autoinc values based on current session previous auto_increment_increment
      instead of considering the auto_increment_increment used for last insert
      across all session
      
      Fix:
      revert 7acdf29c
      a.k.a. 7c12a9e5
      as it causing the bug.
      
      Reviewed By:
      Bin <bin.x.su@oracle.com>
      Kevin <kevin.lewis@oracle.com>
      RB#21777
      
      Note: In MariaDB Server, earlier changes in
      ae5bc059
      for MDEV-533 require that the original test in
      mysql/mysql-server@1ccd472d63a042d3237a55f5827239164219ef7e
      be adjusted for MariaDB.
      
      Also, ef47b625 (MDEV-8827)
      had to be reverted after the upstream fix had been backported.
      739f5239
    • Marko Mäkelä's avatar
      Revert "MDEV-8827 Duplicate key with auto increment" · 7153e155
      Marko Mäkelä authored
      This reverts commit ef47b625.
      The parent commit 07ba5560
      which is a backport of
      mysql/mysql-server@1198267c331b045b9cad26be72b1a5b4f8930a79
      fixes the issue differently.
      7153e155
    • Thirunarayanan Balathandayuthapani's avatar
      Bug #20989615 INNODB AUTO_INCREMENT PRODUCES SAME VALUE TWICE · 07ba5560
      Thirunarayanan Balathandayuthapani authored
      Problem:
      =======
      Autoincrement value gives duplicate values because of the following reasons.
      
      (1) In InnoDB handler function, current autoincrement value is not changed
      based on newly set auto_increment_increment or auto_increment_offset variable.
      
      (2) Handler function does the rounding logic and changes the current
      autoincrement value and InnoDB doesn't aware of the change in current
      autoincrement value.
      
      Solution:
      ========
      Fix the problem(1), InnoDB always respect the auto_increment_increment
      and auto_increment_offset value in case of current autoincrement value.
      By fixing the problem (2), handler layer won't change any current
      autoincrement value.
      Reviewed-by: default avatarJimmy Yang <jimmy.yang@oracle.com>
      RB: 13748
      07ba5560
  3. 21 Jul, 2019 1 commit
  4. 19 Jul, 2019 1 commit
  5. 18 Jul, 2019 1 commit
  6. 12 Jul, 2019 1 commit
  7. 11 Jul, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-19421 Basic 3-way join queries are not parsed. · 8540fa83
      Igor Babaev authored
      The parser returned a syntax error message for the queries with join
      expressions like this t1 JOIN t2 [LEFT | RIGHT] JOIN t3 ON ... ON ... when
      the second operand of the outer JOIN operation with ON clause was another
      join expression with ON clause. In this expression the JOIN operator is
      right-associative, i.e. expression has to be parsed as the expression
      t1 JOIN (t2 [LEFT | RIGHT] JOIN t3 ON ... ) ON ...
      Such join expressions are hard to parse because the outer JOIN is
      left-associative if there is no ON clause for the first outer JOIN operator.
      The patch implements the solution when the JOIN operator is always parsed
      as right-associative and builds first the right-associative tree. If it
      happens that there is no corresponding ON clause for this operator the
      tree is converted to left-associative.
      
      The idea of the solution was taken from the patch by Martin Hansson
      "WL#8083: Fixed the join_table rule" from MySQL-8.0 code line.
      As the grammar rules related to join expressions in MySQL-8.0 and
      MariaDB-5.5+ are quite different MariaDB solution could not borrow
      any code from the MySQL-8.0 solution.
      8540fa83
  8. 08 Jul, 2019 1 commit
    • Mostafa Hussein's avatar
      use -f with pgrep · 8997f20f
      Mostafa Hussein authored
      pgrep will not be able to get th pid using the full path which is $libexec/mysqld unless -f is being used
      8997f20f
  9. 05 Jul, 2019 1 commit
  10. 01 Jul, 2019 2 commits
    • Vicențiu Ciorbaru's avatar
      Extra comment to mysql_install_db · ecd8f448
      Vicențiu Ciorbaru authored
      Explain why it makes sense to not consider builddir == srcdir directly,
      for cases when we do out-of-source builds.
      ecd8f448
    • Daniel Black's avatar
      mysql_install_db: assume builddir is dirname0 · d890c45b
      Daniel Black authored
      The assumption in the original commit for --builddir (648d3ced),
      was to assume that without a --builddir, and when --srcdir
      is specified, that the builddir is the same as the srcdir.
      
      The problem is that this assumption does not hold for out-of-source
      builds and we can figure out the builddir by looking for where
      mysql_install_db script is.
      
      As mysql_install_db is in the builddir, we use dirname0 as the builddir after
      checking that my_print_defaults is also located from dirname0, otherwise
      default to old behavior.
      d890c45b
  11. 25 Jun, 2019 1 commit
  12. 22 Jun, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-19778 Wrong Result on Left Outer Join with Subquery right on true · 645191aa
      Igor Babaev authored
                 and WHERE filter afterwards
      
      This patch complements the patch fixing the bug MDEV-6892. The latter
      properly handled queries that used mergeable views returning constant
      columns as inner tables of outer joins and whose where clause contained
      predicates referring to these columns if the predicates of happened not
      to be equality predicates. Otherwise the server still could return wrong
      result sets for such queries. Besides the fix for MDEV-6892 prevented
      some possible conversions of outer joins to inner joins for such queries.
      
      This patch corrected the function check_simple_equality() to handle
      properly conjunctive equalities of the where clause that refer to the
      constant columns of mergeable views used as inner tables of an outer join.
      The patch also changed the code of Item_direct_view_ref::not_null_tables().
      This change allowed to take into account predicates containing references
      to constant columns of mergeable views when converting outer joins into
      inner joins.
      645191aa
  13. 19 Jun, 2019 1 commit
  14. 17 Jun, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-19790 Wrong result for query with outer join and IS NOT TRUE predicate · 167da05f
      Igor Babaev authored
                 in where clause
      
      The classes Item_func_isnottrue and Item_func_isnotfalse inherited the
      implementation of the eval_not_null_tables method from the Item_func
      class. As a result the not_null_tables_cache was set incorrectly for
      the objects of these classes. It led to improper conversion of outer
      joins to inner joins when the where clause of the processed query
      contained IS NOT TRUE or IS NOT FALSE predicates. The coverted query
      in many cases produced a wrong result set.
      167da05f
  15. 12 Jun, 2019 1 commit
    • Eugene Kosov's avatar
      MDEV-13631 Make use of clang-format · 039b8782
      Eugene Kosov authored
      Explicitly mention every options in .clang-format to protect us from possible
      future changes.
      
      Remove separate InnoDB style.
      
      Change style to look more like this script:
      for x in $@
      do
       indent -kr -bl -bli0 -l79 -i2 -nut -c48 -dj -cp0 $x
       sed -ri -e 's/ = /= /g'\
               -e '/switch.*\)$/{N;s/\n[ ]+/ /}' $x
      done
      
      Significant different is that 'switch' and '{' are put on different lines
      because it's impossible in clang-format to set formatting rules just for
      'switch' statement.
      039b8782
  16. 11 Jun, 2019 2 commits
  17. 09 Jun, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-19580 Unrelated JOINs corrupt usage of 'WHERE function() IN (subquery)' · 6db2ebbb
      Igor Babaev authored
      Handling of top level conjuncts in WHERE whose used_tables() contained
      RAND_TABLE_BIT in the function make_join_select() was incorrect.
      As a result if such a conjunct referred to fields non of which belonged
      to the last joined table  it was pushed twice. (This could be seen
      for a test case from subselect.test whose output was changed after this
      patch had been applied. In 10.1 when running EXPLAIN FORMAT=JSON for
      the query from this test case we clearly see that one of the conjuncts
      is pushed twice.) This fact by itself was not good. Besides, if such a
      conjunct was pushed to a table that was the result of materialization
      of a semi-join the query could return a wrong result set. In particular
      we could watch it for queries with semi-join subqueries whose left parts
      used stored functions without "deterministic' specifier.
      6db2ebbb
  18. 01 Jun, 2019 2 commits
    • Sergei Golubchik's avatar
      MDEV-19491 update query stopped working after mariadb upgrade 10.2.23 -> 10.2.24 · 6660c072
      Sergei Golubchik authored
      as well as
      
      MDEV-19500 Update with join stopped worked if there is a call to a procedure in a trigger
      MDEV-19521 Update Table Fails with Trigger and Stored Function
      MDEV-19497 Replication stops because table not found
      MDEV-19527 UPDATE + JOIN + TRIGGERS = table doesn't exists error
      
      Reimplement the fix for (5d510fdb)
      
      MDEV-18507 can't update temporary table when joined with table with triggers on read-only
      
      instead of calling open_tables() twice, put multi-update
      prepare code inside open_tables() loop.
      
      Add a test for a MDL backoff-and-retry loop inside open_tables()
      across multi-update prepare code.
      6660c072
    • Sergei Golubchik's avatar
      cleanup · 1d4ac3d4
      Sergei Golubchik authored
      1d4ac3d4
  19. 30 May, 2019 1 commit
  20. 29 May, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-18479 Complement · cbb90f77
      Igor Babaev authored
      This patch complements the patch that fixes bug MDEV-18479.
      This patch takes care of possible overflow when calculating the
      estimated number of rows in a materialized derived table / view.
      cbb90f77
  21. 28 May, 2019 2 commits
    • Igor Babaev's avatar
      MDEV-19588 Wrong results from query, using left join. · eb09580b
      Igor Babaev authored
      This bug could happen when queries with nested outer joins were
      executed employing join buffers. At such an execution if the method
      JOIN_CACHE::join_records() is called when a join buffer has become
      full no 'first_unmatched' field should be cleaned up in the JOIN_TAB
      structure to which the join cache with this buffer is attached.
      eb09580b
    • Igor Babaev's avatar
      MDEV-18479 Assertion `join->best_read < double(1.79769313486231570815e+308L)' · 0955462d
      Igor Babaev authored
      or server crashes in JOIN::fix_all_splittings_in_plan after EXPLAIN
      
      This patch resolves the problem of overflowing when performing
      calculations to estimate the cost of an evaluated query execution plan.
      The overflowing in a non-debug build could cause different kind of
      problems uncluding crashes of the server.
      0955462d
  22. 21 May, 2019 1 commit
  23. 20 May, 2019 2 commits
  24. 19 May, 2019 1 commit
    • Igor Babaev's avatar
      MDEV-18896 Crash in convert_join_subqueries_to_semijoins : Correction · 2c9844a4
      Igor Babaev authored
      This patch complements the original patch for MDEV-18896 that prevents
      conversions to semi-joins in tableless selects used in INSERT statements
      in post-5.5 versions of the server.
      The test case was corrected as well to ensure that potential conversion
      to jtbm semi-joins is also checked (the problem was that one of
      the preceeding testcases in subselect_sj.test did not restore the
      state of the optimizer switch leaving the 'materialization' in the state
      'off' and so blocking this check).
      Noticed an inconsistency in the state of select_lex::table_list used
      in INSERT statements and left a comment about this.
      2c9844a4
  25. 11 May, 2019 2 commits
  26. 10 May, 2019 1 commit
    • Michal Schorm's avatar
      Update FSF address · 17b4f999
      Michal Schorm authored
      This commit is based on the work of Michal Schorm, rebased on the
      earliest MariaDB version.
      
      Th command line used to generate this diff was:
      
      find ./ -type f \
        -exec sed -i -e 's/Foundation, Inc., 59 Temple Place, Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \
        -exec sed -i -e 's/Foundation, Inc. 59 Temple Place.* Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \
        -exec sed -i -e 's/MA.*.....-1307.*USA/MA 02110-1335 USA/g' {} \; \
        -exec sed -i -e 's/Foundation, Inc., 59 Temple/Foundation, Inc., 51 Franklin/g' {} \; \
        -exec sed -i -e 's/Place, Suite 330, Boston, MA.*02111-1307.*USA/Street, Fifth Floor, Boston, MA 02110-1335 USA/g' {} \; \
        -exec sed -i -e 's/MA.*.....-1307/MA 02110-1335/g' {} \;
      17b4f999
  27. 01 May, 2019 1 commit
  28. 29 Apr, 2019 1 commit
  29. 26 Apr, 2019 2 commits
  30. 25 Apr, 2019 1 commit