Loading mysql-test/r/group_min_max.result +38 −0 Original line number Diff line number Diff line Loading @@ -1657,6 +1657,44 @@ a b c d select distinct a1,a1 from t1; a1 a1 a a b b c c d d select distinct a2,a1,a2,a1 from t1; a2 a1 a2 a1 a a a a b a b a a b a b b b b b a c a c b c b c a d a d b d b d select distinct t1.a1,t2.a1 from t1,t2; a1 a1 a a b a c a d a a b b b c b d b a c b c c c d c a d b d c d d d a e b e c e d e explain select distinct a1,a2,b from t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using index for group-by Loading mysql-test/r/sp-error.result +28 −0 Original line number Diff line number Diff line Loading @@ -466,4 +466,32 @@ ERROR 70100: Query execution was interrupted call bug6807()| ERROR 70100: Query execution was interrupted drop procedure bug6807| drop procedure if exists bug8776_1| drop procedure if exists bug8776_2| drop procedure if exists bug8776_3| drop procedure if exists bug8776_4| create procedure bug8776_1() begin declare continue handler for sqlstate '42S0200test' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '42S0200test' create procedure bug8776_2() begin declare continue handler for sqlstate '4200' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '4200' create procedure bug8776_3() begin declare continue handler for sqlstate '420000' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '420000' create procedure bug8776_4() begin declare continue handler for sqlstate '42x00' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '42x00' drop table t1| mysql-test/t/group_min_max.test +5 −1 Original line number Diff line number Diff line Loading @@ -475,11 +475,15 @@ select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121 select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c'); select distinct b from t2 where (a2 >= 'b') and (b = 'a'); -- BUG 6303 -- BUG #6303 select distinct t_00.a1 from t1 t_00 where exists ( select * from t2 where a1 = t_00.a1 ); -- BUG #8532 - SELECT DISTINCT a, a causes server to crash select distinct a1,a1 from t1; select distinct a2,a1,a2,a1 from t1; select distinct t1.a1,t2.a1 from t1,t2; -- -- DISTINCT queries with GROUP-BY Loading mysql-test/t/sp-error.test +38 −0 Original line number Diff line number Diff line Loading @@ -641,6 +641,44 @@ call bug6807()| drop procedure bug6807| # # BUG#876: Stored Procedures: Invalid SQLSTATE is allowed in # a DECLARE ? HANDLER FOR stmt. # --disable_warnings drop procedure if exists bug8776_1| drop procedure if exists bug8776_2| drop procedure if exists bug8776_3| drop procedure if exists bug8776_4| --enable_warnings --error ER_SP_BAD_SQLSTATE create procedure bug8776_1() begin declare continue handler for sqlstate '42S0200test' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_2() begin declare continue handler for sqlstate '4200' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_3() begin declare continue handler for sqlstate '420000' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_4() begin declare continue handler for sqlstate '42x00' begin end; begin end; end| drop table t1| Loading sql/opt_range.cc +10 −1 Original line number Diff line number Diff line Loading @@ -6878,6 +6878,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree) SEL_ARG *cur_index_tree= NULL; ha_rows cur_quick_prefix_records= 0; uint cur_param_idx; key_map cur_used_key_parts; for (uint cur_index= 0 ; cur_index_info != cur_index_info_end ; cur_index_info++, cur_index++) Loading Loading @@ -6925,17 +6926,25 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree) else if (join->select_distinct) { select_items_it.rewind(); cur_used_key_parts.clear_all(); while ((item= select_items_it++)) { item_field= (Item_field*) item; /* (SA5) already checked above. */ /* Find the order of the key part in the index. */ key_part_nr= get_field_keypart(cur_index_info, item_field->field); /* Check if this attribute was already present in the select list. If it was present, then its corresponding key part was alredy used. */ if (cur_used_key_parts.is_set(key_part_nr)) continue; if (key_part_nr < 1 || key_part_nr > join->fields_list.elements) goto next_index; cur_part= cur_index_info->key_part + key_part_nr - 1; cur_group_prefix_len+= cur_part->store_length; cur_used_key_parts.set_bit(key_part_nr); ++cur_group_key_parts; } cur_group_key_parts= join->fields_list.elements; } else DBUG_ASSERT(FALSE); Loading Loading
mysql-test/r/group_min_max.result +38 −0 Original line number Diff line number Diff line Loading @@ -1657,6 +1657,44 @@ a b c d select distinct a1,a1 from t1; a1 a1 a a b b c c d d select distinct a2,a1,a2,a1 from t1; a2 a1 a2 a1 a a a a b a b a a b a b b b b b a c a c b c b c a d a d b d b d select distinct t1.a1,t2.a1 from t1,t2; a1 a1 a a b a c a d a a b b b c b d b a c b c c c d c a d b d c d d d a e b e c e d e explain select distinct a1,a2,b from t1; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range NULL idx_t1_1 147 NULL 17 Using index for group-by Loading
mysql-test/r/sp-error.result +28 −0 Original line number Diff line number Diff line Loading @@ -466,4 +466,32 @@ ERROR 70100: Query execution was interrupted call bug6807()| ERROR 70100: Query execution was interrupted drop procedure bug6807| drop procedure if exists bug8776_1| drop procedure if exists bug8776_2| drop procedure if exists bug8776_3| drop procedure if exists bug8776_4| create procedure bug8776_1() begin declare continue handler for sqlstate '42S0200test' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '42S0200test' create procedure bug8776_2() begin declare continue handler for sqlstate '4200' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '4200' create procedure bug8776_3() begin declare continue handler for sqlstate '420000' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '420000' create procedure bug8776_4() begin declare continue handler for sqlstate '42x00' begin end; begin end; end| ERROR 42000: Bad SQLSTATE: '42x00' drop table t1|
mysql-test/t/group_min_max.test +5 −1 Original line number Diff line number Diff line Loading @@ -475,11 +475,15 @@ select distinct a1,a2,b,c from t2 where (a2 >= 'b') and (b = 'a') and (c = 'i121 select distinct a1,a2,b from t2 where (a1 > 'a') and (a2 > 'a') and (b = 'c'); select distinct b from t2 where (a2 >= 'b') and (b = 'a'); -- BUG 6303 -- BUG #6303 select distinct t_00.a1 from t1 t_00 where exists ( select * from t2 where a1 = t_00.a1 ); -- BUG #8532 - SELECT DISTINCT a, a causes server to crash select distinct a1,a1 from t1; select distinct a2,a1,a2,a1 from t1; select distinct t1.a1,t2.a1 from t1,t2; -- -- DISTINCT queries with GROUP-BY Loading
mysql-test/t/sp-error.test +38 −0 Original line number Diff line number Diff line Loading @@ -641,6 +641,44 @@ call bug6807()| drop procedure bug6807| # # BUG#876: Stored Procedures: Invalid SQLSTATE is allowed in # a DECLARE ? HANDLER FOR stmt. # --disable_warnings drop procedure if exists bug8776_1| drop procedure if exists bug8776_2| drop procedure if exists bug8776_3| drop procedure if exists bug8776_4| --enable_warnings --error ER_SP_BAD_SQLSTATE create procedure bug8776_1() begin declare continue handler for sqlstate '42S0200test' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_2() begin declare continue handler for sqlstate '4200' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_3() begin declare continue handler for sqlstate '420000' begin end; begin end; end| --error ER_SP_BAD_SQLSTATE create procedure bug8776_4() begin declare continue handler for sqlstate '42x00' begin end; begin end; end| drop table t1| Loading
sql/opt_range.cc +10 −1 Original line number Diff line number Diff line Loading @@ -6878,6 +6878,7 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree) SEL_ARG *cur_index_tree= NULL; ha_rows cur_quick_prefix_records= 0; uint cur_param_idx; key_map cur_used_key_parts; for (uint cur_index= 0 ; cur_index_info != cur_index_info_end ; cur_index_info++, cur_index++) Loading Loading @@ -6925,17 +6926,25 @@ get_best_group_min_max(PARAM *param, SEL_TREE *tree) else if (join->select_distinct) { select_items_it.rewind(); cur_used_key_parts.clear_all(); while ((item= select_items_it++)) { item_field= (Item_field*) item; /* (SA5) already checked above. */ /* Find the order of the key part in the index. */ key_part_nr= get_field_keypart(cur_index_info, item_field->field); /* Check if this attribute was already present in the select list. If it was present, then its corresponding key part was alredy used. */ if (cur_used_key_parts.is_set(key_part_nr)) continue; if (key_part_nr < 1 || key_part_nr > join->fields_list.elements) goto next_index; cur_part= cur_index_info->key_part + key_part_nr - 1; cur_group_prefix_len+= cur_part->store_length; cur_used_key_parts.set_bit(key_part_nr); ++cur_group_key_parts; } cur_group_key_parts= join->fields_list.elements; } else DBUG_ASSERT(FALSE); Loading