mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 04:53:01 +01:00
Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
This commit is contained in:
commit
9353bb32a0
3 changed files with 16 additions and 17 deletions
|
@ -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;
|
||||
|
|
|
@ -1196,7 +1196,7 @@ public:
|
|||
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"; }
|
||||
|
|
|
@ -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,8 +2200,8 @@ 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,
|
||||
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
|
||||
|
@ -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 &&
|
||||
|
|
Loading…
Reference in a new issue