Sergei Golubchik
5bf311e1e8
fix the include guards and add missing gplv2 headers
2012-02-17 12:19:38 +01:00
Sergey Petrunya
997445bc8e
Make EXPLAIN better at displaying MRR/BKA:
...
- "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.
2011-04-02 14:04:45 +04:00
Sergey Petrunya
e6bd643c75
MRR interface: change range_info's type from char* to range_id_t typedef. The goals are:
...
- cleaner code
- ability to change from using pointers to offsets at some point
2011-03-04 12:06:03 +03:00
Sergey Petrunya
8ef094fe4f
BUG#707925: Wrong result with join_cache_level=6 optimizer_use_mrr = force (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]
2011-03-04 00:54:10 +03:00
Sergey Petrunya
9d480f6af3
BUG#670417: Diverging results in maria-5.3-mwl128-dsmrr-cpk with join buffer
...
- Fixes for the second fix: take into account case where we don't need to save/restore the scan.
2010-12-20 14:40:12 +03:00
Sergey Petrunya
09a84dc470
BUG#670417: Diverging results in maria-5.3-mwl128-dsmrr-cpk with join buffer
...
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.
2010-12-19 13:56:12 +03:00
Sergey Petrunya
80cbf3a1c2
Small code cleanups
2010-12-17 13:06:21 +03:00
Sergey Petrunya
c696fb6ef3
Better comments
2010-12-16 23:43:52 +03:00
Sergey Petrunya
3e633eea66
MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, portion 2
2010-12-16 21:18:35 +03:00
Sergey Petrunya
802db7a64b
- Fix compiler warning
...
- Better warnings
2010-12-15 10:45:08 +03:00
Sergey Petrunya
a86599e1e4
BUG#671340: Diverging results in with mrr_sort_keys=ON|OFF and 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).
2010-12-09 00:47:33 +03:00
Sergey Petrunya
1c7c67d584
MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, part 6: rename "handler *h" variable in all
DS-MRR classes to something else.
2010-12-02 16:21:52 +03:00
Sergey Petrunya
44be131cd3
MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, part 5
2010-12-02 14:10:52 +03:00
Sergey Petrunya
40822c8149
Fix buildbot failure
2010-11-26 00:30:39 +03:00
Sergey Petrunya
92442fc598
Merge MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, part 4
2010-11-25 14:35:21 +03:00
Sergey Petrunya
a6c1d56e08
MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, part 1
- Fix buildbot failure
2010-11-22 19:34:03 +03:00
Sergey Petrunya
2ec43747f5
Merge MWL#121-125 DS-MRR improvements
...
- Address Monty's review feedback, part 1
2010-11-22 17:08:22 +03:00
Sergey Petrunya
0fb342ba56
BUG#670417: Diverging results in maria-5.3-mwl128-dsmrr-cpk with join buffer, attempt 4
...
- Disable identical key handling optimization when
IndexConditionPushdown is used
2010-11-08 20:37:01 +03:00
Sergey Petrunya
197c99427d
DS-MRR improvements
...
- Code cleanup
- Always propagate the error code we got from storage engine all the way up
2010-11-08 15:15:50 +03:00
Sergey Petrunya
c46450de72
Code cleanup
2010-11-03 00:09:28 +03:00
Sergey Petrunya
1654780f2d
Code cleanup
2010-11-02 23:25:35 +03:00
Sergey Petrunya
b76a8595c6
Re-initialization reworked
2010-11-01 13:52:10 +03:00
Sergey Petrunya
d9a8dd22b2
DS-MRR/CPK improvements: correct buffer exhaustion handling
2010-10-31 22:00:15 +03:00
Sergey Petrunya
1e82320d27
DS-MRR improvements
...
- buildbot test failure fixes: don't try to get more records from SimpleIndexReader
if we've already got EOF for it.
2010-10-29 13:42:48 +04:00
Sergey Petrunya
a88bd5cf56
DS-MRR improvements:
...
- address the review feedback (class/var renames)
- fix wrong test result (bug in buffer refill logic)
2010-10-28 20:48:16 +04:00
Sergey Petrunya
d8efc3b155
DS-MRR improvements: address review feedback for R3 version of the patch
2010-10-26 15:35:13 +04:00
Sergey Petrunya
ac8a79b944
Code cleanup
2010-10-04 10:31:40 +04:00
Sergey Petrunya
5156457506
Address review feedback
...
- One iterator class
- Switch back from state automaton into two-nested-iterators approach..
2010-10-03 14:48:42 +04:00
Sergey Petrunya
22d5323fac
DS-MRR/CPK improvements: more of addressing review feedback
2010-10-01 15:54:35 +04:00
Sergey Petrunya
61f26f0c62
DS-MRR improvements: address review feedback
...
- change dsmrr_next_from_index() to a switch-based state automaton-like structure.
2010-09-28 20:20:09 +04:00
Sergey Petrunya
4f56acb676
Better comments, move Lifo_buffer to separate file.
2010-09-28 12:19:50 +04:00
Sergey Petrunya
3066c37718
DS-MRR improvements: review feedback
...
- Switch from one bi-directional buffer class to two
virtual inheritance-based forward and backward buffer classes.
2010-09-21 20:19:54 +04:00
Sergey Petrunya
51f9097608
More comments
2010-09-20 23:13:28 +04:00
Sergey Petrunya
2121ab1eb4
DS-MRR improvements: remove write_size/read_size, have the same size
...
for writing and reading
2010-09-20 13:23:51 +04:00
Sergey Petrunya
189555f39a
DS-MRR improvements: more code cleanup
...
- better comments
- rename variables to better reflect their meaning
2010-09-20 13:02:17 +04:00
Sergey Petrunya
18a348503a
DS-MRR improvements: better comments, use symbolic name instead of +1/-1 constants.
2010-09-19 01:05:47 +04:00
Sergey Petrunya
499b142ad5
BUG#628785: multi_range_read.cc:430: int DsMrr_impl::dsmrr_init(): Assertion `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.
2010-09-15 16:58:01 +04:00
Sergey Petrunya
188de43db1
- Fixed BUG#623285: Crash in quick_range_seq_next() in maria-5.3-dsmrr-cpk
...
- Relax overly-strict assert added in previous commit
- Run generic MRR testsuite for Maria engine, too.
2010-09-13 19:45:41 +04:00
Sergey Petrunya
ac3756a1d0
Debug measure: trash unused buffer space
2010-09-12 18:28:19 +04:00
Sergey Petrunya
9b04caffd4
Commit for buildbot checks
2010-09-10 20:48:11 +04:00
Sergey Petrunya
dbc63bed22
MWL#121-125: DS-MRR improvements
...
- Address review feedback, step 1
2010-09-05 14:32:14 +04:00
Sergey Petrunya
937db4bff4
- Remove out-of-date comments
...
- Make testcase stable
2010-08-14 22:35:50 +04:00
Sergey Petrunya
c964cb1b62
key/rowid buffer overflow fixes for various tricky cases.
2010-08-14 18:56:37 +04:00
Sergey Petrunya
d098596ba5
Fix a number of problems with reverse buffer use
2010-08-12 23:59:29 +04:00
Sergey Petrunya
8d07c16ad9
Do dynamic buffer growing/shrinking.
2010-08-12 21:18:41 +04:00
Sergey Petrunya
8dc81f47ef
Use reverse/backwards buffer for keys (now works)
...
- don't allocate space for rowid buffer when we don't really need it.
- fix buffer iterator
2010-08-11 14:54:34 +04:00
Sergey Petrunya
e25db795bd
DS-MRR, key-ordered retrievals: commit for buildbot
2010-08-08 11:13:54 +04:00
Sergey Petrunya
7391175d7e
DS-MRR support improvements (MWL#123, MWL#124, MWL#125)
...
- Let DS-MRR/CPK take advantage of materialized keys, when possible
2010-07-18 01:05:44 +04:00
Sergey Petrunya
e0999cdf7c
DS-MRR support improvements (MWL#123, MWL#124, MWL#125)
...
- Lots of TODO comments
- add mrr_sort_keys flag to @@optimizer_switch
- [from Igor] SQL layer part passes HA_MRR_MATERIALIZED_KEYS flag
- Don't call rnd_pos() many times in a row if sorted rowid buffer
has the same rowid value for multiple consequive (rowid, range_id) pairs.
2010-07-17 18:03:50 +04:00
Sergey Petrunya
488d352a66
MWL#121: DS-MRR support for clustered primary keys
...
- Remove back key_parts from multi_range_read_init() parameters
- Related code simplification/cleanup
2010-06-22 23:26:11 +04:00