Merge mysql-trunk-innodb -> mysql-trunk-bugfixing
This commit is contained in:
commit
2a207ff19e
@ -920,7 +920,7 @@ create index t1u on t1 (u(1));
|
|||||||
drop table t1;
|
drop table t1;
|
||||||
set global innodb_file_per_table=0;
|
set global innodb_file_per_table=0;
|
||||||
set global innodb_file_format=Antelope;
|
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_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
|
||||||
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
|
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
|
||||||
CREATE TABLE t1(
|
CREATE TABLE t1(
|
||||||
|
@ -397,25 +397,25 @@ set global innodb_file_per_table=0;
|
|||||||
set global innodb_file_format=Antelope;
|
set global innodb_file_format=Antelope;
|
||||||
set global innodb_file_per_table=on;
|
set global innodb_file_per_table=on;
|
||||||
set global innodb_file_format=`Barracuda`;
|
set global innodb_file_format=`Barracuda`;
|
||||||
set global innodb_file_format_check=`Antelope`;
|
set global innodb_file_format_max=`Antelope`;
|
||||||
create table normal_table (
|
create table normal_table (
|
||||||
c1 int
|
c1 int
|
||||||
) engine = innodb;
|
) engine = innodb;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
create table zip_table (
|
create table zip_table (
|
||||||
c1 int
|
c1 int
|
||||||
) engine = innodb key_block_size = 8;
|
) engine = innodb key_block_size = 8;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
Barracuda
|
||||||
set global innodb_file_format_check=`Antelope`;
|
set global innodb_file_format_max=`Antelope`;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
show table status;
|
show table status;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
Barracuda
|
||||||
drop table normal_table, zip_table;
|
drop table normal_table, zip_table;
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
set @old_innodb_file_format_check=@@innodb_file_format_check;
|
set @old_innodb_file_format_max=@@innodb_file_format_max;
|
||||||
select @old_innodb_file_format_check;
|
select @old_innodb_file_format_max;
|
||||||
@old_innodb_file_format_check
|
@old_innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
set global innodb_file_format_check = Barracuda;
|
set global innodb_file_format_max = Barracuda;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
Barracuda
|
||||||
set global innodb_file_format_check = DEFAULT;
|
set global innodb_file_format_max = DEFAULT;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
|
||||||
set global innodb_file_format_check = @old_innodb_file_format_check;
|
|
||||||
select @@innodb_file_format_check;
|
|
||||||
@@innodb_file_format_check
|
|
||||||
Antelope
|
Antelope
|
||||||
set global innodb_file_format_check = cheetah;
|
set global innodb_file_format_max = @old_innodb_file_format_max;
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
|
select @@innodb_file_format_max;
|
||||||
set global innodb_file_format_check = Bear;
|
@@innodb_file_format_max
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Bear'
|
Antelope
|
||||||
set global innodb_file_format_check = on;
|
set global innodb_file_format_max = cheetah;
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'ON'
|
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
|
||||||
set global innodb_file_format_check = off;
|
set global innodb_file_format_max = Bear;
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'off'
|
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'
|
||||||
|
@ -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
|
Warning 1264 Out of range value for column 'col84' at row 1
|
||||||
DROP TABLE bug52745;
|
DROP TABLE bug52745;
|
||||||
SET GLOBAL innodb_file_format=Antelope;
|
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;
|
SET GLOBAL innodb_file_per_table=0;
|
||||||
|
@ -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
|
Error 1030 Got error 139 from storage engine
|
||||||
DROP TABLE bug53591;
|
DROP TABLE bug53591;
|
||||||
SET GLOBAL innodb_file_format=Antelope;
|
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;
|
SET GLOBAL innodb_file_per_table=0;
|
||||||
|
@ -3,6 +3,9 @@ select @@innodb_file_format;
|
|||||||
Antelope
|
Antelope
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_check;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_check
|
||||||
|
1
|
||||||
|
select @@innodb_file_format_max;
|
||||||
|
@@innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
set global innodb_file_format=antelope;
|
set global innodb_file_format=antelope;
|
||||||
set global innodb_file_format=barracuda;
|
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;
|
select @@innodb_file_format;
|
||||||
@@innodb_file_format
|
@@innodb_file_format
|
||||||
Antelope
|
Antelope
|
||||||
set global innodb_file_format_check=antelope;
|
set global innodb_file_format_max=antelope;
|
||||||
set global innodb_file_format_check=barracuda;
|
set global innodb_file_format_max=barracuda;
|
||||||
set global innodb_file_format_check=cheetah;
|
set global innodb_file_format_max=cheetah;
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'cheetah'
|
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'cheetah'
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
|
||||||
set global innodb_file_format_check=default;
|
|
||||||
select @@innodb_file_format_check;
|
|
||||||
@@innodb_file_format_check
|
|
||||||
Barracuda
|
Barracuda
|
||||||
|
set global innodb_file_format_max=default;
|
||||||
|
select @@innodb_file_format_max;
|
||||||
|
@@innodb_file_format_max
|
||||||
|
Antelope
|
||||||
set global innodb_file_format=on;
|
set global innodb_file_format=on;
|
||||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
|
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'ON'
|
||||||
set global innodb_file_format=off;
|
set global innodb_file_format=off;
|
||||||
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
|
ERROR 42000: Variable 'innodb_file_format' can't be set to the value of 'off'
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
@@innodb_file_format_check
|
@@innodb_file_format_max
|
||||||
Barracuda
|
Antelope
|
||||||
set global innodb_file_format_check=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;
|
||||||
|
@ -2414,6 +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
|
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
|
||||||
DROP TABLE t1,t2;
|
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))
|
# 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,
|
CREATE TABLE t1 (a INT, b INT, c INT, d INT,
|
@ -9,4 +9,3 @@
|
|||||||
# Do not use any TAB characters for whitespace.
|
# Do not use any TAB characters for whitespace.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
innodb_multi_update: Bug #38999 2010-05-05 mmakela Valgrind warnings
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# embedded server ignores 'delayed', so skip this
|
# embedded server ignores 'delayed', so skip this
|
||||||
-- source include/not_embedded.inc
|
-- 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
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
@ -40,4 +40,4 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
|
|
||||||
-- disable_query_log
|
-- 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;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# embedded server ignores 'delayed', so skip this
|
# embedded server ignores 'delayed', so skip this
|
||||||
-- source include/not_embedded.inc
|
-- 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
|
--disable_warnings
|
||||||
drop table if exists t1;
|
drop table if exists t1;
|
||||||
@ -671,4 +671,4 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
|
|
||||||
-- disable_query_log
|
-- 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;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
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;
|
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');
|
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;
|
drop table t1;
|
||||||
eval set global innodb_file_per_table=$per_table;
|
eval set global innodb_file_per_table=$per_table;
|
||||||
eval set global innodb_file_format=$format;
|
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
|
# Test to check whether CREATE INDEX handles implicit foreign key
|
||||||
@ -550,4 +550,4 @@ DROP TABLE t1;
|
|||||||
#
|
#
|
||||||
|
|
||||||
-- disable_query_log
|
-- 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;
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
let $per_table=`select @@innodb_file_per_table`;
|
let $per_table=`select @@innodb_file_per_table`;
|
||||||
let $format=`select @@innodb_file_format`;
|
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_per_table=off;
|
||||||
set global innodb_file_format=`0`;
|
set global innodb_file_format=`0`;
|
||||||
|
|
||||||
@ -316,21 +316,21 @@ eval set global innodb_file_format=$format;
|
|||||||
-- disable_info
|
-- disable_info
|
||||||
set global innodb_file_per_table=on;
|
set global innodb_file_per_table=on;
|
||||||
set global innodb_file_format=`Barracuda`;
|
set global innodb_file_format=`Barracuda`;
|
||||||
set global innodb_file_format_check=`Antelope`;
|
set global innodb_file_format_max=`Antelope`;
|
||||||
create table normal_table (
|
create table normal_table (
|
||||||
c1 int
|
c1 int
|
||||||
) engine = innodb;
|
) engine = innodb;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
create table zip_table (
|
create table zip_table (
|
||||||
c1 int
|
c1 int
|
||||||
) engine = innodb key_block_size = 8;
|
) engine = innodb key_block_size = 8;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
set global innodb_file_format_check=`Antelope`;
|
set global innodb_file_format_max=`Antelope`;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
-- disable_result_log
|
-- disable_result_log
|
||||||
show table status;
|
show table status;
|
||||||
-- enable_result_log
|
-- enable_result_log
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
drop table normal_table, zip_table;
|
drop table normal_table, zip_table;
|
||||||
-- disable_result_log
|
-- disable_result_log
|
||||||
|
|
||||||
@ -341,4 +341,4 @@ drop table normal_table, zip_table;
|
|||||||
-- disable_query_log
|
-- disable_query_log
|
||||||
eval set global innodb_file_format=$format;
|
eval set global innodb_file_format=$format;
|
||||||
eval set global innodb_file_per_table=$per_table;
|
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;
|
||||||
|
@ -15,7 +15,7 @@ SET storage_engine=InnoDB;
|
|||||||
-- disable_result_log
|
-- disable_result_log
|
||||||
|
|
||||||
let $file_format=`select @@innodb_file_format`;
|
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`;
|
let $file_per_table=`select @@innodb_file_per_table`;
|
||||||
SET GLOBAL innodb_file_format='Barracuda';
|
SET GLOBAL innodb_file_format='Barracuda';
|
||||||
SET GLOBAL innodb_file_per_table=on;
|
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;
|
CHECK TABLE table0 EXTENDED;
|
||||||
DROP TABLE table0;
|
DROP TABLE table0;
|
||||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
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;
|
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
||||||
|
@ -1,45 +1,44 @@
|
|||||||
# This is the unit test for bug *47167.
|
# This is the unit test for bug #47167.
|
||||||
# It tests setting the global variable
|
# It tests setting the global variable "innodb_file_format_max" (
|
||||||
# "innodb_file_format_check" with a
|
# originally "innodb_file_format_check") with a user-Defined Variable.
|
||||||
# user-Defined Variable.
|
|
||||||
|
|
||||||
--source include/have_innodb.inc
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
# Save the value (Antelope) in 'innodb_file_format_check' to
|
# Save the value (Antelope) in 'innodb_file_format_max' to
|
||||||
# 'old_innodb_file_format_check'
|
# 'old_innodb_file_format_max'
|
||||||
set @old_innodb_file_format_check=@@innodb_file_format_check;
|
set @old_innodb_file_format_max=@@innodb_file_format_max;
|
||||||
|
|
||||||
# @old_innodb_file_format_check shall have the value of 'Antelope'
|
# @old_innodb_file_format_max shall have the value of 'Antelope'
|
||||||
select @old_innodb_file_format_check;
|
select @old_innodb_file_format_max;
|
||||||
|
|
||||||
# Reset the value in 'innodb_file_format_check' to 'Barracuda'
|
# Reset the value in 'innodb_file_format_max' to 'Barracuda'
|
||||||
set global innodb_file_format_check = 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.
|
# 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'
|
# Put the saved value back to 'innodb_file_format_max'
|
||||||
set global innodb_file_format_check = @old_innodb_file_format_check;
|
set global innodb_file_format_max = @old_innodb_file_format_max;
|
||||||
|
|
||||||
# Check whether 'innodb_file_format_check' get its original value.
|
# Check whether 'innodb_file_format_max' get its original value.
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
|
|
||||||
# Following are negative tests, all should fail.
|
# Following are negative tests, all should fail.
|
||||||
--disable_warnings
|
--disable_warnings
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--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
|
--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
|
--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
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format_check = off;
|
set global innodb_file_format_max = off;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
let $file_format=`select @@innodb_file_format`;
|
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`;
|
let $file_per_table=`select @@innodb_file_per_table`;
|
||||||
SET GLOBAL innodb_file_format='Barracuda';
|
SET GLOBAL innodb_file_format='Barracuda';
|
||||||
SET GLOBAL innodb_file_per_table=on;
|
SET GLOBAL innodb_file_per_table=on;
|
||||||
@ -105,5 +105,5 @@ SHOW WARNINGS;
|
|||||||
DROP TABLE bug52745;
|
DROP TABLE bug52745;
|
||||||
|
|
||||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
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;
|
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
-- source include/have_innodb.inc
|
-- source include/have_innodb.inc
|
||||||
|
|
||||||
let $file_format=`select @@innodb_file_format`;
|
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`;
|
let $file_per_table=`select @@innodb_file_per_table`;
|
||||||
|
|
||||||
SET GLOBAL innodb_file_format='Barracuda';
|
SET GLOBAL innodb_file_format='Barracuda';
|
||||||
@ -18,5 +18,5 @@ SHOW WARNINGS;
|
|||||||
DROP TABLE bug53591;
|
DROP TABLE bug53591;
|
||||||
|
|
||||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
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;
|
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
-- source include/have_innodb.inc
|
-- 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;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_check;
|
||||||
|
select @@innodb_file_format_max;
|
||||||
set global innodb_file_format=antelope;
|
set global innodb_file_format=antelope;
|
||||||
set global innodb_file_format=barracuda;
|
set global innodb_file_format=barracuda;
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
@ -14,16 +18,24 @@ set global innodb_file_format=on;
|
|||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format=off;
|
set global innodb_file_format=off;
|
||||||
select @@innodb_file_format;
|
select @@innodb_file_format;
|
||||||
set global innodb_file_format_check=antelope;
|
set global innodb_file_format_max=antelope;
|
||||||
set global innodb_file_format_check=barracuda;
|
set global innodb_file_format_max=barracuda;
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format_check=cheetah;
|
set global innodb_file_format_max=cheetah;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
set global innodb_file_format_check=default;
|
set global innodb_file_format_max=default;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format=on;
|
set global innodb_file_format=on;
|
||||||
--error ER_WRONG_VALUE_FOR_VAR
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format=off;
|
set global innodb_file_format=off;
|
||||||
select @@innodb_file_format_check;
|
select @@innodb_file_format_max;
|
||||||
set global innodb_file_format_check=antelope;
|
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;
|
||||||
|
@ -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;
|
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 #
|
||||||
--echo # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
|
--echo # Bug #53830: !table || (!table->read_set || bitmap_is_set(table->read_set, field_index))
|
@ -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
|
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;
|
left join t1 on variable_name=test_name where test_name is null;
|
||||||
There should be *no* variables listed below:
|
There should be *no* variables listed below:
|
||||||
|
INNODB_FILE_FORMAT_MAX
|
||||||
|
INNODB_FILE_FORMAT_MAX
|
||||||
drop table t1;
|
drop table t1;
|
||||||
drop table t2;
|
drop table t2;
|
||||||
|
@ -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;
|
SELECT @start_global_value;
|
||||||
@start_global_value
|
@start_global_value
|
||||||
Antelope
|
Antelope
|
||||||
Valid values are 'Antelope' and 'Barracuda'
|
Valid values are 'Antelope' and 'Barracuda'
|
||||||
select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
|
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||||
@@global.innodb_file_format_check in ('Antelope', 'Barracuda')
|
@@global.innodb_file_format_max in ('Antelope', 'Barracuda')
|
||||||
1
|
1
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
@@global.innodb_file_format_check
|
@@global.innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
select @@session.innodb_file_format_check;
|
select @@session.innodb_file_format_max;
|
||||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable
|
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable
|
||||||
show global variables like 'innodb_file_format_check';
|
show global variables like 'innodb_file_format_max';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
innodb_file_format_check Antelope
|
innodb_file_format_max Antelope
|
||||||
show session variables like 'innodb_file_format_check';
|
show session variables like 'innodb_file_format_max';
|
||||||
Variable_name Value
|
Variable_name Value
|
||||||
innodb_file_format_check Antelope
|
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
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Antelope
|
INNODB_FILE_FORMAT_MAX Antelope
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Antelope
|
INNODB_FILE_FORMAT_MAX Antelope
|
||||||
set global innodb_file_format_check='Antelope';
|
set global innodb_file_format_max='Antelope';
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
@@global.innodb_file_format_check
|
@@global.innodb_file_format_max
|
||||||
Antelope
|
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
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Antelope
|
INNODB_FILE_FORMAT_MAX Antelope
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Antelope
|
INNODB_FILE_FORMAT_MAX Antelope
|
||||||
set @@global.innodb_file_format_check='Barracuda';
|
set @@global.innodb_file_format_max='Barracuda';
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
@@global.innodb_file_format_check
|
@@global.innodb_file_format_max
|
||||||
Barracuda
|
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
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Barracuda
|
INNODB_FILE_FORMAT_MAX Barracuda
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
VARIABLE_NAME VARIABLE_VALUE
|
VARIABLE_NAME VARIABLE_VALUE
|
||||||
INNODB_FILE_FORMAT_CHECK Barracuda
|
INNODB_FILE_FORMAT_MAX Barracuda
|
||||||
set session innodb_file_format_check='Salmon';
|
set session innodb_file_format_max='Salmon';
|
||||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
|
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||||
set @@session.innodb_file_format_check='Salmon';
|
set @@session.innodb_file_format_max='Salmon';
|
||||||
ERROR HY000: Variable 'innodb_file_format_check' is a GLOBAL variable and should be set with SET GLOBAL
|
ERROR HY000: Variable 'innodb_file_format_max' is a GLOBAL variable and should be set with SET GLOBAL
|
||||||
set global innodb_file_format_check=1.1;
|
set global innodb_file_format_max=1.1;
|
||||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
|
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||||
set global innodb_file_format_check=1e1;
|
set global innodb_file_format_max=1e1;
|
||||||
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_check'
|
ERROR 42000: Incorrect argument type to variable 'innodb_file_format_max'
|
||||||
set global innodb_file_format_check='Salmon';
|
set global innodb_file_format_max='Salmon';
|
||||||
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Salmon'
|
ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Salmon'
|
||||||
SET @@global.innodb_file_format_check = @start_global_value;
|
SET @@global.innodb_file_format_max = @start_global_value;
|
||||||
SELECT @@global.innodb_file_format_check;
|
SELECT @@global.innodb_file_format_max;
|
||||||
@@global.innodb_file_format_check
|
@@global.innodb_file_format_max
|
||||||
Antelope
|
Antelope
|
||||||
|
@ -5,51 +5,51 @@
|
|||||||
|
|
||||||
--source include/have_innodb.inc
|
--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;
|
SELECT @start_global_value;
|
||||||
|
|
||||||
#
|
#
|
||||||
# exists as global only
|
# exists as global only
|
||||||
#
|
#
|
||||||
--echo Valid values are 'Antelope' and 'Barracuda'
|
--echo Valid values are 'Antelope' and 'Barracuda'
|
||||||
select @@global.innodb_file_format_check in ('Antelope', 'Barracuda');
|
select @@global.innodb_file_format_max in ('Antelope', 'Barracuda');
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
|
||||||
select @@session.innodb_file_format_check;
|
select @@session.innodb_file_format_max;
|
||||||
show global variables like 'innodb_file_format_check';
|
show global variables like 'innodb_file_format_max';
|
||||||
show session variables like 'innodb_file_format_check';
|
show session variables like 'innodb_file_format_max';
|
||||||
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';
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
|
|
||||||
#
|
#
|
||||||
# show that it's writable
|
# show that it's writable
|
||||||
#
|
#
|
||||||
set global innodb_file_format_check='Antelope';
|
set global innodb_file_format_max='Antelope';
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
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';
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
set @@global.innodb_file_format_check='Barracuda';
|
set @@global.innodb_file_format_max='Barracuda';
|
||||||
select @@global.innodb_file_format_check;
|
select @@global.innodb_file_format_max;
|
||||||
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';
|
||||||
select * from information_schema.session_variables where variable_name='innodb_file_format_check';
|
select * from information_schema.session_variables where variable_name='innodb_file_format_max';
|
||||||
--error ER_GLOBAL_VARIABLE
|
--error ER_GLOBAL_VARIABLE
|
||||||
set session innodb_file_format_check='Salmon';
|
set session innodb_file_format_max='Salmon';
|
||||||
--error ER_GLOBAL_VARIABLE
|
--error ER_GLOBAL_VARIABLE
|
||||||
set @@session.innodb_file_format_check='Salmon';
|
set @@session.innodb_file_format_max='Salmon';
|
||||||
|
|
||||||
#
|
#
|
||||||
# incorrect types
|
# incorrect types
|
||||||
#
|
#
|
||||||
--error ER_WRONG_TYPE_FOR_VAR
|
--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
|
--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
|
--error ER_WRONG_VALUE_FOR_VAR
|
||||||
set global innodb_file_format_check='Salmon';
|
set global innodb_file_format_max='Salmon';
|
||||||
|
|
||||||
#
|
#
|
||||||
# Cleanup
|
# Cleanup
|
||||||
#
|
#
|
||||||
|
|
||||||
SET @@global.innodb_file_format_check = @start_global_value;
|
SET @@global.innodb_file_format_max = @start_global_value;
|
||||||
SELECT @@global.innodb_file_format_check;
|
SELECT @@global.innodb_file_format_max;
|
||||||
|
@ -2957,7 +2957,7 @@ wait_until_unfixed:
|
|||||||
|
|
||||||
block->page.buf_fix_count = 1;
|
block->page.buf_fix_count = 1;
|
||||||
buf_block_set_io_fix(block, BUF_IO_READ);
|
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);
|
UNIV_MEM_INVALID(bpage, sizeof *bpage);
|
||||||
|
|
||||||
|
@ -1694,6 +1694,7 @@ err_exit:
|
|||||||
/* Try to open the tablespace */
|
/* Try to open the tablespace */
|
||||||
if (!fil_open_single_table_tablespace(
|
if (!fil_open_single_table_tablespace(
|
||||||
TRUE, table->space,
|
TRUE, table->space,
|
||||||
|
table->flags == DICT_TF_COMPACT ? 0 :
|
||||||
table->flags & ~(~0 << DICT_TF_BITS), name)) {
|
table->flags & ~(~0 << DICT_TF_BITS), name)) {
|
||||||
/* We failed to find a sensible
|
/* We failed to find a sensible
|
||||||
tablespace file */
|
tablespace file */
|
||||||
|
@ -149,10 +149,10 @@ static char* innobase_log_group_home_dir = NULL;
|
|||||||
static char* innobase_file_format_name = NULL;
|
static char* innobase_file_format_name = NULL;
|
||||||
static char* innobase_change_buffering = NULL;
|
static char* innobase_change_buffering = NULL;
|
||||||
|
|
||||||
/* Note: This variable can be set to on/off and any of the supported
|
/* The highest file format being used in the database. The value can be
|
||||||
file formats in the configuration file, but can only be set to any
|
set by user, however, it will be adjusted to the newer file format if
|
||||||
of the supported file formats during runtime. */
|
a table of such format is created/opened. */
|
||||||
static char* innobase_file_format_check = NULL;
|
static char* innobase_file_format_max = NULL;
|
||||||
|
|
||||||
static char* innobase_file_flush_method = NULL;
|
static char* innobase_file_flush_method = NULL;
|
||||||
|
|
||||||
@ -160,6 +160,7 @@ static char* innobase_file_flush_method = NULL;
|
|||||||
values */
|
values */
|
||||||
|
|
||||||
static ulong innobase_fast_shutdown = 1;
|
static ulong innobase_fast_shutdown = 1;
|
||||||
|
static my_bool innobase_file_format_check = TRUE;
|
||||||
#ifdef UNIV_LOG_ARCHIVE
|
#ifdef UNIV_LOG_ARCHIVE
|
||||||
static my_bool innobase_log_archive = FALSE;
|
static my_bool innobase_log_archive = FALSE;
|
||||||
static char* innobase_log_arch_dir = NULL;
|
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_create_status_file = FALSE;
|
||||||
static my_bool innobase_stats_on_metadata = TRUE;
|
static my_bool innobase_stats_on_metadata = TRUE;
|
||||||
|
|
||||||
|
|
||||||
static char* internal_innobase_data_file_path = NULL;
|
static char* internal_innobase_data_file_path = NULL;
|
||||||
|
|
||||||
static char* innodb_version_str = (char*) INNODB_VERSION_STR;
|
static char* innodb_version_str = (char*) INNODB_VERSION_STR;
|
||||||
@ -366,22 +368,13 @@ innobase_file_format_name_lookup(
|
|||||||
name */
|
name */
|
||||||
/************************************************************//**
|
/************************************************************//**
|
||||||
Validate the file format check config parameters, as a side effect it
|
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 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.
|
|
||||||
@return the format_id if valid config value, otherwise, return -1 */
|
@return the format_id if valid config value, otherwise, return -1 */
|
||||||
static
|
static
|
||||||
int
|
int
|
||||||
innobase_file_format_validate_and_set(
|
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. */
|
Return alter table flags supported in an InnoDB database. */
|
||||||
static
|
static
|
||||||
@ -2267,30 +2260,33 @@ mem_free_and_error:
|
|||||||
innobase_file_format_name =
|
innobase_file_format_name =
|
||||||
(char*) trx_sys_file_format_id_to_name(format_id);
|
(char*) trx_sys_file_format_id_to_name(format_id);
|
||||||
|
|
||||||
/* Process innobase_file_format_check variable */
|
/* Check innobase_file_format_check variable */
|
||||||
ut_a(innobase_file_format_check != NULL);
|
if (!innobase_file_format_check) {
|
||||||
|
|
||||||
/* As a side effect it will set srv_check_file_format_at_startup
|
/* Set the value to disable checking. */
|
||||||
on valid input. First we check for "on"/"off". */
|
srv_max_file_format_at_startup = DICT_TF_FORMAT_MAX + 1;
|
||||||
if (!innobase_file_format_check_on_off(innobase_file_format_check)) {
|
|
||||||
|
|
||||||
/* Did the user specify a format name that we support ?
|
} 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
|
As a side effect it will update the variable
|
||||||
srv_check_file_format_at_startup */
|
srv_max_file_format_at_startup */
|
||||||
if (innobase_file_format_validate_and_set(
|
if (innobase_file_format_validate_and_set(
|
||||||
innobase_file_format_check) < 0) {
|
innobase_file_format_max) < 0) {
|
||||||
|
|
||||||
sql_print_error("InnoDB: invalid "
|
sql_print_error("InnoDB: invalid "
|
||||||
"innodb_file_format_check value: "
|
"innodb_file_format_max value: "
|
||||||
"should be either 'on' or 'off' or "
|
"should be any value up to %s or its "
|
||||||
"any value up to %s or its "
|
|
||||||
"equivalent numeric id",
|
"equivalent numeric id",
|
||||||
trx_sys_file_format_id_to_name(
|
trx_sys_file_format_id_to_name(
|
||||||
DICT_TF_FORMAT_MAX));
|
DICT_TF_FORMAT_MAX));
|
||||||
|
|
||||||
goto mem_free_and_error;
|
goto mem_free_and_error;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (innobase_change_buffering) {
|
if (innobase_change_buffering) {
|
||||||
ulint use;
|
ulint use;
|
||||||
@ -2451,7 +2447,7 @@ innobase_change_buffering_inited_ok:
|
|||||||
#endif /* MYSQL_DYNAMIC_PLUGIN */
|
#endif /* MYSQL_DYNAMIC_PLUGIN */
|
||||||
|
|
||||||
/* Get the current high water mark format. */
|
/* 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);
|
DBUG_RETURN(FALSE);
|
||||||
error:
|
error:
|
||||||
@ -3836,7 +3832,7 @@ retry:
|
|||||||
space, if this table has higher file format setting. */
|
space, if this table has higher file format setting. */
|
||||||
|
|
||||||
trx_sys_file_format_max_upgrade(
|
trx_sys_file_format_max_upgrade(
|
||||||
(const char**) &innobase_file_format_check,
|
(const char**) &innobase_file_format_max,
|
||||||
dict_table_get_format(prebuilt->table));
|
dict_table_get_format(prebuilt->table));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6959,7 +6955,7 @@ ha_innobase::create(
|
|||||||
space, if this table has higher file format setting. */
|
space, if this table has higher file format setting. */
|
||||||
|
|
||||||
trx_sys_file_format_max_upgrade(
|
trx_sys_file_format_max_upgrade(
|
||||||
(const char**) &innobase_file_format_check,
|
(const char**) &innobase_file_format_max,
|
||||||
dict_table_get_format(innobase_table));
|
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
|
/* If index does not belong to the table of share structure. Search
|
||||||
index->table instead */
|
index->table instead */
|
||||||
if (index->table != ib_table
|
if (index->table != ib_table) {
|
||||||
&& innobase_strcasecmp(index->table->name, share->table_name)) {
|
|
||||||
i = 0;
|
i = 0;
|
||||||
ind = dict_table_get_first_index(index->table);
|
ind = dict_table_get_first_index(index->table);
|
||||||
|
|
||||||
@ -10348,50 +10343,22 @@ innobase_file_format_name_lookup(
|
|||||||
return(DICT_TF_FORMAT_MAX + 1);
|
return(DICT_TF_FORMAT_MAX + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/************************************************************//**
|
|
||||||
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
|
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 */
|
@return the format_id if valid config value, otherwise, return -1 */
|
||||||
static
|
static
|
||||||
int
|
int
|
||||||
innobase_file_format_validate_and_set(
|
innobase_file_format_validate_and_set(
|
||||||
/*================================*/
|
/*==================================*/
|
||||||
const char* format_check) /*!< in: parameter value */
|
const char* format_max) /*!< in: parameter value */
|
||||||
{
|
{
|
||||||
uint format_id;
|
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) {
|
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);
|
return((int) format_id);
|
||||||
} else {
|
} else {
|
||||||
@ -10479,15 +10446,14 @@ innodb_file_format_name_update(
|
|||||||
*static_cast<const char**>(var_ptr)
|
*static_cast<const char**>(var_ptr)
|
||||||
= trx_sys_file_format_id_to_name(srv_file_format);
|
= trx_sys_file_format_id_to_name(srv_file_format);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************//**
|
/*************************************************************//**
|
||||||
Check if valid argument to innodb_file_format_check. This
|
Check if valid argument to innodb_file_format_max. This function
|
||||||
function is registered as a callback with MySQL.
|
is registered as a callback with MySQL.
|
||||||
@return 0 for valid file format */
|
@return 0 for valid file format */
|
||||||
static
|
static
|
||||||
int
|
int
|
||||||
innodb_file_format_check_validate(
|
innodb_file_format_max_validate(
|
||||||
/*==============================*/
|
/*============================*/
|
||||||
THD* thd, /*!< in: thread handle */
|
THD* thd, /*!< in: thread handle */
|
||||||
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
||||||
variable */
|
variable */
|
||||||
@ -10507,17 +10473,6 @@ innodb_file_format_check_validate(
|
|||||||
|
|
||||||
if (file_format_input != NULL) {
|
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(
|
format_id = innobase_file_format_validate_and_set(
|
||||||
file_format_input);
|
file_format_input);
|
||||||
|
|
||||||
@ -10534,12 +10489,11 @@ innodb_file_format_check_validate(
|
|||||||
push_warning_printf(thd,
|
push_warning_printf(thd,
|
||||||
MYSQL_ERROR::WARN_LEVEL_WARN,
|
MYSQL_ERROR::WARN_LEVEL_WARN,
|
||||||
ER_WRONG_ARGUMENTS,
|
ER_WRONG_ARGUMENTS,
|
||||||
"InnoDB: invalid innodb_file_format_check "
|
"InnoDB: invalid innodb_file_format_max "
|
||||||
"value; can be any format up to %s "
|
"value; can be any format up to %s "
|
||||||
"or its equivalent numeric id",
|
"or equivalent id of %d",
|
||||||
trx_sys_file_format_id_to_name(
|
trx_sys_file_format_id_to_name(DICT_TF_FORMAT_MAX),
|
||||||
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. */
|
value. This function is registered as a callback with MySQL. */
|
||||||
static
|
static
|
||||||
void
|
void
|
||||||
innodb_file_format_check_update(
|
innodb_file_format_max_update(
|
||||||
/*============================*/
|
/*==========================*/
|
||||||
THD* thd, /*!< in: thread handle */
|
THD* thd, /*!< in: thread handle */
|
||||||
struct st_mysql_sys_var* var, /*!< in: pointer to
|
struct st_mysql_sys_var* var, /*!< in: pointer to
|
||||||
system variable */
|
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_validate,
|
||||||
innodb_file_format_name_update, "Antelope");
|
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
|
/* If a new file format is introduced, the file format
|
||||||
name needs to be updated accordingly. Please refer to
|
name needs to be updated accordingly. Please refer to
|
||||||
file_format_name_map[] defined in trx0sys.c for the next
|
file_format_name_map[] defined in trx0sys.c for the next
|
||||||
file format name. */
|
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,
|
PLUGIN_VAR_OPCMDARG,
|
||||||
"The highest file format in the tablespace.",
|
"The highest file format in the tablespace.",
|
||||||
innodb_file_format_check_validate,
|
innodb_file_format_max_validate,
|
||||||
innodb_file_format_check_update, "Barracuda");
|
innodb_file_format_max_update, "Antelope");
|
||||||
|
|
||||||
static MYSQL_SYSVAR_ULONG(flush_log_at_trx_commit, srv_flush_log_at_trx_commit,
|
static MYSQL_SYSVAR_ULONG(flush_log_at_trx_commit, srv_flush_log_at_trx_commit,
|
||||||
PLUGIN_VAR_OPCMDARG,
|
PLUGIN_VAR_OPCMDARG,
|
||||||
@ -11119,6 +11084,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
|
|||||||
MYSQL_SYSVAR(file_per_table),
|
MYSQL_SYSVAR(file_per_table),
|
||||||
MYSQL_SYSVAR(file_format),
|
MYSQL_SYSVAR(file_format),
|
||||||
MYSQL_SYSVAR(file_format_check),
|
MYSQL_SYSVAR(file_format_check),
|
||||||
|
MYSQL_SYSVAR(file_format_max),
|
||||||
MYSQL_SYSVAR(flush_log_at_trx_commit),
|
MYSQL_SYSVAR(flush_log_at_trx_commit),
|
||||||
MYSQL_SYSVAR(flush_method),
|
MYSQL_SYSVAR(flush_method),
|
||||||
MYSQL_SYSVAR(force_recovery),
|
MYSQL_SYSVAR(force_recovery),
|
||||||
|
@ -88,6 +88,10 @@ combination of types */
|
|||||||
new BLOB treatment */
|
new BLOB treatment */
|
||||||
/** Maximum supported file format */
|
/** Maximum supported file format */
|
||||||
#define DICT_TF_FORMAT_MAX DICT_TF_FORMAT_ZIP
|
#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 */
|
#define DICT_TF_BITS 6 /*!< number of flag bits */
|
||||||
#if (1 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT)) <= DICT_TF_FORMAT_MAX
|
#if (1 << (DICT_TF_BITS - DICT_TF_FORMAT_SHIFT)) <= DICT_TF_FORMAT_MAX
|
||||||
|
@ -101,7 +101,7 @@ extern ulint srv_file_format;
|
|||||||
/** Whether to check file format during startup. A value of
|
/** Whether to check file format during startup. A value of
|
||||||
DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE. The default is to
|
DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE. The default is to
|
||||||
set it to the highest format we support. */
|
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
|
/** Place locks to records only i.e. do not use next-key locking except
|
||||||
on duplicate key checking and foreign key checking */
|
on duplicate key checking and foreign key checking */
|
||||||
extern ibool srv_locks_unsafe_for_binlog;
|
extern ibool srv_locks_unsafe_for_binlog;
|
||||||
|
@ -2678,6 +2678,12 @@ row_sel_store_mysql_rec(
|
|||||||
prebuilt->blob_heap = NULL;
|
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++) {
|
for (i = 0; i < prebuilt->n_template; i++) {
|
||||||
|
|
||||||
templ = prebuilt->mysql_template + i;
|
templ = prebuilt->mysql_template + i;
|
||||||
|
@ -127,7 +127,7 @@ UNIV_INTERN ulint srv_file_format = 0;
|
|||||||
/** Whether to check file format during startup. A value of
|
/** Whether to check file format during startup. A value of
|
||||||
DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE. The default is to
|
DICT_TF_FORMAT_MAX + 1 means no checking ie. FALSE. The default is to
|
||||||
set it to the highest format we support. */
|
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
|
#if DICT_TF_FORMAT_51
|
||||||
# error "DICT_TF_FORMAT_51 must be 0!"
|
# error "DICT_TF_FORMAT_51 must be 0!"
|
||||||
@ -2371,30 +2371,6 @@ loop:
|
|||||||
OS_THREAD_DUMMY_RETURN;
|
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.
|
Check whether any background thread is active.
|
||||||
@return FALSE if all are are suspended or have exited. */
|
@return FALSE if all are are suspended or have exited. */
|
||||||
@ -2431,9 +2407,7 @@ void
|
|||||||
srv_active_wake_master_thread(void)
|
srv_active_wake_master_thread(void)
|
||||||
/*===============================*/
|
/*===============================*/
|
||||||
{
|
{
|
||||||
ut_ad(!mutex_own(&kernel_mutex));
|
srv_activity_count++;
|
||||||
|
|
||||||
srv_inc_activity_count_low();
|
|
||||||
|
|
||||||
if (srv_n_threads_active[SRV_MASTER] == 0) {
|
if (srv_n_threads_active[SRV_MASTER] == 0) {
|
||||||
|
|
||||||
|
@ -1590,7 +1590,7 @@ innobase_start_or_create_for_mysql(void)
|
|||||||
consistent state, this is REQUIRED for the recovery
|
consistent state, this is REQUIRED for the recovery
|
||||||
process to work. */
|
process to work. */
|
||||||
err = trx_sys_file_format_max_check(
|
err = trx_sys_file_format_max_check(
|
||||||
srv_check_file_format_at_startup);
|
srv_max_file_format_at_startup);
|
||||||
|
|
||||||
if (err != DB_SUCCESS) {
|
if (err != DB_SUCCESS) {
|
||||||
return(err);
|
return(err);
|
||||||
|
@ -135,7 +135,7 @@ UNIV_INTERN mysql_pfs_key_t file_format_max_mutex_key;
|
|||||||
|
|
||||||
#ifndef UNIV_HOTBACKUP
|
#ifndef UNIV_HOTBACKUP
|
||||||
/** This is used to track the maximum file format id known to InnoDB. It's
|
/** 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. */
|
or create a table. */
|
||||||
static file_format_t file_format_max;
|
static file_format_t file_format_max;
|
||||||
|
|
||||||
@ -1160,7 +1160,7 @@ trx_sys_file_format_max_check(
|
|||||||
if (format_id == ULINT_UNDEFINED) {
|
if (format_id == ULINT_UNDEFINED) {
|
||||||
/* Format ID was not set. Set it to minimum possible
|
/* Format ID was not set. Set it to minimum possible
|
||||||
value. */
|
value. */
|
||||||
format_id = DICT_TF_FORMAT_51;
|
format_id = DICT_TF_FORMAT_MIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_print_timestamp(stderr);
|
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 is not set then set it to the minimum. */
|
||||||
if (format_id == ULINT_UNDEFINED) {
|
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
|
/* We don't need a mutex here, as this function should only
|
||||||
be called once at start up. */
|
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.name = trx_sys_file_format_id_to_name(
|
||||||
file_format_max.id);
|
file_format_max.id);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user