Commit 97bce7eb authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into serg.mylan:/usr/home/serg/Abk/mysql-5.0


sql/handler.h:
  Auto merged
parents d8972f1e 76fb24ab
Loading
Loading
Loading
Loading
+37 −18
Original line number Diff line number Diff line
@@ -2616,31 +2616,50 @@ 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);
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
set autocommit=0;
checksum table test_checksum;
checksum table t1;
Table	Checksum
test.test_checksum	1531596814
insert into test_checksum values(3);
checksum table test_checksum;
test.t1	1531596814
insert into t1 values(3);
checksum table t1;
Table	Checksum
test.test_checksum	2605035534
test.t1	2605035534
commit;
checksum table test_checksum;
checksum table t1;
Table	Checksum
test.test_checksum	127268899
test.t1	127268899
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);
drop table t1;
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
set autocommit=1;
checksum table test_checksum;
checksum table t1;
Table	Checksum
test.test_checksum	1531596814
test.t1	1531596814
set autocommit=1;
insert into test_checksum values(3);
checksum table test_checksum;
insert into t1 values(3);
checksum table t1;
Table	Checksum
test.test_checksum	127268899
drop table test_checksum;
test.t1	127268899
drop table t1;
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
insert t1 values (1,100);
create function f1 () returns integer begin
declare var1 int;
select col2 into var1 from t1 where col1=1 for update;
return var1;
end|
start transaction;
select f1();
f1()
100
 update t1 set col2=0 where col1=1;
select * from t1;
col1	col2
1	100
rollback;
rollback;
drop table t1;
drop function f1;
+44 −13
Original line number Diff line number Diff line
@@ -1571,36 +1571,67 @@ DROP TABLE t2;
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);
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
set autocommit=0;
checksum table test_checksum;
checksum table t1;
connection b;
insert into test_checksum values(3);
insert into t1 values(3);
connection a;
#
# Here checksum should not see insert
#
checksum table test_checksum;
checksum table t1;
connection a;
commit;
checksum table test_checksum;
checksum table t1;
commit;
drop table test_checksum;
drop table t1;
#
# autocommit = 1
#
connection a;
create table test_checksum(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into test_checksum values (1),(2);
create table t1(a int not null) engine=innodb DEFAULT CHARSET=latin1;
insert into t1 values (1),(2);
set autocommit=1;
checksum table test_checksum;
checksum table t1;
connection b;
set autocommit=1;
insert into test_checksum values(3);
insert into t1 values(3);
connection a;
#
# Here checksum sees insert
#
checksum table test_checksum;
drop table test_checksum;
checksum table t1;
drop table t1;

#
# BUG#11238 - in prelocking mode SELECT .. FOR UPDATE is changed to
# non-blocking SELECT
#
create table t1 (col1 integer primary key, col2 integer) engine=innodb;
insert t1 values (1,100);
delimiter |;
create function f1 () returns integer begin
declare var1 int;
select col2 into var1 from t1 where col1=1 for update;
return var1;
end|
delimiter ;|
start transaction;
select f1();
connection b;
send update t1 set col2=0 where col1=1;
connection default;
select * from t1;
connection a;
rollback;
connection b;
reap;
rollback;
connection default;
drop table t1;
drop function f1;
disconnect a;
disconnect b;
+1 −1
Original line number Diff line number Diff line
@@ -1894,7 +1894,7 @@ int ha_berkeley::external_lock(THD *thd, int lock_type)
  Under LOCK TABLES, each used tables will force a call to start_stmt.
*/

int ha_berkeley::start_stmt(THD *thd)
int ha_berkeley::start_stmt(THD *thd, thr_lock_type lock_type)
{
  int error=0;
  DBUG_ENTER("ha_berkeley::start_stmt");
+1 −1
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@ class ha_berkeley: public handler
  int extra(enum ha_extra_function operation);
  int reset(void);
  int external_lock(THD *thd, int lock_type);
  int start_stmt(THD *thd);
  int start_stmt(THD *thd, thr_lock_type lock_type);
  void position(byte *record);
  int analyze(THD* thd,HA_CHECK_OPT* check_opt);
  int optimize(THD* thd, HA_CHECK_OPT* check_opt);
+3 −2
Original line number Diff line number Diff line
@@ -6000,7 +6000,8 @@ int
ha_innobase::start_stmt(
/*====================*/
	              /* out: 0 or error code */
	THD*    thd)  /* in: handle to the user thread */
	THD*    thd,  /* in: handle to the user thread */
        thr_lock_type lock_type)
{
	row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
	trx_t*		trx;
@@ -6041,7 +6042,7 @@ ha_innobase::start_stmt(
	} else {
		if (trx->isolation_level != TRX_ISO_SERIALIZABLE
		    && thd->lex->sql_command == SQLCOM_SELECT
		    && thd->lex->lock_option == TL_READ) {
		    && lock_type == TL_READ) {
	
			/* For other than temporary tables, we obtain
			no lock for consistent read (plain SELECT). */
Loading