List:Commits« Previous MessageNext Message »
From:vasil.dimov Date:June 17 2010 11:05am
Subject:bzr commit into mysql-next-mr-bugfixing branch (vasil.dimov:3249)
View as plain text  
#At file:///usr/local/devel/bzrroot/server/mysql-next-mr-bugfixing/ based on revid:alik@stripped

 3249 Vasil Dimov	2010-06-17 [merge]
      Merge mysql-trunk-bugfixing -> mysql-next-mr-bugfixing

    renamed:
      mysql-test/r/innodb-autoinc-optimize.result => mysql-test/suite/innodb/r/innodb-autoinc-optimize.result
      mysql-test/r/innodb-ucs2.result => mysql-test/suite/innodb/r/innodb-ucs2.result
      mysql-test/r/innodb_autoinc_lock_mode_zero.result => mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result
      mysql-test/r/innodb_bug30919.result => mysql-test/suite/innodb/r/innodb_bug30919.result
      mysql-test/r/innodb_bug42419.result => mysql-test/suite/innodb/r/innodb_bug42419.result
      mysql-test/r/innodb_gis.result => mysql-test/suite/innodb/r/innodb_gis.result
      mysql-test/r/innodb_lock_wait_timeout_1.result => mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result
      mysql-test/r/innodb_mysql.result => mysql-test/suite/innodb/r/innodb_mysql.result
      mysql-test/r/innodb_mysql_rbk.result => mysql-test/suite/innodb/r/innodb_mysql_rbk.result
      mysql-test/r/innodb_notembedded.result => mysql-test/suite/innodb/r/innodb_notembedded.result
      mysql-test/r/innodb_timeout_rollback.result => mysql-test/suite/innodb/r/innodb_timeout_rollback.result
      mysql-test/t/innodb-autoinc-optimize.test => mysql-test/suite/innodb/t/innodb-autoinc-optimize.test
      mysql-test/t/innodb-ucs2.test => mysql-test/suite/innodb/t/innodb-ucs2.test
      mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt => mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt
      mysql-test/t/innodb_autoinc_lock_mode_zero.test => mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test
      mysql-test/t/innodb_bug30919-master.opt => mysql-test/suite/innodb/t/innodb_bug30919-master.opt
      mysql-test/t/innodb_bug30919.test => mysql-test/suite/innodb/t/innodb_bug30919.test
      mysql-test/t/innodb_bug42419.test => mysql-test/suite/innodb/t/innodb_bug42419.test
      mysql-test/t/innodb_gis.test => mysql-test/suite/innodb/t/innodb_gis.test
      mysql-test/t/innodb_lock_wait_timeout_1-master.opt => mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt
      mysql-test/t/innodb_lock_wait_timeout_1.test => mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test
      mysql-test/t/innodb_mysql-master.opt => mysql-test/suite/innodb/t/innodb_mysql-master.opt
      mysql-test/t/innodb_mysql.test => mysql-test/suite/innodb/t/innodb_mysql.test
      mysql-test/t/innodb_mysql_rbk-master.opt => mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt
      mysql-test/t/innodb_mysql_rbk.test => mysql-test/suite/innodb/t/innodb_mysql_rbk.test
      mysql-test/t/innodb_notembedded.test => mysql-test/suite/innodb/t/innodb_notembedded.test
      mysql-test/t/innodb_timeout_rollback-master.opt => mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt
      mysql-test/t/innodb_timeout_rollback.test => mysql-test/suite/innodb/t/innodb_timeout_rollback.test
    modified:
      mysql-test/suite/innodb/r/innodb-index.result
      mysql-test/suite/innodb/r/innodb-zip.result
      mysql-test/suite/innodb/r/innodb_bug47167.result
      mysql-test/suite/innodb/r/innodb_bug52745.result
      mysql-test/suite/innodb/r/innodb_bug53591.result
      mysql-test/suite/innodb/r/innodb_file_format.result
      mysql-test/suite/innodb/t/disabled.def
      mysql-test/suite/innodb/t/innodb-autoinc-44030.test
      mysql-test/suite/innodb/t/innodb-autoinc.test
      mysql-test/suite/innodb/t/innodb-index.test
      mysql-test/suite/innodb/t/innodb-zip.test
      mysql-test/suite/innodb/t/innodb_bug36172.test
      mysql-test/suite/innodb/t/innodb_bug47167.test
      mysql-test/suite/innodb/t/innodb_bug52745.test
      mysql-test/suite/innodb/t/innodb_bug53591.test
      mysql-test/suite/innodb/t/innodb_file_format.test
      mysql-test/suite/sys_vars/r/all_vars.result
      mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
      mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
      storage/innobase/buf/buf0buf.c
      storage/innobase/dict/dict0load.c
      storage/innobase/handler/ha_innodb.cc
      storage/innobase/include/dict0mem.h
      storage/innobase/include/srv0srv.h
      storage/innobase/row/row0sel.c
      storage/innobase/srv/srv0srv.c
      storage/innobase/srv/srv0start.c
      storage/innobase/trx/trx0sys.c
      mysql-test/suite/innodb/r/innodb_mysql.result
      mysql-test/suite/innodb/t/innodb_mysql.test
=== renamed file 'mysql-test/r/innodb-autoinc-optimize.result' => 'mysql-test/suite/innodb/r/innodb-autoinc-optimize.result'
=== modified file 'mysql-test/suite/innodb/r/innodb-index.result'
--- a/mysql-test/suite/innodb/r/innodb-index.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb-index.result	revid:vasil.dimov@stripped
@@ -920,7 +920,7 @@ create index t1u on t1 (u(1));
 drop table t1;
 set global innodb_file_per_table=0;
 set global innodb_file_format=Antelope;
-set global innodb_file_format_check=Antelope;
+set global innodb_file_format_max=Antelope;
 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
 CREATE TABLE t1(

=== renamed file 'mysql-test/r/innodb-ucs2.result' => 'mysql-test/suite/innodb/r/innodb-ucs2.result'
=== modified file 'mysql-test/suite/innodb/r/innodb-zip.result'
--- a/mysql-test/suite/innodb/r/innodb-zip.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb-zip.result	revid:vasil.dimov@stripped
@@ -397,25 +397,25 @@ set global innodb_file_per_table=0;
 set global innodb_file_format=Antelope;
 set global innodb_file_per_table=on;
 set global innodb_file_format=`Barracuda`;
-set global innodb_file_format_check=`Antelope`;
+set global innodb_file_format_max=`Antelope`;
 create table normal_table (
 c1 int
 ) engine = innodb;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Antelope
 create table zip_table (
 c1 int
 ) engine = innodb key_block_size = 8;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Barracuda
-set global innodb_file_format_check=`Antelope`;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+set global innodb_file_format_max=`Antelope`;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Antelope
 show table status;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Barracuda
 drop table normal_table, zip_table;

=== renamed file 'mysql-test/r/innodb_autoinc_lock_mode_zero.result' => 'mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result'
=== renamed file 'mysql-test/r/innodb_bug30919.result' => 'mysql-test/suite/innodb/r/innodb_bug30919.result'
=== renamed file 'mysql-test/r/innodb_bug42419.result' => 'mysql-test/suite/innodb/r/innodb_bug42419.result'
=== modified file 'mysql-test/suite/innodb/r/innodb_bug47167.result'
--- a/mysql-test/suite/innodb/r/innodb_bug47167.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb_bug47167.result	revid:vasil.dimov@stripped
@@ -1,24 +1,24 @@
-set @old_innodb_file_format_check=@@innodb_file_format_check;
-select @old_innodb_file_format_check;
-@old_innodb_file_format_check
+set @old_innodb_file_format_max=@@innodb_file_format_max;
+select @old_innodb_file_format_max;
+@old_innodb_file_format_max
 Antelope
-set global innodb_file_format_check = Barracuda;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+set global innodb_file_format_max = Barracuda;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Barracuda
-set global innodb_file_format_check = DEFAULT;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
-Barracuda
-set global innodb_file_format_check = @old_innodb_file_format_check;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+set global innodb_file_format_max = DEFAULT;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
+Antelope
+set global innodb_file_format_max = @old_innodb_file_format_max;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Antelope
-set global innodb_file_format_check = cheetah;
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
-set global innodb_file_format_check = Bear;
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Bear'
-set global innodb_file_format_check = on;
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'ON'
-set global innodb_file_format_check = off;
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'off'
+set global innodb_file_format_max = cheetah;
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
+set global innodb_file_format_max = Bear;
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Bear'
+set global innodb_file_format_max = on;
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'ON'
+set global innodb_file_format_max = off;
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'off'

=== modified file 'mysql-test/suite/innodb/r/innodb_bug52745.result'
--- a/mysql-test/suite/innodb/r/innodb_bug52745.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb_bug52745.result	revid:vasil.dimov@stripped
@@ -126,5 +126,5 @@ Warning	1265	Data truncated for column '
 Warning	1264	Out of range value for column 'col84' at row 1
 DROP TABLE bug52745;
 SET GLOBAL innodb_file_format=Antelope;
-SET GLOBAL innodb_file_format_check=Antelope;
+SET GLOBAL innodb_file_format_max=Antelope;
 SET GLOBAL innodb_file_per_table=0;

=== modified file 'mysql-test/suite/innodb/r/innodb_bug53591.result'
--- a/mysql-test/suite/innodb/r/innodb_bug53591.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb_bug53591.result	revid:vasil.dimov@stripped
@@ -12,5 +12,5 @@ Error	1118	Row size too large. The maxim
 Error	1030	Got error 139 from storage engine
 DROP TABLE bug53591;
 SET GLOBAL innodb_file_format=Antelope;
-SET GLOBAL innodb_file_format_check=Antelope;
+SET GLOBAL innodb_file_format_max=Antelope;
 SET GLOBAL innodb_file_per_table=0;

=== modified file 'mysql-test/suite/innodb/r/innodb_file_format.result'
--- a/mysql-test/suite/innodb/r/innodb_file_format.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb_file_format.result	revid:vasil.dimov@stripped
@@ -3,6 +3,9 @@ select @@innodb_file_format;
 Antelope
 select @@innodb_file_format_check;
 @@innodb_file_format_check
+1
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Antelope
 set global innodb_file_format=antelope;
 set global innodb_file_format=barracuda;
@@ -22,22 +25,26 @@ ERROR 42000: Variable 'innodb_file_forma
 select @@innodb_file_format;
 @@innodb_file_format
 Antelope
-set global innodb_file_format_check=antelope;
-set global innodb_file_format_check=barracuda;
-set global innodb_file_format_check=cheetah;
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
-select @@innodb_file_format_check;
-@@innodb_file_format_check
-Barracuda
-set global innodb_file_format_check=default;
-select @@innodb_file_format_check;
-@@innodb_file_format_check
+set global innodb_file_format_max=antelope;
+set global innodb_file_format_max=barracuda;
+set global innodb_file_format_max=cheetah;
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
+select @@innodb_file_format_max;
+@@innodb_file_format_max
 Barracuda
+set global innodb_file_format_max=default;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
+Antelope
 set global innodb_file_format=on;
 ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
 set global innodb_file_format=off;
 ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
-select @@innodb_file_format_check;
-@@innodb_file_format_check
-Barracuda
-set global innodb_file_format_check=antelope;
+select @@innodb_file_format_max;
+@@innodb_file_format_max
+Antelope
+set global innodb_file_format_max=antelope;
+set global innodb_file_format_check=off;
+ERROR HY000: Variable 'innodb_file_format_check' is a read only variable
+SET GLOBAL innodb_file_format=Antelope;
+SET GLOBAL innodb_file_format_max=Antelope;

=== renamed file 'mysql-test/r/innodb_gis.result' => 'mysql-test/suite/innodb/r/innodb_gis.result'
=== renamed file 'mysql-test/r/innodb_lock_wait_timeout_1.result' => 'mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result'
=== renamed file 'mysql-test/r/innodb_mysql.result' => 'mysql-test/suite/innodb/r/innodb_mysql.result'
--- a/mysql-test/r/innodb_mysql.result	revid:alik@stripped
+++ b/mysql-test/suite/innodb/r/innodb_mysql.result	revid:vasil.dimov@stripped
@@ -2414,6 +2414,18 @@ id	select_type	table	type	possible_keys	
 1	SIMPLE	t2	ALL	NULL	NULL	NULL	NULL	3	Using where
 DROP TABLE t1,t2;
 #
+# Bug#38999 valgrind warnings for update statement in function compare_record()
+#
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+SELECT * FROM t1 WHERE a = 2;
+a
+2
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+DROP TABLE t1,t2;
+#
 # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
 #
 CREATE TABLE t1 (a INT, b INT, c INT, d INT,

=== renamed file 'mysql-test/r/innodb_mysql_rbk.result' => 'mysql-test/suite/innodb/r/innodb_mysql_rbk.result'
=== renamed file 'mysql-test/r/innodb_notembedded.result' => 'mysql-test/suite/innodb/r/innodb_notembedded.result'
=== renamed file 'mysql-test/r/innodb_timeout_rollback.result' => 'mysql-test/suite/innodb/r/innodb_timeout_rollback.result'
=== modified file 'mysql-test/suite/innodb/t/disabled.def'
--- a/mysql-test/suite/innodb/t/disabled.def	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/disabled.def	revid:vasil.dimov@stripped
@@ -9,4 +9,3 @@
 #  Do not use any TAB characters for whitespace.
 #
 ##############################################################################
-innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings

=== modified file 'mysql-test/suite/innodb/t/innodb-autoinc-44030.test'
--- a/mysql-test/suite/innodb/t/innodb-autoinc-44030.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb-autoinc-44030.test	revid:vasil.dimov@stripped
@@ -2,7 +2,7 @@
 # embedded server ignores 'delayed', so skip this
 -- source include/not_embedded.inc
 
-let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
+let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
 
 --disable_warnings
 drop table if exists t1;
@@ -40,4 +40,4 @@ DROP TABLE t1;
 #
 
 -- disable_query_log
-eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
+eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;

=== renamed file 'mysql-test/t/innodb-autoinc-optimize.test' => 'mysql-test/suite/innodb/t/innodb-autoinc-optimize.test'
=== modified file 'mysql-test/suite/innodb/t/innodb-autoinc.test'
--- a/mysql-test/suite/innodb/t/innodb-autoinc.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb-autoinc.test	revid:vasil.dimov@stripped
@@ -2,7 +2,7 @@
 # embedded server ignores 'delayed', so skip this
 -- source include/not_embedded.inc
 
-let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
+let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
 
 --disable_warnings
 drop table if exists t1;
@@ -671,4 +671,4 @@ DROP TABLE t1;
 #
 
 -- disable_query_log
-eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
+eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;

=== modified file 'mysql-test/suite/innodb/t/innodb-index.test'
--- a/mysql-test/suite/innodb/t/innodb-index.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb-index.test	revid:vasil.dimov@stripped
@@ -2,7 +2,7 @@
 
 let $MYSQLD_DATADIR= `select @@datadir`;
 
-let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
+let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
 
 create table t1(a int not null, b int, c char(10) not null, d varchar(20)) engine = innodb;
 insert into t1 values (5,5,'oo','oo'),(4,4,'tr','tr'),(3,4,'ad','ad'),(2,3,'ak','ak');
@@ -403,7 +403,7 @@ create index t1u on t1 (u(1));
 drop table t1;
 eval set global innodb_file_per_table=$per_table;
 eval set global innodb_file_format=$format;
-eval set global innodb_file_format_check=$format;
+eval set global innodb_file_format_max=$format;
 
 #
 # Test to check whether CREATE INDEX handles implicit foreign key
@@ -550,4 +550,4 @@ DROP TABLE t1;
 #
 
 -- disable_query_log
-eval SET GLOBAL innodb_file_format_check=$innodb_file_format_check_orig;
+eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;

=== renamed file 'mysql-test/t/innodb-ucs2.test' => 'mysql-test/suite/innodb/t/innodb-ucs2.test'
=== modified file 'mysql-test/suite/innodb/t/innodb-zip.test'
--- a/mysql-test/suite/innodb/t/innodb-zip.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb-zip.test	revid:vasil.dimov@stripped
@@ -2,7 +2,7 @@
 
 let $per_table=`select @@innodb_file_per_table`;
 let $format=`select @@innodb_file_format`;
-let $innodb_file_format_check_orig=`select @@innodb_file_format_check`;
+let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
 set global innodb_file_per_table=off;
 set global innodb_file_format=`0`;
 
@@ -316,21 +316,21 @@ eval set global innodb_file_format=$form
 -- disable_info
 set global innodb_file_per_table=on;
 set global innodb_file_format=`Barracuda`;
-set global innodb_file_format_check=`Antelope`;
+set global innodb_file_format_max=`Antelope`;
 create table normal_table (
   c1 int
 ) engine = innodb;
-select @@innodb_file_format_check;
+select @@innodb_file_format_max;
 create table zip_table (
   c1 int
 ) engine = innodb key_block_size = 8;
-select @@innodb_file_format_check;
-set global innodb_file_format_check=`Antelope`;
-select @@innodb_file_format_check;
+select @@innodb_file_format_max;
+set global innodb_file_format_max=`Antelope`;
+select @@innodb_file_format_max;
 -- disable_result_log
 show table status;
 -- enable_result_log
-select @@innodb_file_format_check;
+select @@innodb_file_format_max;
 drop table normal_table, zip_table;
 -- disable_result_log
 
@@ -341,4 +341,4 @@ drop table normal_table, zip_table;
 -- disable_query_log
 eval set global innodb_file_format=$format;
 eval set global innodb_file_per_table=$per_table;
-eval set global innodb_file_format_check=$innodb_file_format_check_orig;
+eval set global innodb_file_format_max=$innodb_file_format_max_orig;

=== renamed file 'mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt' => 'mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt'
=== renamed file 'mysql-test/t/innodb_autoinc_lock_mode_zero.test' => 'mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test'
=== renamed file 'mysql-test/t/innodb_bug30919-master.opt' => 'mysql-test/suite/innodb/t/innodb_bug30919-master.opt'
=== renamed file 'mysql-test/t/innodb_bug30919.test' => 'mysql-test/suite/innodb/t/innodb_bug30919.test'
=== modified file 'mysql-test/suite/innodb/t/innodb_bug36172.test'
--- a/mysql-test/suite/innodb/t/innodb_bug36172.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_bug36172.test	revid:vasil.dimov@stripped
@@ -15,7 +15,7 @@ SET storage_engine=InnoDB;
 -- disable_result_log
 
 let $file_format=`select @@innodb_file_format`;
-let $file_format_check=`select @@innodb_file_format_check`;
+let $file_format_max=`select @@innodb_file_format_max`;
 let $file_per_table=`select @@innodb_file_per_table`;
 SET GLOBAL innodb_file_format='Barracuda';
 SET GLOBAL innodb_file_per_table=on;
@@ -28,5 +28,5 @@ INSERT IGNORE INTO `table0` SET `col19` 
 CHECK TABLE table0 EXTENDED;
 DROP TABLE table0;
 EVAL SET GLOBAL innodb_file_format=$file_format;
-EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
+EVAL SET GLOBAL innodb_file_format_max=$file_format_max;
 EVAL SET GLOBAL innodb_file_per_table=$file_per_table;

=== renamed file 'mysql-test/t/innodb_bug42419.test' => 'mysql-test/suite/innodb/t/innodb_bug42419.test'
=== modified file 'mysql-test/suite/innodb/t/innodb_bug47167.test'
--- a/mysql-test/suite/innodb/t/innodb_bug47167.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_bug47167.test	revid:vasil.dimov@stripped
@@ -1,45 +1,44 @@
-# This is the unit test for bug *47167.
-# It tests setting the global variable
-# "innodb_file_format_check" with a
-# user-Defined Variable.
+# This is the unit test for bug #47167.
+# It tests setting the global variable "innodb_file_format_max" (
+# originally "innodb_file_format_check") with a user-Defined Variable.
 
 --source include/have_innodb.inc
 
-# Save the value (Antelope) in 'innodb_file_format_check' to
-# 'old_innodb_file_format_check'
-set @old_innodb_file_format_check=@@innodb_file_format_check;
+# Save the value (Antelope) in 'innodb_file_format_max' to
+# 'old_innodb_file_format_max'
+set @old_innodb_file_format_max=@@innodb_file_format_max;
 
-# @old_innodb_file_format_check shall have the value of 'Antelope'
-select @old_innodb_file_format_check;
+# @old_innodb_file_format_max shall have the value of 'Antelope'
+select @old_innodb_file_format_max;
 
-# Reset the value in 'innodb_file_format_check' to 'Barracuda'
-set global innodb_file_format_check = Barracuda;
+# Reset the value in 'innodb_file_format_max' to 'Barracuda'
+set global innodb_file_format_max = Barracuda;
 
-select @@innodb_file_format_check;
+select @@innodb_file_format_max;
 
-# Set 'innodb_file_format_check' to its default value, which
+# Set 'innodb_file_format_max' to its default value, which
 # is the latest file format supported in the current release.
-set global innodb_file_format_check = DEFAULT;
+set global innodb_file_format_max = DEFAULT;
 
-select @@innodb_file_format_check;
+select @@innodb_file_format_max;
 
-# Put the saved value back to 'innodb_file_format_check'
-set global innodb_file_format_check = @old_innodb_file_format_check;
+# Put the saved value back to 'innodb_file_format_max'
+set global innodb_file_format_max = @old_innodb_file_format_max;
 
-# Check whether 'innodb_file_format_check' get its original value.
-select @@innodb_file_format_check;
+# Check whether 'innodb_file_format_max' get its original value.
+select @@innodb_file_format_max;
 
 # Following are negative tests, all should fail.
 --disable_warnings
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check = cheetah;
+set global innodb_file_format_max = cheetah;
 
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check = Bear;
+set global innodb_file_format_max = Bear;
 
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check = on;
+set global innodb_file_format_max = on;
 
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check = off;
+set global innodb_file_format_max = off;
 --enable_warnings

=== modified file 'mysql-test/suite/innodb/t/innodb_bug52745.test'
--- a/mysql-test/suite/innodb/t/innodb_bug52745.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_bug52745.test	revid:vasil.dimov@stripped
@@ -1,7 +1,7 @@
 -- source include/have_innodb.inc
 
 let $file_format=`select @@innodb_file_format`;
-let $file_format_check=`select @@innodb_file_format_check`;
+let $file_format_max=`select @@innodb_file_format_max`;
 let $file_per_table=`select @@innodb_file_per_table`;
 SET GLOBAL innodb_file_format='Barracuda';
 SET GLOBAL innodb_file_per_table=on;
@@ -105,5 +105,5 @@ SHOW WARNINGS;
 DROP TABLE bug52745;
 
 EVAL SET GLOBAL innodb_file_format=$file_format;
-EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
+EVAL SET GLOBAL innodb_file_format_max=$file_format_max;
 EVAL SET GLOBAL innodb_file_per_table=$file_per_table;

=== modified file 'mysql-test/suite/innodb/t/innodb_bug53591.test'
--- a/mysql-test/suite/innodb/t/innodb_bug53591.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_bug53591.test	revid:vasil.dimov@stripped
@@ -1,7 +1,7 @@
 -- source include/have_innodb.inc
 
 let $file_format=`select @@innodb_file_format`;
-let $file_format_check=`select @@innodb_file_format_check`;
+let $file_format_max=`select @@innodb_file_format_max`;
 let $file_per_table=`select @@innodb_file_per_table`;
 
 SET GLOBAL innodb_file_format='Barracuda';
@@ -18,5 +18,5 @@ SHOW WARNINGS;
 DROP TABLE bug53591;
 
 EVAL SET GLOBAL innodb_file_format=$file_format;
-EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
+EVAL SET GLOBAL innodb_file_format_max=$file_format_max;
 EVAL SET GLOBAL innodb_file_per_table=$file_per_table;

=== modified file 'mysql-test/suite/innodb/t/innodb_file_format.test'
--- a/mysql-test/suite/innodb/t/innodb_file_format.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_file_format.test	revid:vasil.dimov@stripped
@@ -1,7 +1,11 @@
 -- source include/have_innodb.inc
 
+let $innodb_file_format_orig=`select @@innodb_file_format`;
+let $innodb_file_format_max_orig=`select @@innodb_file_format_max`;
+
 select @@innodb_file_format;
 select @@innodb_file_format_check;
+select @@innodb_file_format_max;
 set global innodb_file_format=antelope;
 set global innodb_file_format=barracuda;
 --error ER_WRONG_VALUE_FOR_VAR
@@ -14,16 +18,24 @@ set global innodb_file_format=on;
 --error ER_WRONG_VALUE_FOR_VAR
 set global innodb_file_format=off;
 select @@innodb_file_format;
-set global innodb_file_format_check=antelope;
-set global innodb_file_format_check=barracuda;
+set global innodb_file_format_max=antelope;
+set global innodb_file_format_max=barracuda;
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check=cheetah;
-select @@innodb_file_format_check;
-set global innodb_file_format_check=default;
-select @@innodb_file_format_check;
+set global innodb_file_format_max=cheetah;
+select @@innodb_file_format_max;
+set global innodb_file_format_max=default;
+select @@innodb_file_format_max;
 --error ER_WRONG_VALUE_FOR_VAR
 set global innodb_file_format=on;
 --error ER_WRONG_VALUE_FOR_VAR
 set global innodb_file_format=off;
-select @@innodb_file_format_check;
-set global innodb_file_format_check=antelope;
+select @@innodb_file_format_max;
+set global innodb_file_format_max=antelope;
+
+# innodb_file_format_check is read only variable, can be
+# set as server startup parameter
+--error ER_INCORRECT_GLOBAL_LOCAL_VAR
+set global innodb_file_format_check=off;
+
+eval SET GLOBAL innodb_file_format=$innodb_file_format_orig;
+eval SET GLOBAL innodb_file_format_max=$innodb_file_format_max_orig;

=== renamed file 'mysql-test/t/innodb_gis.test' => 'mysql-test/suite/innodb/t/innodb_gis.test'
=== renamed file 'mysql-test/t/innodb_lock_wait_timeout_1-master.opt' => 'mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt'
=== renamed file 'mysql-test/t/innodb_lock_wait_timeout_1.test' => 'mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test'
=== renamed file 'mysql-test/t/innodb_mysql-master.opt' => 'mysql-test/suite/innodb/t/innodb_mysql-master.opt'
=== renamed file 'mysql-test/t/innodb_mysql.test' => 'mysql-test/suite/innodb/t/innodb_mysql.test'
--- a/mysql-test/t/innodb_mysql.test	revid:alik@stripped
+++ b/mysql-test/suite/innodb/t/innodb_mysql.test	revid:vasil.dimov@stripped
@@ -649,6 +649,19 @@ EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT 
 
 DROP TABLE t1,t2;
 
+--echo #
+--echo # Bug#38999 valgrind warnings for update statement in function compare_record()
+--echo #
+
+CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
+CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
+INSERT INTO t1 values (1),(2),(3),(4),(5);
+INSERT INTO t2 values (1);
+
+SELECT * FROM t1 WHERE a = 2;
+UPDATE t1,t2 SET t1.a = t1.a + 100 WHERE t1.a = 1;
+
+DROP TABLE t1,t2;
 
 --echo #
 --echo # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))

=== renamed file 'mysql-test/t/innodb_mysql_rbk-master.opt' => 'mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt'
=== renamed file 'mysql-test/t/innodb_mysql_rbk.test' => 'mysql-test/suite/innodb/t/innodb_mysql_rbk.test'
=== renamed file 'mysql-test/t/innodb_notembedded.test' => 'mysql-test/suite/innodb/t/innodb_notembedded.test'
=== renamed file 'mysql-test/t/innodb_timeout_rollback-master.opt' => 'mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt'
=== renamed file 'mysql-test/t/innodb_timeout_rollback.test' => 'mysql-test/suite/innodb/t/innodb_timeout_rollback.test'
=== modified file 'mysql-test/suite/sys_vars/r/all_vars.result'
--- a/mysql-test/suite/sys_vars/r/all_vars.result	revid:alik@stripped
+++ b/mysql-test/suite/sys_vars/r/all_vars.result	revid:vasil.dimov@stripped
@@ -10,5 +10,7 @@ There should be *no* long test name list
 select variable_name as `There should be *no* variables listed below:` from t2
 left join t1 on variable_name=test_name where test_name is null;
 There should be *no* variables listed below:
+INNODB_FILE_FORMAT_MAX
+INNODB_FILE_FORMAT_MAX
 drop table t1;
 drop table t2;

=== modified file 'mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result'
--- a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result	revid:alik@stripped
+++ b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result	revid:vasil.dimov@stripped
@@ -1,59 +1,59 @@
-SET @start_global_value = @@global.innodb_file_format_check;
+SET @start_global_value = @@global.innodb_file_format_max;
 SELECT @start_global_value;
 @start_global_value
 Antelope
 Valid values are 'Antelope' and 'Barracuda' 
-select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
-@@global.innodb_file_format_check in ('Antelope', 'Barracuda')
+select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
+@@global.innodb_file_format_max in ('Antelope', 'Barracuda')
 1
-select @@global.innodb_file_format_check;
-@@global.innodb_file_format_check
+select @@global.innodb_file_format_max;
+@@global.innodb_file_format_max
 Antelope
-select @@session.innodb_file_format_check;
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
-show global variables like 'innodb_file_format_check';
+select @@session.innodb_file_format_max;
+ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable
+show global variables like 'innodb_file_format_max';
 Variable_name	Value
-innodb_file_format_check	Antelope
-show session variables like 'innodb_file_format_check';
+innodb_file_format_max	Antelope
+show session variables like 'innodb_file_format_max';
 Variable_name	Value
-innodb_file_format_check	Antelope
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+innodb_file_format_max	Antelope
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Antelope
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+INNODB_FILE_FORMAT_MAX	Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Antelope
-set global innodb_file_format_check='Antelope';
-select @@global.innodb_file_format_check;
-@@global.innodb_file_format_check
+INNODB_FILE_FORMAT_MAX	Antelope
+set global innodb_file_format_max='Antelope';
+select @@global.innodb_file_format_max;
+@@global.innodb_file_format_max
 Antelope
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Antelope
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+INNODB_FILE_FORMAT_MAX	Antelope
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Antelope
-set @@global.innodb_file_format_check='Barracuda';
-select @@global.innodb_file_format_check;
-@@global.innodb_file_format_check
+INNODB_FILE_FORMAT_MAX	Antelope
+set @@global.innodb_file_format_max='Barracuda';
+select @@global.innodb_file_format_max;
+@@global.innodb_file_format_max
 Barracuda
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Barracuda
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+INNODB_FILE_FORMAT_MAX	Barracuda
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
 VARIABLE_NAME	VARIABLE_VALUE
-INNODB_FILE_FORMAT_CHECK	Barracuda
-set session innodb_file_format_check='Salmon';
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
-set @@session.innodb_file_format_check='Salmon';
-ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
-set global innodb_file_format_check=1.1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
-set global innodb_file_format_check=1e1;
-ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
-set global innodb_file_format_check='Salmon';
-ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Salmon'
-SET @@global.innodb_file_format_check = @start_global_value;
-SELECT @@global.innodb_file_format_check;
-@@global.innodb_file_format_check
+INNODB_FILE_FORMAT_MAX	Barracuda
+set session innodb_file_format_max='Salmon';
+ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
+set @@session.innodb_file_format_max='Salmon';
+ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
+set global innodb_file_format_max=1.1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
+set global innodb_file_format_max=1e1;
+ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
+set global innodb_file_format_max='Salmon';
+ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon'
+SET @@global.innodb_file_format_max = @start_global_value;
+SELECT @@global.innodb_file_format_max;
+@@global.innodb_file_format_max
 Antelope

=== modified file 'mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test'
--- a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test	revid:alik@stripped
+++ b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test	revid:vasil.dimov@stripped
@@ -5,51 +5,51 @@
 
 --source include/have_innodb.inc
 
-SET @start_global_value = @@global.innodb_file_format_check;
+SET @start_global_value = @@global.innodb_file_format_max;
 SELECT @start_global_value;
 
 #
 # exists as global only
 #
 --echo Valid values are 'Antelope' and 'Barracuda' 
-select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
-select @@global.innodb_file_format_check;
+select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
+select @@global.innodb_file_format_max;
 --error ER_INCORRECT_GLOBAL_LOCAL_VAR
-select @@session.innodb_file_format_check;
-show global variables like 'innodb_file_format_check';
-show session variables like 'innodb_file_format_check';
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+select @@session.innodb_file_format_max;
+show global variables like 'innodb_file_format_max';
+show session variables like 'innodb_file_format_max';
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
 
 #
 # show that it's writable
 #
-set global innodb_file_format_check='Antelope';
-select @@global.innodb_file_format_check;
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
-set @@global.innodb_file_format_check='Barracuda';
-select @@global.innodb_file_format_check;
-select * from information_schema.global_variables where variable_name='innodb_file_format_check';
-select * from information_schema.session_variables where variable_name='innodb_file_format_check';
+set global innodb_file_format_max='Antelope';
+select @@global.innodb_file_format_max;
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
+set @@global.innodb_file_format_max='Barracuda';
+select @@global.innodb_file_format_max;
+select * from information_schema.global_variables where variable_name='innodb_file_format_max';
+select * from information_schema.session_variables where variable_name='innodb_file_format_max';
 --error ER_GLOBAL_VARIABLE
-set session innodb_file_format_check='Salmon';
+set session innodb_file_format_max='Salmon';
 --error ER_GLOBAL_VARIABLE
-set @@session.innodb_file_format_check='Salmon';
+set @@session.innodb_file_format_max='Salmon';
 
 #
 # incorrect types
 #
 --error ER_WRONG_TYPE_FOR_VAR
-set global innodb_file_format_check=1.1;
+set global innodb_file_format_max=1.1;
 --error ER_WRONG_TYPE_FOR_VAR
-set global innodb_file_format_check=1e1;
+set global innodb_file_format_max=1e1;
 --error ER_WRONG_VALUE_FOR_VAR
-set global innodb_file_format_check='Salmon';
+set global innodb_file_format_max='Salmon';
 
 #
 # Cleanup
 #
 
-SET @@global.innodb_file_format_check = @start_global_value;
-SELECT @@global.innodb_file_format_check;
+SET @@global.innodb_file_format_max = @start_global_value;
+SELECT @@global.innodb_file_format_max;

=== modified file 'storage/innobase/buf/buf0buf.c'
--- a/storage/innobase/buf/buf0buf.c	revid:alik@stripped
+++ b/storage/innobase/buf/buf0buf.c	revid:vasil.dimov@stripped
@@ -2957,7 +2957,7 @@ wait_until_unfixed:
 
 		block->page.buf_fix_count = 1;
 		buf_block_set_io_fix(block, BUF_IO_READ);
-		rw_lock_x_lock(&block->lock);
+		rw_lock_x_lock_func(&block->lock, 0, file, line);
 
 		UNIV_MEM_INVALID(bpage, sizeof *bpage);
 

=== modified file 'storage/innobase/dict/dict0load.c'
--- a/storage/innobase/dict/dict0load.c	revid:alik@stripped
+++ b/storage/innobase/dict/dict0load.c	revid:vasil.dimov@stripped
@@ -1694,6 +1694,7 @@ err_exit:
 			/* Try to open the tablespace */
 			if (!fil_open_single_table_tablespace(
 				TRUE, table->space,
+				table->flags == DICT_TF_COMPACT ? 0 :
 				table->flags & ~(~0 << DICT_TF_BITS), name)) {
 				/* We failed to find a sensible
 				tablespace file */

=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc	revid:alik@stripped
+++ b/storage/innobase/handler/ha_innodb.cc	revid:vasil.dimov@stripped
@@ -149,10 +149,10 @@ static char*	innobase_log_group_home_dir
 static char*	innobase_file_format_name		= NULL;
 static char*	innobase_change_buffering		= NULL;
 
-/* Note: This variable can be set to on/off and any of the supported
-file formats in the configuration file, but can only be set to any
-of the supported file formats during runtime. */
-static char*	innobase_file_format_check		= NULL;
+/* The highest file format being used in the database. The value can be
+set by user, however, it will be adjusted to the newer file format if
+a table of such format is created/opened. */
+static char*	innobase_file_format_max		= NULL;
 
 static char*	innobase_file_flush_method		= NULL;
 
@@ -160,6 +160,7 @@ static char*	innobase_file_flush_method	
 values */
 
 static ulong	innobase_fast_shutdown			= 1;
+static my_bool	innobase_file_format_check		= TRUE;
 #ifdef UNIV_LOG_ARCHIVE
 static my_bool	innobase_log_archive			= FALSE;
 static char*	innobase_log_arch_dir			= NULL;
@@ -171,6 +172,7 @@ static my_bool	innobase_rollback_on_time
 static my_bool	innobase_create_status_file		= FALSE;
 static my_bool	innobase_stats_on_metadata		= TRUE;
 
+
 static char*	internal_innobase_data_file_path	= NULL;
 
 static char*	innodb_version_str = (char*) INNODB_VERSION_STR;
@@ -366,22 +368,13 @@ innobase_file_format_name_lookup(
 						name */
 /************************************************************//**
 Validate the file format check config parameters, as a side effect it
-sets the srv_check_file_format_at_startup variable.
-@return	true if one of  "on" or "off" */
-static
-bool
-innobase_file_format_check_on_off(
-/*==============================*/
-	const char*	format_check);		/*!< in: parameter value */
-/************************************************************//**
-Validate the file format check config parameters, as a side effect it
-sets the srv_check_file_format_at_startup variable.
+sets the srv_max_file_format_at_startup variable.
 @return	the format_id if valid config value, otherwise, return -1 */
 static
 int
 innobase_file_format_validate_and_set(
-/*================================*/
-	const char*	format_check);		/*!< in: parameter value */
+/*==================================*/
+	const char*	format_max);		/*!< in: parameter value */
 /****************************************************************//**
 Return alter table flags supported in an InnoDB database. */
 static
@@ -2264,32 +2257,35 @@ mem_free_and_error:
 	innobase_file_format_name is used in the MySQL set variable
 	interface and so can't be const. */
 
-	innobase_file_format_name = 
+	innobase_file_format_name =
 		(char*) trx_sys_file_format_id_to_name(format_id);
 
-	/* Process innobase_file_format_check variable */
-	ut_a(innobase_file_format_check != NULL);
+	/* Check innobase_file_format_check variable */
+	if (!innobase_file_format_check) {
 
-	/* As a side effect it will set srv_check_file_format_at_startup
-	on valid input. First we check for "on"/"off". */
-	if (!innobase_file_format_check_on_off(innobase_file_format_check)) {
-
-		/* Did the user specify a format name that we support ?
-		As a side effect it will update the variable
-		srv_check_file_format_at_startup */
-		if (innobase_file_format_validate_and_set(
-				innobase_file_format_check) < 0) {
-
-			sql_print_error("InnoDB: invalid "
-					"innodb_file_format_check value: "
-					"should be either 'on' or 'off' or "
-					"any value up to %s or its "
-					"equivalent numeric id",
-					trx_sys_file_format_id_to_name(
-						DICT_TF_FORMAT_MAX));
+		/* Set the value to disable checking. */
+		srv_max_file_format_at_startup = DICT_TF_FORMAT_MAX + 1;
 
-			goto mem_free_and_error;
-		}
+	} else {
+
+		/* Set the value to the lowest supported format. */
+		srv_max_file_format_at_startup = DICT_TF_FORMAT_MIN;
+	}
+
+	/* Did the user specify a format name that we support?
+	As a side effect it will update the variable
+	srv_max_file_format_at_startup */
+	if (innobase_file_format_validate_and_set(
+			innobase_file_format_max) < 0) {
+
+		sql_print_error("InnoDB: invalid "
+				"innodb_file_format_max value: "
+				"should be any value up to %s or its "
+				"equivalent numeric id",
+				trx_sys_file_format_id_to_name(
+					DICT_TF_FORMAT_MAX));
+
+		goto mem_free_and_error;
 	}
 
 	if (innobase_change_buffering) {
@@ -2451,7 +2447,7 @@ innobase_change_buffering_inited_ok:
 #endif /* MYSQL_DYNAMIC_PLUGIN */
 
 	/* Get the current high water mark format. */
-	innobase_file_format_check = (char*) trx_sys_file_format_max_get();
+	innobase_file_format_max = (char*) trx_sys_file_format_max_get();
 
 	DBUG_RETURN(FALSE);
 error:
@@ -3836,7 +3832,7 @@ retry:
 		space, if this table has higher file format setting. */
 
 		trx_sys_file_format_max_upgrade(
-			(const char**) &innobase_file_format_check,
+			(const char**) &innobase_file_format_max,
 			dict_table_get_format(prebuilt->table));
 	}
 
@@ -6959,7 +6955,7 @@ ha_innobase::create(
 		space, if this table has higher file format setting. */
 
 		trx_sys_file_format_max_upgrade(
-			(const char**) &innobase_file_format_check,
+			(const char**) &innobase_file_format_max,
 			dict_table_get_format(innobase_table));
 	}
 
@@ -7610,8 +7606,7 @@ innobase_get_mysql_key_number_for_index(
 
 	/* If index does not belong to the table of share structure. Search
 	index->table instead */
-	if (index->table != ib_table
-	    && innobase_strcasecmp(index->table->name, share->table_name)) {
+	if (index->table != ib_table) {
 		i = 0;
 		ind = dict_table_get_first_index(index->table);
 
@@ -10349,49 +10344,21 @@ innobase_file_format_name_lookup(
 }
 
 /************************************************************//**
-Validate the file format check value, is it one of "on" or "off",
-as a side effect it sets the srv_check_file_format_at_startup variable.
-@return	true if config value one of "on" or  "off" */
-static
-bool
-innobase_file_format_check_on_off(
-/*==============================*/
-	const char*	format_check)	/*!< in: parameter value */
-{
-	bool		ret = true;
-
-	if (!innobase_strcasecmp(format_check, "off")) {
-
-		/* Set the value to disable checking. */
-		srv_check_file_format_at_startup = DICT_TF_FORMAT_MAX + 1;
-
-	} else if (!innobase_strcasecmp(format_check, "on")) {
-
-		/* Set the value to the lowest supported format. */
-		srv_check_file_format_at_startup = DICT_TF_FORMAT_51;
-	} else {
-		ret = FALSE;
-	}
-
-	return(ret);
-}
-
-/************************************************************//**
 Validate the file format check config parameters, as a side effect it
-sets the srv_check_file_format_at_startup variable.
+sets the srv_max_file_format_at_startup variable.
 @return the format_id if valid config value, otherwise, return -1 */
 static
 int
 innobase_file_format_validate_and_set(
-/*================================*/
-	const char*	format_check)	/*!< in: parameter value */
+/*==================================*/
+	const char*	format_max)	/*!< in: parameter value */
 {
 	uint		format_id;
 
-	format_id = innobase_file_format_name_lookup(format_check);
+	format_id = innobase_file_format_name_lookup(format_max);
 
 	if (format_id < DICT_TF_FORMAT_MAX + 1) {
-		srv_check_file_format_at_startup = format_id;
+		srv_max_file_format_at_startup = format_id;
 
 		return((int) format_id);
 	} else {
@@ -10479,15 +10446,14 @@ innodb_file_format_name_update(
 	*static_cast<const char**>(var_ptr)
 		= trx_sys_file_format_id_to_name(srv_file_format);
 }
-
 /*************************************************************//**
-Check if valid argument to innodb_file_format_check. This
-function is registered as a callback with MySQL.
+Check if valid argument to innodb_file_format_max. This function
+is registered as a callback with MySQL.
 @return	0 for valid file format */
 static
 int
-innodb_file_format_check_validate(
-/*==============================*/
+innodb_file_format_max_validate(
+/*============================*/
 	THD*				thd,	/*!< in: thread handle */
 	struct st_mysql_sys_var*	var,	/*!< in: pointer to system
 						variable */
@@ -10507,39 +10473,27 @@ innodb_file_format_check_validate(
 
 	if (file_format_input != NULL) {
 
-		/* Check if user set on/off, we want to print a suitable
-		message if they did so. */
-
-		if (innobase_file_format_check_on_off(file_format_input)) {
-			push_warning_printf(thd,
-				MYSQL_ERROR::WARN_LEVEL_WARN,
-				ER_WRONG_ARGUMENTS,
-				"InnoDB: invalid innodb_file_format_check "
-				"value; on/off can only be set at startup or "
-				"in the configuration file");
-		} else {
-			format_id = innobase_file_format_validate_and_set(
-							file_format_input);
+		format_id = innobase_file_format_validate_and_set(
+			file_format_input);
 
-			if (format_id >= 0) {
-				/* Save a pointer to the name in the
-				'file_format_name_map' constant array. */
-				*static_cast<const char**>(save) =
-				    trx_sys_file_format_id_to_name(
-							(uint)format_id);
+		if (format_id >= 0) {
+			/* Save a pointer to the name in the
+			'file_format_name_map' constant array. */
+			*static_cast<const char**>(save) =
+			    trx_sys_file_format_id_to_name(
+						(uint)format_id);
 
-				return(0);
+			return(0);
 
-			} else {
-				push_warning_printf(thd,
-				  MYSQL_ERROR::WARN_LEVEL_WARN,
-				  ER_WRONG_ARGUMENTS,
-				  "InnoDB: invalid innodb_file_format_check "
-				  "value; can be any format up to %s "
-				  "or its equivalent numeric id",
-				  trx_sys_file_format_id_to_name(
-						DICT_TF_FORMAT_MAX));
-			}
+		} else {
+			push_warning_printf(thd,
+			  MYSQL_ERROR::WARN_LEVEL_WARN,
+			  ER_WRONG_ARGUMENTS,
+			  "InnoDB: invalid innodb_file_format_max "
+			  "value; can be any format up to %s "
+			  "or equivalent id of %d",
+			  trx_sys_file_format_id_to_name(DICT_TF_FORMAT_MAX),
+			  DICT_TF_FORMAT_MAX);
 		}
 	}
 
@@ -10548,12 +10502,12 @@ innodb_file_format_check_validate(
 }
 
 /****************************************************************//**
-Update the system variable innodb_file_format_check using the "saved"
+Update the system variable innodb_file_format_max using the "saved"
 value. This function is registered as a callback with MySQL. */
 static
 void
-innodb_file_format_check_update(
-/*============================*/
+innodb_file_format_max_update(
+/*==========================*/
 	THD*				thd,		/*!< in: thread handle */
 	struct st_mysql_sys_var*	var,		/*!< in: pointer to
 							system variable */
@@ -10863,15 +10817,26 @@ static MYSQL_SYSVAR_STR(file_format, inn
   innodb_file_format_name_validate,
   innodb_file_format_name_update, "Antelope");
 
+/* "innobase_file_format_check" decides whether we would continue
+booting the server if the file format stamped on the system
+table space exceeds the maximum file format supported
+by the server. Can be set during server startup at command
+line or configure file, and a read only variable after
+server startup */
+static MYSQL_SYSVAR_BOOL(file_format_check, innobase_file_format_check,
+  PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,
+  "Whether to perform system file format check.",
+  NULL, NULL, TRUE);
+
 /* If a new file format is introduced, the file format
 name needs to be updated accordingly. Please refer to
 file_format_name_map[] defined in trx0sys.c for the next
 file format name. */
-static MYSQL_SYSVAR_STR(file_format_check, innobase_file_format_check,
+static MYSQL_SYSVAR_STR(file_format_max, innobase_file_format_max,
   PLUGIN_VAR_OPCMDARG,
   "The highest file format in the tablespace.",
-  innodb_file_format_check_validate,
-  innodb_file_format_check_update, "Barracuda");
+  innodb_file_format_max_validate,
+  innodb_file_format_max_update, "Antelope");
 
 static MYSQL_SYSVAR_ULONG(flush_log_at_trx_commit, srv_flush_log_at_trx_commit,
   PLUGIN_VAR_OPCMDARG,
@@ -11119,6 +11084,7 @@ static struct st_mysql_sys_var* innobase
   MYSQL_SYSVAR(file_per_table),
   MYSQL_SYSVAR(file_format),
   MYSQL_SYSVAR(file_format_check),
+  MYSQL_SYSVAR(file_format_max),
   MYSQL_SYSVAR(flush_log_at_trx_commit),
   MYSQL_SYSVAR(flush_method),
   MYSQL_SYSVAR(force_recovery),

=== modified file 'storage/innobase/include/dict0mem.h'
--- a/storage/innobase/include/dict0mem.h	revid:alik@stripped
+++ b/storage/innobase/include/dict0mem.h	revid:vasil.dimov@stripped
@@ -88,6 +88,10 @@ combination of types */
 						new BLOB treatment */
 /** Maximum supported file format */
 #define DICT_TF_FORMAT_MAX		DICT_TF_FORMAT_ZIP
+
+/** Minimum supported file format */
+#define DICT_TF_FORMAT_MIN		DICT_TF_FORMAT_51
+
 /* @} */
 #define DICT_TF_BITS			6	/*!< number of flag bits */
 #if (1 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT)) <= DICT_TF_FORMAT_MAX

=== modified file 'storage/innobase/include/srv0srv.h'
--- a/storage/innobase/include/srv0srv.h	revid:alik@stripped
+++ b/storage/innobase/include/srv0srv.h	revid:vasil.dimov@stripped
@@ -101,7 +101,7 @@ extern ulint	srv_file_format;
 /** Whether to check file format during startup.  A value of
 DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE.  The default is to
 set it to the highest format we support. */
-extern ulint	srv_check_file_format_at_startup;
+extern ulint	srv_max_file_format_at_startup;
 /** Place locks to records only i.e. do not use next-key locking except
 on duplicate key checking and foreign key checking */
 extern ibool	srv_locks_unsafe_for_binlog;

=== modified file 'storage/innobase/row/row0sel.c'
--- a/storage/innobase/row/row0sel.c	revid:alik@stripped
+++ b/storage/innobase/row/row0sel.c	revid:vasil.dimov@stripped
@@ -2678,6 +2678,12 @@ row_sel_store_mysql_rec(
 		prebuilt->blob_heap = NULL;
 	}
 
+	/* init null bytes with default values as they might be
+	left uninitialized in some cases and these uninited bytes
+	might be copied into mysql record buffer that leads to
+	valgrind warnings */
+	memcpy(mysql_rec, prebuilt->default_rec, prebuilt->null_bitmap_len);
+
 	for (i = 0; i < prebuilt->n_template; i++) {
 
 		templ = prebuilt->mysql_template + i;

=== modified file 'storage/innobase/srv/srv0srv.c'
--- a/storage/innobase/srv/srv0srv.c	revid:alik@stripped
+++ b/storage/innobase/srv/srv0srv.c	revid:vasil.dimov@stripped
@@ -127,7 +127,7 @@ UNIV_INTERN ulint	srv_file_format = 0;
 /** Whether to check file format during startup.  A value of
 DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE.  The default is to
 set it to the highest format we support. */
-UNIV_INTERN ulint	srv_check_file_format_at_startup = DICT_TF_FORMAT_MAX;
+UNIV_INTERN ulint	srv_max_file_format_at_startup = DICT_TF_FORMAT_MAX;
 
 #if DICT_TF_FORMAT_51
 # error "DICT_TF_FORMAT_51 must be 0!"
@@ -2371,30 +2371,6 @@ loop:
 	OS_THREAD_DUMMY_RETURN;
 }
 
-/******************************************************************//**
-Increment the server activity count. */
-UNIV_INLINE
-void
-srv_inc_activity_count_low(void)
-/*============================*/
-{
-	mutex_enter(&kernel_mutex);
-
-	++srv_activity_count;
-
-	mutex_exit(&kernel_mutex);
-}
-
-/******************************************************************//**
-Increment the server activity count. */
-UNIV_INTERN
-void
-srv_inc_activity_count(void)
-/*========================*/
-{
-	srv_inc_activity_count_low();
-}
-
 /**********************************************************************//**
 Check whether any background thread is active.
 @return FALSE if all are are suspended or have exited. */
@@ -2431,9 +2407,7 @@ void
 srv_active_wake_master_thread(void)
 /*===============================*/
 {
-	ut_ad(!mutex_own(&kernel_mutex));
-
-	srv_inc_activity_count_low();
+	srv_activity_count++;
 
 	if (srv_n_threads_active[SRV_MASTER] == 0) {
 

=== modified file 'storage/innobase/srv/srv0start.c'
--- a/storage/innobase/srv/srv0start.c	revid:alik@stripped
+++ b/storage/innobase/srv/srv0start.c	revid:vasil.dimov@stripped
@@ -1590,7 +1590,7 @@ innobase_start_or_create_for_mysql(void)
 		consistent state, this is REQUIRED for the recovery
 		process to work. */
 		err = trx_sys_file_format_max_check(
-			srv_check_file_format_at_startup);
+			srv_max_file_format_at_startup);
 
 		if (err != DB_SUCCESS) {
 			return(err);

=== modified file 'storage/innobase/trx/trx0sys.c'
--- a/storage/innobase/trx/trx0sys.c	revid:alik@stripped
+++ b/storage/innobase/trx/trx0sys.c	revid:vasil.dimov@stripped
@@ -135,7 +135,7 @@ UNIV_INTERN mysql_pfs_key_t	file_format_
 
 #ifndef UNIV_HOTBACKUP
 /** This is used to track the maximum file format id known to InnoDB. It's
-updated via SET GLOBAL innodb_file_format_check = 'x' or when we open
+updated via SET GLOBAL innodb_file_format_max = 'x' or when we open
 or create a table. */
 static	file_format_t	file_format_max;
 
@@ -1160,7 +1160,7 @@ trx_sys_file_format_max_check(
 	if (format_id == ULINT_UNDEFINED) {
 		/* Format ID was not set. Set it to minimum possible
 		value. */
-		format_id = DICT_TF_FORMAT_51;
+		format_id = DICT_TF_FORMAT_MIN;
 	}
 
 	ut_print_timestamp(stderr);
@@ -1240,7 +1240,7 @@ trx_sys_file_format_tag_init(void)
 
 	/* If format_id is not set then set it to the minimum. */
 	if (format_id == ULINT_UNDEFINED) {
-		trx_sys_file_format_max_set(DICT_TF_FORMAT_51, NULL);
+		trx_sys_file_format_max_set(DICT_TF_FORMAT_MIN, NULL);
 	}
 }
 
@@ -1296,7 +1296,7 @@ trx_sys_file_format_init(void)
 
 	/* We don't need a mutex here, as this function should only
 	be called once at start up. */
-	file_format_max.id = DICT_TF_FORMAT_51;
+	file_format_max.id = DICT_TF_FORMAT_MIN;
 
 	file_format_max.name = trx_sys_file_format_id_to_name(
 		file_format_max.id);


Attachment: [text/bzr-bundle] bzr/vasil.dimov@oracle.com-20100617110432-14kh2zhn190tgxmc.bundle
Thread
bzr commit into mysql-next-mr-bugfixing branch (vasil.dimov:3249) vasil.dimov17 Jun