diff options
author | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-20 13:04:36 +0200 |
---|---|---|
committer | Marko Mäkelä <marko.makela@mariadb.com> | 2021-03-20 13:04:36 +0200 |
commit | d8dc8537e4f6cfb3b0c63123a8d9df5c1101970d (patch) | |
tree | 036edbea930caa77afe4fb2a8acef9242b54805b | |
parent | 550cf13eb3e8a25826a0fa67935fc28ee7adb0c8 (diff) | |
parent | 0f3045e4329d900cc95f84b5fe9ff5c9d96240c7 (diff) | |
download | mariadb-git-d8dc8537e4f6cfb3b0c63123a8d9df5c1101970d.tar.gz |
Merge 10.3 into 10.4
m--------- | libmariadb | 0 | ||||
-rw-r--r-- | mysql-test/main/func_group.result | 36 | ||||
-rw-r--r-- | mysql-test/main/func_group.test | 32 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/rpl_000015.result | 249 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result | 56 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/rpl_server_id1.result | 8 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff | 2 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/t/rpl_000015.test | 32 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test | 7 | ||||
-rw-r--r-- | mysql-test/suite/engines/funcs/t/rpl_server_id1.test | 5 | ||||
-rw-r--r-- | mysys/my_seek.c | 2 | ||||
-rw-r--r-- | sql/opt_sum.cc | 3 |
12 files changed, 115 insertions, 317 deletions
diff --git a/libmariadb b/libmariadb -Subproject a746c3af449a8754e78ad7971e59e79af7957cd +Subproject fc431a035a21ac1d4ef25d9d3cd8c4d7e64a8ee diff --git a/mysql-test/main/func_group.result b/mysql-test/main/func_group.result index 9311a556191..fc6f93a938a 100644 --- a/mysql-test/main/func_group.result +++ b/mysql-test/main/func_group.result @@ -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 @@ -2492,3 +2523,6 @@ t2 CREATE TABLE `t2` ( DROP TABLE t2; DROP VIEW v1; DROP TABLE t1; +# +# End of 10.3 tests +# diff --git a/mysql-test/main/func_group.test b/mysql-test/main/func_group.test index bc2d6e9047d..10b92cbadca 100644 --- a/mysql-test/main/func_group.test +++ b/mysql-test/main/func_group.test @@ -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 # @@ -1730,3 +1756,7 @@ DROP TABLE t2; DROP VIEW v1; DROP TABLE t1; + +--echo # +--echo # End of 10.3 tests +--echo # diff --git a/mysql-test/suite/engines/funcs/r/rpl_000015.result b/mysql-test/suite/engines/funcs/r/rpl_000015.result index 4ee1026ba00..56fc002ac53 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_000015.result +++ b/mysql-test/suite/engines/funcs/r/rpl_000015.result @@ -7,241 +7,40 @@ master-bin.000001 329 connection slave; include/stop_slave.inc reset slave; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -Replicate_Ignore_Server_Ids -Master_Server_Id 1 -Master_SSL_Crl -Master_SSL_Crlpath -Using_Gtid No -Gtid_IO_Pos -Replicate_Do_Domain_Ids -Replicate_Ignore_Domain_Ids -Parallel_Mode conservative -SQL_Delay 0 -SQL_Remaining_Delay NULL -Slave_SQL_Running_State -Slave_DDL_Groups 2 -Slave_Non_Transactional_Groups 0 -Slave_Transactional_Groups 2 +Slave_IO_Running = 'No' +Slave_SQL_Running = 'No' +Last_SQL_Errno = '0' +Last_SQL_Error = '' +Exec_Master_Log_Pos = '0' change master to master_host='127.0.0.1'; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -Replicate_Ignore_Server_Ids -Master_Server_Id 1 -Master_SSL_Crl -Master_SSL_Crlpath -Using_Gtid No -Gtid_IO_Pos -Replicate_Do_Domain_Ids -Replicate_Ignore_Domain_Ids -Parallel_Mode conservative -SQL_Delay 0 -SQL_Remaining_Delay NULL -Slave_SQL_Running_State -Slave_DDL_Groups 2 -Slave_Non_Transactional_Groups 0 -Slave_Transactional_Groups 2 -change master to master_host='127.0.0.1',master_user='root', +Slave_IO_Running = 'No' +Slave_SQL_Running = 'No' +Last_SQL_Errno = '0' +Last_SQL_Error = '' +Exec_Master_Log_Pos = '0' +change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=MASTER_PORT; -show slave status; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry # -Master_Log_File -Read_Master_Log_Pos 4 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File -Slave_IO_Running No -Slave_SQL_Running No -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 0 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -Replicate_Ignore_Server_Ids -Master_Server_Id 1 -Master_SSL_Crl -Master_SSL_Crlpath -Using_Gtid No -Gtid_IO_Pos -Replicate_Do_Domain_Ids -Replicate_Ignore_Domain_Ids -Parallel_Mode conservative -SQL_Delay 0 -SQL_Remaining_Delay NULL -Slave_SQL_Running_State -Slave_DDL_Groups 2 -Slave_Non_Transactional_Groups 0 -Slave_Transactional_Groups 2 include/start_slave.inc -show slave status; -Slave_IO_State Waiting for master to send event -Master_Host 127.0.0.1 -Master_User root -Master_Port MASTER_PORT -Connect_Retry 1 -Master_Log_File master-bin.000001 -Read_Master_Log_Pos 329 -Relay_Log_File slave-relay-bin.000002 -Relay_Log_Pos 629 -Relay_Master_Log_File master-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 329 -Relay_Log_Space 938 -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -Replicate_Ignore_Server_Ids -Master_Server_Id 1 -Master_SSL_Crl -Master_SSL_Crlpath -Using_Gtid No -Gtid_IO_Pos -Replicate_Do_Domain_Ids -Replicate_Ignore_Domain_Ids -Parallel_Mode conservative -SQL_Delay 0 -SQL_Remaining_Delay NULL -Slave_SQL_Running_State Slave has read all relay log; waiting for the slave I/O thread to update it -Slave_DDL_Groups 2 -Slave_Non_Transactional_Groups 0 -Slave_Transactional_Groups 2 +Slave_IO_Running = 'Yes' +Slave_SQL_Running = 'Yes' +Last_SQL_Errno = '0' +Last_SQL_Error = '' +Exec_Master_Log_Pos = '329' connection master; -drop table if exists t1; create table t1 (n int, PRIMARY KEY(n)); insert into t1 values (10),(45),(90); connection slave; -connection slave; SELECT * FROM t1 ORDER BY n; -n 10 -n 45 -n 90 +n +10 +45 +90 connection master; SELECT * FROM t1 ORDER BY n; -n 10 -n 45 -n 90 +n +10 +45 +90 drop table t1; connection slave; include/rpl_end.inc diff --git a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result index d05401bc446..527dd8dc983 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result +++ b/mysql-test/suite/engines/funcs/r/rpl_flushlog_loop.result @@ -10,59 +10,5 @@ change master to master_host='127.0.0.1',master_user='root', master_password='',master_port=SLAVE_PORT; include/start_slave.inc flush logs; -SHOW SLAVE STATUS; -Slave_IO_State # -Master_Host 127.0.0.1 -Master_User root -Master_Port SLAVE_PORT -Connect_Retry 60 -Master_Log_File slave-bin.000001 -Read_Master_Log_Pos 328 -Relay_Log_File # -Relay_Log_Pos # -Relay_Master_Log_File slave-bin.000001 -Slave_IO_Running Yes -Slave_SQL_Running Yes -Replicate_Do_DB -Replicate_Ignore_DB -Replicate_Do_Table -Replicate_Ignore_Table # -Replicate_Wild_Do_Table -Replicate_Wild_Ignore_Table -Last_Errno 0 -Last_Error -Skip_Counter 0 -Exec_Master_Log_Pos 328 -Relay_Log_Space # -Until_Condition None -Until_Log_File -Until_Log_Pos 0 -Master_SSL_Allowed No -Master_SSL_CA_File -Master_SSL_CA_Path -Master_SSL_Cert -Master_SSL_Cipher -Master_SSL_Key -Seconds_Behind_Master # -Master_SSL_Verify_Server_Cert No -Last_IO_Errno 0 -Last_IO_Error -Last_SQL_Errno 0 -Last_SQL_Error -Replicate_Ignore_Server_Ids -Master_Server_Id 2 -Master_SSL_Crl -Master_SSL_Crlpath -Using_Gtid No -Gtid_IO_Pos -Replicate_Do_Domain_Ids -Replicate_Ignore_Domain_Ids -Parallel_Mode conservative -SQL_Delay 0 -SQL_Remaining_Delay NULL -Slave_SQL_Running_State Slave has read all relay log; waiting for the slave I/O thread to update it -Slave_DDL_Groups 0 -Slave_Non_Transactional_Groups 0 -Slave_Transactional_Groups 0 -stop slave; +include/stop_slave.inc include/rpl_end.inc diff --git a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result index 6450ea21d3d..001d1151843 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_server_id1.result +++ b/mysql-test/suite/engines/funcs/r/rpl_server_id1.result @@ -5,9 +5,11 @@ create table t1 (n int); reset master; include/stop_slave.inc change master to master_port=SLAVE_PORT; -show slave status; -Slave_IO_State Master_Host Master_User Master_Port Connect_Retry Master_Log_File Read_Master_Log_Pos Relay_Log_File Relay_Log_Pos Relay_Master_Log_File Slave_IO_Running Slave_SQL_Running Replicate_Do_DB Replicate_Ignore_DB Replicate_Do_Table Replicate_Ignore_Table Replicate_Wild_Do_Table Replicate_Wild_Ignore_Table Last_Errno Last_Error Skip_Counter Exec_Master_Log_Pos Relay_Log_Space Until_Condition Until_Log_File Until_Log_Pos Master_SSL_Allowed Master_SSL_CA_File Master_SSL_CA_Path Master_SSL_Cert Master_SSL_Cipher Master_SSL_Key Seconds_Behind_Master Master_SSL_Verify_Server_Cert Last_IO_Errno Last_IO_Error Last_SQL_Errno Last_SQL_Error Replicate_Ignore_Server_Ids Master_Server_Id Master_SSL_Crl Master_SSL_Crlpath Using_Gtid Gtid_IO_Pos Replicate_Do_Domain_Ids Replicate_Ignore_Domain_Ids Parallel_Mode SQL_Delay SQL_Remaining_Delay Slave_SQL_Running_State Slave_DDL_Groups Slave_Non_Transactional_Groups Slave_Transactional_Groups - 127.0.0.1 root SLAVE_PORT 1 4 slave-relay-bin.000001 4 No No # # 0 0 0 256 None 0 No NULL No 0 0 1 No conservative 0 NULL 0 0 0 +Slave_IO_Running = 'No' +Slave_SQL_Running = 'No' +Last_SQL_Errno = '0' +Last_SQL_Error = '' +Exec_Master_Log_Pos = '0' start slave; insert into t1 values (1); include/wait_for_slave_param.inc [Last_IO_Errno] diff --git a/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff b/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff index 47901f63a51..da41283e42f 100644 --- a/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff +++ b/mysql-test/suite/engines/funcs/r/rpl_sp,myisam,mix.rdiff @@ -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 diff --git a/mysql-test/suite/engines/funcs/t/rpl_000015.test b/mysql-test/suite/engines/funcs/t/rpl_000015.test index 8d76fc674e5..8996affe667 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_000015.test +++ b/mysql-test/suite/engines/funcs/t/rpl_000015.test @@ -11,39 +11,25 @@ save_master_pos; connection slave; --source include/stop_slave.inc reset slave; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +--let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos +--source include/show_slave_status.inc change master to master_host='127.0.0.1'; # The following needs to be cleaned up when change master is fixed ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +--source include/show_slave_status.inc --replace_result $MASTER_MYPORT MASTER_PORT -eval change master to master_host='127.0.0.1',master_user='root', - master_password='',master_port=$MASTER_MYPORT; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # -show slave status; +eval change master to master_host='127.0.0.1',master_user='root', +master_password='',master_port=$MASTER_MYPORT; --source include/start_slave.inc sync_with_master; ---vertical_results ---replace_result $MASTER_MYPORT MASTER_PORT ---replace_column 1 # 5 # 8 # 9 # 23 # 33 # ---replace_column 33 # -show slave status; +--source include/show_slave_status.inc + connection master; ---disable_warnings -drop table if exists t1; ---enable_warnings + create table t1 (n int, PRIMARY KEY(n)); insert into t1 values (10),(45),(90); --sync_slave_with_master -connection slave; + SELECT * FROM t1 ORDER BY n; connection master; SELECT * FROM t1 ORDER BY n; diff --git a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test index 93207dfddf7..b4742246264 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test +++ b/mysql-test/suite/engines/funcs/t/rpl_flushlog_loop.test @@ -32,9 +32,6 @@ sleep 5; # # Show status of slave # ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 1 # 8 # 9 # 16 # 23 # 33 # ---vertical_results -SHOW SLAVE STATUS; -stop slave; +--let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos +--source include/stop_slave.inc --source include/rpl_end.inc diff --git a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test index a1425531b2c..1412db46d3a 100644 --- a/mysql-test/suite/engines/funcs/t/rpl_server_id1.test +++ b/mysql-test/suite/engines/funcs/t/rpl_server_id1.test @@ -12,9 +12,8 @@ reset master; --source include/stop_slave.inc --replace_result $SLAVE_MYPORT SLAVE_PORT eval change master to master_port=$SLAVE_MYPORT; ---replace_result $SLAVE_MYPORT SLAVE_PORT ---replace_column 16 # 18 # -show slave status; +--let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos +--source include/show_slave_status.inc start slave; insert into t1 values (1); diff --git a/mysys/my_seek.c b/mysys/my_seek.c index 6a370b0ad43..db364ccddda 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -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); diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index af2d9ddc2e7..27360d4a10c 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -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); |