- 02 Aug, 2020 1 commit
-
-
Oleksandr Byelkin authored
-
- 31 Jul, 2020 6 commits
-
-
Thirunarayanan Balathandayuthapani authored
-
Thirunarayanan Balathandayuthapani authored
- Adding lock_wait_timeout value as 1 make sure that truncate table fails instead of making MDL timeout.
-
Marko Mäkelä authored
The purpose of the InnoDB doublewrite buffer is to make InnoDB tolerant against cases where the server was killed in the middle of a page write. (In Linux, killing a process may interrupt a write system call, typically on a 4096-byte boundary.) There may exist multiple copies of a page number in the doublewrite buffer. Recovery should choose the latest valid copy of the page. By design, the FIL_PAGE_LSN must not precede the latest checkpoint LSN nor be later than the end of the recovered log. For page_compressed and encrypted pages, we were missing proper consistency checks. In the 10.4 data set generated for in MDEV-23231, the data file contained a valid page_compressed page, and an identical copy of that page was also present in the doublewrite buffer. But, recovery would incorrectly consider the page invalid and restore an uncompressed copy of the same page that had been written before the log checkpoint. (In fact, no redo log was to be applied to that page.) buf_dblwr_process(): Validate the FIL_PAGE_LSN in the doublewrite buffer pages, and always skip page 0, because those pages should have been recovered by Datafile::restore_from_doublewrite() if necessary. Datafile::restore_from_doublewrite(): Choose the latest applicable page from the doublewrite buffer. recv_dblwr_t::find_page(): Also validate encrypted or page_compressed pages. recv_dblwr_t::validate_page(): New function to validate a page, either a copy in a data file or in the doublewrite buffer. Also validate encrypted or page_compressed pages. This is joint work with Thirunarayanan Balathandayuthapani.
-
Marko Mäkelä authored
row_vers_impl_x_locked_low(): clust_offsets may point to memory that is allocated by mem_heap_alloc() and may have been freed. For initializing clust_offsets, try to use the stack-allocated buffer instead of a pointer that may point to freed memory. This fixes a regression that was introduced in commit f0aa073f (MDEV-20950).
-
Nikita Malyavin authored
MDEV-18042 Server crashes upon adding a non-null date column under NO_ZERO_DATE with ALGORITHM=INPLACE accept table_name and db_name instead of table_share in make_truncated_value_warning
-
Nikita Malyavin authored
Call mark_columns_per_binlog_row_image before find_row() to set up table->vcol_set early, so the virtual column value will be updated after record read (ha_rnd_pos/ha_index_next/etc) by table->update_virtual_fields() call
-
- 30 Jul, 2020 5 commits
-
-
Sergei Golubchik authored
-
Sergei Golubchik authored
MDEV-22521 Server crashes in traverse_role_graph_up or Assertion `user' fails in traverse_role_graph_impl
-
Thirunarayanan Balathandayuthapani authored
Problem: ======== In row_merge_drop_indexes(), InnoDB drops only the index from dictionary and frees the index pages but it maintains the index object if the table is being used by other DML threads. It sets the online status of the index to ONLINE_INDEX_ABORTED_DROPPED. Removing the index from dictionary doesn't remove the corressponding ahi entries of the index. When block is being reused, InnoDB tries to remove ahi entries for the block and it fails if index online status is ONLINE_INDEX_ABORTED_DROPPED. Fix: ==== MDEV-22456 allows the index ahi entries to be dropped lazily. so checking online status in btr_search_drop_page_hash_index() is meaningless and should be removed.
-
Marko Mäkelä authored
The only change between Percona XtraDB Server 5.6.48-88.0 and 5.6.49-89.0 (apart from the version number change) was percona/percona-server@25ec24092064c2ab95752705e592e0c038ec1111 which we had already addressed in commit 7c03edf2 and commit c0fca286.
-
Marko Mäkelä authored
trx_rollback_active(), trx_rollback_resurrected(): Replace an incorrect condition that we failed to replace in commit b68f1d84 (MDEV-21217).
-
- 29 Jul, 2020 9 commits
-
-
Sergei Petrunia authored
Do not collect EITS statistics for this statement: ALTER TABLE t ANALYZE PARTITION p EITS stats are currently global, not per-partition. Collecting global stats when we are asked to process just one partition causes issues for DBAs.
-
Sergei Golubchik authored
MDEV-23010 UPDATE privilege at Database and Table level fail to update with SELECT command denied to user check both column- and table-level grants when looking for SELECT privilege on UPDATE statement.
-
Sergei Golubchik authored
-
Sergei Golubchik authored
Fix prefix key comparison in partitioning. Comparions must take into account no more than prefix_len characters. It used to compare prefix_len*mbmaxlen bytes.
-
Sergei Golubchik authored
if mysql_create_view() is aborted when view is linked into lex (when WSREP_TO_ISOLATION_BEGIN fails), it should not be linked there again on err:.
-
Sergei Golubchik authored
fix uninitialized struct member
-
Sergei Golubchik authored
wait_while_table_is_used() should return an error if handler::extra() fails
-
Oleksandr Byelkin authored
Removing plugin from the mysql.plugin even if the plugin is not loaded
-
Eugene Kosov authored
I run perf top during ./mtr testing and constantly see times() function there. It's so slow, that it has no sense to run it in a loop too many times. This patch speeds up -suite=innodb for me from 218s to 208s. 9s of times() function!
-
- 28 Jul, 2020 8 commits
-
-
Marko Mäkelä authored
mysql/mysql-server@e00ad49edc8b07317b52c9efd0810f2cbc57877a which introduced WL#6326 to MySQL 5.7.2 added a buffer page acquisition to CHECK TABLE code (solely for the purpose of obeying the changed latching order), but failed to check that a parent page actually exists. It would not necessarily exist in a corrupted index where a parent page is missing pointer records to child pages.
-
Marko Mäkelä authored
Let us read both encrypted temporary tables to increase the changes of page flushing and eviction.
-
Daniel Black authored
-
Dan Solodko authored
-
Karthik Kamath authored
Largely based on MySQL commit https://github.com/mysql/mysql-server/commit/75271e51d60bce8683423b208cbb43b11ca6060e MySQL Ref: BUG#24566529: BACKPORT BUG#23575445 TO 5.6 (cut) Also, the PTR_SANE macro which tries to check if a pointer is invalid (used when printing pointer values in stack traces) gave false negatives on OSX/FreeBSD. On these platforms we now simply check if the pointer is non-null. This also removes a sbrk() deprecation warning when building on OS X. (It was before only disabled with building using XCode). Removed execinfo path of MySQL patch that was already included. sbrk doesn't exist on FreeBSD aarch64. Removed HAVE_BSS_START based detection and replaced with __linux__ as it doesn't exist on OSX, Solaris or Windows. __bss_start exists on mutiple Linux architectures. Tested on FreeBSD and Linux x86_64. Being in FreeBSD ports for 2 years implies a good testing there on all FreeBSD architectures there too. MySQL-8.0.21 code is functionally identical to original commit.
-
Daniel Black authored
FreeBSD's inbuilt default jemalloc means its pointless to do a package search on it. The paths are already set by the system defaults.
-
Daniel Black authored
riscv64 fails to build because the use of #include <atomic> needs to link with -latomic. per https://github.com/riscv/riscv-gnu-toolchain/issues/183#issuecomment-253721765
-
Krunal Bauskar authored
RocksDB fails to build on arm64: undefined reference to `crc32c_arm64(unsigned int, unsigned char const*, unsigned int)' MariaDB uses storage/rocksdb/build_rocksdb.cmake to compile RocksDB. Said cmake missed adding crc32c_arm64 compilation target so if machine native architecture supported crc32 then complier would enable usage of function defined in crc32c_arm64 causing the listed error. Added crc32c_arm64 complition target. closes #1642
-
- 27 Jul, 2020 9 commits
-
-
Daniel Black authored
-
Daniel Black authored
There was no ability to set the mtr arguments of: * --max-save-core; and * --max-save-datadir to 0. This is desireable in an automatied scenario where space is limited hence targeting 10.1 branch. We take away the 0 means unlimited aspect for these, however, perl can handle some big numbers so they may as well be close enough to unlimited for all meaningful purposes.
-
Teodor Mircea Ionita authored
-
Daniel Black authored
FreeBSD doesn't have bash installed by default and sh has sufficient job control for this test. $ mysql-test/mtr --mem --max-test-fail=30 --force --parallel=1 rocksdb.concurrent_alter Logging: /home/dan/mariadb-server-10.5/mysql-test/mysql-test-run.pl --mem --max-test-fail=30 --force --parallel=1 rocksdb.concurrent_alter vardir: /usr/home/dan/build-mariadb-server-10.5/mysql-test/var Checking leftover processes... Removing old var directory... Creating var directory '/usr/home/dan/build-mariadb-server-10.5/mysql-test/var'... - symlinking 'var' to '/tmp/var_auto_P81m' Checking supported features... MariaDB Version 10.5.4-MariaDB - SSL connections supported - binaries built with wsrep patch Collecting tests... Installing system database... ============================================================================== TEST RESULT TIME (ms) or COMMENT -------------------------------------------------------------------------- worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 16000..16019 rocksdb.concurrent_alter 'write_committed' [ pass ] 16348 rocksdb.concurrent_alter 'write_prepared' [ pass ] 16771 -------------------------------------------------------------------------- The servers were restarted 1 times Spent 33.119 of 41 seconds executing testcases Completed: All 2 tests were successful. $ uname -a FreeBSD freebsd 12.1-RELEASE-p6 FreeBSD 12.1-RELEASE-p6 GENERIC amd64
-
Daniel Black authored
Correct to a true 2^14 rather than some different number that was actually just a number typo. Bug report thanks to Hartmut Holzgraefe.
-
Thirunarayanan Balathandayuthapani authored
commit ad6171b9 (MDEV-22456) introduced code to buf_page_create() that would lazily drop adaptive hash index entries for an index that has been evicted from the data dictionary cache. Unfortunately, that call was missing adequate protection. While the btr_search_drop_page_hash_index(block) was executing, the block could be reused for something else. buf_page_create(): If btr_search_drop_page_hash_index() must be invoked, pin the block before releasing the buf_pool->page_hash lock, so that the block cannot be grabbed by other threads.
-
Jan Lindström authored
-
Varun Gupta authored
Removed an unnecessary ifndef which was printing the window name for a named window only in the case of debug build. The print() for the window function should behave in the same way on both release and debug builds.
-
Alexander Barkov authored
truncate_double() did not take into account the max_value limit in case when dec<NOT_FIXED_DEC.
-
- 25 Jul, 2020 1 commit
-
-
Sergei Petrunia authored
-
- 24 Jul, 2020 1 commit
-
-
Sergei Petrunia authored
* Fix the crash: IN-to-EXISTS rewrite causes an error (and so JOIN::optimize() fails with an error, too), don't call update_used_tables(). Terminate the query execution instead. * Fix the cause of the error in the IN-to-EXISTS rewrite: don't do the rewrite if doing it will cause an error of this kind: This version of MariaDB doesn't yet support 'SUBQUERY in ROW in left expression of IN/ALL/ANY' * Fix another issue exposed by this testcase: JOIN::setup_subquery_caches() may be invoked before any select has saved its query plan, and will crash because none of the SELECTs has called create_explain_query_if_not_exists() to create the Explain Data Structure for this SELECT. TODO: When merging this to 10.2, remove the poorly-placed call to create_explain_query_if_not_exists made by fix for M_D_E_V-16153
-