1. 11 Jan, 2017 13 commits
    • Monty's avatar
      Fixes for failures in test scripts and removal of some compiler warnings · de22cd3f
      Monty authored
      - rpl_gtid_stop_start:  Random failure
      - sysvars_innodb,32bit: Fixes for 32 bit
      de22cd3f
    • Monty's avatar
      Cleanups · bf95970e
      Monty authored
      * Ensure that BUILD scripts cleans up things properly before new BUILD
      * MySQL -> MariaDB
      * Ignore wrong valgrind memleak
      bf95970e
    • Sergei Golubchik's avatar
      mtr uses dgcov for --gcov option · 53ae72e2
      Sergei Golubchik authored
      53ae72e2
    • Sergei Golubchik's avatar
      00f462cf
    • Monty's avatar
      Fixes for using ssl with BUILD scripts. · 7567cf5a
      Monty authored
      Needed as GNUTLS can't be used by MariaDB on many systems,
      like OpenSuse 13.2
      7567cf5a
    • Monty's avatar
      New simpler bugfix for UPDATE and virtual BLOBs · ea1b2504
      Monty authored
      When updating a table with virtual BLOB columns, the following might
      happen:
      - an old record is read from the table, it has no virtual blob values
      - update_virtual_fields() is run, vcol blob gets its value into the
        record. But only a pointer to the value is in the table->record[0],
        the value is in Field_blob::value String (but it doesn't have to be!
        it can be in the record, if the column is just a copy of another
        columns: ... b VARCHAR, c BLOB AS (b) ...)
      - store_record(table,record[1]), old record now is in record[1]
      - fill_record() prepares new values in record[0], vcol blob is updated,
        new value replaces the old one in the Field_blob::value
      - now both record[1] and record[0] have a pointer that points to the
        *new* vcol blob value. Or record[1] has a pointer to nowhere if
         Field_blob::value had to realloc.
      
      To fix this I have introduced a new String object 'read_value' in
      Field_blob.  When updating virtual columns when a row has been read,
      the allocated value is stored in 'read_value' instead of 'value'.  The
      allocated blobs for the new row is stored in 'value' as before.
      
      I also made, as a safety precaution, the insert delayed handling of
      blobs more general by using value to store strings instead of the
      record.  This ensures that virtual functions on delayed insert should
      work in as in the case of normal insert.
      
      Triggers are now properly updating the read, write and vcol maps for used
      fields. This means that we don't need VCOL_UPDATE_FOR_READ_WRITE anymore
      and there is no need for any other special handling of triggers in
      update_virtual_fields().
      
      To be able to test how many times virtual fields are invoked, I also
      relaxed rules that one can use local (@) variables in DEFAULT and non
      persistent virtual field expressions.
      ea1b2504
    • Monty's avatar
      Revert "bugfix: UPDATE and virtual BLOBs" · 7454087d
      Monty authored
      This reverts commit f73bdb68.
      7454087d
    • Monty's avatar
      Fixed issues found by buildbot · 1628a2ae
      Monty authored
      - MDEV-11621 rpl.rpl_gtid_stop_start fails sporadically in buildbot
      - MDEV-11620 rpl.rpl_upgrade_master_info fails sporadically in buildbot
      
      The issue above was probably that the build machine was overworked and the
      shutdown took longer than 30 resp 10 seconds, which caused MyISAM tables
      to be marked as crashed.
      Fixed by flushing myisam tables before doing a forced shutdown/kill.
      I also increased timeout for forced shutdown from 10 seconds to 60 seconds
      to fix other possible issues on slow machines.
      
      Fixed also some compiler warnings
      1628a2ae
    • Monty's avatar
      Fixed bugs found by mysql-test-run: · 1afb1704
      Monty authored
      - privilege_table_io.test didn't properly reset roles_mapping
      - Fixed memory allocation problem with CHECK CONSTRAINT, found when
        running --valgrind main.check_constraint
      1afb1704
    • Sergei Golubchik's avatar
      Make atomic writes general · ed008a74
      Sergei Golubchik authored
      - Atomic writes are enabled by default
      - Automatically detect if device supports atomic write and use it if
        atomic writes are enabled
      - Remove ATOMIC WRITE options from CREATE TABLE
        - Atomic write is a device option, not a table options as the table may
          crash if the media changes
      - Add support for SHANNON SSD cards
      ed008a74
    • Monty's avatar
      Removed usage of my_hash_search() with uninitialized HASH. · ed0bc17b
      Monty authored
      - Not documented on intened usage
      - Extra checking takes time for all HASH usage
      ed0bc17b
    • Monty's avatar
      Improve mysys/hash by caching hash_nr · e80ad58d
      Monty authored
      This is done without using any additional memory
      Added internal test case
      
      This is similar to MDEV-7716
      e80ad58d
    • Monty's avatar
      Fixes for running with gcov · 67034b6d
      Monty authored
      67034b6d
  2. 10 Jan, 2017 3 commits
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · f27ca6f6
      Marko Mäkelä authored
      f27ca6f6
    • 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
  3. 09 Jan, 2017 4 commits
  4. 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
  5. 07 Jan, 2017 3 commits
  6. 06 Jan, 2017 7 commits
    • 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
    • Marko Mäkelä's avatar
      Suppress warnings of NUMA not working. · bbd4844a
      Marko Mäkelä authored
      bbd4844a
    • Marko Mäkelä's avatar
      ac0b0efa
    • 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
    • Kristian Nielsen's avatar
      MDEV-10271: Stopped SQL slave thread doesn't print a message to error log like IO thread does · 43378f36
      Kristian Nielsen authored
      Make the slave SQL thread always output to the error log the message "Slave
      SQL thread exiting, replication stopped in ..." whenever it previously
      outputted "Slave SQL thread initialized, starting replication ...".
      
      Before this patch, it was somewhat inconsistent in which cases the message
      would be output and in which not, depending on the exact time and cause of
      the condition that caused the SQL thread to stop.
      43378f36
  7. 05 Jan, 2017 9 commits