1. 26 Jan, 2017 2 commits
    • Marko Mäkelä's avatar
      MDEV-11915 Detect InnoDB system tablespace size mismatch early · afb46158
      Marko Mäkelä authored
      InnoDB would refuse to start up if there is a mismatch on
      the size of the system tablespace files. However, before this
      check is conducted, the system tablespace may already have been
      heavily modified.
      
      InnoDB should perform the size check as early as possible.
      
      recv_recovery_from_checkpoint_finish():
      Move the recv_apply_hashed_log_recs() call to
      innobase_start_or_create_for_mysql().
      
      innobase_start_or_create_for_mysql(): Test the mutex functionality
      before doing anything else. Use a compile_time_assert() for a
      sizeof() constraint. Check the size of the system tablespace as
      early as possible.
      afb46158
    • Marko Mäkelä's avatar
      MDEV-11814 Refuse innodb_read_only startup if crash recovery is needed · 49fe9bad
      Marko Mäkelä authored
      recv_scan_log_recs(): Remember if redo log apply is needed,
      even if starting up in innodb_read_only mode.
      
      recv_recovery_from_checkpoint_start_func(): Refuse
      innodb_read_only startup if redo log apply is needed.
      49fe9bad
  2. 23 Jan, 2017 1 commit
  3. 20 Jan, 2017 1 commit
    • Sachin Setiya's avatar
      MDEV-4774 Strangeness with max_binlog_stmt_cache_size Settings · 18ef02b0
      Sachin Setiya authored
      Problem:- When setting max_binlog_stmt_cache_size=18446744073709547520
      from either command line or .cnf file, server fails to start.
      
      Solution:- Added one more function eval_num_suffix_ull , which uses
      strtoull to get unsigned ulonglong from string. And getopt_ull calls this
      function instead of eval_num_suffix. Also changed previous eval_num_suffix to
      eval_num_suffix_ll to remain consistent.
      18ef02b0
  4. 17 Jan, 2017 4 commits
  5. 14 Jan, 2017 4 commits
    • Sergei Golubchik's avatar
      bugfix: Item_func_min_max stored thd internally · b948b5f7
      Sergei Golubchik authored
      It was used for get_datetime_value() and for thd->is_error().
      
      But in fact, get_datetime_value() never used thd argument, because the
      cache ptr argument was NULL. And thd->is_error() check was not needed
      at that place at all.
      b948b5f7
    • Sergei Golubchik's avatar
      bugfix: cmp_item_row::alloc_comparators() allocated on the wrong arena · 798fcb54
      Sergei Golubchik authored
      it used current_thd->alloc() and allocated on the thd's execution arena,
      not on table->expr_arena.
      
      Remove THD::arena_for_cached_items that is temporarily set in
      update_virtual_fields(), and replaces THD arena in get_datetime_value().
      Instead set THD arena to table->expr_arena for the whole  duration
      of update_virtual_fields()
      798fcb54
    • Sergei Golubchik's avatar
      MDEV-9690 concurrent queries with virtual columns crash in temporal code · 67e20281
      Sergei Golubchik authored
      Item_func_le included Arg_comparator. Arg_comparator remembered
      the current_thd during fix_fields and used that value during
      execution to allocate Item_cache in get_datetime_value().
      But for vcols fix_fields and val_int can happen in different threads.
      
      Same bug for Item_func_in using in_datetime or cmp_item_datetime,
      both also remembered current_thd at fix_fields() to use it later
      for get_datetime_value().
      
      As a fix, these objects no longer remember the current_thd,
      and get_datetime_value() uses current_thd at run time. This
      should not increase the number of current_thd calls much, as
      Item_cache is created only once anyway.
      67e20281
    • Vicențiu Ciorbaru's avatar
      Merge branch '5.5' into 10.0 · 66744f45
      Vicențiu Ciorbaru authored
      66744f45
  6. 13 Jan, 2017 1 commit
  7. 12 Jan, 2017 3 commits
  8. 11 Jan, 2017 5 commits
  9. 10 Jan, 2017 8 commits
    • iangilfillan's avatar
      Update mysql_secure_installation man page · 9a4bc0d0
      iangilfillan authored
      9a4bc0d0
    • Sergei Golubchik's avatar
      6ad3dd60
    • 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
  10. 09 Jan, 2017 2 commits
  11. 08 Jan, 2017 1 commit
    • Monty's avatar
      MDEV-11317: `! is_set()' or `!is_set() || (m_status == DA_OK_BULK &&... · eed319b6
      Monty authored
      MDEV-11317: `! is_set()' or `!is_set() || (m_status == DA_OK_BULK && is_bulk_op())' fails in Diagnostics_area::set_ok_status on CREATE OR REPLACE with ARCHIVE table
      
      Problem was with deleting non existing .frm file for a storage engine that
      doesn't have .frm files (yet)
      
      Fixed by not giving an error for non existing .frm files for storage engines
      that are using discovery
      Fixed also valgrind supression related to the given test case
      eed319b6
  12. 07 Jan, 2017 2 commits
  13. 06 Jan, 2017 6 commits
    • vicentiu's avatar
    • Vladislav Vaintroub's avatar
      MDEV-11087 Search path for my.ini is wrong for default installation · eaf6b053
      Vladislav Vaintroub authored
      Add <install_root>/data/my.ini to the search path -  this my.ini location
      is used since MariaDB 5.2
      eaf6b053
    • Vladislav Vaintroub's avatar
      Windows : use meaningful DEFAULT_MYSQL_HOME - base directory · 82b8741a
      Vladislav Vaintroub authored
      for the default installation.
      
      It is now defined as "C:/Program Files/MariaDB ${MYSQL_BASE_VERSION}"
      which is where installer indeed puts it by default.
      
      It still does not cover every case -32bit installer on 64 bit Windows would put installation
      root under  "C:/Program Files (x86)", but better than the path used
      previously C:/MariaDB${MYSQL_BASE_VERSION}, which was never correct.
      82b8741a
    • Vladislav Vaintroub's avatar
      MDEV-11088 Client plugins cannot be loaded by command line tools · ae6eb7a0
      Vladislav Vaintroub authored
      in default installation.
      
      Added plugin-dir to the [client] section of the generated my.ini,
      so that  installed services (MSI or mysql_install_db.exe) would be able to
      find plugin directory.
      ae6eb7a0
    • vicentiu's avatar
      e9aed131
    • Dmitry Lenev's avatar
      MDEV-9084 Calling a stored function from a nested select from temporary table... · e4978d26
      Dmitry Lenev authored
      MDEV-9084 Calling a stored function from a nested select from temporary table causes unpredictable behavior
      
      Cherry-pick: f4a0af070ce49abae60040f6f32e1074309c27fb
      Author: Dmitry Lenev <dmitry.lenev@oracle.com>
      Date:   Mon Jul 25 16:06:52 2016 +0300
      
        Fix for bug #16672723 "CAN'T FIND TEMPORARY TABLE".
      
        Attempt to execute prepared CREATE TABLE SELECT statement which used
        temporary table in the subquery in FROM clause and stored function
        failed with unwarranted ER_NO_SUCH_TABLE error. The same happened
        when such statement was used in stored procedure and this procedure
        was re-executed.
      
        The problem occurred because execution of such prepared statement/its
        re-execution as part of stored procedure incorrectly set
        Query_table_list::query_tables_own_last marker, indicating the last
        table which is directly used by statement. As result temporary table
        used in the subquery was treated as indirectly used/belonging to
        prelocking list and was not pre-opened by open_temporary_tables()
        call before statement execution. Thus causing ER_NO_SUCH_TABLE errors
        since our code assumes that temporary tables need to be correctly
        pre-opened before statement execution.
      
        This problem became visible only in version 5.6 after patches related to
        bug 11746602/27480 "EXTEND CREATE TEMPORARY TABLES PRIVILEGE TO ALLOW
        TEMP TABLE OPERATIONS" since they have introduced pre-opening of temporary
        tables for statements.
      
        Incorrect setting of Query_table_list::query_tables_own_last happened
        in LEX::first_lists_tables_same() method which is called by CREATE TABLE
        SELECT implementation as part of LEX::unlink_first_table(), which temporary
        excludes table list element for table being created from the query table
        list before handling SELECT part.
      
        LEX::first_lists_tables_same() tries to ensure that global table list of
        the statement starts with the first table list element from the first
        statement select. To do this it moves such table list element to the head
        of the global table list. If this table happens to be last directly-used
        table for the statement, query_tables_own_last marker is pointing to it.
        Since this marker was not updated when table list element was moved we
        ended up with all tables except the first table separated by it as if
        they were not directly used by statement (i.e. belonged to prelocked
        tables list).
      
        This fix changes code of LEX::first_lists_tables_same() to update
        query_tables_own_last marker in cases when it points to the table
        being moved. It is set to the table which precedes table being moved
        in this case.
      e4978d26