summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* MDEV-23399: Performance regression with write workloadsbb-10.5-flushingMarko Mäkelä2020-10-1573-3834/+2022
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The buffer pool refactoring in MDEV-15053 and MDEV-22871 shifted the performance bottleneck to the page flushing. The configuration parameters will be changed as follows: innodb_lru_flush_size=32 (new: how many pages to flush on LRU eviction) innodb_lru_scan_depth=1536 (old: 1024) innodb_max_dirty_pages_pct=90 (old: 75) innodb_max_dirty_pages_pct_lwm=75 (old: 0) Note: The parameter innodb_lru_scan_depth will only affect LRU eviction of buffer pool pages when a new page is being allocated. The page cleaner thread will no longer evict any pages. It used to guarantee that some pages will remain free in the buffer pool. Now, we perform that eviction 'on demand' in buf_LRU_get_free_block(). The parameter innodb_lru_scan_depth(srv_LRU_scan_depth) is used as follows: * When the buffer pool is being shrunk in buf_pool_t::withdraw_blocks() * As a buf_pool.free limit in buf_LRU_list_batch() for terminating the flushing that is initiated e.g., by buf_LRU_get_free_block() The parameter also used to serve as an initial limit for unzip_LRU eviction (evicting uncompressed page frames while retaining ROW_FORMAT=COMPRESSED pages), but now we will use a hard-coded limit of 100 or unlimited for invoking buf_LRU_scan_and_free_block(). The status variables will be changed as follows: innodb_buffer_pool_pages_flushed: This includes also the count of innodb_buffer_pool_pages_LRU_flushed and should work reliably, updated one by one in buf_flush_page() to give more real-time statistics. The function buf_flush_stats(), which we are removing, was not called in every code path. For both counters, we will use regular variables that are incremented in a critical section of buf_pool.mutex. Note that show_innodb_vars() directly links to the variables, and reads of the counters will *not* be protected by buf_pool.mutex, so you cannot get a consistent snapshot of both variables. The following INFORMATION_SCHEMA.INNODB_METRICS counters will be removed, because the page cleaner no longer deals with writing or evicting least recently used pages, and because the single-page writes have been removed: * buffer_LRU_batch_flush_avg_time_slot * buffer_LRU_batch_flush_avg_time_thread * buffer_LRU_batch_flush_avg_time_est * buffer_LRU_batch_flush_avg_pass * buffer_LRU_single_flush_scanned * buffer_LRU_single_flush_num_scan * buffer_LRU_single_flush_scanned_per_call When moving to a single buffer pool instance in MDEV-15058, we missed some opportunity to simplify the buf_flush_page_cleaner thread. It was unnecessarily using a mutex and some complex data structures, even though we always have a single page cleaner thread. Furthermore, the buf_flush_page_cleaner thread had separate 'recovery' and 'shutdown' modes where it was waiting to be triggered by some other thread, adding unnecessary latency and potential for hangs in relatively rarely executed startup or shutdown code. The page cleaner was also running two kinds of batches in an interleaved fashion: "LRU flush" (writing out some least recently used pages and evicting them on write completion) and the normal batches that aim to increase the MIN(oldest_modification) in the buffer pool, to help the log checkpoint advance. The buf_pool.flush_list flushing was being blocked by buf_block_t::lock for no good reason. Furthermore, if the FIL_PAGE_LSN of a page is ahead of log_sys.get_flushed_lsn(), that is, what has been persistently written to the redo log, we would trigger a log flush and then resume the page flushing. This would unnecessarily limit the performance of the page cleaner thread and trigger the infamous messages "InnoDB: page_cleaner: 1000ms intended loop took 4450ms. The settings might not be optimal" that were suppressed in commit d1ab89037a518fcffbc50c24e4bd94e4ec33aed0 unless log_warnings>2. Our revised algorithm will make log_sys.get_flushed_lsn() advance at the start of buf_flush_lists(), and then execute a 'best effort' to write out all pages. The flush batches will skip pages that were modified since the log was written, or are are currently exclusively locked. The MDEV-13670 message "page_cleaner: 1000ms intended loop took" message will be removed, because by design, the buf_flush_page_cleaner() should not be blocked during a batch for extended periods of time. We will remove the single-page flushing altogether. Related to this, the debug parameter innodb_doublewrite_batch_size will be removed, because all of the doublewrite buffer will be used for flushing batches. If a page needs to be evicted from the buffer pool and all 100 least recently used pages in the buffer pool have unflushed changes, buf_LRU_get_free_block() will execute buf_flush_lists() to write out and evict innodb_lru_flush_size pages. At most one thread will execute buf_flush_lists() in buf_LRU_get_free_block(); other threads will wait for that LRU flushing batch to finish. To improve concurrency, we will replace the InnoDB ib_mutex_t and os_event_t native mutexes and condition variables in this area of code. Most notably, this means that the buffer pool mutex (buf_pool.mutex) is no longer instrumented via any InnoDB interfaces. It will continue to be instrumented via PERFORMANCE_SCHEMA. For now, both buf_pool.flush_list_mutex and buf_pool.mutex will be declared with MY_MUTEX_INIT_FAST (PTHREAD_MUTEX_ADAPTIVE_NP). The critical sections of buf_pool.flush_list_mutex should be shorter than those for buf_pool.mutex, because in the worst case, they cover a linear scan of buf_pool.flush_list, while the worst case of a critical section of buf_pool.mutex covers a linear scan of the potentially much longer buf_pool.LRU list. mysql_mutex_is_owner(), safe_mutex_is_owner(): New predicate, usable with SAFE_MUTEX. Some InnoDB debug assertions need this predicate instead of mysql_mutex_assert_owner() or mysql_mutex_assert_not_owner(). buf_pool_t::n_flush_LRU, buf_pool_t::n_flush_list: Replaces buf_pool_t::init_flush[] and buf_pool_t::n_flush[]. The number of active flush operations. buf_pool_t::mutex, buf_pool_t::flush_list_mutex: Use mysql_mutex_t instead of ib_mutex_t, to have native mutexes with PERFORMANCE_SCHEMA and SAFE_MUTEX instrumentation. buf_pool_t::done_flush_LRU: Condition variable for !n_flush_LRU. buf_pool_t::done_flush_list: Condition variable for !n_flush_list. buf_pool_t::do_flush_list: Condition variable to wake up the buf_flush_page_cleaner when a log checkpoint needs to be written or the server is being shut down. Replaces buf_flush_event. We will keep using timed waits (the page cleaner thread will wake _at least_ once per second), because the calculations for innodb_adaptive_flushing depend on fixed time intervals. buf_dblwr: Allocate statically, and move all code to member functions. Use a native mutex and condition variable. Remove code to deal with single-page flushing. buf_dblwr_check_block(): Make the check debug-only. We were spending a significant amount of execution time in page_simple_validate_new(). flush_counters_t::unzip_LRU_evicted: Remove. IORequest: Make more members const. FIXME: m_fil_node should be removed. buf_flush_sync_lsn: Protect by std::atomic, not page_cleaner.mutex (which we are removing). page_cleaner_slot_t, page_cleaner_t: Remove many redundant members. pc_request_flush_slot(): Replaces pc_request() and pc_flush_slot(). recv_writer_thread: Remove. Recovery works just fine without it, if we simply invoke buf_flush_sync() at the end of each batch in recv_sys_t::apply(). recv_recovery_from_checkpoint_finish(): Remove. We can simply call recv_sys.debug_free() directly. srv_started_redo: Replaces srv_start_state. SRV_SHUTDOWN_FLUSH_PHASE: Remove. logs_empty_and_mark_files_at_shutdown() can communicate with the normal page cleaner loop via the new function flush_buffer_pool(). buf_flush_remove(): Assert that the calling thread is holding buf_pool.flush_list_mutex. This removes unnecessary mutex operations from buf_flush_remove_pages() and buf_flush_dirty_pages(), which replace buf_LRU_flush_or_remove_pages(). buf_flush_lists(): Renamed from buf_flush_batch(), with simplified interface. Return the number of flushed pages. Clarified comments and renamed min_n to max_n. Identify LRU batch by lsn=0. Merge all the functions buf_flush_start(), buf_flush_batch(), buf_flush_end() directly to this function, which was their only caller, and remove 2 unnecessary buf_pool.mutex release/re-acquisition that we used to perform around the buf_flush_batch() call. At the start, if not all log has been durably written, wait for a background task to do it, or start a new task to do it. This allows the log write to run concurrently with our page flushing batch. Any pages that were skipped due to too recent FIL_PAGE_LSN or due to them being latched by a writer should be flushed during the next batch, unless there are further modifications to those pages. It is possible that a page that we must flush due to small oldest_modification also carries a recent FIL_PAGE_LSN or is being constantly modified. In the worst case, all writers would then end up waiting in log_free_check() to allow the flushing and the checkpoint to complete. buf_do_flush_list_batch(): Clarify comments, and rename min_n to max_n. Cache the last looked up tablespace. If neighbor flushing is not applicable, invoke buf_flush_page() directly, avoiding a page lookup in between. buf_flush_space(): Auxiliary function to look up a tablespace for page flushing. buf_flush_page(): Defer the computation of space->full_crc32(). Never call log_write_up_to(), but instead skip persistent pages whose latest modification (FIL_PAGE_LSN) is newer than the redo log. Also skip pages on which we cannot acquire a shared latch without waiting. buf_flush_try_neighbors(): Do not bother checking buf_fix_count because buf_flush_page() will no longer wait for the page latch. Take the tablespace as a parameter, and only execute this function when innodb_flush_neighbors>0. Avoid repeated calls of page_id_t::fold(). buf_flush_relocate_on_flush_list(): Declare as cold, and push down a condition from the callers. buf_flush_check_neighbor(): Take id.fold() as a parameter. buf_flush_sync(): Ensure that the buf_pool.flush_list is empty, because the flushing batch will skip pages whose modifications have not yet been written to the log or were latched for modification. buf_free_from_unzip_LRU_list_batch(): Remove redundant local variables. buf_flush_LRU_list_batch(): Let the caller buf_do_LRU_batch() initialize the counters, and report n->evicted. Cache the last looked up tablespace. If neighbor flushing is not applicable, invoke buf_flush_page() directly, avoiding a page lookup in between. buf_do_LRU_batch(): Return the number of pages flushed. buf_LRU_free_page(): Only release and re-acquire buf_pool.mutex if adaptive hash index entries are pointing to the block. buf_LRU_get_free_block(): Do not wake up the page cleaner, because it will no longer perform any useful work for us, and we do not want it to compete for I/O while buf_flush_lists(innodb_lru_flush_size, 0) writes out and evicts at most innodb_lru_flush_size pages. (The function buf_do_LRU_batch() may complete after writing fewer pages if more than innodb_lru_scan_depth pages end up in buf_pool.free list.) Eliminate some mutex release-acquire cycles, and wait for the LRU flush batch to complete before rescanning. buf_LRU_check_size_of_non_data_objects(): Simplify the code. buf_page_write_complete(): Remove the parameter evict, and always evict pages that were part of an LRU flush. buf_page_create(): Take a pre-allocated page as a parameter. buf_pool_t::free_block(): Free a pre-allocated block. recv_sys_t::recover_low(), recv_sys_t::apply(): Preallocate the block while not holding recv_sys.mutex. During page allocation, we may initiate a page flush, which in turn may initiate a log flush, which would require acquiring log_sys.mutex, which should always be acquired before recv_sys.mutex in order to avoid deadlocks. Therefore, we must not be holding recv_sys.mutex while allocating a buffer pool block. BtrBulk::logFreeCheck(): Skip a redundant condition. row_undo_step(): Do not invoke srv_inc_activity_count() for every row that is being rolled back. It should suffice to invoke the function in trx_flush_log_if_needed() during trx_t::commit_in_memory() when the rollback completes. sync_check_enable(): Remove. We will enable innodb_sync_debug from the very beginning. Reviewed by: Vladislav Vaintroub
* MDEV-23399: Remove buf_pool.flush_rbtMarko Mäkelä2020-10-155-245/+8
| | | | | | | | | | | | | | | | | | | | | Normally, buf_pool.flush_list must be sorted by buf_page_t::oldest_modification, so that log_checkpoint() can choose MIN(oldest_modification) as the checkpoint LSN. During recovery, buf_pool.flush_rbt used to guarantee the ordering. However, we can allow the buf_pool.flush_list to be in an arbitrary order during recovery, and simply ensure that it is in the correct order by the time a log checkpoint needs to be executed. recv_sys_t::apply(): To keep it simple, we will always flush the buffer pool at the end of each batch. Note that log_checkpoint() will invoke recv_sys_t::apply() in case a checkpoint is initiated during the last batch of recovery, when we already allow writes to data pages and the redo log. Reviewed by: Vladislav Vaintroub
* MDEV-23399: Remove recv_writer_threadMarko Mäkelä2020-10-1511-230/+18
| | | | | | | | | Recovery works just fine without a separate thread whose only task is to tell the page cleaner thread to do its job. recv_sys_t::apply(): Flush the buffer pool at the end of each batch. Reviewed by: Vladislav Vaintroub
* MDEV-23399 preparation: Remove buf_pool.zip_cleanMarko Mäkelä2020-10-156-183/+23
| | | | | The debug data structure may have been useful during the development of ROW_FORMAT=COMPRESSED page frames. Let us simplify code by removing it.
* MDEV-23190 after-merge fix: remove unused codeMarko Mäkelä2020-10-151-9/+0
| | | | | The merge commit 4d4865de6f124ed0a97573bf784102077f7296e7 introduced fil_space_t::max_page_number_of_io() with no callers.
* Travis-CI: Use new Ubuntu 20.04 as base, streamline and documentOtto Kekäläinen2020-10-151-33/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify Travis-CI file and extend inline comments. Upgrade to using Ubuntu 20.04 (Focal) as the baseline distro version now that Travis-CI has made it available. Drop Xenial and all the excess repositories Xenial needed. Now we only Focal and one Bionic build to keep things simple and streamlined. Keep GCC-7/Clang-7 as the older compiler, and start using GCC-10 and Clang-10 as the newer compiler. Assume that if both of them build OK, than the intermediate versions would be OK as well. Print 'apt-cache policy' to make it transparent in build logs what repositories was used for build dependencies. Remove temporary workaround from homebrew install step as Travis-CI has fixed the original issue. Revert ignoring results form build that previously failed on the test main.thread_pool_info as MDEV-20372 is not fixed. Keep arm64 failures ignored due to MDEV-23955. Allow failures for the test main.column_compression 'innodb' due to MDEV-23954.
* MDEV-23927 Crash in ./mtr --skip-innodb-fast-shutdown innodb.temporary_tablesMarko Mäkelä2020-10-092-3/+4
| | | | | | | innodb_preshutdown(): On innodb_fast_shutdown=0, only wait for transactions to exit if the transaction system had been initialized. Reviewed by: Vladislav Vaintroub
* MDEV-23909 innodb_flush_neighbors=2 is treated like innodb_flush_neighbors=0Marko Mäkelä2020-10-081-3/+16
| | | | | | | | | | | In MDEV-15053 (commit b1ab211dee599eabd9a5b886fafa3adea29ae041) we inadvertently removed a check whether innodb_flush_neighbors is 0, and thus started treating only the value 1 in a special way. buf_flush_check_neighbors(): Add the parameter contiguous, which can be set to skip the check for non-contiguous page number ranges. Reviewed by: Thirunarayanan Balathandayuthapani
* Merge tag 'mariadb-10.5.6' into 10.5Sergei Golubchik2020-10-071-0/+42
|\
| * Merge branch '10.4' into 10.5mariadb-10.5.6Sergei Golubchik2020-10-052-1/+43
| |\
| | * Merge branch '10.3' into 10.4mariadb-10.4.15Sergei Golubchik2020-10-052-1/+43
| | |\
| | | * Merge branch '10.2' into 10.3mariadb-10.3.25Sergei Golubchik2020-10-052-6/+47
| | | |\
| | | | * Merge branch '10.1' into 10.2mariadb-10.2.34Sergei Golubchik2020-10-052-6/+47
| | | | |\
| | | | | * bump VERSIONmariadb-10.1.47Sergei Golubchik2020-10-051-1/+1
| | | | | |
| | | | | * MDEV-23884 donor uses invalid SST methodsSergei Golubchik2020-10-051-5/+46
| | | | | |
* | | | | | bump the VERSIONDaniel Bartholomew2020-10-071-1/+1
| | | | | |
* | | | | | MDEV-22871 fixup: Remove SYNC_BUF_PAGE_HASHMarko Mäkelä2020-10-052-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | This was missed in commit 5155a300fab85e97217c75e3ba3c3ce78082dd8a.
* | | | | | MDEV-16264 fixup: Remove unused fts_optimize_wq->eventMarko Mäkelä2020-10-022-13/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was missed not only in commit 5e62b6a5e06eb02cbde1e34e95e26f42d87fce02 but also in commit a9550c47e4e32f2df8816477e362315608194443.
* | | | | | MDEV-19275 Provide SQL service to plugins.Alexey Botchkov2020-10-0210-3/+630
| | | | | | | | | | | | | | | | | | | | | | | | test_sql_service plugin added and employed in test_sql_service.test.
* | | | | | Cleanup: Remove non-existing parametersMarko Mäkelä2020-10-021-11/+0
| | | | | |
* | | | | | Cleanup: Remove unused mutex keysMarko Mäkelä2020-10-026-81/+4
| | | | | |
* | | | | | MDEV-16264 fixup: Remove unused declarationsMarko Mäkelä2020-10-012-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove stale references to srv_sys.sys_threads and srv_sys.mutex that were removed in commit 5e62b6a5e06eb02cbde1e34e95e26f42d87fce02.
* | | | | | Merge 10.4 into 10.5Marko Mäkelä2020-10-0116-92/+51
|\ \ \ \ \ \
| * | | | | | Cleanup: Remove unnecessary trx_i_s_cache_t::last_read_mutexMarko Mäkelä2020-10-016-31/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can simply use C++11 std::atomic for avoiding undefined behaviour related to concurrent stores to a shared variable. On most if not all ISAs, std::memory_order_relaxed loads and stores will not really differ from non-atomic loads or stores.
| * | | | | | Merge 10.3 into 10.4Marko Mäkelä2020-10-0116-62/+51
| |\ \ \ \ \ \
| | * \ \ \ \ \ Merge 10.2 into 10.3Marko Mäkelä2020-10-011-3/+7
| | |\ \ \ \ \ \
| | | * | | | | | MDEV-23856 fts_optimize_wq accessed after shutdown of FTS Optimize threadThirunarayanan Balathandayuthapani2020-09-301-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In fts_optimize_remove_table(), InnoDB tries to access the fts_optimize_wq after shutting down the fts optimize thread. This issue caused by the commit a41d429765c7ddb528b9b438c68b25ff55d3bd55. Fix should check for fts optimize thread shutdown state before checking fts_optimize_wq.
| | * | | | | | | Merge 10.2 into 10.3Marko Mäkelä2020-09-3015-60/+45
| | |\ \ \ \ \ \ \ | | | |/ / / / / /
| | | * | | | | | Cleanup: Remove unused fts_cache_t::optimize_lockMarko Mäkelä2020-09-307-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This has been unused from the very beginning (mysql/mysql-server@d5e512ae7e37cd1f70c44a3f12205d70b13118ab).
| | | * | | | | | Cleanup: Remove constant parameters async=false, index_name=NULLMarko Mäkelä2020-09-294-41/+6
| | | | | | | | |
| | | * | | | | | MDEV-23839 innodb_fast_shutdown=0 hang on change buffer mergeMarko Mäkelä2020-09-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ibuf_merge_or_delete_for_page(): Do not attempt to invoke ibuf_delete_recs() on a page of the change buffer itself. The caller could already be holding ibuf->index->lock, and an attempt to acquire it in S mode would hang the release server or cause an assertion failure in rw_lock_s_lock_func() in a debug server. This problem was reproducible on 1 out of 2 runs of the following: ./mtr --no-reorder \ innodb.innodb-page_compression_default \ innodb.innodb-page_compression_snappy \ innodb.innodb-page_compression_zip \ innodb.innodb_wl6326_big innodb.xa_recovery
| | | * | | | | | Merge 10.1 into 10.2Marko Mäkelä2020-09-296-14/+42
| | | |\ \ \ \ \ \
| | | | * | | | | | Cleanup: Remove unused rw_lock_t::writer_is_wait_exMarko Mäkelä2020-09-292-14/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was missed in commit 2c252ba96b8f124f81371ec86843a45dc3977d54 (MySQL 5.5.42, MariaDB 5.5.42).
| | | | * | | | | | MDEV-22277 LeakSanitizer: detected memory leaks in ↵Thirunarayanan Balathandayuthapani2020-09-284-0/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mem_heap_create_block_func after attempt to create foreign key - During online DDL, prepare phase error handler fails to remove the memory allocated for newly created foreign keys.
* | | | | | | | | | MDEV-16264 fixup: Remove unused code and dataMarko Mäkelä2020-09-3020-247/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | LATCH_ID_OS_AIO_READ_MUTEX, LATCH_ID_OS_AIO_WRITE_MUTEX, LATCH_ID_OS_AIO_LOG_MUTEX, LATCH_ID_OS_AIO_IBUF_MUTEX, LATCH_ID_OS_AIO_SYNC_MUTEX: Remove. The tpool is not instrumented. lock_set_timeout_event(): Remove. srv_sys_mutex_key, srv_sys_t::mutex, SYNC_THREADS: Remove. srv_slot_t::suspended: Remove. We only ever assigned this data member true, so it is redundant. ib_wqueue_wait(), ib_wqueue_timedwait(): Remove. os_thread_join(): Remove. os_thread_create(), os_thread_exit(): Remove redundant parameters. These were missed in commit 5e62b6a5e06eb02cbde1e34e95e26f42d87fce02.
* | | | | | | | | | MDEV-21174 fixup: Remove buf_dblwr_being_createdMarko Mäkelä2020-09-302-8/+0
| | | | | | | | | |
* | | | | | | | | | MDEV-21534 fixup: Remove traces of removed log_sys.write_mutexMarko Mäkelä2020-09-307-12/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This was missed in commit 30ea63b7d2077883713e63cbf4e661ba0345bf68.
* | | | | | | | | | Cleanup: Simplify sync_array_object_signalled()Marko Mäkelä2020-09-302-15/+5
| | | | | | | | | |
* | | | | | | | | | Cleanup: Remove unnecessary declarationsMarko Mäkelä2020-09-305-22/+17
| | | | | | | | | |
* | | | | | | | | | Cleanup: Remove unnecessary #includeMarko Mäkelä2020-09-302-9/+2
| | | | | | | | | |
* | | | | | | | | | MDEV-22678: Debian Upgrade from MySQL-5.7 CE fails with "Plugin ↵Daniel Black2020-09-301-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 'auth_socket' is not loaded MySQL.com and Percona packages can be root auth_socket only. MariaDB uses unix_socket. As the root user, as the default Debian maintaince user, needs to be accessible to run mariadb-upgrade for a start, we make it accessible again.
* | | | | | | | | | Merge branch '10.4' into 10.5Sujatha2020-09-2959-141/+777
|\ \ \ \ \ \ \ \ \ \ | |/ / / / / / / / /
| * | | | | | | | | MDEV-23778 Derived table handler looses data on conversion from HEAP to AriaIgor Babaev2020-09-283-3/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug happened when the HEAP temporary table used for the derived table created for a derived handler of a remote engine of the federated type became full and was converted to an Area table. For this conversion the tmp_table_param parameter must be always taken from the select_unit object created for the result of the derived table.
| * | | | | | | | | Merge branch '10.3' into 10.4Sujatha2020-09-2830-46/+202
| |\ \ \ \ \ \ \ \ \ | | |/ / / / / / / /
| | * | | | | | | | Merge branch '10.2' into 10.3Sujatha2020-09-2829-49/+178
| | |\ \ \ \ \ \ \ \ | | | |/ / / / / / /
| | | * | | | | | | MDEV-23659 : Update Galera disabled.def fileJan Lindström2020-09-281-6/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix typo.
| | | * | | | | | | Merge branch '10.1' into 10.2Sujatha2020-09-2819-24/+103
| | | |\ \ \ \ \ \ \ | | | | |/ / / / / /
| | | | * | | | | | MDEV-22330: mysqlbinlog stops with an error Don't know how to handle column ↵Sujatha2020-09-283-7/+80
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | type: 255 meta: 4 (0004) Analysis: ======== "mysqlbinlog -v" option will reconstruct row events and display them as commented SQL statements. If this option is given twice, the output includes comments to indicate column data types and some metadata. `log_event_print_value` is the function reponsible for printing values and their types. This function doesn't handle GEOMETRY type. Hence the above error gets printed. Fix: === Add support for GEOMETRY datatype.
| | | | * | | | | | Reverted wrong patch for mysql_upgradebb-10.1-danielblack-mysqlupgrade-revertMonty2020-09-262-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The original code was correct. mysql_upgrade calls the mysql client to talk with MariaDB. It doesn't call itself!
| | | | * | | | | | Revert "[MDEV-7978] add show create user"Daniel Black2020-09-2416-701/+118
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Appoligies, had a dirty branch before pushing: This reverts commit 053653a23cac6f3f2e5288979438de27c9d0100a. This reverts commit 0ff897807fc2f4a32e1ba1ae148005930ea604b5. This reverts commit 85b085972b729f6c049050f851692c9a5b86f3d5. This reverts commit f3f45e46b614bddcef0a37f4352c5909ca565d1d. This reverts commit a470b3570a7ce2534c9021f3b84d7457a3ba08e1. This reverts commit f8b8d202bc83d3de46c89ef86333fe602e711265. This reverts commit 6b6f066fdd9f5f64813ded550e7dbda176ee3c82. This reverts commit a701e9e6c390c3cbac69872e95b1aec565341d30. This reverts commit c169838611e13c9f0559b2f49ba8c36aec11a78b.