1. 16 Sep, 2017 5 commits
  2. 15 Sep, 2017 1 commit
    • Alexander Barkov's avatar
      MDEV-10191 non convertible chars convert() resulted in Null instead "?" on Windows · 65d26d1f
      Alexander Barkov authored
      The problem was introduced by the patch for MDEV-7661,
      which (in addition to the fix itself) included an attempt to make
      CONVERT/CAST work in the same way with fields
      (i.e. return NULL in strict mode if a non-convertable character found).
      It appeared to be a bad idea and some users were affected by this
      behavior change. Changing CONVERT/CAST not depend on sql_mode
      (restoring pre-10.1.4 behavior).
      65d26d1f
  3. 14 Sep, 2017 1 commit
    • Jan Lindström's avatar
      MDEV-12634: Uninitialised ROW_MERGE_RESERVE_SIZE bytes written to tem… · fa2701c6
      Jan Lindström authored
      …porary file
      
      Fixed by removing writing key version to start of every block that
      was encrypted. Instead we will use single key version from log_sys
      crypt info.
      
      After this MDEV also blocks writen to row log are encrypted and blocks
      read from row log aren decrypted if encryption is configured for the
      table.
      
      innodb_status_variables[], struct srv_stats_t
      	Added status variables for merge block and row log block
      	encryption and decryption amounts.
      
      Removed ROW_MERGE_RESERVE_SIZE define.
      
      row_merge_fts_doc_tokenize
      	Remove ROW_MERGE_RESERVE_SIZE
      
      row_log_t
      	Add index, crypt_tail, crypt_head to be used in case of
      	encryption.
      
      row_log_online_op, row_log_table_close_func
      	Before writing a block encrypt it if encryption is enabled
      
      row_log_table_apply_ops, row_log_apply_ops
      	After reading a block decrypt it if encryption is enabled
      
      row_log_allocate
      	Allocate temporary buffers crypt_head and crypt_tail
      	if needed.
      
      row_log_free
      	Free temporary buffers crypt_head and crypt_tail if they
      	exist.
      
      row_merge_encrypt_buf, row_merge_decrypt_buf
      	Removed.
      
      row_merge_buf_create, row_merge_buf_write
      	Remove ROW_MERGE_RESERVE_SIZE
      
      row_merge_build_indexes
      	Allocate temporary buffer used in decryption and encryption
      	if needed.
      
      log_tmp_blocks_crypt, log_tmp_block_encrypt, log_temp_block_decrypt
      	New functions used in block encryption and decryption
      
      log_tmp_is_encrypted
      	New function to check is encryption enabled.
      
      Added test case innodb-rowlog to force creating a row log and
      verify that operations are done using introduced status
      variables.
      fa2701c6
  4. 07 Sep, 2017 4 commits
  5. 06 Sep, 2017 4 commits
  6. 04 Sep, 2017 3 commits
  7. 01 Sep, 2017 1 commit
    • Marko Mäkelä's avatar
      Fix compiler warnings · 7f993812
      Marko Mäkelä authored
      metadata_lock_info_duration[]: Remove the unused variable.
      
      Add some comments /* fall through */ to silence -Wimplicit-fallthrough
      7f993812
  8. 31 Aug, 2017 6 commits
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · be45f083
      Marko Mäkelä authored
      be45f083
    • Vladislav Vaintroub's avatar
      MDEV-13693 : Fix parameter passing to my_error. · 6be93c3b
      Vladislav Vaintroub authored
      char* parameter is expected by the message ER_KEY_COLUMN_DOES_NOT_EXITS,
      thus pass char*, rather than LEX_STRING.
      6be93c3b
    • Vladislav Vaintroub's avatar
      MDEV-13691 : my_write() sets inappropriate errno for ERROR_FILE_SYSTEM_LIMITATON · 66eb9774
      Vladislav Vaintroub authored
      ERROR_FILE_SYSTEM_LIMITATION was seen by support when backing up large
      file. However mariabackup error message was not very helpful,
      since it mapped the error to generic catch-all EINVAL.
      
      With the patch, ERROR_FILE_SYSTEM_LIMITATION will be mapped to more
      appropriate EFBIG. Also add mapping from ERROR_NO_SYSTEM_RESOURCES
      to ENOMEM.
      66eb9774
    • Marko Mäkelä's avatar
      MDEV-13684 InnoDB race condition between fil_crypt_thread and btr_scrub_init · 38ca9be4
      Marko Mäkelä authored
      There is a race condition in InnoDB startup. A number of
      fil_crypt_thread are created by fil_crypt_threads_init(). These threads
      may call btr_scrub_complete_space() before btr_scrub_init() was called.
      Those too early calls would be accessing an uninitialized scrub_stat_mutex.
      
      innobase_start_or_create_for_mysql(): Invoke btr_scrub_init() before
      fil_crypt_threads_init().
      
      fil_crypt_complete_rotate_space(): Only invoke btr_scrub_complete_space()
      if scrubbing is enabled. There is no need to update the statistics if
      it is not enabled.
      38ca9be4
    • Jan Lindström's avatar
      Fixed test failure on innodb_encryption · 28b2896a
      Jan Lindström authored
      After MDEV-13583: Improvements for MTR rebootstrap introduced in
      MDEV-12042 bootsrap correctly creates mysql/innodb_table_stats
      and mysql/innodb_index_stats InnoDB tables before innodb_encryption
      test starts. These tables are also encrypted or decrypted, thus
      we need to wait also these tables (if not we could randomly
      get different results as system tablespace and these tables
      are encrypted or decrypted in parallel).
      28b2896a
    • Jan Lindström's avatar
      Fix test failures on embedded server. · b29f26d7
      Jan Lindström authored
      Problem was incorrect definition of wsrep_recovery,
      trx_sys_update_wsrep_checkpoint and
      trx_sys_read_wsrep_checkpoint functions causing
      innodb_plugin not to load as there was undefined symbols.
      b29f26d7
  9. 30 Aug, 2017 4 commits
  10. 29 Aug, 2017 8 commits
    • Marko Mäkelä's avatar
      WL#8845: Clarify the message about redo log format incompatibility · e634fdcd
      Marko Mäkelä authored
      recv_find_max_checkpoint(): Refer to MariaDB 10.2.2 instead of
      MySQL 5.7.9. Do not hint that a binary downgrade might be possible,
      because there are many changes in InnoDB 5.7 that could make
      downgrade impossible: a column appended to SYS_INDEXES, added
      SYS_* tables, undo log format changes, and so on.
      e634fdcd
    • Jan Lindström's avatar
    • Marko Mäkelä's avatar
    • Marko Mäkelä's avatar
      Merge innodb.create-index test changes from MySQL 5.6 to MariaDB · 9e9a3b8e
      Marko Mäkelä authored
      Import the MySQL 5.6 addition from innodb.create-index to a new debug-only
      test, innodb.create-index-debug. The existing test innodb.create-index
      also runs on a debug server.
      9e9a3b8e
    • Marko Mäkelä's avatar
      Adjust the imported MySQL 5.6 tests for MariaDB · f56bd70f
      Marko Mäkelä authored
      FIXME: MDEV-13668 InnoDB unnecessarily rebuilds table
      
      FIXME: MDEV-13671 InnoDB should use case-insensitive column name comparisons
      like the rest of the server
      
      FIXME: MDEV-13640 / Properly fix MDEV-9469 'Incorrect key file' on ALTER TABLE
      
      FIXME: investigate result difference in innodb.innodb-alter-autoinc
      and ensure that MariaDB does the right thing with auto_increment_increment
      and auto_increment_offset, for both ALGORITHM=INPLACE and ALGORITHM=COPY
      (Oracle MySQL behaviour differs between those two).
      f56bd70f
    • Marko Mäkelä's avatar
      MDEV-13625 Merge InnoDB test cases from MySQL 5.6 (part 1) · 8d929816
      Marko Mäkelä authored
      Import some ALTER TABLE test cases from MySQL 5.6 without modification.
      The adjustments will be in a separate commit.
      8d929816
    • Jan Lindström's avatar
      MDEV-13557: Startup failure, unable to decrypt ibdata1 · 352d27ce
      Jan Lindström authored
      Fixes also MDEV-13488: InnoDB writes CRYPT_INFO even though
      encryption is not enabled.
      
      Problem was that we created encryption metadata (crypt_data) for
      system tablespace even when no encryption was enabled and too early.
      System tablespace can be encrypted only using key rotation.
      
      Test innodb-key-rotation-disable, innodb_encryption, innodb_lotoftables
      require adjustment because INFORMATION_SCHEMA INNODB_TABLESPACES_ENCRYPTION
      contain row only if tablespace really has encryption metadata.
      
      fil_crypt_set_thread_cnt: Send message to background encryption threads
      if they exits when they are ready. This is required to find tablespaces
      requiring key rotation if no other changes happen.
      
      fil_crypt_find_space_to_rotate: Decrease the amount of time waiting
      when nothing happens to better enable key rotation on startup.
      
      fsp_header_init: Write encryption metadata to page 0 only if tablespace is
      encrypted or encryption is disabled by table option.
      
      i_s_dict_fill_tablespaces_encryption : Skip tablespaces that do not
      contain encryption metadata. This is required to avoid too early
      wait condition trigger in encrypted -> unencrypted state transfer.
      
      open_or_create_data_files: Do not create encryption metadata
      by default to system tablespace.
      352d27ce
    • Andrei Elkin's avatar
      MDEV-13437 InnoDB fails to return error for XA COMMIT or XA ROLLBACK in read-only mode · 888a8b69
      Andrei Elkin authored
      Assertions failed due to incorrect handling of the --tc-heuristic-recover
      option when InnoDB is in read-only mode either due to innodb_read_only=1
      or innodb_force_recovery>3. InnoDB failed to refuse a XA COMMIT or
      XA ROLLBACK operation, and there were errors in the error handling in
      the upper layer.
      
      This was fixed by making InnoDB XA operations respect the
      high_level_read_only flag. The InnoDB part of the fix and
      parts of the test main.tc_heuristic_recover were provided
      by Marko Mäkelä.
      
      LOCK_log mutex lock/unlock had to be added to fix MDEV-13438.
      The measure is confirmed by mysql sources as well.
      
      For testing of the conflicting option combination, mysql-test-run is
      made to export a new $MYSQLD_LAST_CMD. It holds the very last value
      generated by mtr.mysqld_start().  Even though the options have been
      also always stored in $mysqld->{'started_opts'} there were no access
      to them beyond the automatic server restart by mtr through the expect
      file interface.
      
      Effectively therefore $MYSQLD_LAST_CMD represents a more general
      interface to $mysqld->{'started_opts'} which can be used in wider
      scopes including server launch with incompatible options.
      
      Notice another existing method to restart the server with incompatible
      options relying on $MYSQLD_CMD is is aware of $mysqld->{'started_opts'}
      (the actual options that the server is launched by mtr). In order to use
      this method they would have to be provided manually.
      
      NOTE: When merging to 10.2, the file search_pattern_in_file++.inc
      should be replaced with the pre-existing search_pattern_in_file.inc.
      888a8b69
  11. 28 Aug, 2017 3 commits