List:Commits« Previous MessageNext Message »
From:Annamalai Gurusami Date:May 10 2012 6:10am
Subject:bzr push into mysql-trunk branch (annamalai.gurusami:3809 to 3810)
View as plain text  
 3810 Annamalai Gurusami	2012-05-10 [merge]
      Merge from mysql-5.5 to mysql-trunk. 

    added:
      mysql-test/suite/innodb/r/innodb_bug14007649.result
      mysql-test/suite/innodb/t/innodb_bug14007649.test
    modified:
      storage/innobase/btr/btr0cur.cc
      storage/innobase/handler/ha_innodb.cc
      storage/innobase/handler/ha_innodb.h
 3809 Georgi Kodinov	2012-05-09 [merge]
      merge

    modified:
      mysql-test/t/ds_mrr-big.test
=== added file 'mysql-test/suite/innodb/r/innodb_bug14007649.result'
--- a/mysql-test/suite/innodb/r/innodb_bug14007649.result	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/r/innodb_bug14007649.result	revid:annamalai.gurusami@stripped
@@ -0,0 +1,56 @@
+create table t1 (
+rowid int,
+f1    int,
+f2    int,
+key i1 (f1, f2),
+key i2 (f2)) engine=innodb;
+show create table t1;
+Table	Create Table
+t1	CREATE TABLE `t1` (
+  `rowid` int(11) DEFAULT NULL,
+  `f1` int(11) DEFAULT NULL,
+  `f2` int(11) DEFAULT NULL,
+  KEY `i1` (`f1`,`f2`),
+  KEY `i2` (`f2`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1
+insert into `t1` (rowid, f1, f2) values (1, 1, 10), (2, 1, NULL);
+start transaction with consistent snapshot;
+start transaction;
+update t1 set f2 = 4  where f1 = 1 and f2 is null;
+(b) Number of rows updated:
+select row_count();
+row_count()
+1
+insert into t1 values (3, 1, null);
+(b) After update and insert query.
+select rowid, f1, f2 from t1;
+rowid	f1	f2
+1	1	10
+2	1	4
+3	1	NULL
+commit;
+(a) Before the update statement is executed.
+select rowid, f1, f2 from t1;
+rowid	f1	f2
+1	1	10
+2	1	NULL
+SET SESSION debug="+d,bug14007649";
+update t1 set f2 = 6 where f1 = 1 and f2 is null;
+(a) Number of rows updated:
+select row_count();
+row_count()
+1
+(a) After the update statement is executed.
+select rowid, f1, f2 from t1;
+rowid	f1	f2
+1	1	10
+2	1	NULL
+3	1	6
+commit;
+"The trx with consistent snapshot ended."
+select rowid, f1, f2 from t1;
+rowid	f1	f2
+1	1	10
+2	1	4
+3	1	6
+drop table t1;

=== added file 'mysql-test/suite/innodb/t/innodb_bug14007649.test'
--- a/mysql-test/suite/innodb/t/innodb_bug14007649.test	1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/innodb/t/innodb_bug14007649.test	revid:annamalai.gurusami@stripped
@@ -0,0 +1,58 @@
+--source include/have_innodb.inc
+--source include/have_debug.inc
+
+create table t1 (
+  rowid int,
+  f1    int,
+  f2    int,
+  key i1 (f1, f2),
+  key i2 (f2)) engine=innodb;
+
+show create table t1;
+insert into `t1` (rowid, f1, f2) values (1, 1, 10), (2, 1, NULL);
+
+connect (a,localhost,root,,);
+connect (b,localhost,root,,);
+
+connection a;
+start transaction with consistent snapshot;
+
+connection b;
+start transaction;
+update t1 set f2 = 4  where f1 = 1 and f2 is null;
+
+-- echo (b) Number of rows updated:
+select row_count();
+
+insert into t1 values (3, 1, null);
+
+-- echo (b) After update and insert query.
+select rowid, f1, f2 from t1;
+
+commit;
+
+connection a;
+
+-- echo (a) Before the update statement is executed.
+select rowid, f1, f2 from t1;
+
+SET SESSION debug="+d,bug14007649";
+update t1 set f2 = 6 where f1 = 1 and f2 is null;
+
+-- echo (a) Number of rows updated:
+select row_count();
+
+-- echo (a) After the update statement is executed.
+select rowid, f1, f2 from t1;
+
+commit;
+
+--echo "The trx with consistent snapshot ended."
+
+select rowid, f1, f2 from t1;
+
+connection default;
+disconnect a;
+disconnect b;
+
+drop table t1;

=== modified file 'storage/innobase/btr/btr0cur.cc'
--- a/storage/innobase/btr/btr0cur.cc	revid:georgi.kodinov@stripped
+++ b/storage/innobase/btr/btr0cur.cc	revid:annamalai.gurusami@stripped
@@ -3541,6 +3541,8 @@ btr_estimate_n_rows_in_range(
 				n_rows = n_rows * 2;
 			}
 
+			DBUG_EXECUTE_IF("bug14007649", return(n_rows););
+
 			/* Do not estimate the number of rows in the range
 			to over 1 / 2 of the estimated rows in the whole
 			table */

=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc	revid:georgi.kodinov@stripped
+++ b/storage/innobase/handler/ha_innodb.cc	revid:annamalai.gurusami@stripped
@@ -4771,6 +4771,31 @@ table_opened:
 }
 
 UNIV_INTERN
+handler*
+ha_innobase::clone(
+/*===============*/
+	const char*	name,		/*!< in: table name */
+	MEM_ROOT*	mem_root)	/*!< in: memory context */
+{
+	ha_innobase* new_handler;
+
+	DBUG_ENTER("ha_innobase::clone");
+
+	new_handler = static_cast<ha_innobase*>(handler::clone(name,
+							       mem_root));
+	if (new_handler) {
+		DBUG_ASSERT(new_handler->prebuilt != NULL);
+		DBUG_ASSERT(new_handler->user_thd == user_thd);
+		DBUG_ASSERT(new_handler->prebuilt->trx == prebuilt->trx);
+
+		new_handler->prebuilt->select_lock_type
+			= prebuilt->select_lock_type;
+	}
+
+	DBUG_RETURN(new_handler);
+}
+
+UNIV_INTERN
 uint
 ha_innobase::max_supported_key_part_length() const
 /*==============================================*/

=== modified file 'storage/innobase/handler/ha_innodb.h'
--- a/storage/innobase/handler/ha_innodb.h	revid:georgi.kodinov@stripped
+++ b/storage/innobase/handler/ha_innodb.h	revid:annamalai.gurusami@stripped
@@ -139,6 +139,7 @@ class ha_innobase: public handler
 	const key_map* keys_to_use_for_scanning();
 
 	int open(const char *name, int mode, uint test_if_locked);
+	handler* clone(const char *name, MEM_ROOT *mem_root);
 	int close(void);
 	double scan_time();
 	double read_time(uint index, uint ranges, ha_rows rows);

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-trunk branch (annamalai.gurusami:3809 to 3810) Annamalai Gurusami10 May