summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzr-mysql/default.conf6
-rw-r--r--mysql-test/suite/innodb/r/innodb-autoinc-optimize.result (renamed from mysql-test/r/innodb-autoinc-optimize.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb-index.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb-ucs2.result (renamed from mysql-test/r/innodb-ucs2.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb-zip.result20
-rw-r--r--mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result (renamed from mysql-test/r/innodb_autoinc_lock_mode_zero.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug30919.result (renamed from mysql-test/r/innodb_bug30919.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug42419.result (renamed from mysql-test/r/innodb_bug42419.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug47167.result42
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug52745.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug53591.result2
-rw-r--r--mysql-test/suite/innodb/r/innodb_file_format.result35
-rw-r--r--mysql-test/suite/innodb/r/innodb_gis.result (renamed from mysql-test/r/innodb_gis.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result (renamed from mysql-test/r/innodb_lock_wait_timeout_1.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_mysql.result (renamed from mysql-test/r/innodb_mysql.result)12
-rw-r--r--mysql-test/suite/innodb/r/innodb_mysql_rbk.result (renamed from mysql-test/r/innodb_mysql_rbk.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_notembedded.result (renamed from mysql-test/r/innodb_notembedded.result)0
-rw-r--r--mysql-test/suite/innodb/r/innodb_timeout_rollback.result (renamed from mysql-test/r/innodb_timeout_rollback.result)0
-rw-r--r--mysql-test/suite/innodb/t/disabled.def1
-rw-r--r--mysql-test/suite/innodb/t/innodb-autoinc-44030.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb-autoinc-optimize.test (renamed from mysql-test/t/innodb-autoinc-optimize.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb-autoinc.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb-index.test6
-rw-r--r--mysql-test/suite/innodb/t/innodb-ucs2.test (renamed from mysql-test/t/innodb-ucs2.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb-zip.test16
-rw-r--r--mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt (renamed from mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test (renamed from mysql-test/t/innodb_autoinc_lock_mode_zero.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug30919-master.opt (renamed from mysql-test/t/innodb_bug30919-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug30919.test (renamed from mysql-test/t/innodb_bug30919.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug36172.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug42419.test (renamed from mysql-test/t/innodb_bug42419.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug47167.test45
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug52745.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug53591.test4
-rw-r--r--mysql-test/suite/innodb/t/innodb_file_format.test28
-rw-r--r--mysql-test/suite/innodb/t/innodb_gis.test (renamed from mysql-test/t/innodb_gis.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt (renamed from mysql-test/t/innodb_lock_wait_timeout_1-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test (renamed from mysql-test/t/innodb_lock_wait_timeout_1.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql-master.opt (renamed from mysql-test/t/innodb_mysql-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql.test (renamed from mysql-test/t/innodb_mysql.test)13
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt (renamed from mysql-test/t/innodb_mysql_rbk-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_mysql_rbk.test (renamed from mysql-test/t/innodb_mysql_rbk.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_notembedded.test (renamed from mysql-test/t/innodb_notembedded.test)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt (renamed from mysql-test/t/innodb_timeout_rollback-master.opt)0
-rw-r--r--mysql-test/suite/innodb/t/innodb_timeout_rollback.test (renamed from mysql-test/t/innodb_timeout_rollback.test)0
-rw-r--r--mysql-test/suite/sys_vars/r/all_vars.result2
-rw-r--r--mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result84
-rw-r--r--mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test46
-rw-r--r--storage/innobase/buf/buf0buf.c2
-rw-r--r--storage/innobase/dict/dict0load.c1
-rw-r--r--storage/innobase/handler/ha_innodb.cc196
-rw-r--r--storage/innobase/include/dict0mem.h4
-rw-r--r--storage/innobase/include/srv0srv.h2
-rw-r--r--storage/innobase/row/row0sel.c6
-rw-r--r--storage/innobase/srv/srv0srv.c30
-rw-r--r--storage/innobase/srv/srv0start.c2
-rw-r--r--storage/innobase/trx/trx0sys.c8
57 files changed, 313 insertions, 320 deletions
diff --git a/.bzr-mysql/default.conf b/.bzr-mysql/default.conf
index 4eab3d239d0..df9a60f35ad 100644
--- a/.bzr-mysql/default.conf
+++ b/.bzr-mysql/default.conf
@@ -1,4 +1,4 @@
[MYSQL]
-post_commit_to = "commits@lists.mysql.com"
-post_push_to = "commits@lists.mysql.com"
-tree_name = "mysql-trunk-bugfixing"
+post_commit_to = commits@lists.mysql.com, innodb_dev_ww@oracle.com
+post_push_to = commits@lists.mysql.com, innodb_dev_ww@oracle.com
+tree_name = "mysql-trunk-innodb"
diff --git a/mysql-test/r/innodb-autoinc-optimize.result b/mysql-test/suite/innodb/r/innodb-autoinc-optimize.result
index c6da43555b2..c6da43555b2 100644
--- a/mysql-test/r/innodb-autoinc-optimize.result
+++ b/mysql-test/suite/innodb/r/innodb-autoinc-optimize.result
diff --git a/mysql-test/suite/innodb/r/innodb-index.result b/mysql-test/suite/innodb/r/innodb-index.result
index 5d67a06b80f..e43f70a2365 100644
--- a/mysql-test/suite/innodb/r/innodb-index.result
+++ b/mysql-test/suite/innodb/r/innodb-index.result
@@ -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(
diff --git a/mysql-test/r/innodb-ucs2.result b/mysql-test/suite/innodb/r/innodb-ucs2.result
index b6bff7d5f42..b6bff7d5f42 100644
--- a/mysql-test/r/innodb-ucs2.result
+++ b/mysql-test/suite/innodb/r/innodb-ucs2.result
diff --git a/mysql-test/suite/innodb/r/innodb-zip.result b/mysql-test/suite/innodb/r/innodb-zip.result
index bcd3849238f..6c93f4bb6ca 100644
--- a/mysql-test/suite/innodb/r/innodb-zip.result
+++ b/mysql-test/suite/innodb/r/innodb-zip.result
@@ -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;
diff --git a/mysql-test/r/innodb_autoinc_lock_mode_zero.result b/mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result
index 3d016684338..3d016684338 100644
--- a/mysql-test/r/innodb_autoinc_lock_mode_zero.result
+++ b/mysql-test/suite/innodb/r/innodb_autoinc_lock_mode_zero.result
diff --git a/mysql-test/r/innodb_bug30919.result b/mysql-test/suite/innodb/r/innodb_bug30919.result
index 42aa4ff302b..42aa4ff302b 100644
--- a/mysql-test/r/innodb_bug30919.result
+++ b/mysql-test/suite/innodb/r/innodb_bug30919.result
diff --git a/mysql-test/r/innodb_bug42419.result b/mysql-test/suite/innodb/r/innodb_bug42419.result
index f304bb634cb..f304bb634cb 100644
--- a/mysql-test/r/innodb_bug42419.result
+++ b/mysql-test/suite/innodb/r/innodb_bug42419.result
diff --git a/mysql-test/suite/innodb/r/innodb_bug47167.result b/mysql-test/suite/innodb/r/innodb_bug47167.result
index cf8cb0c0d7b..656a4846a52 100644
--- a/mysql-test/suite/innodb/r/innodb_bug47167.result
+++ b/mysql-test/suite/innodb/r/innodb_bug47167.result
@@ -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'
diff --git a/mysql-test/suite/innodb/r/innodb_bug52745.result b/mysql-test/suite/innodb/r/innodb_bug52745.result
index 254c6525257..d746fb427b5 100644
--- a/mysql-test/suite/innodb/r/innodb_bug52745.result
+++ b/mysql-test/suite/innodb/r/innodb_bug52745.result
@@ -126,5 +126,5 @@ Warning 1265 Data truncated for column 'col79' at row 1
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;
diff --git a/mysql-test/suite/innodb/r/innodb_bug53591.result b/mysql-test/suite/innodb/r/innodb_bug53591.result
index 1f05b6d2a57..d3f8dfeafc2 100644
--- a/mysql-test/suite/innodb/r/innodb_bug53591.result
+++ b/mysql-test/suite/innodb/r/innodb_bug53591.result
@@ -12,5 +12,5 @@ Error 1118 Row size too large. The maximum row size for the used table type, not
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;
diff --git a/mysql-test/suite/innodb/r/innodb_file_format.result b/mysql-test/suite/innodb/r/innodb_file_format.result
index 6a573d8658e..70cfc9e4f47 100644
--- a/mysql-test/suite/innodb/r/innodb_file_format.result
+++ b/mysql-test/suite/innodb/r/innodb_file_format.result
@@ -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_format' can't be set to the value of 'off'
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;
diff --git a/mysql-test/r/innodb_gis.result b/mysql-test/suite/innodb/r/innodb_gis.result
index 0ce1ebe56ad..0ce1ebe56ad 100644
--- a/mysql-test/r/innodb_gis.result
+++ b/mysql-test/suite/innodb/r/innodb_gis.result
diff --git a/mysql-test/r/innodb_lock_wait_timeout_1.result b/mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result
index bd8760b8f79..bd8760b8f79 100644
--- a/mysql-test/r/innodb_lock_wait_timeout_1.result
+++ b/mysql-test/suite/innodb/r/innodb_lock_wait_timeout_1.result
diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/suite/innodb/r/innodb_mysql.result
index cec97910ea6..1624a9e64b7 100644
--- a/mysql-test/r/innodb_mysql.result
+++ b/mysql-test/suite/innodb/r/innodb_mysql.result
@@ -2414,8 +2414,18 @@ id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
DROP TABLE t1,t2;
#
-# Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
#
+# 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,
PRIMARY KEY(a,b,c), KEY(b,d))
ENGINE=InnoDB;
diff --git a/mysql-test/r/innodb_mysql_rbk.result b/mysql-test/suite/innodb/r/innodb_mysql_rbk.result
index 21ac4295325..21ac4295325 100644
--- a/mysql-test/r/innodb_mysql_rbk.result
+++ b/mysql-test/suite/innodb/r/innodb_mysql_rbk.result
diff --git a/mysql-test/r/innodb_notembedded.result b/mysql-test/suite/innodb/r/innodb_notembedded.result
index af332aba38a..af332aba38a 100644
--- a/mysql-test/r/innodb_notembedded.result
+++ b/mysql-test/suite/innodb/r/innodb_notembedded.result
diff --git a/mysql-test/r/innodb_timeout_rollback.result b/mysql-test/suite/innodb/r/innodb_timeout_rollback.result
index e2da6ba8af7..e2da6ba8af7 100644
--- a/mysql-test/r/innodb_timeout_rollback.result
+++ b/mysql-test/suite/innodb/r/innodb_timeout_rollback.result
diff --git a/mysql-test/suite/innodb/t/disabled.def b/mysql-test/suite/innodb/t/disabled.def
index da04138fd0a..888298bbb09 100644
--- a/mysql-test/suite/innodb/t/disabled.def
+++ b/mysql-test/suite/innodb/t/disabled.def
@@ -9,4 +9,3 @@
# Do not use any TAB characters for whitespace.
#
##############################################################################
-innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings
diff --git a/mysql-test/suite/innodb/t/innodb-autoinc-44030.test b/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
index 17c836004a1..790646fe13b 100644
--- a/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
+++ b/mysql-test/suite/innodb/t/innodb-autoinc-44030.test
@@ -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;
diff --git a/mysql-test/t/innodb-autoinc-optimize.test b/mysql-test/suite/innodb/t/innodb-autoinc-optimize.test
index 0f0cb57f92f..0f0cb57f92f 100644
--- a/mysql-test/t/innodb-autoinc-optimize.test
+++ b/mysql-test/suite/innodb/t/innodb-autoinc-optimize.test
diff --git a/mysql-test/suite/innodb/t/innodb-autoinc.test b/mysql-test/suite/innodb/t/innodb-autoinc.test
index c1cae16153e..a8e853baef7 100644
--- a/mysql-test/suite/innodb/t/innodb-autoinc.test
+++ b/mysql-test/suite/innodb/t/innodb-autoinc.test
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb-index.test b/mysql-test/suite/innodb/t/innodb-index.test
index f7cf3050704..05d1d37c422 100644
--- a/mysql-test/suite/innodb/t/innodb-index.test
+++ b/mysql-test/suite/innodb/t/innodb-index.test
@@ -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;
diff --git a/mysql-test/t/innodb-ucs2.test b/mysql-test/suite/innodb/t/innodb-ucs2.test
index 7b91ef37d3f..7b91ef37d3f 100644
--- a/mysql-test/t/innodb-ucs2.test
+++ b/mysql-test/suite/innodb/t/innodb-ucs2.test
diff --git a/mysql-test/suite/innodb/t/innodb-zip.test b/mysql-test/suite/innodb/t/innodb-zip.test
index 8ba83517b44..3acd7e42fa6 100644
--- a/mysql-test/suite/innodb/t/innodb-zip.test
+++ b/mysql-test/suite/innodb/t/innodb-zip.test
@@ -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=$format;
-- 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;
diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt
index fad0da2ac2e..fad0da2ac2e 100644
--- a/mysql-test/t/innodb_autoinc_lock_mode_zero-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero-master.opt
diff --git a/mysql-test/t/innodb_autoinc_lock_mode_zero.test b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test
index 96f748673c0..96f748673c0 100644
--- a/mysql-test/t/innodb_autoinc_lock_mode_zero.test
+++ b/mysql-test/suite/innodb/t/innodb_autoinc_lock_mode_zero.test
diff --git a/mysql-test/t/innodb_bug30919-master.opt b/mysql-test/suite/innodb/t/innodb_bug30919-master.opt
index 8636d2d8734..8636d2d8734 100644
--- a/mysql-test/t/innodb_bug30919-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_bug30919-master.opt
diff --git a/mysql-test/t/innodb_bug30919.test b/mysql-test/suite/innodb/t/innodb_bug30919.test
index 56b2c7bc03d..56b2c7bc03d 100644
--- a/mysql-test/t/innodb_bug30919.test
+++ b/mysql-test/suite/innodb/t/innodb_bug30919.test
diff --git a/mysql-test/suite/innodb/t/innodb_bug36172.test b/mysql-test/suite/innodb/t/innodb_bug36172.test
index c6c4e6fae47..6f5dd7629ff 100644
--- a/mysql-test/suite/innodb/t/innodb_bug36172.test
+++ b/mysql-test/suite/innodb/t/innodb_bug36172.test
@@ -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` = '19940127002709', `col20` = 2383927.90
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;
diff --git a/mysql-test/t/innodb_bug42419.test b/mysql-test/suite/innodb/t/innodb_bug42419.test
index 93c4764252a..93c4764252a 100644
--- a/mysql-test/t/innodb_bug42419.test
+++ b/mysql-test/suite/innodb/t/innodb_bug42419.test
diff --git a/mysql-test/suite/innodb/t/innodb_bug47167.test b/mysql-test/suite/innodb/t/innodb_bug47167.test
index 9b8bff0292f..622182acefa 100644
--- a/mysql-test/suite/innodb/t/innodb_bug47167.test
+++ b/mysql-test/suite/innodb/t/innodb_bug47167.test
@@ -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
diff --git a/mysql-test/suite/innodb/t/innodb_bug52745.test b/mysql-test/suite/innodb/t/innodb_bug52745.test
index d2de869648b..686ca705ab7 100644
--- a/mysql-test/suite/innodb/t/innodb_bug52745.test
+++ b/mysql-test/suite/innodb/t/innodb_bug52745.test
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb_bug53591.test b/mysql-test/suite/innodb/t/innodb_bug53591.test
index 58a7596dff9..e0e568034d8 100644
--- a/mysql-test/suite/innodb/t/innodb_bug53591.test
+++ b/mysql-test/suite/innodb/t/innodb_bug53591.test
@@ -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;
diff --git a/mysql-test/suite/innodb/t/innodb_file_format.test b/mysql-test/suite/innodb/t/innodb_file_format.test
index 5d094cb9dba..26c3646c0dd 100644
--- a/mysql-test/suite/innodb/t/innodb_file_format.test
+++ b/mysql-test/suite/innodb/t/innodb_file_format.test
@@ -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;
diff --git a/mysql-test/t/innodb_gis.test b/mysql-test/suite/innodb/t/innodb_gis.test
index 1adb14ea482..1adb14ea482 100644
--- a/mysql-test/t/innodb_gis.test
+++ b/mysql-test/suite/innodb/t/innodb_gis.test
diff --git a/mysql-test/t/innodb_lock_wait_timeout_1-master.opt b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt
index 462f8fbe828..462f8fbe828 100644
--- a/mysql-test/t/innodb_lock_wait_timeout_1-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1-master.opt
diff --git a/mysql-test/t/innodb_lock_wait_timeout_1.test b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test
index fcbf2b1cfc7..fcbf2b1cfc7 100644
--- a/mysql-test/t/innodb_lock_wait_timeout_1.test
+++ b/mysql-test/suite/innodb/t/innodb_lock_wait_timeout_1.test
diff --git a/mysql-test/t/innodb_mysql-master.opt b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
index 205c733455d..205c733455d 100644
--- a/mysql-test/t/innodb_mysql-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_mysql-master.opt
diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/suite/innodb/t/innodb_mysql.test
index 93da40cf0c1..09e076c0506 100644
--- a/mysql-test/t/innodb_mysql.test
+++ b/mysql-test/suite/innodb/t/innodb_mysql.test
@@ -649,6 +649,19 @@ EXPLAIN SELECT t1.id,t2.id FROM t2 LEFT JOIN t1 ON t1.id>=74 AND t1.id<=0
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))
diff --git a/mysql-test/t/innodb_mysql_rbk-master.opt b/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt
index 0e400f9c36b..0e400f9c36b 100644
--- a/mysql-test/t/innodb_mysql_rbk-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_mysql_rbk-master.opt
diff --git a/mysql-test/t/innodb_mysql_rbk.test b/mysql-test/suite/innodb/t/innodb_mysql_rbk.test
index d2368c81f95..d2368c81f95 100644
--- a/mysql-test/t/innodb_mysql_rbk.test
+++ b/mysql-test/suite/innodb/t/innodb_mysql_rbk.test
diff --git a/mysql-test/t/innodb_notembedded.test b/mysql-test/suite/innodb/t/innodb_notembedded.test
index c74dc931505..c74dc931505 100644
--- a/mysql-test/t/innodb_notembedded.test
+++ b/mysql-test/suite/innodb/t/innodb_notembedded.test
diff --git a/mysql-test/t/innodb_timeout_rollback-master.opt b/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt
index 50921bb4df0..50921bb4df0 100644
--- a/mysql-test/t/innodb_timeout_rollback-master.opt
+++ b/mysql-test/suite/innodb/t/innodb_timeout_rollback-master.opt
diff --git a/mysql-test/t/innodb_timeout_rollback.test b/mysql-test/suite/innodb/t/innodb_timeout_rollback.test
index 99890971064..99890971064 100644
--- a/mysql-test/t/innodb_timeout_rollback.test
+++ b/mysql-test/suite/innodb/t/innodb_timeout_rollback.test
diff --git a/mysql-test/suite/sys_vars/r/all_vars.result b/mysql-test/suite/sys_vars/r/all_vars.result
index 0f741ff930a..7f6dca3eb7b 100644
--- a/mysql-test/suite/sys_vars/r/all_vars.result
+++ b/mysql-test/suite/sys_vars/r/all_vars.result
@@ -10,5 +10,7 @@ There should be *no* long test name listed below:
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;
diff --git a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
index 29be30cf096..c59e1b802f4 100644
--- a/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
+++ b/mysql-test/suite/sys_vars/r/innodb_file_format_check_basic.result
@@ -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
diff --git a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
index 4c60957561c..e087cc738b0 100644
--- a/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
+++ b/mysql-test/suite/sys_vars/t/innodb_file_format_check_basic.test
@@ -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;
diff --git a/storage/innobase/buf/buf0buf.c b/storage/innobase/buf/buf0buf.c
index ae228732270..4b6b0a82486 100644
--- a/storage/innobase/buf/buf0buf.c
+++ b/storage/innobase/buf/buf0buf.c
@@ -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);
diff --git a/storage/innobase/dict/dict0load.c b/storage/innobase/dict/dict0load.c
index b061fe696c1..6bf2c1d9d81 100644
--- a/storage/innobase/dict/dict0load.c
+++ b/storage/innobase/dict/dict0load.c
@@ -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 */
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index 86246e62eee..675edc61ac7 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -149,10 +149,10 @@ static char* innobase_log_group_home_dir = NULL;
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 = NULL;
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_timeout = FALSE;
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)) {
+ /* Set the value to disable checking. */
+ srv_max_file_format_at_startup = DICT_TF_FORMAT_MAX + 1;
- /* 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) {
+ } else {
- 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 the lowest supported format. */
+ srv_max_file_format_at_startup = DICT_TF_FORMAT_MIN;
+ }
- goto mem_free_and_error;
- }
+ /* 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, innobase_file_format_name,
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_system_variables[]= {
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),
diff --git a/storage/innobase/include/dict0mem.h b/storage/innobase/include/dict0mem.h
index f93b2f8c8a3..57e5b5394ee 100644
--- a/storage/innobase/include/dict0mem.h
+++ b/storage/innobase/include/dict0mem.h
@@ -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
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index 98e127d41e2..18f7c07c3c6 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -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;
diff --git a/storage/innobase/row/row0sel.c b/storage/innobase/row/row0sel.c
index a5bf361661b..2861235a995 100644
--- a/storage/innobase/row/row0sel.c
+++ b/storage/innobase/row/row0sel.c
@@ -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;
diff --git a/storage/innobase/srv/srv0srv.c b/storage/innobase/srv/srv0srv.c
index b1f3a543b07..6354689105a 100644
--- a/storage/innobase/srv/srv0srv.c
+++ b/storage/innobase/srv/srv0srv.c
@@ -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) {
diff --git a/storage/innobase/srv/srv0start.c b/storage/innobase/srv/srv0start.c
index 1b96a2f4708..4a0ecc5154f 100644
--- a/storage/innobase/srv/srv0start.c
+++ b/storage/innobase/srv/srv0start.c
@@ -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);
diff --git a/storage/innobase/trx/trx0sys.c b/storage/innobase/trx/trx0sys.c
index 9c531e64662..e2f0ff6d532 100644
--- a/storage/innobase/trx/trx0sys.c
+++ b/storage/innobase/trx/trx0sys.c
@@ -135,7 +135,7 @@ UNIV_INTERN mysql_pfs_key_t file_format_max_mutex_key;
#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);