Last commit made on 2019-02-03
Get this branch:
git clone -b 10.4-mdev16188

Branch merges

Branch information


Recent commits

f6ddcf2... by Igor Babaev on 2019-02-03

MDEV-16188: cleaup of the previous commit.

2e352a4... by Igor Babaev on 2019-02-03

MDEV-16188: Added more comments

Added rowid_filter_innodb.test.

46dc54e... by Igor Babaev on 2019-02-02

MDEV-16188: Added many comments

Performed some cleanup as well.

322f916... by Igor Babaev on 2019-01-20

MDEV-16188: Rearchitected the classes for rowid filters.

Also consistently renamed variables and functions where rowid filters were used.

8a9532f... by Igor Babaev on 2019-01-17

MDEV-16188: Fixed several problems and bugs.

1. Completely re-wrote the function that prunes range filter candidates.
The function now properly takes into account filter indexes that overlap.
2. Fixed bugs that calculate the cost of using filter. Ensured that the
gain promised by usage of a filter would never be greater than the cost
of accessing a table without it.
3. Fixed a bug that led to an improper detection of overlapping indexes.
4. Fixed a few other bugs.
5. Adjusted test cases and their output.

5c4b7e6... by Igor Babaev on 2019-01-05

MDEV-16188: Fixed several issues/problems.

1. Fixed the bug leading to improper calculation of positions
for key entries in leaf nodes of MyISAM B-trees. Fixed the bug that
that caused in some cases incorrect estimation of the number
records in range due to premature rounding.
2. Changed the implementation of handler::multi_range_read_info_const()
to take into account the width of the gaps between ranges that made
the cost of range scan, especially index only range scans, more accurate.
This is extremely important for proper estimation of the cost of usage
range filters because to build a range filter we use index only range
3. Changed the class Cost_estimate adding the members that allowed
to calculate separately the cost of accessing index nodes in B-trees.
This was done to be able to figure out whether a scan was good
to be used for a range filter. The cost of index only range scan for
the i-th index is saved now in TABLE::quick_index_only_costs[i].
4. Restricted the usage of the virtual handler function keyread_time().
Added an implementation of this function for ha_partition.
5. Added a virtual handler function key_scan_time() with a default
implementation and a separate implementation for ha_partition.

All these changes required adjustment of many tests and/or test results.

8c54ae5... by Igor Babaev on 2018-12-07

MDEV-16188: Fixed problems of the implementation for rowid filter pushdown
            in InnoDB engine.

Fixed some other problems at the SQL layer related to rowid filters.
After this patch all tests in the main test suite passed including
execution with --ps-protocol using both Debug and Release builds.

4a9f2e7... by Sergey Petrunia on 2018-12-04

MDEV-16188: Rowid filters

Add support for EXPLAIN FORMAT=JSON.

90708fc... by Igor Babaev on 2018-12-01

MDEV-16188: Added an implementation of rowid filters that uses
dynamic array as the container for rowids / primary keys.

Supported creation of filters for sargable range conditions.
Implemented pushdown of filters into InnoDB and MyISAM engines.

Filters are not supported yet when MRR is used. That's why some tests
from main test suite fail.

6aaa69f... by Igor Babaev on 2018-11-14

MDEV-16188 Use in-memory PK filters built from range index scans
           Fixed bugs for phase 1.

Also added quick objects for filters.