| Commit message (Collapse) | Author | Age | Files | Lines |
|\ |
|
| |\ |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Mrr_ordered_index_reader::resume_read()
(Backport to 5.3)
(variant #2, with fixed coding style)
- Make Mrr_ordered_index_reader::resume_read() restore index position
only if it was saved before with Mrr_ordered_index_reader::interrupt_read().
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Mrr_ordered_index_reader::resume_read()
- Make Mrr_ordered_index_reader::resume_read() restore index position
only if it was saved before with Mrr_ordered_index_reader::interrupt_read().
|
|\ \ \
| |/ / |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
- The crash was caused because the optimizer called handler->multi_range_read_info()
on a derived temporary table. That table has been created, but not opened yet.
Because of that, handler::table was NULL, which caused crash.
Fixed by changing DS-MRR methods to use handler::table_share instead.
handler::table_share is set in handler ctor, so this should be safe.
|
|/ / |
|
|/ |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- "Using MRR" is no longer shown with range access.
- Instead, both range and BKA accesses will show one of the following:
= "Rowid-ordered scan"
= "Key-ordered scan"
= "Key-ordered Rowid-ordered scan"
depending on whether DS-MRR implementation will do scan keys in order, rowids in order,
or both.
- The patch also introduces a way for other storage engines/MRR implementations to
pass information to EXPLAIN output about the properties of employed MRR scans.
|
|
|
|
|
|
|
| |
The goals are:
- cleaner code
- ability to change from using pointers to offsets at some point
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(incremental, BKA join)
- The problem was that Mrr_ordered_index_reader's interrupt_read() and resume_read() would
save and restore 1) index tuple 2) the rowid (as bytes returned by handler->position()). Clustered
primary key columns were not saved/restored.
They are not explicitly present in the index tuple (i.e. table->key_info[secondary_key].key_parts
doesn't list them), but they are actually there, in particular
table->field[clustered_primary_key_member].part_of_key(secondary_key) == 1. Index condition pushdown
code [correctly] uses the latter as inidication that pushed index condition can refer to clustered PK
members.
The fix was to make interrupt_read()/resume_read() to save/restore clustered primary key members as well,
so that we get correct values for them when evaluating pushed index condition.
[3rd attempt: remove the debugging aids, fix comments in testcase]
|
|
|
|
|
| |
- Fixes for the second fix: take into account case where we don't need to save/restore the scan.
|
|
|
|
|
|
|
| |
Switch from "Disable identical key handling optimization when
IndexConditionPushdown is used" approach
To
an approach where we save/restore index tuple and so can use index condition pushdown.
|
| |
|
| |
|
|
|
|
| |
- Address Monty's review feedback, portion 2
|
|
|
|
| |
- Better warnings
|
|
|
|
|
|
|
|
|
|
|
|
| |
join_cache_level=5
- Make Mrr_ordered_index_reader() save the rowid across scan interruptions
Also
- Fix compiler warning for setup_buffer_sizes()
- Add commented key_copy/key_restore for better handling of a similar issue
with index record being destroyed by scan interruption (which causes
incorrect evaluation of pushed index condition later on).
|
|
|
|
|
|
| |
- Address Monty's review feedback, part 6: rename "handler *h" variable in all
DS-MRR classes to something else.
|
|
|
|
|
| |
- Address Monty's review feedback, part 5
|
| |
|
|
|
|
|
| |
- Address Monty's review feedback, part 4
|
|
|
|
|
| |
- Address Monty's review feedback, part 1
- Fix buildbot failure
|
|
|
|
| |
- Address Monty's review feedback, part 1
|
|
|
|
|
|
|
| |
buffer, attempt 4
- Disable identical key handling optimization when
IndexConditionPushdown is used
|
|
|
|
|
|
| |
- Code cleanup
- Always propagate the error code we got from storage engine all the way up
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- buildbot test failure fixes: don't try to get more records from SimpleIndexReader
if we've already got EOF for it.
|
|
|
|
|
| |
- address the review feedback (class/var renames)
- fix wrong test result (bug in buffer refill logic)
|
| |
|
| |
|
|
|
|
|
| |
- One iterator class
- Switch back from state automaton into two-nested-iterators approach..
|
| |
|
|
|
|
| |
- change dsmrr_next_from_index() to a switch-based state automaton-like structure.
|
| |
|
|
|
|
|
| |
- Switch from one bi-directional buffer class to two
virtual inheritance-based forward and backward buffer classes.
|
| |
|
|
|
|
| |
for writing and reading
|
|
|
|
|
| |
- better comments
- rename variables to better reflect their meaning
|
|
|
|
| |
constants.
|
|
|
|
|
|
|
| |
`do_sort_keys || do_rowid_fetch' failed
- Make Ds_MrrImpl::check_cpk_scan() follow the execution code' logic: don't
do MRR scans on clustered PK when mrr_sort_keys=off.
|
|
|
|
|
| |
- Relax overly-strict assert added in previous commit
- Run generic MRR testsuite for Maria engine, too.
|
| |
|
| |
|
|
|
|
| |
- Address review feedback, step 1
|
|
|
|
| |
- Make testcase stable
|
| |
|