1. 01 Dec, 2016 5 commits
    • Marko Mäkelä's avatar
      Merge pull request #262 from grooverdan/10.2-MDEV-9451-remove-innodb_buffer_pool_populate · 6a106812
      Marko Mäkelä authored
      MDEV-9451: Remove innodb_buffer_pool_populate from xtradb (10.2)
      6a106812
    • Marko Mäkelä's avatar
      MDEV-11426 Remove InnoDB INFORMATION_SCHEMA.FILES implementation · 0b66d3f7
      Marko Mäkelä authored
      MySQL 5.7 introduced WL#7943: InnoDB: Implement Information_Schema.Files
      to provide a long-term alternative for accessing tablespace metadata.
      The INFORMATION_SCHEMA.INNODB_* views are considered internal interfaces
      that are subject to change or removal between releases. So, users should
      refer to I_S.FILES instead of I_S.INNODB_SYS_TABLESPACES to fetch metadata
      about CREATE TABLESPACE.
      
      Because MariaDB 10.2 does not support CREATE TABLESPACE or
      CREATE TABLE…TABLESPACE for InnoDB, it does not make sense to support
      I_S.FILES either. So, let MariaDB 10.2 omit the code that was added in
      MySQL 5.7. After this change, I_S.FILES will report the empty result,
      unless some other storage engine in MariaDB 10.2 implements the interface.
      (The I_S.FILES interface was originally created for the NDB Cluster.)
      0b66d3f7
    • Jan Lindström's avatar
      MDEV-11168: InnoDB: Failing assertion: !other_lock ||... · 943baa3b
      Jan Lindström authored
      MDEV-11168: InnoDB: Failing assertion: !other_lock || wsrep_thd_is_BF(lock->trx->mysql_thd, FALSE) || wsrep_thd_is_BF(other_lock->trx->mysql_thd, FALSE)
      
          Problem was that we moved lock request to head of lock queue
          even when lock request has to wait.
      943baa3b
    • Marko Mäkelä's avatar
      MDEV-11432 Change the informational redo log format tag to "MariaDB 10.2.3" · 2c9bb42d
      Marko Mäkelä authored
      MariaDB 10.2 incorporates MySQL 5.7. MySQL 5.7.9 (the first GA release
      of the series) introduced an informational field to the InnoDB redo log
      header, which identifies the server version where the redo log files
      were created (initialized, resized or updated), in
      WL#8845: InnoDB: Redo log format version identifier.
      
      The informational message would be displayed to the user, for example
      if someone tries to start up MySQL 8.0 after killing a MariaDB 10.2 server.
      In the current MariaDB 10.2 source code, the identifier string would
      misleadingly say "MySQL 5.7.14" (using the hard-coded version number in
      univ.i) instead of "MariaDB 10.2.3" (using the contents of the VERSION
      file, the build system copies to config.h and my_config.h).
      
      This is only a cosmetic change. The compatibility check is based on a
      numeric identifier.
      
      We should probably also change the numeric identifier and some logic
      around it. MariaDB 10.2 should refuse to recover from a crashed MySQL 5.7
      instance, because the redo log might contain references to shared tablespaces,
      which are not supported by MariaDB 10.2. Also, when MariaDB 10.2 creates
      an encrypted redo log, there should be a redo log format version tag that
      will prevent MySQL 5.7 or 8.0 from starting up.
      2c9bb42d
    • Jan Lindström's avatar
      MDEV-11005: Incorrect error message when using ONLINE alter table with GIS · dc9f919f
      Jan Lindström authored
      Corrected error message when ONLINE alter table with GIS indexes is
      used on InnoDB.
      dc9f919f
  2. 30 Nov, 2016 3 commits
  3. 29 Nov, 2016 3 commits
  4. 27 Nov, 2016 7 commits
  5. 26 Nov, 2016 2 commits
  6. 25 Nov, 2016 11 commits
    • Marko Mäkelä's avatar
      618edd40
    • Marko Mäkelä's avatar
      Merge branch '10.2_warnings' of https://github.com/kevgs/server into kevgs-10.2_warnings · cc3aba26
      Marko Mäkelä authored
      Revert the XtraDB changes, because 10.2 does not currently build with XtraDB.
      
      Also omit some changes that need further investigation.
      
      Ensure that all callers of partition_info::get_clone() are passing this!=NULL.
      cc3aba26
    • Marko Mäkelä's avatar
      MDEV-11349 (2/2) Fix some bogus-looking Valgrind warnings · d247d649
      Marko Mäkelä authored
      buf_block_init(): Initialize buf_page_t::flush_type.
      For some reason, Valgrind 3.12.0 would seem to flag some
      bits in adjacent bitfields as uninitialized, even though only
      the two bits of flush_type were left uninitialized. Initialize
      the field to get rid of many warnings.
      
      buf_page_init_low(): Initialize buf_page_t::old.
      For some reason, Valgrind 3.12.0 would seem to flag all 32
      bits uninitialized when buf_page_init_for_read() invokes
      buf_LRU_add_block(bpage, TRUE). This would trigger bogus warnings
      for buf_page_t::freed_page_clock being uninitialized.
      (The V-bits would later claim that only "old" is initialized
      in the 32-bit word.) Perhaps recent compilers
      (GCC 6.2.1 and clang 4.0.0) generate more optimized x86_64 code
      for bitfield operations, confusing Valgrind?
      
      mach_write_to_1(), mach_write_to_2(), mach_write_to_3():
      Rewrite the assertions that ensure that the most significant
      bits are zero. Apparently, clang 4.0.0 would optimize expressions
      of the form ((n | 0xFF) <= 0x100) to (n <= 0x100). The redundant
      0xFF was added in the first place in order to suppress a
      Valgrind warning. (Valgrind would warn about comparing uninitialized
      values even in the case when the uninitialized bits do not affect
      the result of the comparison.)
      d247d649
    • Marko Mäkelä's avatar
      MDEV-11349 (1/2) Fix some clang 4.0 warnings · cdaa1d76
      Marko Mäkelä authored
      In functions that declare pointer parameters as nonnull,
      remove nullness checks, because GCC would optimize them away anyway.
      
      Use #ifdef instead of #if when checking for a configuration flag.
      
      Clang says that left shifts of negative values are undefined.
      So, use ~0U instead of ~0 in a number of macros.
      
      Some functions that were defined as UNIV_INLINE were declared as
      UNIV_INTERN. Consistently use the same type of linkage.
      
      ibuf_merge_or_delete_for_page() could pass bitmap_page=NULL to
      buf_page_print(), conflicting with the __attribute__((nonnull)).
      cdaa1d76
    • Sergey Vojtovich's avatar
      MDEV-11296 - InnoDB stalls under OLTP RW on P8 · 1a1749e3
      Sergey Vojtovich authored
      Threads may fall asleep forever while acquiring InnoDB rw-lock on Power8. This
      regression was introduced along with InnoDB atomic operations fixes.
      
      The problem was that proper memory order wasn't enforced between "writers"
      store and "lock_word" load:
      
        my_atomic_store32((int32*) &lock->waiters, 1);
        ...
        local_lock_word = lock->lock_word;
      
      Locking protocol is such that store to "writers" must be completed before load
      of "lock_word". my_atomic_store32() was expected to enforce memory order because
      it issues strongest MY_MEMORY_ORDER_SEQ_CST memory barrier.
      
      According to C11:
      - any operation with this memory order is both an acquire operation and a
        release operation
      - for atomic store order must be one of memory_order_relaxed
        memory_order_release or memory_order_seq_cst. Otherwise the behavior is
        undefined.
      
      That is it doesn't say explicitly that this expectation is wrong, but there are
      indications that acquire (which is actually supposed to guarantee memory order
      in this case) may not be issued along with MY_MEMORY_ORDER_SEQ_CST.
      
      A good fix for this is to encode waiters into lock_word, but it is a bit too
      intrusive. Instead we change atomic store to atomic fetch-and-store, which
      does memory load and is guaranteed to issue acquire.
      1a1749e3
    • Sergey Vojtovich's avatar
      MDEV-11296 - InnoDB stalls under OLTP RW on P8 · fb7caad7
      Sergey Vojtovich authored
      Simplify away recursive flag: it is not necessary for rw-locks to operate
      properly. Now writer_thread != 0 means recursive.
      
      As we only need correct value of writer_thread only in writer_thread itself
      it is rather safe to load and update it non-atomically.
      
      This patch also fixes potential reorder of "writer_thread" and "recursive"
      loads (aka MDEV-7148), which was reopened along with InnoDB thread fences
      simplification. Previous versions are unaffected, because they have os_rmb
      in rw_lock_lock_word_decr(). It wasn't observed at the moment of writing
      though.
      fb7caad7
    • Sergey Vojtovich's avatar
      MDEV-11296 - InnoDB stalls under OLTP RW on P8 · 68a85373
      Sergey Vojtovich authored
      Clean-up INNODB_RW_LOCKS_USE_ATOMICS: it is always set.
      68a85373
    • Sergey Vojtovich's avatar
      MDEV-11296 - InnoDB stalls under OLTP RW on P8 · 8d010c44
      Sergey Vojtovich authored
      Simplified away rw_lock_get_waiters(), rw_lock_set_waiter_flag(),
      rw_lock_reset_waiter_flag(). Let waiters have predictable data type.
      8d010c44
    • Sergey Vojtovich's avatar
      MDEV-11296 - InnoDB stalls under OLTP RW on P8 · bb7e84b7
      Sergey Vojtovich authored
      Simplified away rw_lock_lock_word_incr().
      bb7e84b7
    • Otto Kekäläinen's avatar
      Deb: make server core package breaks/replaces earlier client packages · e06e455e
      Otto Kekäläinen authored
      This is required, as the innochecksum binary has moved package.
      Without this change the following error would be emitted:
      
        Unpacking mariadb-server-core-10.2 (10.2.3+maria~jessie) over (10.2.2+maria-1~jessie) ...
        dpkg: error processing archive /var/cache/apt/archives/mariadb-server-core-10.2_10.2.3+maria~jessie_amd64.deb (--unpack):
          trying to overwrite '/usr/bin/innochecksum', which is also in package mariadb-client-10.2 10.2.2+maria-1~jessie
      e06e455e
    • Otto Kekäläinen's avatar
      Deb: skip invoke-rc.d mysql stop if no mysql process is running at all · 89236a8a
      Otto Kekäläinen authored
      Quite often in upgrades on systemd systems dpkg emitted an error like:
      
        Failed to stop mysql.service: Unit mysql.service not loaded.
        invoke-rc.d: initscript mysql, action "stop" failed.
        invoke-rc.d returned 5
        There is a MySQL server running, but we failed in our attempts to stop it.
        Stop it yourself and try again!
        dpkg: error processing archive /var/cache/apt/archives/mariadb-server-10.2
      
      This is because the mariadb/mysql.service file is not loaded during
      the upgrade/unpack stage of dpkg in certain situations. With this simple
      check we can easily skip the shutdown step when it is really not needed,
      which is for sure the case if no mysqld process at all is running on the
      entire system.
      89236a8a
  7. 24 Nov, 2016 2 commits
  8. 23 Nov, 2016 1 commit
    • Igor Babaev's avatar
      Fixed bug mdev-11315. · f4d6f26a
      Igor Babaev authored
      There were no implementations for the virtual functions
      exclusive_dependence_on_table_processor and
      exclusive_dependence_on_table_processor. As a result
      the procedure pushdown_cond_for_derived erroneously
      detected some conditions with outer references as pushable
      into materialized view / derived table.
      f4d6f26a
  9. 22 Nov, 2016 1 commit
  10. 21 Nov, 2016 5 commits