1. 03 Dec, 2019 2 commits
    • Jan Lindström's avatar
      MDEV-21198 : Galera test failure on galera_var_notify_cmd · 88073dae
      Jan Lindström authored
      Add proper wsrep sync wait.
      88073dae
    • Marko Mäkelä's avatar
      InnoDB: Remove unused get_wkb_of_default_point() · 3ff8fb51
      Marko Mäkelä authored
      The function get_wkb_of_default_point() should never have been
      added, and the cleanup in commit 56ff6f1b
      should have removed it.
      
      The unnecessary code was added in
      mysql/mysql-server@0a27b72171c4449f506ad4e93df8c29fead1ed72
      and mostly disabled in
      mysql/mysql-server@8f11af7734509821b654f2c330dff5374c89073c.
      
      In MariaDB, the types DATA_POINT and DATA_VAR_POINT are never used.
      Instead, DATA_GEOMETRY continues to be used since 10.2.2, introduced by
      mysql/mysql-server@673bad7c7e17701b69e29d0fbc4e2d68c1a7b613
      in MySQL 5.7.1.
      3ff8fb51
  2. 30 Nov, 2019 1 commit
  3. 29 Nov, 2019 2 commits
  4. 28 Nov, 2019 1 commit
  5. 27 Nov, 2019 2 commits
  6. 26 Nov, 2019 2 commits
  7. 25 Nov, 2019 1 commit
    • willhan's avatar
      MDEV-17508 Fix bug for spider when using "not like" · 3551cd32
      willhan authored
      fix bug for spider where using "not like" (#890)
      
      test case:
      t1 is a spider engine table;
        CREATE TABLE `t1` (
        `id` int(11) NOT NULL DEFAULT '0',
        `name` char(64) DEFAULT NULL,
        PRIMARY KEY (`id`)
      ) ENGINE=SPIDER
      
      query: "select * from t1 where name  not like 'x%' " would dispatch "select xxx name name like 'x%' " to remote mysqld, is wrong
      3551cd32
  8. 21 Nov, 2019 1 commit
    • Eugene Kosov's avatar
      cleanup Linux AIO · d30e51fa
      Eugene Kosov authored
      Replace all io_context* occurrences with io_context_t
      
      Even in release mode die immediately when some io_* functions return
      EINVAL. This always means some programming bug and it's better to fail fast.
      
      LinuxAIOHandler::resubmit(): fix condition. Stop ignoring -1 return code which
      corresponds to EPERM and io_submit() really can return this one.
      
      Use io_destroy() to stop leaking io_context_t.
      
      Make m_aio_ctx std::vector instead of C array. I think that internal check
      for index overflow might be useful.
      
      Add debug assertions for EFAULT because for me receiving it
      looks like a programming bug.
      d30e51fa
  9. 20 Nov, 2019 1 commit
  10. 19 Nov, 2019 1 commit
    • Vlad Lesin's avatar
      MDEV-21082: isnan/isinf compilation errors, isfinite warnings on MacOS · 6718d3bc
      Vlad Lesin authored
      The fix consists of three commits backported from 10.3:
      
      1) Cleanup isnan() portability checks
      
      (cherry picked from commit 7ffd7fe9)
      
      2) Cleanup isinf() portability checks
      
      Original problem reported by Wlad: re-compilation of 10.3 on top of 10.2
      build would cache undefined HAVE_ISINF from 10.2, whereas it is expected
      to be 1 in 10.3.
      
      std::isinf() seem to be available on all supported platforms.
      (cherry picked from commit bc469a0b)
      
      3) Use std::isfinite in C++ code
      
      This is addition to parent revision fixing build failures.
      
      (cherry picked from commit 54999f4e)
      6718d3bc
  11. 18 Nov, 2019 1 commit
    • Marko Mäkelä's avatar
      MDEV-21069 Crash on DROP TABLE if the data file is corrupted · b80df9eb
      Marko Mäkelä authored
      buf_read_ibuf_merge_pages(): Discard any page numbers that are
      outside the current bounds of the tablespace, by invoking the
      function ibuf_delete_recs() that was introduced in MDEV-20934.
      This could avoid an infinite change buffer merge loop on
      innodb_fast_shutdown=0, because normally the change buffer merge
      would only be attempted if a page was successfully loaded into
      the buffer pool.
      
      dict_drop_index_tree(): Add the parameter trx_t*.
      To prevent the DROP TABLE crash, do not invoke btr_free_if_exists()
      if the entire .ibd file will be dropped. Thus, we will avoid a crash
      if the BTR_SEG_LEAF or BTR_SEG_TOP of the index is corrupted,
      and we will also avoid unnecessarily accessing the to-be-dropped
      tablespace via the buffer pool.
      
      In MariaDB 10.2, we disable the DROP TABLE fix if innodb_safe_truncate=0,
      because the backup-unsafe MySQL 5.7 WL#6501 form of TRUNCATE TABLE
      requires that the individual pages be freed inside the tablespace.
      b80df9eb
  12. 15 Nov, 2019 1 commit
  13. 13 Nov, 2019 3 commits
    • Eugene Kosov's avatar
      MDEV-20949 Stop issuing 'row size' error on DML · 98694ab0
      Eugene Kosov authored
      Move row size check to early CREATE/ALTER TABLE phase. Stop checking
      on table open.
      
      dict_index_add_to_cache(): remove parameter 'strict', stop checking row size
      
      dict_index_t::record_size_info_t: this is a result of row size check operation
      
      create_table_info_t::row_size_is_acceptable(): performs row size check.
      Issues error or warning. Writes first overflow field to InnoDB log.
      
      create_table_info_t::create_table(): add row size check
      
      dict_index_t::record_size_info(): this is a refactored version
      of dict_index_t::rec_potentially_too_big(). New version doesn't change global
      state of a program but return all interesting info. And it's callers who
      decide how to handle row size overflow.
      
      dict_index_t::rec_potentially_too_big(): removed
      98694ab0
    • Marko Mäkelä's avatar
      Clean up mtr_t::commit() further · 3b573c07
      Marko Mäkelä authored
      memo_block_unfix(), memo_latch_release(): Merge to ReleaseLatches.
      
      memo_slot_release(), ReleaseAll: Clean up the formatting.
      3b573c07
    • Marko Mäkelä's avatar
      MDEV-20934: Correct a debug assertion · abd45cdc
      Marko Mäkelä authored
      A search with PAGE_CUR_GE may land on the supremum record on
      a leaf page that is not the rightmost leaf page.
      This could occur when all keys on the current page are
      smaller than the search key, and the smallest key on the
      successor page is larger than the search key.
      
      ibuf_delete_recs(): Correct the debug assertion accordingly.
      abd45cdc
  14. 12 Nov, 2019 5 commits
    • Yasuhiro Horimoto's avatar
      Fix a typo in mariadb-plugin-mroonga.prerm · f127fb98
      Yasuhiro Horimoto authored
      Closes #1407
      f127fb98
    • Marko Mäkelä's avatar
      MDEV-12353 preparation: Clean up mtr_t · 2570cb8b
      Marko Mäkelä authored
      mtr_t::Impl, mtr_t::Command: Merge to mtr_t.
      
      MTR_MAGIC_N: Remove.
      
      MTR_STATE_COMMITTING: Remove. This state was only being set
      internally during mtr_t::commit().
      
      mtr_t::Command::m_locks_released: Remove (set-and-never-read member).
      
      mtr_t::Command::m_start_lsn: Replaced with the return value of
      finish_write() and a parameter to release_blocks().
      
      mtr_t::Command::m_end_lsn: Removed as a duplicate of mtr_t::m_commit_lsn.
      
      mtr_t::Command::prepare_write(): Replace a switch () with a
      comparison against 0. Only 2 m_log_mode are allowed.
      2570cb8b
    • Marko Mäkelä's avatar
      MDEV-14602: Cleanup recv_dblwr_t::find_page() · dc8380b6
      Marko Mäkelä authored
      Avoid creating std::vector, and use single instead of double traversal.
      dc8380b6
    • Marko Mäkelä's avatar
      Merge 10.1 into 10.2 · 2350066e
      Marko Mäkelä authored
      2350066e
    • Sujatha's avatar
      MDEV-20953: binlog_encryption.rpl_corruption failed in buildbot due to wrong error code · 7df07c76
      Sujatha authored
      Problem:
      ========
      CURRENT_TEST: binlog_encryption.rpl_corruption
      
      mysqltest: In included file "./include/wait_for_slave_io_error.inc":
      ...
      At line 72: Slave stopped with wrong error code
      **** Slave stopped with wrong error code: 1743 (expected 1595,1913) ****
      
      Analysis:
      ========
      The test emulates the corruption at the various stages of replication for
      example in binlog file, in network and in relay log etc. It verifies that all
      corruption cases are handled through appropriate error messages.
      
      The test cases which emulate network failure expect following errors.
      --ER_SLAVE_RELAY_LOG_WRITE_FAILURE (1595)
      --ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE (1743)
      
      Ideally test should expect error codes as 1595 and 1743.
      But the test actually waits on incorrect error code 1595,1913
      
      Fix:
      ===
      Added appropriate error code for 'ER_NETWORK_READ_EVENT_CHECKSUM_FAILURE'.
      Replaced 1913 with 1743.
      7df07c76
  15. 11 Nov, 2019 11 commits
  16. 10 Nov, 2019 1 commit
    • Andrei Elkin's avatar
      MDEV-19376 Repl_semi_sync_master::commit_trx assertion failure: ... ||... · 13db50fc
      Andrei Elkin authored
      MDEV-19376 Repl_semi_sync_master::commit_trx assertion failure: ... || !m_active_tranxs->is_tranx_end_pos(trx_wait_binlog_name, trx_wait_binlog_pos)
      
      The assert indicates that the current transaction got caught uncleaned from
      the semisync master's cache when it is signaled to proceed upon its
      ack receive.
      
      The reason of missed cleanup turns out to be a flaw in the gtid
      connect mode.
      A submitted by connecting slave value of its last received event's
      binlog file *name* was adopted into
      {{Repl_semi_sync_master::m_reply_file_name}} as a part of semisync
      initialization.
      
      Notice that the initialization still refines the position part of the
      submitted last received event's binlog coordinates.
      The master side binlog filename:pos refinement is
      specific to the gtid connect mode for purpose of computing the latest
      binlog file to resume slave feeding from.
      Effectively in the gtid connect mode the computed resumption filename:pos
      may appear smaller in which case a new post-connect time committing
      transaction may be logged with its filename:pos also less than the
      submitted coordinates and that triggers the assert.
      
      Fixed with making the semisync initialization to use the refined filename:pos.
      It is guaranteed to be less than any new generated transaction's binlog:pos.
      13db50fc
  17. 08 Nov, 2019 3 commits
  18. 07 Nov, 2019 1 commit
    • Varun Gupta's avatar
      MDEV-20519: Query plan regression with optimizer_use_condition_selectivity > 1 · b1ab2ba5
      Varun Gupta authored
      The issue here is the wrong estimate of the cardinality of a partial join,
      the cardinality is too high because the function table_cond_selectivity()
      returns an absurd number 100 while selectivity cannot be greater than 1.
      
      When accessing table t by outer reference t1.a via index we do not perform any
      range analysis for t. Yet we see TABLE::quick_key_parts[key] and
      TABLE->quick_rows[key] contain a non-zero value though these should have been
      remained untouched and equal to 0.
      
      Thus real cause of the problem is that TABLE::init does not clean the arrays
      TABLE::quick_key_parts[] and TABLE::>quick_rows[].
      It should have done it because the TABLE structure created for any
      instance of a table can be reused for many queries.
      b1ab2ba5