1. 26 May, 2017 1 commit
    • Marko Mäkelä's avatar
      MDEV-12052 Shutdown crash presumably due to master thread activity · 449a88e1
      Marko Mäkelä authored
      InnoDB shutdown assumes that once the server has entered
      SRV_SHUTDOWN_FLUSH_PHASE, no change to persistent data is allowed.
      It was possible for the master thread to wake up while shutdown
      is executing in SRV_SHUTDOWN_FLUSH_PHASE or
      even in SRV_SHUTDOWN_LAST_PHASE.
      
      We do not yet know if further crashes at shutdown are possible.
      Also, we do not know if all the observed crashes could be explained
      by the race conditions that we are now fixing.
      
      srv_shutdown_print_master_pending(): Remove a redundant ut_time() call.
      
      srv_shutdown(): Renamed from srv_master_do_shutdown_tasks().
      
      srv_master_thread(): Do not resume after shutdown has been initiated.
      449a88e1
  2. 23 May, 2017 2 commits
  3. 19 May, 2017 6 commits
  4. 18 May, 2017 10 commits
  5. 17 May, 2017 19 commits
    • Igor Babaev's avatar
      Fixed the bug mdev-12812. · efb9f261
      Igor Babaev authored
      This is another correction of the patch for bug mdev-12670.
      If a derived table is merged into a select with STRAIGHT_JOIN
      modifier all IN subquery predicates contained in the
      specification of the derived table cannot be subject to
      conversion to semi-joins.
      efb9f261
    • Igor Babaev's avatar
      Fixed the bug mdev-12817/mdev-12820. · 7e971631
      Igor Babaev authored
      This patch is a correction of the patch for bug mdev-12670.
      With the current code handling semi-joins the following must
      be taken into account.
      Conversion of an IN subquery predicate into semi-join
      has to be blocked if the predicate occurs:
      (a) in the ON expression of an outer join
      (b) in the ON expression of an inner join embedded directly
          or indirectly in the inner nest of an outer join.
      The patch for mdev-12670 blocked conversion to semi-joins only
      in the case (a), but not in the case (b). This patch blocks
      the conversion in both cases.
      7e971631
    • Vicențiu Ciorbaru's avatar
    • Vicențiu Ciorbaru's avatar
      8b0db08f
    • Vicențiu Ciorbaru's avatar
      Fix tokudb test failures post merge · 3670d167
      Vicențiu Ciorbaru authored
      3670d167
    • Marko Mäkelä's avatar
      Follow-up to MDEV-12534: Align srv_sys · 8b34aabf
      Marko Mäkelä authored
      Allocate srv_sys statically so that the desired alignment can be
      guaranteed. This silences -fsanitize=undefined warnings.
      There probably is no performance impact of this, because the
      reason for the alignment to ensure the absence of false sharing
      between counters. Even with the misalignment, each counter would
      have been been aligned at 64 bits, and the counters would reside
      in separate cache lines.
      8b34aabf
    • Marko Mäkelä's avatar
      MDEV-12358 Work around what looks like a bug in GCC 7.1.0 · 9f89b94b
      Marko Mäkelä authored
      The parameter thr of the function btr_cur_optimistic_insert()
      is not declared as nonnull, but GCC 7.1.0 with -O3 is wrongly
      optimizing away the first part of the condition
      UNIV_UNLIKELY(thr && thr_get_trx(thr)->fake_changes)
      when the function is being called by row_merge_insert_index_tuples()
      with thr==NULL.
      
      The fake_changes is an XtraDB addition. This GCC bug only appears
      to have an impact on XtraDB, not InnoDB.
      
      We work around the problem by not attempting to dereference thr
      when both BTR_NO_LOCKING_FLAG and BTR_NO_UNDO_LOG_FLAG are set
      in the flags. Probably BTR_NO_LOCKING_FLAG alone should suffice.
      
      btr_cur_optimistic_insert(), btr_cur_pessimistic_insert(),
      btr_cur_pessimistic_update(): Correct comments that disagree with
      usage and with nonnull attributes. No other parameter than thr can
      actually be NULL.
      
      row_ins_duplicate_error_in_clust(): Remove an unused parameter.
      
      innobase_is_fake_change(): Unused function; remove.
      
      ibuf_insert_low(), row_log_table_apply(), row_log_apply(),
      row_undo_mod_clust_low():
      Because we will be passing BTR_NO_LOCKING_FLAG | BTR_NO_UNDO_LOG_FLAG
      in the flags, the trx->fake_changes flag will be treated as false,
      which is the right thing to do at these low-level operations
      (change buffer merge, ALTER TABLE…LOCK=NONE, or ROLLBACK).
      This might be fixing actual XtraDB bugs.
      
      Other callers that pass these two flags are also passing thr=NULL,
      implying fake_changes=false. (Some callers in ROLLBACK are passing
      BTR_NO_LOCKING_FLAG and a nonnull thr. In these callers, fake_changes
      better be false, to avoid corruption.)
      9f89b94b
    • Vicențiu Ciorbaru's avatar
      Fix sys_vars innodb_empty_free_list_algorithm_basic · 5fe55b1b
      Vicențiu Ciorbaru authored
      Post xtradb 5.6.36 merge the output has changed.
      5fe55b1b
    • Vicențiu Ciorbaru's avatar
      339a290d
    • Vicențiu Ciorbaru's avatar
      Merge branch 'merge-innodb-5.6' into bb-10.0-vicentiu · b87873b2
      Vicențiu Ciorbaru authored
      This merge reverts commit 6ca4f693c1ce472e2b1bf7392607c2d1124b4293
      from current 5.6.36 innodb.
      
      Bug #23481444	OPTIMISER CALL ROW_SEARCH_MVCC() AND READ THE
                             INDEX APPLIED BY UNCOMMITTED ROW
      Problem:
      ========
      row_search_for_mysql() does whole table traversal for range query
      even though the end range is passed. Whole table traversal happens
      when the record is not with in transaction read view.
      
      Solution:
      =========
      
      Convert the innodb last record of page to mysql format and compare
      with end range if the traversal of row_search_mvcc() exceeds 100,
      no ICP involved. If it is out of range then InnoDB can avoid the
      whole table traversal. Need to refactor the code little bit to
      make it compile.
      Reviewed-by: default avatarJimmy Yang <jimmy.yang@oracle.com>
      Reviewed-by: default avatarKnut Hatlen <knut.hatlen@oracle.com>
      Reviewed-by: default avatarDmitry Shulga <dmitry.shulga@oracle.com>
      RB: 14660
      b87873b2
    • Marko Mäkelä's avatar
      fil_create_new_single_table_tablespace(): Correct a bogus nonnull attribute · e22d86a3
      Marko Mäkelä authored
      The parameter path can be passed as NULL.
      This error was reported by GCC 7.1.0 when compiling
      CMAKE_BUILD_TYPE=Debug with -O3.
      e22d86a3
    • Vicențiu Ciorbaru's avatar
      Revert "Fix unit test after merge from mysql 5.5.35 perfschema" · 5064623c
      Vicențiu Ciorbaru authored
      This reverts commit 4799af09.
      
      Upstream provided adequate fix. This commit is no longer necessary.
      5064623c
    • Vicențiu Ciorbaru's avatar
      d8b45b0c
    • Marko Mäkelä's avatar
      Remove redundant UT_LIST_INIT() calls · 956d2540
      Marko Mäkelä authored
      The macro UT_LIST_INIT() zero-initializes the UT_LIST_NODE.
      There is no need to call this macro on a buffer that has
      already been zero-initialized by mem_zalloc() or mem_heap_zalloc()
      or similar.
      
      For some reason, the statement UT_LIST_INIT(srv_sys->tasks) in
      srv_init() caused a SIGSEGV on server startup when compiling with
      GCC 7.1.0 for AMD64 using -O3. The zero-initialization was attempted
      by the instruction movaps %xmm0,0x50(%rax), while the proper offset
      of srv_sys->tasks would seem to have been 0x48.
      956d2540
    • Marko Mäkelä's avatar
      Never pass NULL to innobase_get_stmt() · 4754f88c
      Marko Mäkelä authored
      4754f88c
    • Marko Mäkelä's avatar
      Silence bogus GCC 7 warnings -Wimplicit-fallthrough · 7972da8a
      Marko Mäkelä authored
      Do not silence uncertain cases, or fix any bugs.
      
      The only functional change should be that ha_federated::extra()
      is not calling DBUG_PRINT to report an unhandled case for
      HA_EXTRA_PREPARE_FOR_DROP.
      7972da8a
    • Marko Mäkelä's avatar
      Fix an incorrect debug assertion · 492c1e41
      Marko Mäkelä authored
      492c1e41
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Fix warnings in innochecksum compilation · e63e2fe2
      Marko Mäkelä authored
      e63e2fe2
  6. 16 May, 2017 2 commits
    • Igor Babaev's avatar
      Fixed the bug mdev-7791. · 934b8312
      Igor Babaev authored
      When an IN subquery predicate was converted to a semi-join that were
      materialized and the result of the materialization happened to be
      the last in the execution plan then any conjunctive condition with RAND()
      turned out to be lost.
      
      Fixed by attaching this condition to the last top base table.
      934b8312
    • Vicențiu Ciorbaru's avatar
      Remove tokudb_dir_cmd variable · dfeff407
      Vicențiu Ciorbaru authored
      The feature is too dangerous for a stable version.
      dfeff407