Commit d8dc8537 authored by Marko Mäkelä's avatar Marko Mäkelä

Merge 10.3 into 10.4

parents 550cf13e 0f3045e4
Subproject commit a746c3af449a8754e78ad7971e59e79af7957cdb Subproject commit fc431a035a21ac1d4ef25d9d3cd8c4d7e64a8ee7
...@@ -2460,7 +2460,38 @@ count(*)+sleep(0) ...@@ -2460,7 +2460,38 @@ count(*)+sleep(0)
2 2
drop table t1; 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 # MDEV-9408 CREATE TABLE SELECT MAX(int_column) creates different columns for table vs view
...@@ -2492,3 +2523,6 @@ t2 CREATE TABLE `t2` ( ...@@ -2492,3 +2523,6 @@ t2 CREATE TABLE `t2` (
DROP TABLE t2; DROP TABLE t2;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
#
# End of 10.3 tests
#
...@@ -1705,7 +1705,33 @@ select count(*)+sleep(0) from t1; ...@@ -1705,7 +1705,33 @@ select count(*)+sleep(0) from t1;
drop table t1; drop table t1;
--echo # --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 #
--echo # --echo #
...@@ -1730,3 +1756,7 @@ DROP TABLE t2; ...@@ -1730,3 +1756,7 @@ DROP TABLE t2;
DROP VIEW v1; DROP VIEW v1;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # End of 10.3 tests
--echo #
...@@ -7,241 +7,40 @@ master-bin.000001 329 ...@@ -7,241 +7,40 @@ master-bin.000001 329
connection slave; connection slave;
include/stop_slave.inc include/stop_slave.inc
reset slave; reset slave;
show slave status; Slave_IO_Running = 'No'
Slave_IO_State # Slave_SQL_Running = 'No'
Master_Host 127.0.0.1 Last_SQL_Errno = '0'
Master_User root Last_SQL_Error = ''
Master_Port MASTER_PORT Exec_Master_Log_Pos = '0'
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'; change master to master_host='127.0.0.1';
show slave status; Slave_IO_Running = 'No'
Slave_IO_State # Slave_SQL_Running = 'No'
Master_Host 127.0.0.1 Last_SQL_Errno = '0'
Master_User root Last_SQL_Error = ''
Master_Port MASTER_PORT Exec_Master_Log_Pos = '0'
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', change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=MASTER_PORT; 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 include/start_slave.inc
show slave status; Slave_IO_Running = 'Yes'
Slave_IO_State Waiting for master to send event Slave_SQL_Running = 'Yes'
Master_Host 127.0.0.1 Last_SQL_Errno = '0'
Master_User root Last_SQL_Error = ''
Master_Port MASTER_PORT Exec_Master_Log_Pos = '329'
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
connection master; connection master;
drop table if exists t1;
create table t1 (n int, PRIMARY KEY(n)); create table t1 (n int, PRIMARY KEY(n));
insert into t1 values (10),(45),(90); insert into t1 values (10),(45),(90);
connection slave; connection slave;
connection slave;
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
n 10 n
n 45 10
n 90 45
90
connection master; connection master;
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
n 10 n
n 45 10
n 90 45
90
drop table t1; drop table t1;
connection slave; connection slave;
include/rpl_end.inc include/rpl_end.inc
...@@ -10,59 +10,5 @@ change master to master_host='127.0.0.1',master_user='root', ...@@ -10,59 +10,5 @@ change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=SLAVE_PORT; master_password='',master_port=SLAVE_PORT;
include/start_slave.inc include/start_slave.inc
flush logs; flush logs;
SHOW SLAVE STATUS; include/stop_slave.inc
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/rpl_end.inc include/rpl_end.inc
...@@ -5,9 +5,11 @@ create table t1 (n int); ...@@ -5,9 +5,11 @@ create table t1 (n int);
reset master; reset master;
include/stop_slave.inc include/stop_slave.inc
change master to master_port=SLAVE_PORT; change master to master_port=SLAVE_PORT;
show slave status; Slave_IO_Running = 'No'
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 Slave_SQL_Running = 'No'
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 Last_SQL_Errno = '0'
Last_SQL_Error = ''
Exec_Master_Log_Pos = '0'
start slave; start slave;
insert into t1 values (1); insert into t1 values (1);
include/wait_for_slave_param.inc [Last_IO_Errno] include/wait_for_slave_param.inc [Last_IO_Errno]
......
--- /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 @@ @@ -126,12 +126,15 @@
show warnings; show warnings;
Level Code Message Level Code Message
......
...@@ -11,39 +11,25 @@ save_master_pos; ...@@ -11,39 +11,25 @@ save_master_pos;
connection slave; connection slave;
--source include/stop_slave.inc --source include/stop_slave.inc
reset slave; reset slave;
--vertical_results --let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos
--replace_result $MASTER_MYPORT MASTER_PORT --source include/show_slave_status.inc
--replace_column 1 # 5 # 8 # 9 # 23 # 33 #
show slave status;
change master to master_host='127.0.0.1'; change master to master_host='127.0.0.1';
# The following needs to be cleaned up when change master is fixed # The following needs to be cleaned up when change master is fixed
--vertical_results --source include/show_slave_status.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 5 # 8 # 9 # 23 # 33 #
show slave status;
--replace_result $MASTER_MYPORT MASTER_PORT --replace_result $MASTER_MYPORT MASTER_PORT
eval change master to master_host='127.0.0.1',master_user='root', eval change master to master_host='127.0.0.1',master_user='root',
master_password='',master_port=$MASTER_MYPORT; 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;
--source include/start_slave.inc --source include/start_slave.inc
sync_with_master; sync_with_master;
--vertical_results --source include/show_slave_status.inc
--replace_result $MASTER_MYPORT MASTER_PORT
--replace_column 1 # 5 # 8 # 9 # 23 # 33 #
--replace_column 33 #
show slave status;
connection master; connection master;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (n int, PRIMARY KEY(n)); create table t1 (n int, PRIMARY KEY(n));
insert into t1 values (10),(45),(90); insert into t1 values (10),(45),(90);
--sync_slave_with_master --sync_slave_with_master
connection slave;
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
connection master; connection master;
SELECT * FROM t1 ORDER BY n; SELECT * FROM t1 ORDER BY n;
......
...@@ -32,9 +32,6 @@ sleep 5; ...@@ -32,9 +32,6 @@ sleep 5;
# #
# Show status of slave # Show status of slave
# #
--replace_result $SLAVE_MYPORT SLAVE_PORT --let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos
--replace_column 1 # 8 # 9 # 16 # 23 # 33 # --source include/stop_slave.inc
--vertical_results
SHOW SLAVE STATUS;
stop slave;
--source include/rpl_end.inc --source include/rpl_end.inc
...@@ -12,9 +12,8 @@ reset master; ...@@ -12,9 +12,8 @@ reset master;
--source include/stop_slave.inc --source include/stop_slave.inc
--replace_result $SLAVE_MYPORT SLAVE_PORT --replace_result $SLAVE_MYPORT SLAVE_PORT
eval change master to master_port=$SLAVE_MYPORT; eval change master to master_port=$SLAVE_MYPORT;
--replace_result $SLAVE_MYPORT SLAVE_PORT --let $status_items= Slave_IO_Running, Slave_SQL_Running, Last_SQL_Errno, Last_SQL_Error, Exec_Master_Log_Pos
--replace_column 16 # 18 # --source include/show_slave_status.inc
show slave status;
start slave; start slave;
insert into t1 values (1); insert into t1 values (1);
......
...@@ -86,7 +86,7 @@ my_off_t my_tell(File fd, myf MyFlags) ...@@ -86,7 +86,7 @@ my_off_t my_tell(File fd, myf MyFlags)
DBUG_ENTER("my_tell"); DBUG_ENTER("my_tell");
DBUG_PRINT("my",("fd: %d MyFlags: %lu",fd, MyFlags)); DBUG_PRINT("my",("fd: %d MyFlags: %lu",fd, MyFlags));
DBUG_ASSERT(fd >= 0); DBUG_ASSERT(fd >= 0);
#if defined (HAVE_TELL) && !defined (_WIN32) #if defined (HAVE_TELL) && !defined (_WIN32) && !defined(_AIX)
pos= tell(fd); pos= tell(fd);
#else #else
pos= my_seek(fd, 0L, MY_SEEK_CUR,0); pos= my_seek(fd, 0L, MY_SEEK_CUR,0);
......
...@@ -842,7 +842,10 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo, ...@@ -842,7 +842,10 @@ static bool matching_cond(bool max_fl, TABLE_REF *ref, KEY *keyinfo,
if (is_field_part) if (is_field_part)
{ {
if (between || eq_type) if (between || eq_type)
{
*range_fl&= ~(NO_MAX_RANGE | NO_MIN_RANGE); *range_fl&= ~(NO_MAX_RANGE | NO_MIN_RANGE);
*range_fl&= ~(max_fl ? NEAR_MAX : NEAR_MIN);
}
else else
{ {
*range_fl&= ~(max_fl ? NO_MAX_RANGE : NO_MIN_RANGE); *range_fl&= ~(max_fl ? NO_MAX_RANGE : NO_MIN_RANGE);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment