1. 05 Aug, 2017 1 commit
  2. 03 Aug, 2017 1 commit
    • Jan Lindström's avatar
      MDEV-11939: innochecksum mistakes a file for an encrypted one (page 0 invalid) · 8b019f87
      Jan Lindström authored
      Always read full page 0 to determine does tablespace contain
      encryption metadata. Tablespaces that are page compressed or
      page compressed and encrypted do not compare checksum as
      it does not exists. For encrypted tables use checksum
      verification written for encrypted tables and normal tables
      use normal method.
      
      buf_page_is_checksum_valid_crc32
      buf_page_is_checksum_valid_innodb
      buf_page_is_checksum_valid_none
      	Add Innochecksum logging to file
      
      buf_page_is_corrupted
              Remove ib_logf and page_warn_strict_checksum
              calls in innochecksum compilation. Add innochecksum
              logging to file.
      
      fil0crypt.cc fil0crypt.h
              Modify to be able to use in innochecksum compilation and
      	move fil_space_verify_crypt_checksum to end of the file.
      	Add innochecksum logging to file.
      
      univ.i
              Add innochecksum strict_verify, log_file and cur_page_num
              variables as extern.
      
      page_zip_verify_checksum
              Add innochecksum logging to file.
      
      innochecksum.cc
              Lot of changes most notable able to read encryption
              metadata from page 0 of the tablespace.
      
      Added test case where we corrupt intentionally
      FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION (encryption key version)
      FIL_PAGE_FILE_FLUSH_LSN_OR_KEY_VERSION+4 (post encryption checksum)
      FIL_DATA+10 (data)
      8b019f87
  3. 01 Aug, 2017 1 commit
  4. 20 Jul, 2017 1 commit
    • Jan Lindström's avatar
      MDEV-13227: Assertion failure len < 16384 in file rem0rec.cc line 1285 · d1b3e428
      Jan Lindström authored
      Crashes with innodb_page_size=64K. Does not crash at <= 32K.
      
      Problem was that when blob record that was earlier < 16k is
      enlarged at update wo that length > 16K it should be stored
      externally. However, that was not enforced when page-size = 64K
      (note that 16K+1 < 64K/2 i.e. half of the btree leaf page).
      
      btr_cur_optimistic_update: limit max record size to 16K
      or in REDUNDANT row format to 16K-1.
      d1b3e428
  5. 13 Jul, 2017 1 commit
  6. 12 Jul, 2017 1 commit
    • Jan Lindström's avatar
      MDEV-11828: innodb_page_size=64k must reject ROW_FORMAT=REDUNDANT records longer than 16383 bytes · 9284e8b2
      Jan Lindström authored
      In all InnoDB row formats, the pointers or lengths stored in the record
      header can be at most 14 bits, that is, count up to 16383.
      In ROW_FORMAT=REDUNDANT, this limits the maximum possible record length
      to 16383 bytes. In other ROW_FORMAT, it could merely limit the maximum
      length of variable-length fields.
      
      When MySQL 5.7 introduced innodb_page_size=32k and 64k, the maximum
      record length was limited to 16383 bytes (I hope 16383, not 16384,
      to be able to distinguish from a record whose length is 0 bytes).
      This change is present in MariaDB Server 10.2.
      
      btr_cur_optimistic_update(): Restrict maximum record size to 16K-1
      for REDUNDANT and 64K page size.
      
      dict_index_too_big_for_tree(): The maximum allowed record size
      is half a B-tree page or 16K(-1 for REDUNDANT) for 64K page size.
      
      convert_error_code_to_mysql(): Fix error message to print
      correct limits.
      
      my_error_innodb(): Fix error message to print correct limits.
      
      page_zip_rec_needs_ext() : record size was already restricted to 16K.
      Restrict REDUNDANT to 16K-1.
      
      rem0rec.h: Introduce REDUNDANT_REC_MAX_DATA_SIZE (16K-1)
      and COMPRESSED_REC_MAX_DATA_SIZE (16K).
      9284e8b2
  7. 07 Jul, 2017 1 commit
  8. 06 Jul, 2017 5 commits
    • Sergei Golubchik's avatar
      after-merge fix for a7ed4644 · 6b99859f
      Sergei Golubchik authored
      (10.0+ changes, as specified in the MDEV)
      
      and remove unused variable (compiler warning)
      6b99859f
    • Sergei Golubchik's avatar
      Merge branch '5.5' into 10.0 · 89dc445a
      Sergei Golubchik authored
      89dc445a
    • Sergei Golubchik's avatar
      coverity medium warnings · 4d213135
      Sergei Golubchik authored
      4d213135
    • Sergei Golubchik's avatar
      bugfix: long partition names · f305a7ce
      Sergei Golubchik authored
      f305a7ce
    • Marko Mäkelä's avatar
      MDEV-13247 innodb_log_compressed_pages=OFF breaks crash recovery of ROW_FORMAT=COMPRESSED tables · 2b5c9bc2
      Marko Mäkelä authored
      The option innodb_log_compressed_pages was contributed by
      Facebook to MySQL 5.6. It was disabled in the 5.6.10 GA release
      due to problems that were fixed in 5.6.11, which is when the
      option was enabled.
      
      The option was set to innodb_log_compressed_pages=ON by default
      (disabling the feature), because safety was considered more
      important than speed. The option innodb_log_compressed_pages=OFF
      can *CORRUPT* ROW_FORMAT=COMPRESSED tables on crash recovery
      if the zlib deflate function is behaving differently (producing
      a different amount of compressed data) from how it behaved
      when the redo log records were written (prior to the crash recovery).
      
      In MDEV-6935, the default value was changed to
      innodb_log_compressed_pages=OFF. This is inherently unsafe, because
      there are very many different environments where MariaDB can be
      running, using different zlib versions. While zlib can decompress
      data just fine, there are no guarantees that different versions will
      always compress the same data to the exactly same size. To avoid
      problems related to zlib upgrades or version mismatch, we must
      use a safe default setting.
      
      This will reduce the write performance for users of
      ROW_FORMAT=COMPRESSED tables. If you configure
      innodb_log_compressed_pages=ON, please make sure that you will
      always cleanly shut down InnoDB before upgrading the server
      or zlib.
      2b5c9bc2
  9. 05 Jul, 2017 4 commits
  10. 04 Jul, 2017 2 commits
  11. 03 Jul, 2017 8 commits
  12. 02 Jul, 2017 2 commits
    • Andrei Elkin's avatar
      Fix for MDEV-9670 server_id mysteriously set to 0 · 946a07e8
      Andrei Elkin authored
      Problem was that in a circular replication setup the master remembers
      position to events it has generated itself when reading from a slave.
      If there are no new events in the queue from the slave, a
      Gtid_list_log_event is generated to remember the last skipped event.
      The problem happens if there is a network delay and we generate a
      Gtid_list_log_event in the middle of the transaction, in which case there
      will be an implicit comment and a new transaction with serverid=0 will be
      logged.
      
      The fix was to not generate any Gtid_list_log_events in the middle of a
      transaction.
      946a07e8
    • Monty's avatar
      Fix for MDEV-13191. Assert for !is_set() when doing LOAD DATA · 46d6f74c
      Monty authored
      This could happen when the client connection dies while sending a progress
      report packet.
      Fixed by not raising any errors when sending progress packets.
      46d6f74c
  13. 01 Jul, 2017 1 commit
  14. 30 Jun, 2017 8 commits
  15. 29 Jun, 2017 3 commits