Commit b4ef7b25 authored by Alexander Barkov's avatar Alexander Barkov

Merge remote-tracking branch 'origin/10.2' into bb-10.2-ext

parents b6aa3d2a 1ab3866d
......@@ -72,7 +72,7 @@ t1 CREATE TABLE `t1` (
`c1` bigint(20) NOT NULL AUTO_INCREMENT,
`b` char(200) DEFAULT NULL,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB AUTO_INCREMENT=377 DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=4
) ENGINE=InnoDB AUTO_INCREMENT=504 DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=4
SELECT COUNT(*) FROM t1;
COUNT(*)
256
......
call mtr.add_suppression("InnoDB: Tablespace for table .* is set as discarded.");
call mtr.add_suppression("InnoDB: Cannot calculate statistics for table .* because the .ibd file is missing. Please refer to .* for how to resolve the issue.");
SET GLOBAL innodb_file_format = `Barracuda`;
Warnings:
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
SET GLOBAL innodb_file_per_table = ON;
CREATE TABLE t1 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB encrypted=yes;
CREATE TABLE t2 (id INT NOT NULL PRIMARY KEY, a VARCHAR(255)) ENGINE=InnoDB;
......@@ -124,5 +122,3 @@ NOT FOUND /barfoo/ in t3.ibd
# Restart mysqld --innodb_encrypt_tables=0 --innodb_encryption_threads=0
DROP PROCEDURE innodb_insert_proc;
DROP TABLE t1, t2, t3;
Warnings:
Warning 131 Using innodb_file_format is deprecated and the parameter may be removed in future releases. See http://dev.mysql.com/doc/refman/5.7/en/innodb-file-format.html
select @@global.innodb_use_fallocate;
@@global.innodb_use_fallocate
0
select @@session.innodb_use_fallocate;
ERROR HY000: Variable 'innodb_use_fallocate' is a GLOBAL variable
show global variables like 'innodb_use_fallocate';
Variable_name Value
innodb_use_fallocate OFF
show session variables like 'innodb_use_fallocate';
Variable_name Value
innodb_use_fallocate OFF
select * from information_schema.global_variables where variable_name='innodb_use_fallocate';
VARIABLE_NAME VARIABLE_VALUE
INNODB_USE_FALLOCATE OFF
select * from information_schema.session_variables where variable_name='innodb_use_fallocate';
VARIABLE_NAME VARIABLE_VALUE
INNODB_USE_FALLOCATE OFF
set global innodb_use_fallocate=1;
ERROR HY000: Variable 'innodb_use_fallocate' is a read only variable
set session innodb_use_fallocate=1;
ERROR HY000: Variable 'innodb_use_fallocate' is a read only variable
......@@ -2581,20 +2581,6 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_USE_FALLOCATE
SESSION_VALUE NULL
GLOBAL_VALUE OFF
GLOBAL_VALUE_ORIGIN COMPILE-TIME
DEFAULT_VALUE OFF
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BOOLEAN
VARIABLE_COMMENT Preallocate files fast, using operating system functionality. On POSIX systems, posix_fallocate system call is used.
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY YES
COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_USE_MTFLUSH
SESSION_VALUE NULL
GLOBAL_VALUE OFF
......
--source include/have_innodb.inc
# bool readonly
#
# show values;
#
select @@global.innodb_use_fallocate;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
select @@session.innodb_use_fallocate;
show global variables like 'innodb_use_fallocate';
show session variables like 'innodb_use_fallocate';
select * from information_schema.global_variables where variable_name='innodb_use_fallocate';
select * from information_schema.session_variables where variable_name='innodb_use_fallocate';
#
# show that it's read-only
#
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set global innodb_use_fallocate=1;
--error ER_INCORRECT_GLOBAL_LOCAL_VAR
set session innodb_use_fallocate=1;
......@@ -484,7 +484,7 @@ fil_space_is_flushed(
return(true);
}
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
#include <sys/ioctl.h>
/** FusionIO atomic write control info */
......@@ -511,7 +511,7 @@ fil_fusionio_enable_atomic_write(os_file_t file)
return(false);
}
#endif /* !NO_FALLOCATE && UNIV_LINUX */
#endif /* UNIV_LINUX */
/** Append a file to the chain of files of a space.
@param[in] name file name of a file that is not open
......@@ -3520,11 +3520,10 @@ fil_ibd_create(
return(DB_ERROR);
}
bool atomic_write;
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (fil_fusionio_enable_atomic_write(file)) {
#ifdef UNIV_LINUX
const bool atomic_write = fil_fusionio_enable_atomic_write(file);
if (atomic_write) {
/* This is required by FusionIO HW/Firmware */
int ret = posix_fallocate(file, 0, size * UNIV_PAGE_SIZE);
......@@ -3547,21 +3546,14 @@ fil_ibd_create(
} else {
success = true;
}
atomic_write = true;
} else {
atomic_write = false;
success = os_file_set_size(
path, file, size * UNIV_PAGE_SIZE, srv_read_only_mode);
}
} else
#else
atomic_write = false;
const bool atomic_write = false;
#endif /* UNIV_LINUX */
{
success = os_file_set_size(
path, file, size * UNIV_PAGE_SIZE, srv_read_only_mode);
#endif /* !NO_FALLOCATE && UNIV_LINUX */
}
if (!success) {
os_file_close(file);
......@@ -3913,18 +3905,13 @@ fil_ibd_open(
df_dict.close();
}
bool atomic_write;
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf && df_default.is_open()) {
atomic_write = fil_fusionio_enable_atomic_write(
df_default.handle());
} else {
atomic_write = false;
}
#ifdef UNIV_LINUX
const bool atomic_write = !srv_use_doublewrite_buf
&& df_default.is_open()
&& fil_fusionio_enable_atomic_write(df_default.handle());
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif /* UNIV_LINUX */
/* We have now checked all possible tablespace locations and
have a count of how many unique files we found. If things are
......@@ -5052,7 +5039,7 @@ fil_space_extend(
ut_ad(len > 0);
const char* name = node->name == NULL ? space->name : node->name;
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/* This is required by FusionIO HW/Firmware */
int ret = posix_fallocate(node->handle, node_start, len);
......@@ -5077,7 +5064,7 @@ fil_space_extend(
err = DB_IO_ERROR;
}
#endif /* NO_FALLOCATE || !UNIV_LINUX */
#endif
if (!node->atomic_write || err == DB_IO_ERROR) {
......
......@@ -122,18 +122,12 @@ Tablespace::open_or_create(bool is_temp)
break;
}
bool atomic_write;
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf) {
atomic_write = fil_fusionio_enable_atomic_write(
#ifdef UNIV_LINUX
const bool atomic_write = fil_fusionio_enable_atomic_write(
it->m_handle);
} else {
atomic_write = false;
}
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif
/* We can close the handle now and open the tablespace
the proper way. */
......
......@@ -909,28 +909,24 @@ SysTablespace::open_or_create(
return(err);
}
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/* Note: This should really be per node and not per
tablespace because a tablespace can contain multiple
files (nodes). The implication is that all files of
the tablespace should be on the same medium. */
if (fil_fusionio_enable_atomic_write(it->m_handle)) {
it->m_atomic_write
= fil_fusionio_enable_atomic_write(it->m_handle);
if (srv_use_doublewrite_buf) {
if (it->m_atomic_write && srv_use_doublewrite_buf) {
ib::info() << "FusionIO atomic IO enabled,"
" disabling the double write buffer";
srv_use_doublewrite_buf = false;
}
it->m_atomic_write = true;
} else {
it->m_atomic_write = false;
}
#else
it->m_atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX*/
#endif
}
if (!create_new_db && flush_lsn) {
......
......@@ -250,7 +250,6 @@ values */
static ulong innobase_fast_shutdown = 1;
static my_bool innobase_file_format_check = TRUE;
static my_bool innobase_use_atomic_writes = FALSE;
static my_bool innobase_use_fallocate = TRUE;
static my_bool innobase_use_doublewrite = TRUE;
static my_bool innobase_use_checksums = TRUE;
static my_bool innobase_locks_unsafe_for_binlog = FALSE;
......@@ -4637,9 +4636,6 @@ innobase_init(
data_mysql_default_charset_coll = (ulint) default_charset_info->number;
innobase_commit_concurrency_init_default();
#ifdef HAVE_POSIX_FALLOCATE
srv_use_posix_fallocate = (ibool) innobase_use_fallocate;
#endif
srv_use_atomic_writes = (ibool) innobase_use_atomic_writes;
if (innobase_use_atomic_writes) {
fprintf(stderr, "InnoDB: using atomic writes.\n");
......@@ -4658,13 +4654,6 @@ innobase_init(
srv_file_flush_method_str = (char*)"O_DIRECT";
fprintf(stderr, "InnoDB: using O_DIRECT due to atomic writes.\n");
}
#endif
#ifdef HAVE_POSIX_FALLOCATE
/* Due to a bug in directFS, using atomics needs
* posix_fallocate to extend the file
* pwrite() past end of the file won't work
*/
srv_use_posix_fallocate = TRUE;
#endif
}
......@@ -21957,11 +21946,6 @@ static MYSQL_SYSVAR_BOOL(use_atomic_writes, innobase_use_atomic_writes,
"on Linux only with FusionIO device, and directFS filesystem.",
NULL, NULL, FALSE);
static MYSQL_SYSVAR_BOOL(use_fallocate, innobase_use_fallocate,
PLUGIN_VAR_NOCMDARG | PLUGIN_VAR_READONLY,
"Preallocate files fast, using operating system functionality. On POSIX systems, posix_fallocate system call is used.",
NULL, NULL, FALSE);
static MYSQL_SYSVAR_ULONG(io_capacity, srv_io_capacity,
PLUGIN_VAR_RQCMDARG,
"Number of IOPs the server can do. Tunes the background IO rate",
......@@ -23187,7 +23171,6 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(data_home_dir),
MYSQL_SYSVAR(doublewrite),
MYSQL_SYSVAR(use_atomic_writes),
MYSQL_SYSVAR(use_fallocate),
MYSQL_SYSVAR(api_enable_binlog),
MYSQL_SYSVAR(api_enable_mdl),
MYSQL_SYSVAR(api_disable_rowlock),
......
......@@ -1799,14 +1799,14 @@ fil_names_clear(
lsn_t lsn,
bool do_write);
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
#ifdef UNIV_LINUX
/**
Try and enable FusionIO atomic writes.
@param[in] file OS file handle
@return true if successful */
bool
fil_fusionio_enable_atomic_write(os_file_t file);
#endif /* !NO_FALLOCATE && UNIV_LINUX */
#endif /* UNIV_LINUX */
/** Note that the file system where the file resides doesn't support PUNCH HOLE
@param[in,out] node Node to set */
......
......@@ -293,11 +293,6 @@ extern my_bool srv_numa_interleave;
/* Use trim operation */
extern my_bool srv_use_trim;
/* Use posix fallocate */
#ifdef HAVE_POSIX_FALLOCATE
extern my_bool srv_use_posix_fallocate;
#endif
/* Use atomic writes i.e disable doublewrite buffer */
extern my_bool srv_use_atomic_writes;
......
......@@ -190,8 +190,6 @@ my_bool srv_numa_interleave = FALSE;
/* If this flag is TRUE, then we will use fallocate(PUCH_HOLE)
to the pages */
UNIV_INTERN my_bool srv_use_trim = FALSE;
/* If this flag is TRUE, then we will use posix fallocate for file extentsion */
UNIV_INTERN my_bool srv_use_posix_fallocate = FALSE;
/* If this flag is TRUE, then we disable doublewrite buffer */
UNIV_INTERN my_bool srv_use_atomic_writes = FALSE;
/* If this flag IS TRUE, then we use this algorithm for page compressing the pages */
......
......@@ -681,17 +681,12 @@ srv_undo_tablespace_open(
os_offset_t size;
fil_space_t* space;
bool atomic_write;
#if !defined(NO_FALLOCATE) && defined(UNIV_LINUX)
if (!srv_use_doublewrite_buf) {
atomic_write = fil_fusionio_enable_atomic_write(fh);
} else {
atomic_write = false;
}
#ifdef UNIV_LINUX
const bool atomic_write = !srv_use_doublewrite_buf
&& fil_fusionio_enable_atomic_write(fh);
#else
atomic_write = false;
#endif /* !NO_FALLOCATE && UNIV_LINUX */
const bool atomic_write = false;
#endif
size = os_file_get_size(fh);
ut_a(size != (os_offset_t) -1);
......
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