Skip to content

Commit

Permalink
Merge 10.4 into 10.5
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-m committed Mar 20, 2021
2 parents 1bacab8 + d8dc853 commit 8570a6a
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 3 deletions.
36 changes: 35 additions & 1 deletion mysql-test/main/func_group.result
Original file line number Diff line number Diff line change
Expand Up @@ -2460,7 +2460,38 @@ count(*)+sleep(0)
2
drop table t1;
#
# Start of 10.3 tests
# MDEV-25112: MIN/MAX optimization for query containing BETWEEN in WHERE
#
create table t1 (a int) engine=myisam;
insert into t1 values (267), (273), (287), (303), (308);
select max(a) from t1 where a < 303 and (a between 267 AND 287);
max(a)
287
explain select max(a) from t1 where a < 303 and (a between 267 AND 287);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
select min(a) from t1 where a > 267 and (a between 273 AND 303);
min(a)
273
explain select min(a) from t1 where a > 267 and (a between 273 AND 303);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ALL NULL NULL NULL NULL 5 Using where
create index idx on t1(a);
select max(a) from t1 where a < 303 and (a between 267 AND 287);
max(a)
287
explain select max(a) from t1 where a < 303 and (a between 267 AND 287);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
select min(a) from t1 where a > 267 and (a between 273 AND 303);
min(a)
273
explain select min(a) from t1 where a > 267 and (a between 273 AND 303);
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
drop table t1;
#
# End of 10.2 tests
#
#
# MDEV-9408 CREATE TABLE SELECT MAX(int_column) creates different columns for table vs view
Expand Down Expand Up @@ -2492,3 +2523,6 @@ t2 CREATE TABLE `t2` (
DROP TABLE t2;
DROP VIEW v1;
DROP TABLE t1;
#
# End of 10.3 tests
#
32 changes: 31 additions & 1 deletion mysql-test/main/func_group.test
Original file line number Diff line number Diff line change
Expand Up @@ -1705,7 +1705,33 @@ select count(*)+sleep(0) from t1;
drop table t1;

--echo #
--echo # Start of 10.3 tests
--echo # MDEV-25112: MIN/MAX optimization for query containing BETWEEN in WHERE
--echo #

create table t1 (a int) engine=myisam;
insert into t1 values (267), (273), (287), (303), (308);

let $q1=
select max(a) from t1 where a < 303 and (a between 267 AND 287);
let $q2=
select min(a) from t1 where a > 267 and (a between 273 AND 303);

eval $q1;
eval explain $q1;
eval $q2;
eval explain $q2;

create index idx on t1(a);

eval $q1;
eval explain $q1;
eval $q2;
eval explain $q2;

drop table t1;

--echo #
--echo # End of 10.2 tests
--echo #

--echo #
Expand All @@ -1730,3 +1756,7 @@ DROP TABLE t2;

DROP VIEW v1;
DROP TABLE t1;

--echo #
--echo # End of 10.3 tests
--echo #
2 changes: 2 additions & 0 deletions mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
--- /home/alice/git/10.3/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.result~ 2021-03-19 17:27:12.935559866 +0100
+++ /home/alice/git/10.3/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.reject 2021-03-19 17:27:14.071534938 +0100
@@ -126,12 +126,15 @@
show warnings;
Level Code Message
Expand Down
2 changes: 1 addition & 1 deletion mysys/my_seek.c
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ my_off_t my_tell(File fd, myf MyFlags)
DBUG_ENTER("my_tell");
DBUG_PRINT("my",("fd: %d MyFlags: %lu",fd, MyFlags));
DBUG_ASSERT(fd >= 0);
#if defined (HAVE_TELL) && !defined (_WIN32)
#if defined (HAVE_TELL) && !defined (_WIN32) && !defined(_AIX)
pos= tell(fd);
#else
pos= my_seek(fd, 0L, MY_SEEK_CUR,0);
Expand Down
3 changes: 3 additions & 0 deletions sql/opt_sum.cc
Original file line number Diff line number Diff line change
Expand Up @@ -842,7 +842,10 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
if (is_field_part)
{
if (between || eq_type)
{
*range_fl&= ~(NO_MAX_RANGE | NO_MIN_RANGE);
*range_fl&= ~(max_fl ? NEAR_MAX : NEAR_MIN);
}
else
{
*range_fl&= ~(max_fl ? NO_MAX_RANGE : NO_MIN_RANGE);
Expand Down

0 comments on commit 8570a6a

Please sign in to comment.