Loading mysql-test/r/innodb.result +28 −28 Original line number Diff line number Diff line Loading @@ -1739,34 +1739,6 @@ select min(b) from t1 where a='8'; min(b) 6 drop table t1; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 1531596814 commit; checksum table test_checksum; Table Checksum test.test_checksum 2050879373 commit; drop table test_checksum; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 set autocommit=1; insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 2050879373 drop table test_checksum; create table t1 (x bigint unsigned not null primary key) engine=innodb; insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1); select * from t1; Loading Loading @@ -2644,3 +2616,31 @@ SET FOREIGN_KEY_CHECKS=1; INSERT INTO t2 VALUES(3); ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) DROP TABLE t2; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 1531596814 commit; checksum table test_checksum; Table Checksum test.test_checksum 2050879373 commit; drop table test_checksum; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 set autocommit=1; insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 2050879373 drop table test_checksum; mysql-test/r/sql_mode.result +23 −3 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ sql_mode NO_FIELD_OPTIONS,MYSQL323,MYSQL40,HIGH_NOT_PRECEDENCE show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL auto_increment, `a` int(11) NOT NULL, `pseudo` varchar(35) NOT NULL default '', `email` varchar(60) NOT NULL default '', PRIMARY KEY (`a`), Loading @@ -79,8 +79,8 @@ show create table t1; Table Create Table t1 CREATE TABLE "t1" ( "a" int(11) NOT NULL, "pseudo" varchar(35) NOT NULL default '', "email" varchar(60) NOT NULL default '', "pseudo" varchar(35) character set latin2 NOT NULL default '', "email" varchar(60) character set latin2 NOT NULL default '', PRIMARY KEY ("a"), UNIQUE KEY "email" ("email") ) Loading Loading @@ -140,6 +140,26 @@ t1 CREATE TABLE `t1` ( drop table t1 ; set @@SQL_MODE=NULL; ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NULL' set session sql_mode=ansi; create table t1 (f1 integer auto_increment primary key, f2 timestamp default current_timestamp on update current_timestamp); show create table t1; Table Create Table t1 CREATE TABLE "t1" ( "f1" int(11) NOT NULL auto_increment, "f2" timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY ("f1") ) set session sql_mode=no_field_options; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`f1`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=''; show local variables like 'SQL_MODE'; Variable_name Value Loading mysql-test/t/innodb.test +39 −40 Original line number Diff line number Diff line Loading @@ -1269,46 +1269,6 @@ select min(a) from t1; select min(b) from t1 where a='8'; drop table t1; # # Test that checksum table uses a consistent read Bug #12669 # connect (a,localhost,root,,); connect (b,localhost,root,,); connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; connection b; insert into test_checksum values(3); connection a; # # Here checksum should not see insert # checksum table test_checksum; connection a; commit; checksum table test_checksum; commit; drop table test_checksum; # # autocommit = 1 # connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; connection b; set autocommit=1; insert into test_checksum values(3); connection a; # # Here checksum sees insert # checksum table test_checksum; drop table test_checksum; # End of 4.1 tests # Loading Loading @@ -1605,3 +1565,42 @@ SET FOREIGN_KEY_CHECKS=1; INSERT INTO t2 VALUES(3); DROP TABLE t2; # # Test that checksum table uses a consistent read Bug #12669 # connect (a,localhost,root,,); connect (b,localhost,root,,); connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; connection b; insert into test_checksum values(3); connection a; # # Here checksum should not see insert # checksum table test_checksum; connection a; commit; checksum table test_checksum; commit; drop table test_checksum; # # autocommit = 1 # connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; connection b; set autocommit=1; insert into test_checksum values(3); connection a; # # Here checksum sees insert # checksum table test_checksum; drop table test_checksum; mysql-test/t/sql_mode.test +12 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,18 @@ drop table t1 ; --error 1231 set @@SQL_MODE=NULL; # # Bug #797: in sql_mode=ANSI, show create table ignores auto_increment # set session sql_mode=ansi; create table t1 (f1 integer auto_increment primary key, f2 timestamp default current_timestamp on update current_timestamp); show create table t1; set session sql_mode=no_field_options; show create table t1; drop table t1; # End of 4.1 tests # Loading sql/ha_innodb.cc +1 −3 Original line number Diff line number Diff line Loading @@ -6689,12 +6689,10 @@ ha_innobase::store_lock( prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; } else if (thd->lex->sql_command == SQLCOM_CHECKSUM) { /* Use consistent read for checksum table and convert lock type to the TL_READ */ /* Use consistent read for checksum table */ prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; lock.type = TL_READ; } else { prebuilt->select_lock_type = LOCK_S; prebuilt->stored_select_lock_type = LOCK_S; Loading Loading
mysql-test/r/innodb.result +28 −28 Original line number Diff line number Diff line Loading @@ -1739,34 +1739,6 @@ select min(b) from t1 where a='8'; min(b) 6 drop table t1; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 1531596814 commit; checksum table test_checksum; Table Checksum test.test_checksum 2050879373 commit; drop table test_checksum; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 set autocommit=1; insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 2050879373 drop table test_checksum; create table t1 (x bigint unsigned not null primary key) engine=innodb; insert into t1(x) values (0xfffffffffffffff0),(0xfffffffffffffff1); select * from t1; Loading Loading @@ -2644,3 +2616,31 @@ SET FOREIGN_KEY_CHECKS=1; INSERT INTO t2 VALUES(3); ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test/t2`, CONSTRAINT `c1` FOREIGN KEY (`v`) REFERENCES `t1` (`id`)) DROP TABLE t2; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 1531596814 commit; checksum table test_checksum; Table Checksum test.test_checksum 2050879373 commit; drop table test_checksum; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; Table Checksum test.test_checksum 1531596814 set autocommit=1; insert into test_checksum values(3); checksum table test_checksum; Table Checksum test.test_checksum 2050879373 drop table test_checksum;
mysql-test/r/sql_mode.result +23 −3 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ sql_mode NO_FIELD_OPTIONS,MYSQL323,MYSQL40,HIGH_NOT_PRECEDENCE show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `a` int(11) NOT NULL auto_increment, `a` int(11) NOT NULL, `pseudo` varchar(35) NOT NULL default '', `email` varchar(60) NOT NULL default '', PRIMARY KEY (`a`), Loading @@ -79,8 +79,8 @@ show create table t1; Table Create Table t1 CREATE TABLE "t1" ( "a" int(11) NOT NULL, "pseudo" varchar(35) NOT NULL default '', "email" varchar(60) NOT NULL default '', "pseudo" varchar(35) character set latin2 NOT NULL default '', "email" varchar(60) character set latin2 NOT NULL default '', PRIMARY KEY ("a"), UNIQUE KEY "email" ("email") ) Loading Loading @@ -140,6 +140,26 @@ t1 CREATE TABLE `t1` ( drop table t1 ; set @@SQL_MODE=NULL; ERROR 42000: Variable 'sql_mode' can't be set to the value of 'NULL' set session sql_mode=ansi; create table t1 (f1 integer auto_increment primary key, f2 timestamp default current_timestamp on update current_timestamp); show create table t1; Table Create Table t1 CREATE TABLE "t1" ( "f1" int(11) NOT NULL auto_increment, "f2" timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, PRIMARY KEY ("f1") ) set session sql_mode=no_field_options; show create table t1; Table Create Table t1 CREATE TABLE `t1` ( `f1` int(11) NOT NULL, `f2` timestamp NOT NULL default CURRENT_TIMESTAMP, PRIMARY KEY (`f1`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 drop table t1; SET @OLD_SQL_MODE=@@SQL_MODE, @@SQL_MODE=''; show local variables like 'SQL_MODE'; Variable_name Value Loading
mysql-test/t/innodb.test +39 −40 Original line number Diff line number Diff line Loading @@ -1269,46 +1269,6 @@ select min(a) from t1; select min(b) from t1 where a='8'; drop table t1; # # Test that checksum table uses a consistent read Bug #12669 # connect (a,localhost,root,,); connect (b,localhost,root,,); connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; connection b; insert into test_checksum values(3); connection a; # # Here checksum should not see insert # checksum table test_checksum; connection a; commit; checksum table test_checksum; commit; drop table test_checksum; # # autocommit = 1 # connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; connection b; set autocommit=1; insert into test_checksum values(3); connection a; # # Here checksum sees insert # checksum table test_checksum; drop table test_checksum; # End of 4.1 tests # Loading Loading @@ -1605,3 +1565,42 @@ SET FOREIGN_KEY_CHECKS=1; INSERT INTO t2 VALUES(3); DROP TABLE t2; # # Test that checksum table uses a consistent read Bug #12669 # connect (a,localhost,root,,); connect (b,localhost,root,,); connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=0; checksum table test_checksum; connection b; insert into test_checksum values(3); connection a; # # Here checksum should not see insert # checksum table test_checksum; connection a; commit; checksum table test_checksum; commit; drop table test_checksum; # # autocommit = 1 # connection a; create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1; insert into test_checksum values (1),(2); set autocommit=1; checksum table test_checksum; connection b; set autocommit=1; insert into test_checksum values(3); connection a; # # Here checksum sees insert # checksum table test_checksum; drop table test_checksum;
mysql-test/t/sql_mode.test +12 −0 Original line number Diff line number Diff line Loading @@ -86,6 +86,18 @@ drop table t1 ; --error 1231 set @@SQL_MODE=NULL; # # Bug #797: in sql_mode=ANSI, show create table ignores auto_increment # set session sql_mode=ansi; create table t1 (f1 integer auto_increment primary key, f2 timestamp default current_timestamp on update current_timestamp); show create table t1; set session sql_mode=no_field_options; show create table t1; drop table t1; # End of 4.1 tests # Loading
sql/ha_innodb.cc +1 −3 Original line number Diff line number Diff line Loading @@ -6689,12 +6689,10 @@ ha_innobase::store_lock( prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; } else if (thd->lex->sql_command == SQLCOM_CHECKSUM) { /* Use consistent read for checksum table and convert lock type to the TL_READ */ /* Use consistent read for checksum table */ prebuilt->select_lock_type = LOCK_NONE; prebuilt->stored_select_lock_type = LOCK_NONE; lock.type = TL_READ; } else { prebuilt->select_lock_type = LOCK_S; prebuilt->stored_select_lock_type = LOCK_S; Loading