1. 16 Aug, 2019 1 commit
    • Jan Lindström's avatar
      MDEV-18778: mysql_tzinfo_to_sql does not work correctly in MariaDB Galera · e6b505fd
      Jan Lindström authored
      There were two problems:
      
      (1) If user wanted same time zone information on all nodes in the Galera
      cluster all updates were not replicated as time zone information was
      stored on MyISAM tables. This is fixed on Galera by altering time zone
      tables to InnoDB while they are modified.
      
      (2) If user wanted different time zone information to nodes in the Galera
      cluster TRUNCATE TABLE for time zone tables was replicated by Galera
      destroying time zone information from other nodes. This is fixed
      on Galera by introducing new option for mysql_tzinfo_to_sql_symlink
      tool --skip-write-binlog to disable Galera replication while
      time zone tables are modified.
      
      Changes to be committed:
              modified:   mysql-test/r/mysql_tzinfo_to_sql_symlink.result
              modified:   mysql-test/suite/wsrep/r/mysql_tzinfo_to_sql_symlink.result
              new file:   mysql-test/suite/wsrep/r/mysql_tzinfo_to_sql_symlink_skip.result
              new file:   mysql-test/suite/wsrep/t/mysql_tzinfo_to_sql_symlink_skip.test
              modified:   sql/tztime.cc
      
      This is 10.4 version of commit fa740888
      e6b505fd
  2. 15 Aug, 2019 3 commits
  3. 14 Aug, 2019 7 commits
  4. 13 Aug, 2019 13 commits
  5. 12 Aug, 2019 10 commits
    • Marko Mäkelä's avatar
      MDEV-20316 InnoDB writes uninitialised tail of XID buffer · ae1d17f5
      Marko Mäkelä authored
      Starting with commit 210855ce
      Valgrind became aware that the unused tail of the buffer that
      is returned by thd_get_xid() is actually uninitialized.
      
      The problem should exist already in MySQL 5.0. I was able to
      repeat it on MariaDB Server 5.5 with some additional instrumentation.
      InnoDB is allocating 128+4+4 bytes for the XID and the lengths of
      its components, even when the XID is shorter than 64+64 bytes.
      In MariaDB Server 10.3, while running the test main.xa_binlog,
      in the xid_t::set() that is called by sql_yacc.yy, the 128-byte data
      buffer was uninitialized according to Valgrind, and only the first bytes
      were initialized. When the xid_t::data was copied to
      thd.transaction.xid_state.xid.data, it happened so that the entire
      target buffer was considered initialized. With MariaDB Server 10.4 since
      the said commit, Valgrind will correctly be detect the tail of the buffer
      as uninitialized.
      
      The impact of this bug is as follows:
      
      (1) InnoDB will write unnecessarily much redo log for XA PREPARE.
      (2) InnoDB will write garbage bytes to the redo log and undo log pages.
      (3) The garbage should be 'harmless', because on recovery, only the
      actual payload of the XID will be used, based on the written length.
      
      trx_rseg_write_wsrep_checkpoint(), trx_undo_write_xid(): Write only
      the actually used length of xid->data to the data page, and
      zero out the rest of the buffer by mlog_memset().
      ae1d17f5
    • Marko Mäkelä's avatar
      Revert part of 05619f69 · 97bbac8e
      Marko Mäkelä authored
      This fixes the following test failures related to index cardinality:
      main.join main.stat_tables main.partition main.stat_tables_innodb
      innodb.innodb_bug57252
      97bbac8e
    • Marko Mäkelä's avatar
      MDEV-17614: After-merge fix · 609ea2f3
      Marko Mäkelä authored
      MDEV-17614 flags INSERT…ON DUPLICATE KEY UPDATE unsafe for statement-based
      replication when there are multiple unique indexes. This correctly fixes
      something whose attempted fix in MySQL 5.7
      in mysql/mysql-server@c93b0d9a972cb6f98fd445f2b69d924350f9128a
      caused lock conflicts. That change was reverted in MySQL 5.7.26
      in mysql/mysql-server@066b6fdd433aa6673622341f1a2f0a3a20018043
      (with a substantial amount of other changes).
      
      In MDEV-17073 we already disabled the unfortunate MySQL change when
      statement-based replication was not being used. Now, thanks to MDEV-17614,
      we can actually remove the change altogether.
      
      This reverts commit 8a346f31 (MDEV-17073)
      and mysql/mysql-server@c93b0d9a972cb6f98fd445f2b69d924350f9128a while
      keeping the test cases.
      609ea2f3
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · be33124c
      Marko Mäkelä authored
      be33124c
    • Monty's avatar
      Fixed issues found by valgrind · fe8181ac
      Monty authored
      - mysqltest didn't free read_command_buf
      - wait_for_slave_param did write different things to the log if valgrind
        was used.
      - Table open cache should not write the initial variable value as it
        can depend on the configuration or if valgrind is used
      - A variable in GetResult was used uninitalized
      fe8181ac
    • Marko Mäkelä's avatar
      Merge 5.5 into 10.1 · 15c1ab52
      Marko Mäkelä authored
      15c1ab52
    • Marko Mäkelä's avatar
      MDEV-17614: Re-record a result · 7a9e1fcd
      Marko Mäkelä authored
      7a9e1fcd
    • Marko Mäkelä's avatar
      Fix -Wimplicit-fallthrough · 1217e4a0
      Marko Mäkelä authored
      1217e4a0
    • Marko Mäkelä's avatar
      b2a387a3
    • Monty's avatar
      Fixes based on warnings from gcc/clang and valgrind · 05619f69
      Monty authored
      - Initialize variables that could be used uninitialized
      - Added extra end space to DbugStringItemTypeValue to get rid of warnings
        from c_ptr()
      - Session_sysvars_tracker::update() accessed unitialized memory if called
        with NULL value.
      - get_schema_stat_record() accessed unitialized memory if HA_KEY_LONG_HASH
        was used
      - parse_vcol_defs() accessed random memory for tables without keys.
      05619f69
  6. 11 Aug, 2019 6 commits