1. 17 May, 2019 4 commits
  2. 16 May, 2019 2 commits
  3. 15 May, 2019 1 commit
  4. 14 May, 2019 1 commit
    • Sujatha's avatar
      MDEV-11095: rpl.rpl_row_mysqlbinlog test fails if row annotation enabled · 47637a3d
      Sujatha authored
      Problem:
      =======
      Whel rpl.rpl_row_mysqlbinlog test is executed as shown below it fails with
      result content mismatch.
      
      perl mtr rpl_row_mysqlbinlog --mysqld=--binlog-annotate-row-events=1
      
      Analysis:
      =========
      When row annotations are enabled the actual query is written into the binlog
      which helps users to understand the query, even when row based replication is
      enabled.
      
      For example: Simple insert in row based replication looks like shown below.
      
      #190402 16:31:27 server id 1  end_log_pos 526 	Annotate_rows:
      #Q> insert into t values (10)
      #190402 16:31:27 server id 1  end_log_pos 566 	Table_map: `test`.`t` mapped to number 19
      # at 566
      #190402 16:31:27 server id 1  end_log_pos 600 	Write_rows: table id 19 flags: STMT_END_F
      
      BINLOG '
      B0GjXBMBAAAAKAAAADYCAAAAABMAAAAAAAEABHRlc3QAAXQAAQMAAQ==
      B0GjXBcBAAAAIgAAAFgCAAAAABMAAAAAAAEAAf/+CgAAAA==
      '/*!*/;
      # at 600
      
      The test creates some binary log events and redirects them into a SQL file.
      Executes RESET MASTER and sources the SQL file back on clean master and verifies
      that the data is available. Please refer following steps.
      
      ../client/mysqlbinlog ./var/mysqld.1/data/master-bin.000001 > test.sql
      ../client/mysql -uroot -S./var/tmp/mysqld.1.sock -Dtest  < test.sql
      ../client/mysqlbinlog ./var/mysqld.1/data/master-bin.000001 -v > row.sql
      
      When the row based replication specific SQL file is sourced once again on master
      the newly generated binlog will treat the entire "BASE 64" encoded event as
      query and write it into the binary log.
      
      Output from 'row.sql':
      
      #Q> BINLOG '
      #Q> B0GjXBMBAAAAKAAAADYCAAAAABMAAAAAAAEABHRlc3QAAXQAAQMAAQ==
      #Q> B0GjXBcBAAAAIgAAAFgCAAAAABMAAAAAAAEAAf/+CgAAAA==
      #190402 16:31:27 server id 1  end_log_pos 657 	Table_map: `test`.`t` mapped to number 23
      # at 657
      #190402 16:31:27 server id 1  end_log_pos 691 	Write_rows: table id 23 flags: STMT_END_F
      
      BINLOG '
      B0GjXBMBAAAAKAAAAJECAAAAABcAAAAAAAEABHRlc3QAAXQAAQMAAQ==
      B0GjXBcBAAAAIgAAALMCAAAAABcAAAAAAAEAAQH+CgAAAA==
      ### INSERT INTO `test`.`t`
      ### SET
      ###   @1=10
      '/*!*/;
      # at 691
      
      
      This is expected behaviour as we cannot extract query from BASE 64 encoded
      input. This causes more number of binary logs to be generated when the test is
      executed with row annotations.
      
      The following lines from test assumes that only two binary logs will contain
      entire data.
      
       --echo --- Test 4 Second Remote test --
      ---exec $MYSQL_BINLOG --read-from-remote-server --user=root --host=127.0.0.1
      	--port=$MASTER_MYPORT master-bin.000001 > $MYSQLTEST_VARDIR/tmp/remote.sql
      ---exec $MYSQL_BINLOG --read-from-remote-server --user=root --host=127.0.0.1
      	--port=$MASTER_MYPORT master-bin.000002 >> $MYSQLTEST_VARDIR/tmp/remote.sql
      
      In a case when row annotations are enabled the data gets spread across four
      binary logs. As test uses only the first two binary log files, data available in
      other binary logs gets missed. Hence test fails with result content mismatch as
      less data is avaialble.
      
      Fix:
      ====
      Use "-to-the-last" option of "mysqlbinlog" tool which will ensure that all the
      available binary log specific contents are included in .sql file.
      47637a3d
  5. 13 May, 2019 4 commits
    • Marko Mäkelä's avatar
      MDEV-19445 heap-use-after-free related to innodb_ft_aux_table · 2647fd10
      Marko Mäkelä authored
      Try to fix the race conditions between
      SET GLOBAL innodb_ft_aux_table = ...;
      and access to the INFORMATION_SCHEMA tables that depend on
      this variable.
      
      innodb_ft_aux_table: Replaces
      fts_internal_tbl_name,fts_internal_tbl_name2. Just store the
      user-specified parameter as is.
      
      innodb_ft_aux_table_id: The table_id corresponding to
      SET GLOBAL innodb_ft_aux_table, or 0 if the table does not exist
      or does not contain FULLTEXT INDEX. If the table is renamed later,
      the INFORMATION_SCHEMA tables will continue to refer to the table.
      If the table is dropped or rebuilt, the INFORMATION_SCHEMA tables
      will not find the table.
      2647fd10
    • Marko Mäkelä's avatar
      fts_optimize_words(): Remove stray output · 1c97e07f
      Marko Mäkelä authored
      With SET GLOBAL innodb_optimize_fulltext_only=1
      in effect, OPTIMIZE TABLE would output words from the fulltext index
      to the server error log, even in non-debug builds.
      
      fts_optimize_words(): Remove the unwanted output.
      1c97e07f
    • Marko Mäkelä's avatar
      fts_doc_ids_free(): Define inline · c7c54ce6
      Marko Mäkelä authored
      c7c54ce6
    • Marko Mäkelä's avatar
      MDEV-19441 Typo in error message "InnoDB: FTS Doc ID must be large than" · 7f721107
      Marko Mäkelä authored
      row_insert_for_mysql(): Correct the grammar error, and
      display the table name in both messages.
      7f721107
  6. 11 May, 2019 5 commits
  7. 10 May, 2019 7 commits
    • Michal Schorm's avatar
      Update FSF address · 17b4f999
      Michal Schorm authored
      This commit is based on the work of Michal Schorm, rebased on the
      earliest MariaDB version.
      
      Th command line used to generate this diff was:
      
      find ./ -type f \
        -exec sed -i -e 's/Foundation, Inc., 59 Temple Place, Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \
        -exec sed -i -e 's/Foundation, Inc. 59 Temple Place.* Suite 330, Boston, /Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, /g' {} \; \
        -exec sed -i -e 's/MA.*.....-1307.*USA/MA 02110-1335 USA/g' {} \; \
        -exec sed -i -e 's/Foundation, Inc., 59 Temple/Foundation, Inc., 51 Franklin/g' {} \; \
        -exec sed -i -e 's/Place, Suite 330, Boston, MA.*02111-1307.*USA/Street, Fifth Floor, Boston, MA 02110-1335 USA/g' {} \; \
        -exec sed -i -e 's/MA.*.....-1307/MA 02110-1335/g' {} \;
      17b4f999
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-13893 encryption.innodb-redo-badkey failed in buildbot with page cannot be decrypted · 3e8cab51
      Thirunarayanan Balathandayuthapani authored
      buf_dblwr_process(): Remove the useless warning that a copy of a page
      in the doublewrite buffer is corrupted. We already report an error if a
      corrupted page cannot be recovered from the doublewrite buffer.
      
      Note: In MariaDB 10.1, the original bug reported in MDEV-13893 could
      still be easily repeatable. In MariaDB 10.2.24, MDEV-12699 should
      have reduced the probability considerably.
      3e8cab51
    • Marko Mäkelä's avatar
      MDEV-18220: race condition in fts_get_table_name() · 542f3264
      Marko Mäkelä authored
      fts_get_table_name(): Add the parameter bool dict_locked=false.
      542f3264
    • Marko Mäkelä's avatar
      MDEV-18220: Backport some code from MariaDB 10.2 · f3718a11
      Marko Mäkelä authored
      fts_get_table_name(): Output to a caller-allocated buffer.
      
      fts_get_table_name_prefix(): Use the lower-overhead allocation
      ut_malloc() instead of mem_alloc().
      
      This is based on mysql/mysql-server@d1584b9f38ff0bcf609d181db35f74108e022168
      in MySQL 5.7.4.
      f3718a11
    • Marko Mäkelä's avatar
      MDEV-18220: heap-use-after-free in fts_get_table_name_prefix() · f92749ed
      Marko Mäkelä authored
      fts_table_t::parent: Remove the redundant field. Refer to
      table->name.m_name instead.
      
      fts_update_sync_doc_id(), fts_update_next_doc_id(): Remove
      the redundant parameter table_name.
      
      fts_get_table_name_prefix(): Access the dict_table_t::name.
      FIXME: Ensure that this access is always covered by
      dict_sys->mutex.
      f92749ed
    • Marko Mäkelä's avatar
      MDEV-18220: Remove some redundant data structures · 5b3f7c0c
      Marko Mäkelä authored
      fts_state_t, fts_slot_t::state: Remove. Replaced by fts_slot_t::running
      and fts_slot_t::table_id as follows.
      
      FTS_STATE_SUSPENDED: Removed (unused).
      
      FTS_STATE_EMPTY: Removed. table_id=0 will denote empty slots.
      
      FTS_STATE_RUNNING: Equivalent to running=true.
      
      FTS_STATE_LOADED, FTS_STATE_DONE: Equivalent to running=false.
      
      fts_slot_t::table: Remove. Tables will be identified by table_id.
      After opening a table, we will check fil_table_accessible() before
      accessing the data.
      
      fts_optimize_new_table(), fts_optimize_del_table(),
      fts_optimize_how_many(), fts_is_sync_needed():
      Remove the parameter tables, and use the static variable fts_slots
      (which was introduced in MariaDB 10.2) instead.
      5b3f7c0c
    • Eugene Kosov's avatar
      MDEV-19399 do not call slow my_timer_init() several times · 06442e3e
      Eugene Kosov authored
      No functional change.
      
      Call my_timer_init() only once and then reuse it from InnoDB and
      perfschema storage engines.
      
      This patch speeds up empty test for me like this:
      ./mtr -mem innodb.kevg,xtradb  1.21s user 0.84s system 34% cpu 5.999 total
      ./mtr -mem innodb.kevg,xtradb  1.12s user 0.60s system 31% cpu 5.385 total
      06442e3e
  8. 09 May, 2019 3 commits
  9. 08 May, 2019 3 commits
  10. 07 May, 2019 3 commits
  11. 06 May, 2019 4 commits
  12. 03 May, 2019 1 commit
  13. 02 May, 2019 2 commits