mirror of
https://github.com/MariaDB/server.git
synced 2025-01-22 06:44:16 +01:00
d9ea0d0cd5
For application compatibility reasons MySQL converts "<autoincrement_column> IS NULL" predicates to "<autoincrement_column> = LAST_INSERT_ID()" in the first SELECT following an INSERT regardless of whether they're top level predicates or not. This causes wrong and obscure results when these predicates are combined with others on the same columns. Fixed by only doing the transformation on a single top-level predicate if a special SQL mode is turned on (sql_auto_is_null). Also made sql_auto_is_null off by default. per-file comments: mysql-test/r/func_isnull.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" test result updated mysql-test/t/func_isnull.test Bug#41371 Select returns 1 row with condition "col is not null and col is null" test case added sql/mysqld.cc Bug#41371 Select returns 1 row with condition "col is not null and col is null" sql_auto_is_null now is OFF by default. sql/sql_select.cc Bug#41371 Select returns 1 row with condition "col is not null and col is null" remove_eq_conds() split in two parts - one only checks the upper condition, the req_remove_eq_conds() recursively checks all the condition tree. mysql-test/extra/rpl_tests/rpl_insert_id.test Bug#41371 Select returns 1 row with condition "col is not null and col is null" test fixed (set the sql_auto_is_null variable) mysql-test/r/mysqlbinlog.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/r/mysqlbinlog2.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/r/odbc.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/r/query_cache.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/r/user_var-binlog.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/suite/binlog/r/binlog_row_ctype_ucs.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/suite/binlog/r/binlog_stm_ctype_ucs.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/suite/rpl/r/rpl_insert_id.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/suite/rpl/r/rpl_sp.result Bug#41371 Select returns 1 row with condition "col is not null and col is null" result updated mysql-test/t/odbc.test Bug#41371 Select returns 1 row with condition "col is not null and col is null" test fixed (set the sql_auto_is_null variable)
380 lines
9.1 KiB
Text
380 lines
9.1 KiB
Text
stop slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
reset master;
|
|
reset slave;
|
|
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
|
|
start slave;
|
|
|
|
---Setup Section --
|
|
set timestamp=1000000000;
|
|
DROP TABLE IF EXISTS t1,t2,t3;
|
|
CREATE TABLE t1(word VARCHAR(20));
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT);
|
|
|
|
---Test1 check table load --
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
351
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
351
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
insert into t1 values ("Alas");
|
|
flush logs;
|
|
|
|
--- Test 1 Dump binlog to file --
|
|
|
|
--- Test 1 delete tables, clean master and slave --
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
stop slave;
|
|
reset master;
|
|
reset slave;
|
|
start slave;
|
|
|
|
--- Test 1 Load from Dump binlog file --
|
|
|
|
--- Test 1 Check Load Results --
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
|
|
--- Test 2 position test --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Test 3 First Remote test --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
DROP TABLE IF EXISTS t1,t2,t3
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t1(word VARCHAR(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Test 4 Second Remote test --
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP TABLE t3;
|
|
stop slave;
|
|
reset master;
|
|
reset slave;
|
|
start slave;
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
SELECT COUNT(*) from t1;
|
|
COUNT(*)
|
|
352
|
|
SELECT COUNT(*) from t2;
|
|
COUNT(*)
|
|
500
|
|
SELECT COUNT(*) from t3;
|
|
COUNT(*)
|
|
500
|
|
SELECT * FROM t1 ORDER BY word LIMIT 5;
|
|
word
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
Aarhus
|
|
SELECT * FROM t2 ORDER BY id LIMIT 5;
|
|
id
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
SELECT c1, c3, c4, c5 FROM t3 ORDER BY c1 LIMIT 5;
|
|
c1 c3 c4 c5
|
|
1 2006-02-22 00:00:00 Tested in Texas 2.2
|
|
2 2006-02-22 00:00:00 Tested in Texas 4.4
|
|
3 2006-02-22 00:00:00 Tested in Texas 6.6
|
|
4 2006-02-22 00:00:00 Tested in Texas 8.8
|
|
5 2006-02-22 00:00:00 Tested in Texas 11
|
|
|
|
--- Test 5 LOAD DATA --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Test 6 reading stdin --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
DROP TABLE IF EXISTS t1,t2,t3
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t1(word VARCHAR(20))
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t2(id INT AUTO_INCREMENT NOT NULL PRIMARY KEY)
|
|
/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Test 7 reading stdin w/position --
|
|
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
|
|
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
|
|
DELIMITER /*!*/;
|
|
ROLLBACK/*!*/;
|
|
use test/*!*/;
|
|
SET TIMESTAMP=1000000000/*!*/;
|
|
SET @@session.pseudo_thread_id=999999999/*!*/;
|
|
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
|
|
SET @@session.sql_mode=0/*!*/;
|
|
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
|
|
/*!\C latin1 *//*!*/;
|
|
SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/;
|
|
SET @@session.lc_time_names=0/*!*/;
|
|
SET @@session.collation_database=DEFAULT/*!*/;
|
|
CREATE TABLE t3(c1 INT NOT NULL PRIMARY KEY, c2 LONGBLOB, c3 TIMESTAMP, c4 TEXT, c5 FLOAT)
|
|
/*!*/;
|
|
DELIMITER ;
|
|
# End of log file
|
|
ROLLBACK /* added by mysqlbinlog */;
|
|
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
|
|
|
|
--- Test 8 switch internal charset --
|
|
stop slave;
|
|
reset master;
|
|
reset slave;
|
|
start slave;
|
|
create table t4 (f text character set utf8);
|
|
create table t5 (f text character set cp932);
|
|
flush logs;
|
|
rename table t4 to t04, t5 to t05;
|
|
select HEX(f) from t04;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t4;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t05;
|
|
HEX(f)
|
|
835C
|
|
select HEX(f) from t5;
|
|
HEX(f)
|
|
835C
|
|
select HEX(f) from t04;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t4;
|
|
HEX(f)
|
|
E382BD
|
|
select HEX(f) from t05;
|
|
HEX(f)
|
|
835C
|
|
select HEX(f) from t5;
|
|
HEX(f)
|
|
835C
|
|
|
|
--- Test cleanup --
|
|
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (a INT NOT NULL KEY, b INT);
|
|
INSERT INTO t1 VALUES(1,1);
|
|
SELECT * FROM t1;
|
|
a b
|
|
1 1
|
|
FLUSH LOGS;
|
|
DROP TABLE IF EXISTS t1, t2, t3, t04, t05, t4, t5;
|