Commit 9316a60b authored by Sergey Petrunya's avatar Sergey Petrunya

MWL#90: code cleanup: remove garbage comments, etc.

parent fe7bfbe5
...@@ -3950,7 +3950,11 @@ static void remove_subq_pushed_predicates(JOIN *join, Item **where) ...@@ -3950,7 +3950,11 @@ static void remove_subq_pushed_predicates(JOIN *join, Item **where)
/* /*
Join tab execution startup function. Join tab execution startup function.
SYNOPSIS
join_tab_execution_startup()
tab Join tab to perform startup actions for
DESCRIPTION DESCRIPTION
Join tab execution startup function. This is different from Join tab execution startup function. This is different from
......
...@@ -6491,12 +6491,10 @@ static void add_not_null_conds(JOIN *join) ...@@ -6491,12 +6491,10 @@ static void add_not_null_conds(JOIN *join)
{ {
DBUG_ENTER("add_not_null_conds"); DBUG_ENTER("add_not_null_conds");
//for (uint i=join->const_tables ; i < join->tables ; i++)
for (JOIN_TAB *tab= first_linear_tab(join, TRUE); for (JOIN_TAB *tab= first_linear_tab(join, TRUE);
tab; tab;
tab= next_linear_tab(join, tab, FALSE)) //psergey-todo: should be TRUE here? tab= next_linear_tab(join, tab, TRUE))
{ {
//JOIN_TAB *tab=join->join_tab+i;
if ((tab->type == JT_REF || tab->type == JT_EQ_REF || if ((tab->type == JT_REF || tab->type == JT_EQ_REF ||
tab->type == JT_REF_OR_NULL) && tab->type == JT_REF_OR_NULL) &&
!tab->table->maybe_null) !tab->table->maybe_null)
...@@ -6724,9 +6722,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -6724,9 +6722,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
join->const_table_map, join->const_table_map,
(table_map) 0, TRUE); (table_map) 0, TRUE);
DBUG_EXECUTE("where",print_where(const_cond,"constants", QT_ORDINARY);); DBUG_EXECUTE("where",print_where(const_cond,"constants", QT_ORDINARY););
// psergey2: not extracting conditions from inside bushy nests?
//for (JOIN_TAB *tab= join->join_tab+join->const_tables;
// tab < join->join_tab+join->tables ; tab++)
for (JOIN_TAB *tab= first_linear_tab(join, TRUE); for (JOIN_TAB *tab= first_linear_tab(join, TRUE);
tab; tab;
tab= next_linear_tab(join, tab, FALSE)) tab= next_linear_tab(join, tab, FALSE))
...@@ -6788,7 +6783,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -6788,7 +6783,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
bool use_quick_range=0; bool use_quick_range=0;
COND *tmp; COND *tmp;
// psergey2-todo: is the below ok? seems to be yes.
/* /*
Tables that are within SJ-Materialization nests cannot have their Tables that are within SJ-Materialization nests cannot have their
conditions referring to preceding non-const tables. conditions referring to preceding non-const tables.
...@@ -6899,7 +6893,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -6899,7 +6893,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
tab->set_select_cond(tmp, __LINE__); tab->set_select_cond(tmp, __LINE__);
/* Push condition to storage engine if this is enabled /* Push condition to storage engine if this is enabled
and the condition is not guarded */ and the condition is not guarded */
if (tab->table) //psergey3-todo: how about ICP for bushy plans? if (tab->table)
{ {
tab->table->file->pushed_cond= NULL; tab->table->file->pushed_cond= NULL;
if (thd->variables.engine_condition_pushdown && !first_inner_tab) if (thd->variables.engine_condition_pushdown && !first_inner_tab)
...@@ -7090,7 +7084,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -7090,7 +7084,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
JOIN_TAB *last_tab= tab; JOIN_TAB *last_tab= tab;
while (first_inner_tab && first_inner_tab->last_inner == last_tab) while (first_inner_tab && first_inner_tab->last_inner == last_tab)
{ {
//JOIN_TAB *tab; //psergey2: have our own 'tab'
/* /*
Table tab is the last inner table of an outer join. Table tab is the last inner table of an outer join.
An on expression is always attached to it. An on expression is always attached to it.
...@@ -7099,7 +7092,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -7099,7 +7092,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
table_map used_tables2= (join->const_table_map | table_map used_tables2= (join->const_table_map |
OUTER_REF_TABLE_BIT | RAND_TABLE_BIT); OUTER_REF_TABLE_BIT | RAND_TABLE_BIT);
//for (tab= join->join_tab+join->const_tables; tab <= last_tab ; tab++)
for (JOIN_TAB *tab= first_linear_tab(join, TRUE); for (JOIN_TAB *tab= first_linear_tab(join, TRUE);
tab; tab;
tab= next_linear_tab(join, tab, TRUE)) tab= next_linear_tab(join, tab, TRUE))
...@@ -7155,34 +7147,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -7155,34 +7147,6 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
} }
first_inner_tab= first_inner_tab->first_upper; first_inner_tab= first_inner_tab->first_upper;
} }
#if 0
psergey2-todo:remove:
if (save_used_tables && !(used_tables &
~(tab->emb_sj_nest->sj_inner_tables |
join->const_table_map | PSEUDO_TABLE_BITS)))
{
/*
We have reached the end of semi join nest. That is, the join order
looks like this:
outer_tbl1 SJ-Materialize(inner_tbl1 ... inner_tblN) outer_tbl ...
^
\-we're here
At this point, we need to produce two conditions
- A condition that can be checked when we have all of the sj-inner
tables (inner_tbl1 ... inner_tblN). This will be used while doing
materialization.
- A condition that can be checked when we have all of the tables
in the prefix (both inner and outer).
*/
tab->emb_sj_nest->sj_mat_info->join_cond=
cond ?
make_cond_after_sjm(cond, cond, save_used_tables, used_tables):
NULL;
used_tables= save_used_tables | used_tables;
save_used_tables= 0;
}
#endif
} }
} }
DBUG_RETURN(0); DBUG_RETURN(0);
...@@ -8491,10 +8455,12 @@ static void clear_tables(JOIN *join) ...@@ -8491,10 +8455,12 @@ static void clear_tables(JOIN *join)
must clear only the non-const tables, as const tables must clear only the non-const tables, as const tables
are not re-calculated. are not re-calculated.
*/ */
//psergey2: this should be ok as it walks through TABLE*
// psergey2: What is this for? perhaps, we should reset the SJM temptables, too?? // psergey2: What is this for? perhaps, we should reset the SJM temptables, too??
for (uint i=join->const_tables ; i < join->tables ; i++) for (uint i= 0 ; i < join->tables ; i++)
mark_as_null_row(join->table[i]); // All fields are NULL {
if (!(join->table[i]->map & join->const_table_map))
mark_as_null_row(join->table[i]); // All fields are NULL
}
} }
/***************************************************************************** /*****************************************************************************
...@@ -9315,8 +9281,11 @@ static int compare_fields_by_table_order(Item_field *field1, ...@@ -9315,8 +9281,11 @@ static int compare_fields_by_table_order(Item_field *field1,
return cmp; return cmp;
JOIN_TAB **idx= (JOIN_TAB **) table_join_idx; JOIN_TAB **idx= (JOIN_TAB **) table_join_idx;
//psergey2:
JOIN_TAB *tab1= idx[field1->field->table->tablenr]; JOIN_TAB *tab1= idx[field1->field->table->tablenr];
/*
if a table is inside a merged sjm nest, then it compares as its join-bush
psergey-5-todo: compare fairly!
*/
if (tab1->bush_root_tab) if (tab1->bush_root_tab)
tab1= tab1->bush_root_tab; tab1= tab1->bush_root_tab;
...@@ -12668,10 +12637,6 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure) ...@@ -12668,10 +12637,6 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure)
Next_select_func end_select= setup_end_select_func(join); Next_select_func end_select= setup_end_select_func(join);
if (join->tables) if (join->tables)
{ {
//join->join_tab[join->tables-1].next_select= end_select;
//psergey3:
//int n_top_tables= join->join_tab_ranges.head()->end -
// join->join_tab_ranges.head()->start;
join->join_tab[join->top_jtrange_tables - 1].next_select= end_select; join->join_tab[join->top_jtrange_tables - 1].next_select= end_select;
join_tab=join->join_tab+join->const_tables; join_tab=join->join_tab+join->const_tables;
} }
...@@ -18285,29 +18250,21 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18285,29 +18250,21 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
{ {
table_map used_tables=0; table_map used_tables=0;
/* psergey2
uchar sjm_nests[MAX_TABLES];
uint sjm_nests_cur=0;
uint sjm_nests_end= 0;
uint end_table= join->tables;
*/
bool printing_materialize_nest= FALSE; bool printing_materialize_nest= FALSE;
uint select_id= join->select_lex->select_number; uint select_id= join->select_lex->select_number;
//for (uint i=0 ; i < end_table ; i++)
List_iterator<JOIN_TAB_RANGE> it(join->join_tab_ranges); List_iterator<JOIN_TAB_RANGE> it(join->join_tab_ranges);
JOIN_TAB_RANGE *jt_range; JOIN_TAB_RANGE *jt_range;
while ((jt_range= it++)) while ((jt_range= it++))
{ {
if (jt_range != join->join_tab_ranges.head()) if (jt_range != join->join_tab_ranges.head())
{ {
select_id= jt_range->start->emb_sj_nest->sj_subq_pred->get_identifier(); select_id= jt_range->start->emb_sj_nest->sj_subq_pred->get_identifier();
printing_materialize_nest= TRUE; printing_materialize_nest= TRUE;
} }
for (JOIN_TAB *tab= jt_range->start + 0; tab < jt_range->end; tab++) for (JOIN_TAB *tab= jt_range->start + 0; tab < jt_range->end; tab++)
{ {
//JOIN_TAB *tab=join->join_tab+i;
TABLE *table=tab->table; TABLE *table=tab->table;
TABLE_LIST *table_list= tab->table->pos_in_table_list; TABLE_LIST *table_list= tab->table->pos_in_table_list;
char buff[512]; char buff[512];
...@@ -18340,88 +18297,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18340,88 +18297,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
join->select_lex->type; join->select_lex->type;
item_list.push_back(new Item_string(stype, strlen(stype), cs)); item_list.push_back(new Item_string(stype, strlen(stype), cs));
#if 0
/*
Special processing for SJ-Materialization nests: print the fake table
and delay printing of the SJM nest contents until later.
*/
//uint sj_strategy= join->best_positions[i].sj_strategy;
//if (sj_is_materialize_strategy(sj_strategy) &&
// /*!printing_materialize_nest*/)
if (tab->bush_children)
{
JOIN_TAB *ctab= tab->bush_children->start;
/* table */
int len= my_snprintf(table_name_buffer,
sizeof(table_name_buffer)-1,
"<subquery%d>",
ctab->emb_sj_nest->sj_subq_pred->get_identifier());
item_list.push_back(new Item_string(table_name_buffer, len, cs));
/* partitions */
if (join->thd->lex->describe & DESCRIBE_PARTITIONS)
item_list.push_back(item_null);
/* type */
uint is_scan= test(ctab->emb_sj_nest->sj_mat_info->is_sj_scan);
uint type= is_scan? JT_ALL : JT_EQ_REF;
item_list.push_back(new Item_string(join_type_str[type],
strlen(join_type_str[type]),
cs));
/* possible_keys */
item_list.push_back(new Item_string("unique_key",
strlen("unique_key"), cs));
if (is_scan)
{
item_list.push_back(item_null); /* key */
item_list.push_back(item_null); /* key_len */
item_list.push_back(item_null); /* ref */
}
else
{
/* key */
item_list.push_back(new Item_string("unique_key", strlen("unique_key"), cs));
/* key_len */
uint klen= ctab->emb_sj_nest->sj_mat_info->table->key_info[0].key_length;
uint buflen= longlong2str(klen, keylen_str_buf, 10) - keylen_str_buf;
item_list.push_back(new Item_string(keylen_str_buf, buflen, cs));
/* ref */
item_list.push_back(new Item_string("func", strlen("func"), cs));
}
/* rows */
ha_rows rows= is_scan ? ctab->emb_sj_nest->sj_mat_info->rows : 1;
item_list.push_back(new Item_int((longlong)rows,
MY_INT64_NUM_DECIMAL_DIGITS));
/* filtered */
if (join->thd->lex->describe & DESCRIBE_EXTENDED)
item_list.push_back(new Item_float(1.0, 2));
/* Extra */
if (need_tmp_table)
{
need_tmp_table=0;
extra.append(STRING_WITH_LEN("; Using temporary"));
}
if (need_order)
{
need_order=0;
extra.append(STRING_WITH_LEN("; Using filesort"));
}
/* Skip initial "; "*/
const char *str= extra.ptr();
uint32 extra_len= extra.length();
if (extra_len)
{
str += 2;
extra_len -= 2;
}
item_list.push_back(new Item_string(str, extra_len, cs));
/* Register the nest for further processing: */
// sjm_nests[sjm_nests_end++]= i;
//i += join->best_positions[i].n_sj_tables-1;
goto loop_end;
}
#endif
if (tab->type == JT_ALL && tab->select && tab->select->quick) if (tab->type == JT_ALL && tab->select && tab->select->quick)
{ {
quick_type= tab->select->quick->get_type(); quick_type= tab->select->quick->get_type();
...@@ -18587,13 +18462,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18587,13 +18462,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
/* rows */ /* rows */
item_list.push_back(item_null); item_list.push_back(item_null);
} }
// else if (tab->bush_children)
// {
// /* psergey-todo */
// SJ_MATERIALIZATION_INFO *sjm= tab->bush_children->start->emb_sj_nest->sj_mat_info;
//
// ha_rows rows= is_scan ? ctab->emb_sj_nest->sj_mat_info->rows : 1;
// }
else else
{ {
ha_rows examined_rows; ha_rows examined_rows;
...@@ -18602,7 +18470,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18602,7 +18470,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
else if (tab->type == JT_NEXT || tab->type == JT_ALL) else if (tab->type == JT_NEXT || tab->type == JT_ALL)
examined_rows= tab->limit ? tab->limit : tab->records; examined_rows= tab->limit ? tab->limit : tab->records;
else else
//examined_rows=(ha_rows)join->best_positions[i].records_read;
examined_rows=(ha_rows)tab->records_read; examined_rows=(ha_rows)tab->records_read;
item_list.push_back(new Item_int((longlong) (ulonglong) examined_rows, item_list.push_back(new Item_int((longlong) (ulonglong) examined_rows,
...@@ -18798,7 +18665,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18798,7 +18665,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
} }
} }
//if (i > 0 && tab[-1].next_select == sub_select_cache)
if ((tab != jt_range->start) && tab[-1].next_select == sub_select_cache) if ((tab != jt_range->start) && tab[-1].next_select == sub_select_cache)
extra.append(STRING_WITH_LEN("; Using join buffer")); extra.append(STRING_WITH_LEN("; Using join buffer"));
...@@ -18812,15 +18678,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order, ...@@ -18812,15 +18678,6 @@ static void select_describe(JOIN *join, bool need_tmp_table, bool need_order,
} }
item_list.push_back(new Item_string(str, len, cs)); item_list.push_back(new Item_string(str, len, cs));
} }
//loop_end:
/* psergey2
if (i+1 == end_table && sjm_nests_cur != sjm_nests_end)
{
printing_materialize_nest= TRUE;
i= sjm_nests[sjm_nests_cur++] - 1;
end_table= (i+1) + join->best_positions[i+1].n_sj_tables;
select_id= join->join_tab[i+1].emb_sj_nest->sj_subq_pred->get_identifier();
}*/
// For next iteration // For next iteration
used_tables|=table->map; used_tables|=table->map;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment