- 01 Apr, 2019 2 commits
-
-
Marko Mäkelä authored
For tablespaces that do not reside on spinning storage, it does not make sense to attempt to write nearby pages when writing out dirty pages from the InnoDB buffer pool. It is actually detrimental to performance and to the life span of flash ROM storage. With this change, MariaDB will detect whether an InnoDB file resides on solid-state storage. The detection has been implemented for Linux and Microsoft Windows. For other systems, we will err on the safe side and assume that files reside on SSD. As part of this change, we will reduce the number of fstat() calls when opening data files on POSIX systems and slightly clean up some file I/O code. FIXME: os_is_sparse_file_supported() on POSIX works in a destructive manner. Thus, we can only invoke it when creating files, not when opening them. For diagnostics, we introduce the column ON_SSD to the table INFORMATION_SCHEMA.INNODB_TABLESPACES_SCRUBBING. The table INNODB_SYS_TABLESPACES might seem more appropriate, but its purpose is to reflect the contents of the InnoDB system table SYS_TABLESPACES, which we would like to remove at some point. On Microsoft Windows, querying StorageDeviceSeekPenaltyProperty sometimes returns ERROR_GEN_FAILURE instead of ERROR_INVALID_FUNCTION or ERROR_NOT_SUPPORTED. We will silently ignore also this error, and assume that the file does not reside on SSD. On Linux, the detection will be based on the files /sys/block/*/queue/rotational and /sys/block/*/dev. Especially for USB storage, it is possible that /sys/block/*/queue/rotational will wrongly report 1 instead of 0. fil_node_t::on_ssd: Whether the InnoDB data file resides on solid-state storage. fil_system_t::ssd: Collection of Linux block devices that reside on non-rotational storage. fil_system_t::create(): Detect ssd on Linux based on the contents of /sys/block/*/queue/rotational and /sys/block/*/dev. fil_system_t::is_ssd(dev_t): Determine if a Linux block device is non-rotational. Partitions will be identified with the containing block device by assuming that the least significant 4 bits of the minor number identify a partition, and that the "partition number" of the entire device is 0.
-
Alexander Barkov authored
-
- 29 Mar, 2019 5 commits
-
-
Heckad authored
This error occurred when the path to the project contained regular expression characters.
-
Vladislav Vaintroub authored
-
Ian Gilfillan authored
-
Jan Lindström authored
Add wsrep sync waits and if expected result is not reached print out current contents.
-
Alexander Barkov authored
-
- 28 Mar, 2019 2 commits
-
-
Alexander Barkov authored
-
Alexander Barkov authored
-
- 27 Mar, 2019 1 commit
-
-
Daniele Sciascia authored
Disabled autocommit retry (set wsrep_retry_autocommit to 0) so that BF aborted autocommit statement always results in ER_LOCK_DEADLOCK.
-
- 26 Mar, 2019 13 commits
-
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Occasionally, the test innodb_gis.rtree_recovery,4k runs out of buffer pool during crash recovery. This test might have started failing in connection with MDEV-18726. Work around it by reserving a little more overhead for the recovery hash tables. FIXME: Propagate the "out of memory" error to recv_add_to_hash_table() and transition to multi-batch recovery with a finer granularity.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Item_cond::eval_not_null_tables(): Use Item::eval_const_cond(), just like Item_cond::fix_fields(). This inconsistency was found while merging to 10.3, where the Microsoft compiler is configured to report an error for comparing longlong to bool.
-
Aleksey Midenkov authored
MDEV-18869 Assertion `!((field)->vcol_info && (field)->stored_in_db())' failed in innodb_col_no upon altering table with system versioning WITH/WITHOUT SYSTEM VERSIONING is not supported for generated columns at parser level (see definition of field_def rule).
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
Before MDEV-12113 (MariaDB Server 10.1.25), on shutdown InnoDB would write the current LSN to the first page of each file of the system tablespace. This is incompatible with MariaDB's InnoDB table encryption, because encryption repurposed the field for an encryption key ID and checksum. buf_page_is_corrupted(): For the InnoDB system tablespace, skip FIL_PAGE_FILE_FLUSH_LSN when checking if a page is all zero, because the first page of each file in the system tablespace can contain nonzero bytes in the field.
-
Alexander Barkov authored
-
- 25 Mar, 2019 13 commits
-
-
Daniel Bartholomew authored
-
Marko Mäkelä authored
-
Marko Mäkelä authored
btr_cur_compress_recommendation(): Backport a change from 10.3. This is a follow-up to commit 1bd98154.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The test case for reproducing MDEV-14126 demonstrates that InnoDB can end up with an index tree where a non-leaf page has only one child page. The test case innodb.innodb_bug14676111 demonstrates that such pages are sometimes unavoidable, because InnoDB does not implement any sort of B-tree rotation. But, there is no reason to allow a root page with only one child page. btr_cur_node_ptr_delete(): Replaces btr_node_ptr_delete(). btr_page_get_father(): Declare globally. btr_discard_only_page_on_level(): Declare with ATTRIBUTE_COLD. It turns out that this function is not covered by the innodb.innodb_bug14676111 test case after all. btr_discard_page(): If the root page ends up having only one child page, shrink the tree by invoking btr_lift_page_up().
-
Marko Mäkelä authored
This is follow-up to commit 1bd98154.
-
Marko Mäkelä authored
Backport some changes to B-tree page accessor functions from 10.3, including changing page_get_n_recs() to return uint16_t.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
If an index page becomes empty, btr_page_empty() should be called.
-
Marko Mäkelä authored
-
Marko Mäkelä authored
The predicate page_is_root(), which was added in MariaDB Server 10.2.2, is based on a wrong assumption. Under some circumstances, InnoDB can transform B-trees into a degenerate state where a non-leaf page has no sibling pages. Because of this, we cannot assume that a page that has no siblings is the root page. This bug will be tracked as MDEV-19022. Because of the bug that may affect many InnoDB data files, we must remove and replace the wrong predicate. Using the wrong predicate can cause corruption. A leaf page is not allowed to be empty except if it is the root page, and the entire table is empty.
-
Marko Mäkelä authored
MariaDB before MDEV-5800 in version 10.2.2 did not support indexed virtual columns. Non-persistent virtual columns were hidden from storage engines. Only starting with MDEV-5800, InnoDB would create internal metadata on virtual columns. Similar to what was done in MDEV-18084 and MDEV-18960, we adjust two more code paths for the old tables. ha_innobase::build_template(): Do not invoke dict_index_contains_col_or_prefix() for virtual columns if InnoDB does not store the metadata. innobase_build_col_map(): Relax an assertion about the number of columns. ha_innobase::omits_virtual_cols(): Renamed from omits_virtual_cols().
-
Alexander Barkov authored
Adding tests to cover how SEQUENCE related statements work in combination with the slow log configuration commands.
-
- 23 Mar, 2019 4 commits
-
-
Sergei Golubchik authored
new location for CPackRPM.cmake
-
Sergey Vojtovich authored
-
Sachin authored
MDEV-18904 Assertion `m_part_spec.start_part >= m_part_spec.end_part' failed in ha_partition::index_read_idx_map Remove the DBUG_ASSERT
-
Sachin authored
-