1. 13 Nov, 2017 4 commits
  2. 12 Nov, 2017 1 commit
  3. 11 Nov, 2017 1 commit
  4. 10 Nov, 2017 4 commits
  5. 09 Nov, 2017 8 commits
  6. 08 Nov, 2017 3 commits
  7. 07 Nov, 2017 7 commits
  8. 06 Nov, 2017 12 commits
    • Vladislav Vaintroub's avatar
      Fix test case · 120f848f
      Vladislav Vaintroub authored
      120f848f
    • Marko Mäkelä's avatar
      Remove dead code for non-debug builds · f830314f
      Marko Mäkelä authored
      f830314f
    • Igor Babaev's avatar
      Test case for mdev-13753 CTE is not visible during view creation · 8128ae48
      Igor Babaev authored
      The bug was fixed by the patch for the bug mdev-13780.
      8128ae48
    • Vladislav Vaintroub's avatar
    • Marko Mäkelä's avatar
      Merge 10.0 into 10.1 · 56911096
      Marko Mäkelä authored
      56911096
    • Marko Mäkelä's avatar
      MDEV-13328 ALTER TABLE…DISCARD TABLESPACE takes a lot of time · 51b4366b
      Marko Mäkelä authored
      With a big buffer pool that contains many data pages,
      DISCARD TABLESPACE took a long time, because it would scan the
      entire buffer pool to remove any pages that belong to the tablespace.
      With a large buffer pool, this would take a lot of time, especially
      when the table-to-discard is empty.
      
      The minimum amount of work that DISCARD TABLESPACE must do is to
      remove the pages of the to-be-discarded table from the
      buf_pool->flush_list because any writes to the data file must be
      prevented before the file is deleted.
      
      If DISCARD TABLESPACE does not evict the pages from the buffer pool,
      then IMPORT TABLESPACE must do it, because we must prevent pre-DISCARD,
      not-yet-evicted pages from being mistaken for pages of the imported
      tablespace.
      
      It would not be a useful fix to simply move the buffer pool scan to
      the IMPORT TABLESPACE step. What we can do is to actively evict those
      pages that could be mistaken for imported pages. In this way, when
      importing a small table into a big buffer pool, the import should
      still run relatively fast.
      
      Import is bypassing the buffer pool when reading pages for the
      adjustment phase. In the adjustment phase, if a page exists in
      the buffer pool, we could replace it with the page from the imported
      file. Unfortunately I did not get this to work properly, so instead
      we will simply evict any matching page from the buffer pool.
      
      buf_page_get_gen(): Implement BUF_EVICT_IF_IN_POOL, a new mode
      where the requested page will be evicted if it is found. There
      must be no unwritten changes for the page.
      
      buf_remove_t: Remove. Instead, use trx!=NULL to signify that a write
      to file is desired, and use a separate parameter bool drop_ahi.
      
      buf_LRU_flush_or_remove_pages(), fil_delete_tablespace():
      Replace buf_remove_t.
      
      buf_LRU_remove_pages(), buf_LRU_remove_all_pages(): Remove.
      
      PageConverter::m_mtr: A dummy mini-transaction buffer
      
      PageConverter::PageConverter(): Complete the member initialization list.
      
      PageConverter::operator()(): Evict any 'shadow' pages from the
      buffer pool so that pre-existing (garbage) pages cannot be mistaken
      for pages that exist in the being-imported file.
      
      row_discard_tablespace(): Remove a bogus comment that seems to
      refer to IMPORT TABLESPACE, not DISCARD TABLESPACE.
      51b4366b
    • Marko Mäkelä's avatar
      Remove redundant function parameters · 57ba66b9
      Marko Mäkelä authored
      buf_flush_or_remove_pages(), buf_flush_dirty_pages(): Remove the
      redundant parameter flush=(trx!=NULL).
      57ba66b9
    • Vesa Pentti's avatar
      MDEV-10728 -- mysqlbinlog can't be input to mysql client · 9f3c014c
      Vesa Pentti authored
        String comparison with utf8_bin collation is case sensitive.
        Hence "DELIMITER" did not match with "delimiter".
        The delimiter command matching now uses my_charset_latin1.
      9f3c014c
    • Marko Mäkelä's avatar
      MDEV-14140 IMPORT TABLESPACE must not go beyond FSP_FREE_LIMIT · 6a524fcf
      Marko Mäkelä authored
      ibuf_check_bitmap_on_import(): Only access the pages that
      are below FSP_FREE_LIMIT. It is possible that especially with
      ROW_FORMAT=COMPRESSED, the FSP_SIZE will be much bigger than
      the FSP_FREE_LIMIT, and the bitmap pages (page_size*N, 1+page_size*N)
      are filled with zero bytes.
      
      buf_page_is_corrupted(), buf_page_io_complete(): Make the
      fault injection compatible with MariaDB 10.2.
      
      Backport the IMPORT tests from 10.2.
      6a524fcf
    • Marko Mäkelä's avatar
      MDEV-14132 InnoDB page corruption · 51679e5c
      Marko Mäkelä authored
      On some old GNU/Linux systems, invoking posix_fallocate() with
      offset=0 would sometimes cause already allocated bytes in the
      data file to be overwritten.
      
      Fix a correctness regression that was introduced in
      commit 420798a8
      by invoking posix_fallocate() in a safer way.
      A similar change was made in MDEV-5746 earlier.
      
      os_file_get_size(): Avoid changing the state of the file handle,
      by invoking fstat() instead of lseek().
      
      os_file_set_size(): Determine the current size of the file
      by os_file_get_size(), and then extend the file from that point
      onwards.
      51679e5c
    • Marko Mäkelä's avatar
      MDEV-14244 MariaDB fails to run with O_DIRECT · 30a8764b
      Marko Mäkelä authored
      os_file_set_size(): If posix_fallocate() returns EINVAL, fall back
      to writing zero bytes to the file. Also, remove some error log output,
      and make it possible for a server shutdown to interrupt the fall-back
      code.
      
      MariaDB used to ignore any possible return value from posix_fallocate()
      ever since innodb_use_fallocate was introduced in MDEV-4338. If EINVAL
      was returned, the file would not be extended.
      
      Starting with MDEV-11520, MariaDB would treat EINVAL as a hard error.
      
      Why is the EINVAL returned? The GNU posix_fallocate() function
      would first try the fallocate() system call, which would return
      -EOPNOTSUPP for many file systems (notably, not ext4). Then, it
      would fall back to extending the file one block at a time by invoking
      pwrite(fd, "", 1, offset) where offset is 1 less than a multiple of
      the file block size. This would fail with EINVAL if the file is in
      O_DIRECT mode, because O_DIRECT requires aligned operation.
      30a8764b
    • Igor Babaev's avatar
      Fixed mdev-14237 Server crash on query with regexp_substr · 343bcb15
      Igor Babaev authored
      It's better to prohibit pushdown of conditions that involve
      regexp_substr() and regexp_replace() into materialized derived
      tables / views until proper implementations of the get_copy()
      virtual method are provided for those functions.
      343bcb15