1. 16 Jan, 2017 7 commits
  2. 15 Jan, 2017 8 commits
    • Elena Stepanova's avatar
      34c89d01
    • Marko Mäkelä's avatar
      MDEV-11623 MariaDB 10.1 fails to start datadir created with · ab1e6fef
      Marko Mäkelä authored
      MariaDB 10.0/MySQL 5.6 using innodb-page-size!=16K
      
      The storage format of FSP_SPACE_FLAGS was accidentally broken
      already in MariaDB 10.1.0. This fix is bringing the format in
      line with other MySQL and MariaDB release series.
      
      Please refer to the comments that were added to fsp0fsp.h
      for details.
      
      This is an INCOMPATIBLE CHANGE that affects users of
      page_compression and non-default innodb_page_size. Upgrading
      to this release will correct the flags in the data files.
      If you want to downgrade to earlier MariaDB 10.1.x, please refer
      to the test innodb.101_compatibility how to reset the
      FSP_SPACE_FLAGS in the files.
      
      NOTE: MariaDB 10.1.0 to 10.1.20 can misinterpret
      uncompressed data files with innodb_page_size=4k or 64k as
      compressed innodb_page_size=16k files, and then probably fail
      when trying to access the pages. See the comments in the
      function fsp_flags_convert_from_101() for detailed analysis.
      
      Move PAGE_COMPRESSION to FSP_SPACE_FLAGS bit position 16.
      In this way, compressed innodb_page_size=16k tablespaces will not
      be mistaken for uncompressed ones by MariaDB 10.1.0 to 10.1.20.
      
      Derive PAGE_COMPRESSION_LEVEL, ATOMIC_WRITES and DATA_DIR from the
      dict_table_t::flags when the table is available, in
      fil_space_for_table_exists_in_mem() or fil_open_single_table_tablespace().
      During crash recovery, fil_load_single_table_tablespace() will use
      innodb_compression_level for the PAGE_COMPRESSION_LEVEL.
      
      FSP_FLAGS_MEM_MASK: A bitmap of the memory-only fil_space_t::flags
      that are not to be written to FSP_SPACE_FLAGS. Currently, these will
      include PAGE_COMPRESSION_LEVEL, ATOMIC_WRITES and DATA_DIR.
      
      Introduce the macro FSP_FLAGS_PAGE_SSIZE(). We only support
      one innodb_page_size for the whole instance.
      
      When creating a dummy tablespace for the redo log, use
      fil_space_t::flags=0. The flags are never written to the redo log files.
      
      Remove many FSP_FLAGS_SET_ macros.
      
      dict_tf_verify_flags(): Remove. This is basically only duplicating
      the logic of dict_tf_to_fsp_flags(), used in a debug assertion.
      
      fil_space_t::mark: Remove. This flag was not used for anything.
      
      fil_space_for_table_exists_in_mem(): Remove the unnecessary parameter
      mark_space, and add a parameter for table flags. Check that
      fil_space_t::flags match the table flags, and adjust the (memory-only)
      flags based on the table flags.
      
      fil_node_open_file(): Remove some redundant or unreachable conditions,
      do not use stderr for output, and avoid unnecessary server aborts.
      
      fil_user_tablespace_restore_page(): Convert the flags, so that the
      correct page_size will be used when restoring a page from the
      doublewrite buffer.
      
      fil_space_get_page_compressed(), fsp_flags_is_page_compressed(): Remove.
      It suffices to have fil_space_is_page_compressed().
      
      FSP_FLAGS_WIDTH_DATA_DIR, FSP_FLAGS_WIDTH_PAGE_COMPRESSION_LEVEL,
      FSP_FLAGS_WIDTH_ATOMIC_WRITES: Remove, because these flags do not
      exist in the FSP_SPACE_FLAGS but only in memory.
      
      fsp_flags_try_adjust(): New function, to adjust the FSP_SPACE_FLAGS
      in page 0. Called by fil_open_single_table_tablespace(),
      fil_space_for_table_exists_in_mem(), innobase_start_or_create_for_mysql()
      except if --innodb-read-only is active.
      
      fsp_flags_is_valid(ulint): Reimplement from the scratch, with
      accurate comments. Do not display any details of detected
      inconsistencies, because the output could be confusing when
      dealing with MariaDB 10.1.x data files.
      
      fsp_flags_convert_from_101(ulint): Convert flags from buggy
      MariaDB 10.1.x format, or return ULINT_UNDEFINED if the flags
      cannot be in MariaDB 10.1.x format.
      
      fsp_flags_match(): Check the flags when probing files.
      Implemented based on fsp_flags_is_valid()
      and fsp_flags_convert_from_101().
      
      dict_check_tablespaces_and_store_max_id(): Do not access the
      page after committing the mini-transaction.
      
      IMPORT TABLESPACE fixes:
      
      AbstractCallback::init(): Convert the flags.
      
      FetchIndexRootPages::operator(): Check that the tablespace flags match the
      table flags. Do not attempt to convert tablespace flags to table flags,
      because the conversion would necessarily be lossy.
      
      PageConverter::update_header(): Write back the correct flags.
      This takes care of the flags in IMPORT TABLESPACE.
      ab1e6fef
    • Marko Mäkelä's avatar
      MDEV-11799 InnoDB can abort if the doublewrite buffer · a9d00db1
      Marko Mäkelä authored
      contains a bad and a good copy
      
      Clean up the InnoDB doublewrite buffer code.
      
      buf_dblwr_init_or_load_pages(): Do not add empty pages to the buffer.
      
      buf_dblwr_process(): Do consider changes to pages that are all zero.
      Do not abort when finding a corrupted copy of a page in the doublewrite
      buffer, because there could be multiple copies in the doublewrite buffer,
      and only one of them needs to be good.
      a9d00db1
    • Marko Mäkelä's avatar
    • Sergei Golubchik's avatar
      MDEV-11551 Server crashes in Field::is_real_null · 5dfab33c
      Sergei Golubchik authored
      sometimes table->s->stored_fields is less than table->s->null_fields
      5dfab33c
    • Sergei Golubchik's avatar
      max_session_mem_used server variable · 7e2f9d09
      Sergei Golubchik authored
      7e2f9d09
    • Sergei Golubchik's avatar
      bugfix: mutex order violation in embedded · ab3388c3
      Sergei Golubchik authored
      safe_mutex: Found wrong usage of mutex 'LOCK_thread_count' and 'LOCK_status'
      Mutex currently locked (in reverse order):
      LOCK_status        sql/sql_class.h  line 3873
      LOCK_thread_count  libmysqld/lib_sql.cc  line 432
      ab3388c3
    • Sergei Golubchik's avatar
      1282eb69
  3. 14 Jan, 2017 1 commit
  4. 13 Jan, 2017 3 commits
  5. 12 Jan, 2017 5 commits
    • Sergei Golubchik's avatar
      MDEV-11527 Virtual columns do not get along well with NO_ZERO_DATE · 20ca1bcf
      Sergei Golubchik authored
      don't check defaults for vcols
      20ca1bcf
    • Alexander Barkov's avatar
      MDEV-11030 Assertion `precision > 0' failed in decimal_bin_size · ebb8c9fb
      Alexander Barkov authored
      Fixing Item::decimal_precision() to return at least one digit.
      This fixes the problem reported in MDEV.
      
      Also, fixing Item_func_signed::fix_length_and_dec() to reserve
      space for at least one digit (plus one character for an optional sign).
      This is needed to have CONVERT(expr,SIGNED) and CONVERT(expr,UNSIGNED)
      create correct string fields when they appear in string context, e.g.:
        CREATE TABLE t1 AS SELECT CONCAT(CONVERT('',SIGNED));
      ebb8c9fb
    • Marko Mäkelä's avatar
      Improve an MDEV-9011 test of innodb_encrypt_log. · 2dc5d8bb
      Marko Mäkelä authored
      Test crash recovery from an encrypted redo log with innodb_encrypt_log=0.
      Previously, we did a clean shutdown, so only the log checkpoint
      information would have been read from the redo log. With this change,
      we will be reading and applying encrypted redo log records.
      
      include/start_mysqld.inc: Observe $restart_parameters.
      
      encryption.innodb-log-encrypt: Remove some unnecessary statements,
      and instead of restarting the server and concurrently accessing
      the files while the server is running, kill the server, check the
      files, and finally start up the server.
      
      innodb.log_data_file_size: Use start_mysqld.inc with $restart_parameters.
      2dc5d8bb
    • Vicențiu Ciorbaru's avatar
      Merge branch 'bb-10.0-vicentiu' into 10.0 · 4f533846
      Vicențiu Ciorbaru authored
      Extra merge commit due to intermediate commits pushed to 10.0 while
      merge was done.
      4f533846
    • Vicențiu Ciorbaru's avatar
      Merge branch '5.5' into 10.0 · 1c5ca7c1
      Vicențiu Ciorbaru authored
      1c5ca7c1
  6. 11 Jan, 2017 7 commits
  7. 10 Jan, 2017 9 commits
    • iangilfillan's avatar
      Update mysql_secure_installation man page · 9a4bc0d0
      iangilfillan authored
      9a4bc0d0
    • Sergei Golubchik's avatar
      6ad3dd60
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · 5044dae2
      Marko Mäkelä authored
      5044dae2
    • Marko Mäkelä's avatar
      Fix an innodb_plugin leak noted in MDEV-11686 · 78e6fafc
      Marko Mäkelä authored
      buf_flush_init_flush_rbt() was called too early in MariaDB server 10.0,
      10.1, MySQL 5.5 and MySQL 5.6. The memory leak has been fixed in
      the XtraDB storage engine and in MySQL 5.7.
      
      As a result, when the server is started to initialize new data files,
      the buf_pool->flush_rbt will be created unnecessarily and then leaked.
      This memory leak was noticed in MariaDB server 10.1 when running the
      test encryption.innodb_first_page.
      78e6fafc
    • Vicențiu Ciorbaru's avatar
      Fix unit test after merge from mysql 5.5.35 perfschema · 4799af09
      Vicențiu Ciorbaru authored
      The problem in MariaDB is introduced by this merge commit:
      c33db2cd
      
      The merge comes from mysql and the original author comes from this
      commit from MySQL:
      ------------------------------------------------
          commit 160b823d146288d66638e4a740d6d2da72f9a689
          Author: Marc Alff <marc.alff@oracle.com>
          Date:   Tue Aug 30 12:14:07 2016 +0200
      
          Bug#22551677 SIGNAL 11 IN LF_PINBOX_PUT_PINS
      
          Backport to 5.6
      ------------------------------------------------
      
      The breaking change is in start_socket_wait_v1 where instead of using
      m_thread_owner, we make use of my_pthread_getspecific_ptr to fetch a
      thread local storage value. Unfortunately this invalidates the
      "m_thread_owner" member when a socket is created. The internals of the
      socket structure have m_thread_owner set to NULL, but when checking for
      ownership we actually look at the current thread's key store.
      
      This seems incorrect however it is not immediately apparent why.
      
      To not diverge from MySQL's reasoning as it is not described what the
      actual problem was that this commit is trying to fix, I have adjusted the
      unittest to account for this new behaviour. We destroy the current
      thread in the unit test, such that the newly created socket actually has
      no thread owner. The m_thread_owner is untouched in all this.
      4799af09
    • Vicențiu Ciorbaru's avatar
      d00d46f4
    • Vicențiu Ciorbaru's avatar
      Fix problems from 5.5 merge · ecdb39a9
      Vicențiu Ciorbaru authored
      * Update mysqld_safe script to remove duplicated parameter --crash-script
      * Make --core-file-size accept underscores as well as dashes correctly.
      * Add mysqld_safe_helper to Debian and Ubuntu files.
      * Update innodb minor version to 35
      ecdb39a9
    • Vicențiu Ciorbaru's avatar
    • vicentiu's avatar