1. 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
  2. 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
  3. 11 Nov, 2019 11 commits
  4. 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
  5. 08 Nov, 2019 3 commits
  6. 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
  7. 06 Nov, 2019 5 commits
    • Marko Mäkelä's avatar
      Follow-up to 792c9f9a · 90451a59
      Marko Mäkelä authored
      dict_index_add_to_cache(): Make the 'index' a reference to a pointer,
      so that the caller will avoid the expensive call to
      dict_index_get_if_in_cache_low().
      90451a59
    • Marko Mäkelä's avatar
      Merge 10.1 to 10.2 · 8688ef22
      Marko Mäkelä authored
      8688ef22
    • Marko Mäkelä's avatar
      MDEV-20934 Infinite loop on innodb_fast_shutdown=0 with inconsistent change buffer · d7a24017
      Marko Mäkelä authored
      Due to a data corruption bug that may have occurred a long time earlier
      (possibly involving physical backup and MySQL Bug #69122, which was
      addressed in commit f166ec71)
      it seems possible that the InnoDB change buffer might end up containing
      entries, while no buffered changes exist according to the change buffer
      bitmap pages in the .ibd files.
      
      ibuf_delete_recs(): New function, to be invoked on slow shutdown only.
      Remove all buffered changes for a specific page.
      
      ibuf_merge_or_delete_for_page(): If the change buffer bitmap is clean
      and a slow shutdown is in progress, invoke ibuf_delete_recs().
      We do not want to do that during normal operation, due to the additional
      overhead that is involved. The bitmap page should be consistent with
      the change buffer in the first place.
      d7a24017
    • Marko Mäkelä's avatar
      Merge 5.5 into 10.1 · 4e99e67c
      Marko Mäkelä authored
      4e99e67c
    • Thirunarayanan Balathandayuthapani's avatar
      MDEV-20987 InnoDB fails to start when fts table has FK relation · 5c3bbbd8
      Thirunarayanan Balathandayuthapani authored
      InnoDB: Assertion failure in file .../dict/dict0dict.cc line ...
      InnoDB: Failing assertion: table->can_be_evicted
      
      This fixes a regression that was caused by the fix of MDEV-20621
      (commit a41d4297).
      MySQL 5.6 (and MariaDB 10.0) introduced eviction of tables from
      the InnoDB data dictionary cache. Tables that are connected to
      FOREIGN KEY constraints or FULLTEXT INDEX are exempt of the eviction.
      With the problematic change, a table that would already be exempt
      from eviction due to FOREIGN KEY would cause the problem if there
      also was a FULLTEXT INDEX defined on it.
      
      dict_load_table(): Only prevent eviction if table->can_be_evicted holds.
      5c3bbbd8
  8. 05 Nov, 2019 3 commits
  9. 04 Nov, 2019 3 commits
    • Vladislav Vaintroub's avatar
      Fix ninja build · dc771113
      Vladislav Vaintroub authored
      Do not rely on existence of CMakeFiles/${target}.dir directory existence
      It is not there for custom targets in Ninja build.
      dc771113
    • Sergei Golubchik's avatar
      MDEV-20971 ASAN heap-use-after-free in list_delete / heap_close · cd156e2c
      Sergei Golubchik authored
      Don't save/restore HP_INFO as it could be changed by a concurrent thread.
      different parts of HP_INFO are protected by different mutexes and
      the mutex that protect most of the HP_INFO does not protect its open_list
      data.
      
      As a bonus, make heap_check_heap() to take const HP_INFO* and not
      make any changes there whatsoever.
      cd156e2c
    • Marko Mäkelä's avatar
      Fix GCC 9.2.1 -Wstringop-truncation · 5164f8c2
      Marko Mäkelä authored
      dict_table_rename_in_cache(): Use strcpy() instead of strncpy(),
      because they are known to be equivalent in this case (the length
      of old_name was already validated).
      
      mariabackup: Invoke strncpy() with one less than the buffer size,
      and explicitly add NUL as the last byte of the buffer.
      5164f8c2
  10. 02 Nov, 2019 1 commit
    • pkubaj's avatar
      Fix build on !glibc/powerpc* · eb56339b
      pkubaj authored
      Do the same that newer branches do and don't include glibc-related headers on non-glibc environment.
      eb56339b
  11. 01 Nov, 2019 4 commits