Commit 2a207ff1 authored by Vasil Dimov's avatar Vasil Dimov

Merge mysql-trunk-innodb -> mysql-trunk-bugfixing

parents af632d82 e4b19dd4
...@@ -920,7 +920,7 @@ create index t1u on t1 (u(1)); ...@@ -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; ...@@ -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;
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 Antelope
set global innodb_file_format_check = @old_innodb_file_format_check; set global innodb_file_format_max = @old_innodb_file_format_max;
select @@innodb_file_format_check; select @@innodb_file_format_max;
@@innodb_file_format_check @@innodb_file_format_max
Antelope Antelope
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'
set global innodb_file_format_check = Bear; set global innodb_file_format_max = Bear;
ERROR 42000: Variable 'innodb_file_format_check' can't be set to the value of 'Bear' ERROR 42000: Variable 'innodb_file_format_max' can't be set to the value of 'Bear'
set global innodb_file_format_check = on; set global innodb_file_format_max = on;
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 'ON'
set global innodb_file_format_check = off; set global innodb_file_format_max = off;
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 'off'
...@@ -126,5 +126,5 @@ Warning 1265 Data truncated for column 'col79' at row 1 ...@@ -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 ...@@ -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; ...@@ -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' ...@@ -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 ...@@ -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 @@ ...@@ -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 @@ ...@@ -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; ...@@ -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 @@ ...@@ -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; ...@@ -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 @@ ...@@ -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)); ...@@ -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; ...@@ -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 @@ ...@@ -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; ...@@ -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; ...@@ -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; ...@@ -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 ...@@ -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;
# 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
-- 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; ...@@ -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;
-- 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; ...@@ -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;
-- 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; ...@@ -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 ...@@ -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: ...@@ -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;
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 @@ ...@@ -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: ...@@ -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: ...@@ -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 */
......
This diff is collapsed.
...@@ -88,6 +88,10 @@ combination of types */ ...@@ -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; ...@@ -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( ...@@ -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; ...@@ -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: ...@@ -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 ...@@ -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) ...@@ -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; ...@@ -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( ...@@ -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) ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment