summaryrefslogtreecommitdiff
path: root/sql/opt_subselect.h
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2011-11-23 04:25:52 +0400
committerSergey Petrunya <psergey@askmonty.org>2011-11-23 04:25:52 +0400
commit694ce95557bc174dae2bc32279024102848cf5ee (patch)
treea8bfdfa04a772a3eb4b44fee12a28624102bde71 /sql/opt_subselect.h
parent7f746fbe74e08d79217bdf7c7cba628e3b6bef85 (diff)
downloadmariadb-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.h7
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,