mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Merge mysql.com:/usr/local/bk/mysql-5.0
into mysql.com:/usr/home/pem/mysql-5.1-new include/my_base.h: Auto merged libmysqld/examples/Makefile.am: Auto merged mysql-test/r/grant.result: Auto merged mysql-test/r/ndb_alter_table.result: Auto merged mysql-test/r/ndb_basic.result: Auto merged mysql-test/t/ndb_alter_table.test: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item.cc: Auto merged sql/item.h: Auto merged sql/item_cmpfunc.cc: Auto merged sql/item_strfunc.cc: Auto merged sql/item_strfunc.h: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/sp_head.cc: Auto merged sql/sql_acl.cc: Auto merged sql/sql_class.cc: Auto merged sql/sql_class.h: Auto merged sql/sql_show.cc: Auto merged sql/sql_table.cc: Auto merged sql/sql_update.cc: Auto merged sql/table.cc: Auto merged sql/examples/ha_example.cc: Auto merged storage/myisam/ft_parser.c: Auto merged storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp: Auto merged storage/ndb/src/mgmapi/mgmapi.cpp: Auto merged libmysqld/Makefile.am: Manual merge. sql/ha_ndbcluster.cc: Manual merge. sql/mysqld.cc: Manual merge.
This commit is contained in:
@ -3142,10 +3142,10 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param,
|
||||
/* F=F-covered by first(I) */
|
||||
bitmap_union(&covered_fields, &(*ror_scan_mark)->covered_fields);
|
||||
all_covered= bitmap_is_subset(¶m->needed_fields, &covered_fields);
|
||||
} while (!all_covered && (++ror_scan_mark < ror_scans_end));
|
||||
|
||||
if (!all_covered)
|
||||
DBUG_RETURN(NULL); /* should not happen actually */
|
||||
} while ((++ror_scan_mark < ror_scans_end) && !all_covered);
|
||||
|
||||
if (!all_covered || (ror_scan_mark - tree->ror_scans) == 1)
|
||||
DBUG_RETURN(NULL);
|
||||
|
||||
/*
|
||||
Ok, [tree->ror_scans .. ror_scan) holds covering index_intersection with
|
||||
@ -7211,6 +7211,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree)
|
||||
{
|
||||
select_items_it.rewind();
|
||||
cur_used_key_parts.clear_all();
|
||||
uint max_key_part= 0;
|
||||
while ((item= select_items_it++))
|
||||
{
|
||||
item_field= (Item_field*) item; /* (SA5) already checked above. */
|
||||
@ -7228,7 +7229,19 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree)
|
||||
cur_group_prefix_len+= cur_part->store_length;
|
||||
cur_used_key_parts.set_bit(key_part_nr);
|
||||
++cur_group_key_parts;
|
||||
max_key_part= max(max_key_part,key_part_nr);
|
||||
}
|
||||
/*
|
||||
Check that used key parts forms a prefix of the index.
|
||||
To check this we compare bits in all_parts and cur_parts.
|
||||
all_parts have all bits set from 0 to (max_key_part-1).
|
||||
cur_parts have bits set for only used keyparts.
|
||||
*/
|
||||
ulonglong all_parts, cur_parts;
|
||||
all_parts= (1<<max_key_part) - 1;
|
||||
cur_parts= cur_used_key_parts.to_ulonglong() >> 1;
|
||||
if (all_parts != cur_parts)
|
||||
goto next_index;
|
||||
}
|
||||
else
|
||||
DBUG_ASSERT(FALSE);
|
||||
|
Reference in New Issue
Block a user