diff options
author | Sergey Petrunya <psergey@askmonty.org> | 2011-11-23 04:25:52 +0400 |
---|---|---|
committer | Sergey Petrunya <psergey@askmonty.org> | 2011-11-23 04:25:52 +0400 |
commit | 694ce95557bc174dae2bc32279024102848cf5ee (patch) | |
tree | a8bfdfa04a772a3eb4b44fee12a28624102bde71 /sql/opt_subselect.h | |
parent | 7f746fbe74e08d79217bdf7c7cba628e3b6bef85 (diff) | |
download | mariadb-git-694ce95557bc174dae2bc32279024102848cf5ee.tar.gz |
Semi-join optimizations code cleanup:
- Break down POSITION/advance_sj_state() into four classes
representing potential semi-join strategies.
- Treat all strategies uniformly (before, DuplicateWeedout
was special as it was the catch-all strategy. Now, we're
still relying on it to be the catch-all, but are able to
function,e.g. with firstmatch=on,duplicate_weedout=off.
- Update test results (checked)
Diffstat (limited to 'sql/opt_subselect.h')
-rw-r--r-- | sql/opt_subselect.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sql/opt_subselect.h b/sql/opt_subselect.h index 571fcbaa935..7d560588995 100644 --- a/sql/opt_subselect.h +++ b/sql/opt_subselect.h @@ -263,8 +263,8 @@ public: { pos->records_read= best_loose_scan_records; pos->key= best_loose_scan_start_key; - pos->loosescan_key= best_loose_scan_key; - pos->loosescan_parts= best_max_loose_keypart + 1; + pos->loosescan_picker.loosescan_key= best_loose_scan_key; + pos->loosescan_picker.loosescan_parts= best_max_loose_keypart + 1; pos->use_join_buffer= FALSE; pos->table= tab; // todo need ref_depend_map ? @@ -277,8 +277,7 @@ public: }; -void advance_sj_state(JOIN *join, const table_map remaining_tables, - const JOIN_TAB *new_join_tab, uint idx, +void advance_sj_state(JOIN *join, const table_map remaining_tables, uint idx, double *current_record_count, double *current_read_time, POSITION *loose_scan_pos); void restore_prev_sj_state(const table_map remaining_tables, |