1. 17 Mar, 2018 1 commit
  2. 16 Mar, 2018 1 commit
  3. 15 Mar, 2018 5 commits
  4. 14 Mar, 2018 1 commit
    • Daniel Black's avatar
      MDEV-8743: where O_CLOEXEC is available, use for innodb buf_dump · fafec1a9
      Daniel Black authored
      As this is the only moderately critical fopened for writing file,
      create an alternate path to use open and fdopen for non-glibc platforms
      that support O_CLOEXEC (BSDs).
      
      Tested on Linux (by modifing the GLIBC defination) to take this
      alternate path:
      
      $ cd /proc/23874
      $ more fdinfo/71
      pos:    0
      flags:  02100001
      mnt_id: 24
      $ ls -la fd/71
      l-wx------. 1 dan dan 64 Mar 14 13:30 fd/71 -> /dev/shm/var_auto_i7rl/mysqld.1/data/ib_buffer_pool.incomplete
      fafec1a9
  5. 13 Mar, 2018 4 commits
  6. 12 Mar, 2018 10 commits
  7. 11 Mar, 2018 1 commit
  8. 10 Mar, 2018 4 commits
    • Marko Mäkelä's avatar
      MDEV-15529 IMPORT TABLESPACE unnecessarily uses the doublewrite buffer · 112df069
      Marko Mäkelä authored
      fil_space_t::atomic_write_supported: Always set this flag for
      TEMPORARY TABLESPACE and during IMPORT TABLESPACE. The page
      writes during these operations are by definition not crash-safe
      because they are not written to the redo log.
      
      fil_space_t::use_doublewrite(): Determine if doublewrite should
      be used.
      
      buf_dblwr_update(): Add assertions, and let the caller check whether
      doublewrite buffering is desired.
      
      buf_flush_write_block_low(): Disable the doublewrite buffer for
      the temporary tablespace and for IMPORT TABLESPACE.
      
      fil_space_set_imported(), fil_node_open_file(), fil_space_create():
      Initialize or revise the space->atomic_write_supported flag.
      
      buf_page_io_complete(), buf_flush_write_complete(): Add the parameter
      dblwr, to indicate whether doublewrite was used for writes.
      
      buf_dblwr_sync_datafiles(): Remove an unnecessary flush of
      persistent tablespaces when flushing temporary tablespaces.
      (Move the call to buf_dblwr_flush_buffered_writes().)
      112df069
    • Marko Mäkelä's avatar
      MDEV-15524 Do not disable page checksums for temporary tables · 54765aaa
      Marko Mäkelä authored
      buf_flush_init_for_writing(): Remove the parameter skip_checksum.
      54765aaa
    • Marko Mäkelä's avatar
      MDEV-15524 Do not write garbage for temporary tables · 4fa18d52
      Marko Mäkelä authored
      fsp_init_file_page_low(): Always initialize the page.
      4fa18d52
    • Marko Mäkelä's avatar
      1e4cb840
  9. 09 Mar, 2018 3 commits
  10. 08 Mar, 2018 2 commits
  11. 07 Mar, 2018 5 commits
    • Alexander Barkov's avatar
      MDEV-15497 Wrong empty value in a GEOMETRY column on LOAD DATA · 6ec3de5d
      Alexander Barkov authored
      - Adding a new virtual method Field::load_data_set_no_data().
      - Overriding Field_timestamp::load_data_set_no_data() and moving
        the TIMESTAMP specific code there.
      - Overriding Field_geom::load_data_set_no_data() and implementing
        GEOMETRY specific behavior, to prevent writing empty strings
        when the loaded file ends unexpectedly. This fixes the bug.
      - Adding a new test gis-loaddaata.test.
      - The test in loaddata.test for CHAR was added simply to record behavior.
        The CHAR data type did not change its behaviour (only GEOMRYRY did).
      - Additionally, moving duplicate code into a new method
        Field::load_data_set_value() and reusing it in three places.
      6ec3de5d
    • Marko Mäkelä's avatar
      MDEV-14904 Backport innodb_default_row_format · 8ef727b3
      Marko Mäkelä authored
      InnoDB in Debian uses utf8mb4 as default character set since
      version 10.0.20-2. This leads to major pain due to keys longer
      than 767 bytes.
      
      MariaDB 10.2 (and MySQL 5.7) introduced the setting
      innodb_default_row_format that is DYNAMIC by default. These
      versions also changed the default values of the parameters
      innodb_large_prefix=ON and innodb_file_format=Barracuda.
      This would allow longer column index prefixes to be created.
      The original purpose of these parameters was to allow InnoDB
      to be downgraded to MySQL 5.1, which is long out of support.
      
      Every InnoDB version since MySQL 5.5 does support operation
      with the relaxed limits.
      
      We backport the parameter innodb_default_row_format to
      MariaDB 10.1, but we will keep its default value at COMPACT.
      This allows MariaDB 10.1 to be configured so that CREATE TABLE
      is less likely to encounter a problem with the limitation:
      
      	loose_innodb_large_prefix=ON
      	loose_innodb_default_row_format=DYNAMIC
      
      (Note that the setting innodb_large_prefix was deprecated in
      MariaDB 10.2 and removed in MariaDB 10.3.)
      
      The only observable difference in the behaviour with the default
      settings should be that ROW_FORMAT=DYNAMIC tables can be created
      both in the system tablespace and in .ibd files, no matter what
      innodb_file_format has been assigned to. Unlike MariaDB 10.2,
      we are not changing the default value of innodb_file_format,
      so ROW_FORMAT=COMPRESSED tables cannot be created without
      changing the parameter.
      8ef727b3
    • Daniel Black's avatar
      my_fdopen: list all args in comment · 2ef2863c
      Daniel Black authored
      2ef2863c
    • Ian Gilfillan's avatar
      08fa3218
    • Ian Gilfillan's avatar
      a0501897
  12. 06 Mar, 2018 3 commits
    • Marko Mäkelä's avatar
      ReadView::snapshot(): Define inline · 8f361a83
      Marko Mäkelä authored
      8f361a83
    • Marko Mäkelä's avatar
      MDEV-15418 innodb_force_recovery=5 displays bogus warnings · 93d495f3
      Marko Mäkelä authored
      With MDEV-15132 in MariaDB 10.3.5, InnoDB no longer writes the
      transaction identifier to the TRX_SYS page. The information is
      only written to undo log headers and sometimes rollback segment
      headers. Because the setting innodb_force_recovery=5 will skip
      reading any of those pages, the maximum transaction identifier
      will no longer be determined.
      
      innobase_map_isolation_level(): Always report READ UNCOMMITTED
      if innodb_force_recovery has been set to 5 or more, or
      innodb_read_only is set. This will avoid errors reported by
      lock_check_trx_id_sanity() and ReadView::check_trx_id_sanity().
      
      lock_clust_rec_cons_read_sees(): Do not check for
      innodb_read_only, now that innobase_map_isolation_level() will
      guarantee that no read view will be created or used.
      
      row_search_mvcc(): Do not check for innodb_force_recovery<5,
      now that innobase_map_isolation_level() will guarantee that
      no read view will be created or used.
      93d495f3
    • Marko Mäkelä's avatar
      MDEV-15443 Properly read wsrep XID and binlog position from rollback segment headers · 67f6d40b
      Marko Mäkelä authored
      The problem is a regression caused by MDEV-15158.
      If some transactions were committed with wsrep_on=0, a
      rollback segment header having the highest trx_id assigned might
      store undefined wsrep XID. When reading the wsrep checkpoint
      from InnodB, the undefined wsrep XID might be returned instead
      of the highest valid one.
      
      Similarly, if the binary log is intermittently disabled or enabled
      while InnoDB transactions are being committed, the latest updated
      rollback segment header page might not contain the latest binlog metadata.
      
      Therefore, the MDEV-15158 logic to rely on TRX_RSEG_MAX_TRX_ID for
      determining the most recent WSREP XID or binlog position is invalid.
      We must choose the maximum entries among the rollback segment header
      pages.
      
      This fix is based on code submitted by Teemu Ollakka from Codership
      and by Thirunarayanan Balathandayuthapani from MariaDB Corporation.
      
      trx_purge_add_undo_to_history(): Only write TRX_RSEG_MAX_TRX_ID
      when it was used to be written before MDEV-15158.
      
      wsrep_seqno: Renamed from trx_sys_cur_xid_seqno.
      
      wsrep_uuid: Renamed from trx_sys_cur_xid_uuid, and enable in non-debug
      builds.
      
      read_wsrep_xid_uuid(): Make non-debug, and remove the memcpy().
      
      trx_rseg_update_wsrep_checkpoint(): Correctly compare and copy
      the entire UUID in the debug check. In case of UUID mismatch,
      write the WSREP XID to all 128 rollback segment headers in
      a single mini-transaction.
      
      trx_rseg_read_wsrep_checkpoint(rseg_header, xid): Make static.
      In case the information is absent, do not overwrite xid.
      
      trx_rseg_read_wsrep_checkpoint(xid): Determine the maximum
      WSREP XID.
      
      trx_rseg_mem_restore(): Remove the parameter max_rseg_trx_id.
      Determine the latest binlog file and position by comparing
      file names and offsets. Declare trx_sys.recovered_binlog_offset
      as an unsigned type.
      67f6d40b