Commit f545817e authored by unknown's avatar unknown
Browse files

Post review changes for the fix of bug #16504.

parent f0bfea2b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3740,7 +3740,7 @@ void Item_equal::sort(Item_field_cmpfunc cmp, void *arg)
  Check appearance of new constant items in the multiple equality object

  SYNOPSIS
    check()
    update_const()
  
  DESCRIPTION
    The function checks appearance of new constant items among
@@ -3753,7 +3753,7 @@ void Item_equal::sort(Item_field_cmpfunc cmp, void *arg)
    none    
*/

void Item_equal::check_const()
void Item_equal::update_const()
{
  List_iterator<Item_field> it(fields);
  Item *item;
+1 −1
Original line number Diff line number Diff line
@@ -1196,7 +1196,7 @@ class Item_equal: public Item_bool_func
  bool contains(Field *field);
  Item_field* get_first() { return fields.head(); }
  void merge(Item_equal *item);
  void check_const();
  void update_const();
  enum Functype functype() const { return MULT_EQUAL_FUNC; }
  longlong val_int(); 
  const char *func_name() const { return "multiple equal"; }
+13 −14
Original line number Diff line number Diff line
@@ -136,7 +136,7 @@ static enum_nested_loop_state
end_write_group(JOIN *join, JOIN_TAB *join_tab, bool end_of_records);

static int test_if_group_changed(List<Cached_item> &list);
static int join_read_const_table(JOIN *join, JOIN_TAB *tab, POSITION *pos);
static int join_read_const_table(JOIN_TAB *tab, POSITION *pos);
static int join_read_system(JOIN_TAB *tab);
static int join_read_const(JOIN_TAB *tab);
static int join_read_key(JOIN_TAB *tab);
@@ -2111,7 +2111,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables, COND *conds,
    s= p_pos->table;
    s->type=JT_SYSTEM;
    join->const_table_map|=s->table->map;
    if ((tmp=join_read_const_table(join, s, p_pos)))
    if ((tmp=join_read_const_table(s, p_pos)))
    {
      if (tmp > 0)
	DBUG_RETURN(1);			// Fatal error
@@ -2148,8 +2148,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables, COND *conds,
	  s->type=JT_SYSTEM;
	  join->const_table_map|=table->map;
	  set_position(join,const_count++,s,(KEYUSE*) 0);
	  if ((tmp= join_read_const_table(join, s,
                                          join->positions+const_count-1)))
	  if ((tmp= join_read_const_table(s, join->positions+const_count-1)))
	  {
	    if (tmp > 0)
	      DBUG_RETURN(1);			// Fatal error
@@ -2201,7 +2200,7 @@ make_join_statistics(JOIN *join, TABLE_LIST *tables, COND *conds,
	      if (create_ref_for_key(join, s, start_keyuse,
				     found_const_table_map))
		DBUG_RETURN(1);
	      if ((tmp=join_read_const_table(join, s,
	      if ((tmp=join_read_const_table(s,
                                             join->positions+const_count-1)))
	      {
		if (tmp > 0)
@@ -7183,7 +7182,7 @@ static COND* substitute_for_best_equal_field(COND *cond,
  of a condition after reading a constant table
 
  SYNOPSIS
    check_const_equal_item()
    update_const_equal_items()
    cond       condition whose multiple equalities are to be checked
    table      constant table that has been read 

@@ -7194,8 +7193,7 @@ static COND* substitute_for_best_equal_field(COND *cond,
    the multiple equality appropriately.
*/

static void check_const_equal_items(COND *cond,
                                    JOIN_TAB *tab)
static void update_const_equal_items(COND *cond, JOIN_TAB *tab)
{
  if (!(cond->used_tables() & tab->table->map))
    return;
@@ -7206,13 +7204,13 @@ static void check_const_equal_items(COND *cond,
    List_iterator_fast<Item> li(*cond_list);
    Item *item;
    while ((item= li++))
      check_const_equal_items(item, tab);
      update_const_equal_items(item, tab);
  }
  else if (cond->type() == Item::FUNC_ITEM && 
           ((Item_cond*) cond)->functype() == Item_func::MULT_EQUAL_FUNC)
  {
    Item_equal *item_equal= (Item_equal *) cond;
    item_equal->check_const();
    item_equal->update_const();
  }
}

@@ -10139,7 +10137,7 @@ int safe_index_read(JOIN_TAB *tab)


static int
join_read_const_table(JOIN *join, JOIN_TAB *tab, POSITION *pos)
join_read_const_table(JOIN_TAB *tab, POSITION *pos)
{
  int error;
  DBUG_ENTER("join_read_const_table");
@@ -10193,8 +10191,9 @@ join_read_const_table(JOIN *join, JOIN_TAB *tab, POSITION *pos)
    table->maybe_null=0;

  /* Check appearance of new constant items in Item_equal objects */
  JOIN *join= tab->join;
  if (join->conds)
    check_const_equal_items(join->conds, tab);
    update_const_equal_items(join->conds, tab);
  TABLE_LIST *tbl;
  for (tbl= join->select_lex->leaf_tables; tbl; tbl= tbl->next_leaf)
  {
@@ -10204,7 +10203,7 @@ join_read_const_table(JOIN *join, JOIN_TAB *tab, POSITION *pos)
    {
      embedded= embedding;
      if (embedded->on_expr)
         check_const_equal_items(embedded->on_expr, tab);
         update_const_equal_items(embedded->on_expr, tab);
      embedding= embedded->embedding;
    }
    while (embedding &&