1. 10 Jun, 2017 1 commit
  2. 08 Jun, 2017 8 commits
  3. 06 Jun, 2017 9 commits
  4. 05 Jun, 2017 2 commits
  5. 02 Jun, 2017 2 commits
  6. 01 Jun, 2017 5 commits
    • Elena Stepanova's avatar
    • Jan Lindström's avatar
      aad8cefd
    • Jan Lindström's avatar
      MDEV-12600: crash during install_db with innodb_page_size=32K and ibdata1=3M; · 112b21da
      Jan Lindström authored
      Problem was that all doublewrite buffer pages must fit to first
      system datafile.
      
      Ported commit 27a34df7882b1f8ed283f22bf83e8bfc523cbfde
      Author: Shaohua Wang <shaohua.wang@oracle.com>
      Date:   Wed Aug 12 15:55:19 2015 +0800
      
          BUG#21551464 - SEGFAULT WHILE INITIALIZING DATABASE WHEN
          INNODB_DATA_FILE SIZE IS SMALL
      
      To 10.1 (with extended error printout).
      
      btr_create(): If ibuf header page allocation fails report error and
      return FIL_NULL. Similarly if root page allocation fails return a error.
      
      dict_build_table_def_step: If fsp_header_init fails return
      error code.
      
      fsp_header_init: returns true if header initialization succeeds
      and false if not.
      
      fseg_create_general: report error if segment or page allocation fails.
      
      innobase_init: If first datafile is smaller than 3M and could not
      contain all doublewrite buffer pages report error and fail to
      initialize InnoDB plugin.
      
      row_truncate_table_for_mysql: report error if fsp header init
      fails.
      
      srv_init_abort: New function to report database initialization errors.
      
      srv_undo_tablespaces_init, innobase_start_or_create_for_mysql: If
      database initialization fails report error and abort.
      
      trx_rseg_create: If segment header creation fails return.
      112b21da
    • Jan Lindström's avatar
      MDEV-12114: install_db shows corruption for rest encryption and... · 6b698715
      Jan Lindström authored
      MDEV-12114: install_db shows corruption for rest encryption and innodb_checksum_algorithm=strict_none
      
      Problem was that checksum check resulted false positives that page is
      both not encrypted and encryted when checksum_algorithm was
      strict_none.
      
      Encrypton checksum will use only crc32 regardless of setting.
      
      buf_zip_decompress: If compression fails report a error message
      containing the space name if available (not available during import).
      And note if space could be encrypted.
      
      buf_page_get_gen: Do not assert if decompression fails,
      instead unfix the page and return NULL to upper layer.
      
      fil_crypt_calculate_checksum: Use only crc32 method.
      
      fil_space_verify_crypt_checksum: Here we need to check
      crc32, innodb and none method for old datafiles.
      
      fil_space_release_for_io: Allow null space.
      
      encryption.innodb-compressed-blob is now run with crc32 and none
      combinations.
      
      Note that with none and strict_none method there is not really
      a way to detect page corruptions and page corruptions after
      decrypting the page with incorrect key.
      
      New test innodb-checksum-algorithm to test different checksum
      algorithms with encrypted, row compressed and page compressed
      tables.
      6b698715
    • Jan Lindström's avatar
      MDEV-12113: install_db shows corruption for rest encryption with innodb_data_file_path=ibdata1:3M; · 1af8bf39
      Jan Lindström authored
      Problem was that FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION field that for
      encrypted pages even in system datafiles should contain key_version
      except very first page (0:0) is after encryption overwritten with
      flush lsn.
      
      Ported WL#7990 Repurpose FIL_PAGE_FLUSH_LSN to 10.1
      The field FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION is consulted during
      InnoDB startup.
      
      At startup, InnoDB reads the FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION
      from the first page of each file in the InnoDB system tablespace.
      If there are multiple files, the minimum and maximum LSN can differ.
      These numbers are passed to InnoDB startup.
      
      Having the number in other files than the first file of the InnoDB
      system tablespace is not providing much additional value. It is
      conflicting with other use of the field, such as on InnoDB R-tree
      index pages and encryption key_version.
      
      This worklog will stop writing FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION to
      other files than the first file of the InnoDB system tablespace
      (page number 0:0) when system tablespace is encrypted. If tablespace
      is not encrypted we continue writing FIL_PAGE_FLUSH_LSN_OR_KEY_VERSION
      to all first pages of system tablespace to avoid unnecessary
      warnings on downgrade.
      
      open_or_create_data_files(): pass only one flushed_lsn parameter
      
      xb_load_tablespaces(): pass only one flushed_lsn parameter.
      
      buf_page_create(): Improve comment about where
      FIL_PAGE_FIL_FLUSH_LSN_OR_KEY_VERSION is set.
      
      fil_write_flushed_lsn(): A new function, merged from
      fil_write_lsn_and_arch_no_to_file() and
      fil_write_flushed_lsn_to_data_files().
      Only write to the first page of the system tablespace (page 0:0)
      if tablespace is encrypted, or write all first pages of system
      tablespace and invoke fil_flush_file_spaces(FIL_TYPE_TABLESPACE)
      afterwards.
      
      fil_read_first_page(): read flush_lsn and crypt_data only from
      first datafile.
      
      fil_open_single_table_tablespace(): Remove output of LSN, because it
      was only valid for the system tablespace and the undo tablespaces, not
      user tablespaces.
      
      fil_validate_single_table_tablespace(): Remove output of LSN.
      
      checkpoint_now_set(): Use fil_write_flushed_lsn and output
      a error if operation fails.
      
      Remove lsn variable from fsp_open_info.
      
      recv_recovery_from_checkpoint_start(): Remove unnecessary second
      flush_lsn parameter.
      
      log_empty_and_mark_files_at_shutdown(): Use fil_writte_flushed_lsn
      and output error if it fails.
      
      open_or_create_data_files(): Pass only one flushed_lsn variable.
      1af8bf39
  7. 31 May, 2017 1 commit
  8. 29 May, 2017 8 commits
  9. 27 May, 2017 1 commit
  10. 26 May, 2017 3 commits
    • Marko Mäkelä's avatar
      Remove dict_index_t::is_ngram · 73deafbc
      Marko Mäkelä authored
      When MySQL 5.7 introduced fulltext parser plugins to InnoDB,
      it hard-coded the plugin name "ngram" to mean something special.
      Because -fsanitize=undefined was issuing warnings for the
      assignment in row_merge_create_index() that the value is out of
      range for Boolean, we remove this code that was not intended to
      be used in MariaDB 10.2.
      
      fts_check_token(): Remove the special logic for N-gram tokens.
      73deafbc
    • Marko Mäkelä's avatar
      fts_is_charset_cjk(): Do not call strcmp() · c0dec39d
      Marko Mäkelä authored
      Remove a bogus reference to gb18030_chinese_ci, which was introduced
      in MySQL 5.7. It is roughly equivalent to utf8mb4_unicode_ci, just
      using a different internal encoding, and different collation.
      c0dec39d
    • Marko Mäkelä's avatar
      Remove some noise from ib::fatal() and ib::fatal_or_error() · e54d521b
      Marko Mäkelä authored
      Avoid the redundant output from ut_dbg_assertion_failed by directly
      invoking abort().
      e54d521b