Merge 10.2 into bb-10.2-ext
This commit is contained in:
commit
2ec7b87053
@ -11,7 +11,7 @@ language: cpp
|
|||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
- osx
|
- osx
|
||||||
osx_image: xcode8.3
|
osx_image: xcode9.1
|
||||||
compiler:
|
compiler:
|
||||||
- gcc
|
- gcc
|
||||||
- clang
|
- clang
|
||||||
|
2
VERSION
2
VERSION
@ -1,3 +1,3 @@
|
|||||||
MYSQL_VERSION_MAJOR=10
|
MYSQL_VERSION_MAJOR=10
|
||||||
MYSQL_VERSION_MINOR=2
|
MYSQL_VERSION_MINOR=2
|
||||||
MYSQL_VERSION_PATCH=10
|
MYSQL_VERSION_PATCH=11
|
||||||
|
@ -418,8 +418,9 @@ The following options may be given as the first argument:
|
|||||||
file.Value can be between 0 and 11. Higher values mean
|
file.Value can be between 0 and 11. Higher values mean
|
||||||
more verbosity
|
more verbosity
|
||||||
--long-query-time=# Log all queries that have taken more than long_query_time
|
--long-query-time=# Log all queries that have taken more than long_query_time
|
||||||
seconds to execute to file. The argument will be treated
|
seconds to execute to the slow query log file. The
|
||||||
as a decimal value with microsecond precision
|
argument will be treated as a decimal value with
|
||||||
|
microsecond precision
|
||||||
--low-priority-updates
|
--low-priority-updates
|
||||||
INSERT/DELETE/UPDATE has lower priority than selects
|
INSERT/DELETE/UPDATE has lower priority than selects
|
||||||
--lower-case-table-names[=#]
|
--lower-case-table-names[=#]
|
||||||
|
@ -12,4 +12,4 @@
|
|||||||
|
|
||||||
innodb_scrub : MDEV-8139 scrubbing does not work reliably
|
innodb_scrub : MDEV-8139 scrubbing does not work reliably
|
||||||
innodb_scrub_background : MDEV-8139 scrubbing does not work reliably
|
innodb_scrub_background : MDEV-8139 scrubbing does not work reliably
|
||||||
|
innodb-redo-badkey : MDEV-13893 / MDEV-12699 Improve crash recovery of corrupted data pages
|
||||||
|
@ -34,11 +34,11 @@ t4 CREATE TABLE `t4` (
|
|||||||
PARTITION BY HASH (`a`)
|
PARTITION BY HASH (`a`)
|
||||||
PARTITIONS 2
|
PARTITIONS 2
|
||||||
alter table t1 encrypted=no;
|
alter table t1 encrypted=no;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTED'
|
||||||
alter table t2 encrypted=yes;
|
alter table t2 encrypted=yes;
|
||||||
alter table t3 encrypted=default;
|
alter table t3 encrypted=default;
|
||||||
alter table t4 encrypted=no;
|
alter table t4 encrypted=no;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTED'
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@ -14,7 +14,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` char(200) DEFAULT NULL
|
`b` char(200) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=2
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=2
|
||||||
alter table t1 encryption_key_id=3;
|
alter table t1 encryption_key_id=3;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@ -14,7 +14,7 @@ t1 CREATE TABLE `t1` (
|
|||||||
`b` char(200) DEFAULT NULL
|
`b` char(200) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=2
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `encrypted`=yes `encryption_key_id`=2
|
||||||
alter table t1 encryption_key_id=3;
|
alter table t1 encryption_key_id=3;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
show create table t1;
|
show create table t1;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
t1 CREATE TABLE `t1` (
|
t1 CREATE TABLE `t1` (
|
||||||
|
@ -41,11 +41,10 @@ CREATE TABLE t2 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNOD
|
|||||||
Warnings:
|
Warnings:
|
||||||
Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 1 when encryption is disabled
|
Warning 140 InnoDB: Ignored ENCRYPTION_KEY_ID 1 when encryption is disabled
|
||||||
ALTER TABLE t1 ENCRYPTION_KEY_ID=99;
|
ALTER TABLE t1 ENCRYPTION_KEY_ID=99;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available
|
Warning 140 InnoDB: ENCRYPTION_KEY_ID 99 not available
|
||||||
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
Error 1478 Table storage engine 'InnoDB' does not support the create option 'ENCRYPTION_KEY_ID'
|
||||||
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
|
||||||
set innodb_default_encryption_key_id = 1;
|
set innodb_default_encryption_key_id = 1;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
@ -5,7 +5,7 @@ ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
|||||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
c VARCHAR(256), coordinate POINT NOT NULL, SPATIAL index(coordinate)) ENGINE=INNODB;
|
c VARCHAR(256), coordinate POINT NOT NULL, SPATIAL index(coordinate)) ENGINE=INNODB;
|
||||||
ALTER TABLE t1 ENCRYPTED=YES;
|
ALTER TABLE t1 ENCRYPTED=YES;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'ENCRYPTED'
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
c VARCHAR(256), coordinate POINT NOT NULL) ENCRYPTED=YES ENGINE=INNODB;
|
c VARCHAR(256), coordinate POINT NOT NULL) ENCRYPTED=YES ENGINE=INNODB;
|
||||||
|
@ -22,13 +22,11 @@ show create table t2;
|
|||||||
show create table t3;
|
show create table t3;
|
||||||
show create table t4;
|
show create table t4;
|
||||||
|
|
||||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
alter table t1 encrypted=no;
|
alter table t1 encrypted=no;
|
||||||
alter table t2 encrypted=yes;
|
alter table t2 encrypted=yes;
|
||||||
alter table t3 encrypted=default;
|
alter table t3 encrypted=default;
|
||||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
alter table t4 encrypted=no;
|
alter table t4 encrypted=no;
|
||||||
|
|
||||||
show create table t1;
|
show create table t1;
|
||||||
|
@ -7,8 +7,7 @@ insert t1 values (12345, repeat('1234567890', 20));
|
|||||||
|
|
||||||
alter table t1 encryption_key_id=2;
|
alter table t1 encryption_key_id=2;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
alter table t1 encryption_key_id=3;
|
alter table t1 encryption_key_id=3;
|
||||||
show create table t1;
|
show create table t1;
|
||||||
alter table t1 encryption_key_id=33;
|
alter table t1 encryption_key_id=33;
|
||||||
@ -17,4 +16,3 @@ alter table t1 encryption_key_id=4;
|
|||||||
show create table t1;
|
show create table t1;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
@ -27,10 +27,8 @@ DROP TABLE t1;
|
|||||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB;
|
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB;
|
||||||
SHOW CREATE TABLE t1;
|
SHOW CREATE TABLE t1;
|
||||||
CREATE TABLE t2 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=1;
|
CREATE TABLE t2 (pk INT PRIMARY KEY AUTO_INCREMENT, c VARCHAR(256)) ENGINE=INNODB ENCRYPTED=NO ENCRYPTION_KEY_ID=1;
|
||||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error 1005
|
|
||||||
ALTER TABLE t1 ENCRYPTION_KEY_ID=99;
|
ALTER TABLE t1 ENCRYPTION_KEY_ID=99;
|
||||||
--replace_regex /#sql-[0-9a-f_]*/#sql-temporary/
|
|
||||||
SHOW WARNINGS;
|
SHOW WARNINGS;
|
||||||
set innodb_default_encryption_key_id = 1;
|
set innodb_default_encryption_key_id = 1;
|
||||||
|
|
||||||
|
@ -20,10 +20,8 @@ ENCRYPTED=YES;
|
|||||||
#
|
#
|
||||||
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
CREATE TABLE t1 (pk INT PRIMARY KEY AUTO_INCREMENT,
|
||||||
c VARCHAR(256), coordinate POINT NOT NULL, SPATIAL index(coordinate)) ENGINE=INNODB;
|
c VARCHAR(256), coordinate POINT NOT NULL, SPATIAL index(coordinate)) ENGINE=INNODB;
|
||||||
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error ER_CANT_CREATE_TABLE
|
|
||||||
ALTER TABLE t1 ENCRYPTED=YES;
|
ALTER TABLE t1 ENCRYPTED=YES;
|
||||||
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
1
mysql-test/suite/gcol/disabled.def
Normal file
1
mysql-test/suite/gcol/disabled.def
Normal file
@ -0,0 +1 @@
|
|||||||
|
innodb_virtual_debug_purge : MDEV-13568 should purge yield to LOCK TABLES?
|
@ -36,12 +36,11 @@ innodb_redundant CREATE TABLE `innodb_redundant` (
|
|||||||
`b` char(200) DEFAULT NULL
|
`b` char(200) DEFAULT NULL
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
|
||||||
alter table innodb_redundant page_compressed=1;
|
alter table innodb_redundant page_compressed=1;
|
||||||
ERROR HY000: Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
|
||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
Warning 140 InnoDB: PAGE_COMPRESSED table can't have ROW_TYPE=REDUNDANT
|
Warning 140 InnoDB: PAGE_COMPRESSED table can't have ROW_TYPE=REDUNDANT
|
||||||
Error 1005 Can't create table `test`.`#sql-temporary` (errno: 140 "Wrong create options")
|
Error 1478 Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED'
|
||||||
Warning 1030 Got error 140 "Wrong create options" from storage engine InnoDB
|
|
||||||
show create table innodb_redundant;
|
show create table innodb_redundant;
|
||||||
Table Create Table
|
Table Create Table
|
||||||
innodb_redundant CREATE TABLE `innodb_redundant` (
|
innodb_redundant CREATE TABLE `innodb_redundant` (
|
||||||
|
@ -235,7 +235,8 @@ t1 CREATE TABLE `t1` (
|
|||||||
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
ALTER TABLE t1 ROW_FORMAT=REDUNDANT;
|
||||||
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt2 WAIT_FOR dml2_done';
|
SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt2 WAIT_FOR dml2_done';
|
||||||
SET lock_wait_timeout = 10;
|
SET lock_wait_timeout = 10;
|
||||||
ALTER TABLE t1 ROW_FORMAT=COMPACT, ALGORITHM = INPLACE;
|
ALTER TABLE t1 ROW_FORMAT=COMPACT
|
||||||
|
PAGE_COMPRESSED = YES PAGE_COMPRESSION_LEVEL = 1, ALGORITHM = INPLACE;
|
||||||
# session default
|
# session default
|
||||||
connection default;
|
connection default;
|
||||||
INSERT INTO t1 SELECT 80 + c1, c2, c3 FROM t1;
|
INSERT INTO t1 SELECT 80 + c1, c2, c3 FROM t1;
|
||||||
|
@ -26,10 +26,8 @@ create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row
|
|||||||
show warnings;
|
show warnings;
|
||||||
create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant;
|
create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant;
|
||||||
show create table innodb_redundant;
|
show create table innodb_redundant;
|
||||||
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
--error 1005
|
|
||||||
alter table innodb_redundant page_compressed=1;
|
alter table innodb_redundant page_compressed=1;
|
||||||
--replace_regex /#sql-[0-9a-f_]*`/#sql-temporary`/
|
|
||||||
show warnings;
|
show warnings;
|
||||||
show create table innodb_redundant;
|
show create table innodb_redundant;
|
||||||
alter table innodb_redundant row_format=compact page_compressed=1;
|
alter table innodb_redundant row_format=compact page_compressed=1;
|
||||||
|
@ -215,7 +215,8 @@ SET DEBUG_SYNC = 'row_log_table_apply1_before SIGNAL rebuilt2 WAIT_FOR dml2_done
|
|||||||
# Ensure that the ALTER TABLE will be executed even with some concurrent DML.
|
# Ensure that the ALTER TABLE will be executed even with some concurrent DML.
|
||||||
SET lock_wait_timeout = 10;
|
SET lock_wait_timeout = 10;
|
||||||
--send
|
--send
|
||||||
ALTER TABLE t1 ROW_FORMAT=COMPACT, ALGORITHM = INPLACE;
|
ALTER TABLE t1 ROW_FORMAT=COMPACT
|
||||||
|
PAGE_COMPRESSED = YES PAGE_COMPRESSION_LEVEL = 1, ALGORITHM = INPLACE;
|
||||||
|
|
||||||
# Generate some log (delete-mark, delete-unmark, insert etc.)
|
# Generate some log (delete-mark, delete-unmark, insert etc.)
|
||||||
# while the index creation is blocked. Some of this may run
|
# while the index creation is blocked. Some of this may run
|
||||||
|
@ -1795,7 +1795,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
|||||||
DEFAULT_VALUE 10.000000
|
DEFAULT_VALUE 10.000000
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE DOUBLE
|
VARIABLE_TYPE DOUBLE
|
||||||
VARIABLE_COMMENT Log all queries that have taken more than long_query_time seconds to execute to file. The argument will be treated as a decimal value with microsecond precision
|
VARIABLE_COMMENT Log all queries that have taken more than long_query_time seconds to execute to the slow query log file. The argument will be treated as a decimal value with microsecond precision
|
||||||
NUMERIC_MIN_VALUE 0
|
NUMERIC_MIN_VALUE 0
|
||||||
NUMERIC_MAX_VALUE 31536000
|
NUMERIC_MAX_VALUE 31536000
|
||||||
NUMERIC_BLOCK_SIZE NULL
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
@ -1963,7 +1963,7 @@ GLOBAL_VALUE_ORIGIN COMPILE-TIME
|
|||||||
DEFAULT_VALUE 10.000000
|
DEFAULT_VALUE 10.000000
|
||||||
VARIABLE_SCOPE SESSION
|
VARIABLE_SCOPE SESSION
|
||||||
VARIABLE_TYPE DOUBLE
|
VARIABLE_TYPE DOUBLE
|
||||||
VARIABLE_COMMENT Log all queries that have taken more than long_query_time seconds to execute to file. The argument will be treated as a decimal value with microsecond precision
|
VARIABLE_COMMENT Log all queries that have taken more than long_query_time seconds to execute to the slow query log file. The argument will be treated as a decimal value with microsecond precision
|
||||||
NUMERIC_MIN_VALUE 0
|
NUMERIC_MIN_VALUE 0
|
||||||
NUMERIC_MAX_VALUE 31536000
|
NUMERIC_MAX_VALUE 31536000
|
||||||
NUMERIC_BLOCK_SIZE NULL
|
NUMERIC_BLOCK_SIZE NULL
|
||||||
|
@ -153,7 +153,11 @@ log_generic () {
|
|||||||
echo "$msg"
|
echo "$msg"
|
||||||
case $logging in
|
case $logging in
|
||||||
init) ;; # Just echo the message, don't save it anywhere
|
init) ;; # Just echo the message, don't save it anywhere
|
||||||
file) echo "$msg" | "$helper" "$user" log "$err_log" ;;
|
file)
|
||||||
|
if [ -n "$helper" ]; then
|
||||||
|
echo "$msg" | "$helper" "$user" log "$err_log"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
syslog) logger -t "$syslog_tag_mysqld_safe" -p "$priority" "$*" ;;
|
syslog) logger -t "$syslog_tag_mysqld_safe" -p "$priority" "$*" ;;
|
||||||
*)
|
*)
|
||||||
echo "Internal program error (non-fatal):" \
|
echo "Internal program error (non-fatal):" \
|
||||||
@ -173,7 +177,11 @@ log_notice () {
|
|||||||
eval_log_error () {
|
eval_log_error () {
|
||||||
local cmd="$1"
|
local cmd="$1"
|
||||||
case $logging in
|
case $logging in
|
||||||
file) cmd="$cmd 2>&1 | "`shell_quote_string "$helper"`" $user log "`shell_quote_string "$err_log"` ;;
|
file)
|
||||||
|
if [ -n "$helper" ]; then
|
||||||
|
cmd="$cmd 2>&1 | "`shell_quote_string "$helper"`" $user log "`shell_quote_string "$err_log"`
|
||||||
|
fi
|
||||||
|
;;
|
||||||
syslog)
|
syslog)
|
||||||
# mysqld often prefixes its messages with a timestamp, which is
|
# mysqld often prefixes its messages with a timestamp, which is
|
||||||
# redundant when logging to syslog (which adds its own timestamp)
|
# redundant when logging to syslog (which adds its own timestamp)
|
||||||
@ -455,8 +463,9 @@ get_mysql_config() {
|
|||||||
|
|
||||||
# set_malloc_lib LIB
|
# set_malloc_lib LIB
|
||||||
# - If LIB is empty, do nothing and return
|
# - If LIB is empty, do nothing and return
|
||||||
# - If LIB is 'tcmalloc', look for tcmalloc shared library in /usr/lib
|
# - If LIB starts with 'tcmalloc' or 'jemalloc', look for the shared library in
|
||||||
# then pkglibdir. tcmalloc is part of the Google perftools project.
|
# /usr/lib, /usr/lib64 and then pkglibdir.
|
||||||
|
# tcmalloc is part of the Google perftools project.
|
||||||
# - If LIB is an absolute path, assume it is a malloc shared library
|
# - If LIB is an absolute path, assume it is a malloc shared library
|
||||||
#
|
#
|
||||||
# Put LIB in mysqld_ld_preload, which will be added to LD_PRELOAD when
|
# Put LIB in mysqld_ld_preload, which will be added to LD_PRELOAD when
|
||||||
@ -464,23 +473,23 @@ get_mysql_config() {
|
|||||||
set_malloc_lib() {
|
set_malloc_lib() {
|
||||||
malloc_lib="$1"
|
malloc_lib="$1"
|
||||||
|
|
||||||
if [ "$malloc_lib" = tcmalloc ]; then
|
if expr "$malloc_lib" : "\(tcmalloc\|jemalloc\)" > /dev/null ; then
|
||||||
pkglibdir=`get_mysql_config --variable=pkglibdir`
|
pkglibdir=`get_mysql_config --variable=pkglibdir`
|
||||||
malloc_lib=
|
where=''
|
||||||
# This list is kept intentionally simple. Simply set --malloc-lib
|
# This list is kept intentionally simple. Simply set --malloc-lib
|
||||||
# to a full path if another location is desired.
|
# to a full path if another location is desired.
|
||||||
for libdir in /usr/lib "$pkglibdir" "$pkglibdir/mysql"; do
|
for libdir in /usr/lib /usr/lib64 "$pkglibdir" "$pkglibdir/mysql"; do
|
||||||
for flavor in _minimal '' _and_profiler _debug; do
|
tmp=`echo "$libdir/lib$malloc_lib.so".[0-9]`
|
||||||
tmp="$libdir/libtcmalloc$flavor.so"
|
where="$where $libdir"
|
||||||
#log_notice "DEBUG: Checking for malloc lib '$tmp'"
|
# log_notice "DEBUG: Checking for malloc lib '$tmp'"
|
||||||
[ -r "$tmp" ] || continue
|
[ -r "$tmp" ] || continue
|
||||||
malloc_lib="$tmp"
|
malloc_lib="$tmp"
|
||||||
break 2
|
where=''
|
||||||
done
|
break
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ -z "$malloc_lib" ]; then
|
if [ -n "$where" ]; then
|
||||||
log_error "no shared library for --malloc-lib=tcmalloc found in /usr/lib or $pkglibdir"
|
log_error "no shared library for lib$malloc_lib.so.[0-9] found in$where"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -496,8 +505,8 @@ set_malloc_lib() {
|
|||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
log_error "--malloc-lib must be an absolute path or 'tcmalloc'; " \
|
log_error "--malloc-lib must be an absolute path, 'tcmalloc' or " \
|
||||||
"ignoring value '$malloc_lib'"
|
"'jemalloc'; ignoring value '$malloc_lib'"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@ -549,6 +558,9 @@ fi
|
|||||||
helper=`find_in_bin mysqld_safe_helper`
|
helper=`find_in_bin mysqld_safe_helper`
|
||||||
print_defaults=`find_in_bin my_print_defaults`
|
print_defaults=`find_in_bin my_print_defaults`
|
||||||
|
|
||||||
|
# Check if helper exists
|
||||||
|
$helper --help >/dev/null 2>&1 || helper=""
|
||||||
|
|
||||||
#
|
#
|
||||||
# Second, try to find the data directory
|
# Second, try to find the data directory
|
||||||
#
|
#
|
||||||
@ -751,7 +763,7 @@ then
|
|||||||
does not exist or is not executable. Please cd to the mysql installation
|
does not exist or is not executable. Please cd to the mysql installation
|
||||||
directory and restart this script from there as follows:
|
directory and restart this script from there as follows:
|
||||||
./bin/mysqld_safe&
|
./bin/mysqld_safe&
|
||||||
See http://dev.mysql.com/doc/mysql/en/mysqld-safe.html for more information"
|
See https://mariadb.com/kb/en/mysqld_safe for more information"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -1353,6 +1353,8 @@ longlong Item_func_json_contains_path::val_int()
|
|||||||
bzero(p_found, (arg_count-2) * sizeof(bool));
|
bzero(p_found, (arg_count-2) * sizeof(bool));
|
||||||
n_found= arg_count - 2;
|
n_found= arg_count - 2;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
n_found= 0; /* Jost to prevent 'uninitialized value' warnings */
|
||||||
|
|
||||||
result= 0;
|
result= 0;
|
||||||
while (json_get_path_next(&je, &p) == 0)
|
while (json_get_path_next(&je, &p) == 0)
|
||||||
@ -2059,7 +2061,7 @@ String *Item_func_json_merge::val_str(String *str)
|
|||||||
{
|
{
|
||||||
DBUG_ASSERT(fixed == 1);
|
DBUG_ASSERT(fixed == 1);
|
||||||
json_engine_t je1, je2;
|
json_engine_t je1, je2;
|
||||||
String *js1= args[0]->val_json(&tmp_js1), *js2;
|
String *js1= args[0]->val_json(&tmp_js1), *js2=NULL;
|
||||||
uint n_arg;
|
uint n_arg;
|
||||||
LINT_INIT(js2);
|
LINT_INIT(js2);
|
||||||
|
|
||||||
|
@ -8675,7 +8675,7 @@ User_var_log_event(const char* buf, uint event_len,
|
|||||||
Old events will not have this extra byte, thence,
|
Old events will not have this extra byte, thence,
|
||||||
we keep the flags set to UNDEF_F.
|
we keep the flags set to UNDEF_F.
|
||||||
*/
|
*/
|
||||||
uint bytes_read= (uint)((val + val_len) - buf_start);
|
size_t bytes_read= ((val + val_len) - buf_start);
|
||||||
if ((data_written - bytes_read) > 0)
|
if ((data_written - bytes_read) > 0)
|
||||||
{
|
{
|
||||||
flags= (uint) *(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE +
|
flags= (uint) *(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE +
|
||||||
|
@ -2157,15 +2157,15 @@ static void mysqld_exit(int exit_code)
|
|||||||
shutdown_performance_schema(); // we do it as late as possible
|
shutdown_performance_schema(); // we do it as late as possible
|
||||||
#endif
|
#endif
|
||||||
set_malloc_size_cb(NULL);
|
set_malloc_size_cb(NULL);
|
||||||
if (!opt_debugging && !my_disable_leak_check)
|
if (opt_endinfo && global_status_var.global_memory_used)
|
||||||
|
fprintf(stderr, "Warning: Memory not freed: %ld\n",
|
||||||
|
(long) global_status_var.global_memory_used);
|
||||||
|
if (!opt_debugging && !my_disable_leak_check && exit_code == 0)
|
||||||
{
|
{
|
||||||
DBUG_ASSERT(global_status_var.global_memory_used == 0);
|
DBUG_ASSERT(global_status_var.global_memory_used == 0);
|
||||||
}
|
}
|
||||||
cleanup_tls();
|
cleanup_tls();
|
||||||
DBUG_LEAVE;
|
DBUG_LEAVE;
|
||||||
if (opt_endinfo && global_status_var.global_memory_used)
|
|
||||||
fprintf(stderr, "Warning: Memory not freed: %ld\n",
|
|
||||||
(long) global_status_var.global_memory_used);
|
|
||||||
sd_notify(0, "STATUS=MariaDB server is down");
|
sd_notify(0, "STATUS=MariaDB server is down");
|
||||||
exit(exit_code); /* purecov: inspected */
|
exit(exit_code); /* purecov: inspected */
|
||||||
}
|
}
|
||||||
|
@ -1255,8 +1255,8 @@ static bool update_cached_long_query_time(sys_var *self, THD *thd,
|
|||||||
static Sys_var_double Sys_long_query_time(
|
static Sys_var_double Sys_long_query_time(
|
||||||
"long_query_time",
|
"long_query_time",
|
||||||
"Log all queries that have taken more than long_query_time seconds "
|
"Log all queries that have taken more than long_query_time seconds "
|
||||||
"to execute to file. The argument will be treated as a decimal value "
|
"to execute to the slow query log file. The argument will be treated "
|
||||||
"with microsecond precision",
|
"as a decimal value with microsecond precision",
|
||||||
SESSION_VAR(long_query_time_double),
|
SESSION_VAR(long_query_time_double),
|
||||||
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, LONG_TIMEOUT), DEFAULT(10),
|
CMD_LINE(REQUIRED_ARG), VALID_RANGE(0, LONG_TIMEOUT), DEFAULT(10),
|
||||||
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(0),
|
||||||
|
@ -390,23 +390,34 @@ innobase_spatial_exist(
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************//**
|
/** Determine if ALTER TABLE needs to rebuild the table.
|
||||||
Determine if ALTER TABLE needs to rebuild the table.
|
@param ha_alter_info the DDL operation
|
||||||
@param ha_alter_info the DDL operation
|
@param table metadata before ALTER TABLE
|
||||||
@param altered_table MySQL original table
|
|
||||||
@return whether it is necessary to rebuild the table */
|
@return whether it is necessary to rebuild the table */
|
||||||
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||||
bool
|
bool
|
||||||
innobase_need_rebuild(
|
innobase_need_rebuild(
|
||||||
/*==================*/
|
|
||||||
const Alter_inplace_info* ha_alter_info,
|
const Alter_inplace_info* ha_alter_info,
|
||||||
const TABLE* altered_table)
|
const TABLE* table)
|
||||||
{
|
{
|
||||||
Alter_inplace_info::HA_ALTER_FLAGS alter_inplace_flags =
|
Alter_inplace_info::HA_ALTER_FLAGS alter_inplace_flags =
|
||||||
ha_alter_info->handler_flags & ~(INNOBASE_INPLACE_IGNORE);
|
ha_alter_info->handler_flags & ~INNOBASE_INPLACE_IGNORE;
|
||||||
|
|
||||||
if (alter_inplace_flags
|
if (alter_inplace_flags & Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
||||||
== Alter_inplace_info::CHANGE_CREATE_OPTION
|
const ha_table_option_struct& alt_opt=
|
||||||
|
*ha_alter_info->create_info->option_struct;
|
||||||
|
const ha_table_option_struct& opt= *table->s->option_struct;
|
||||||
|
|
||||||
|
if (alt_opt.page_compressed != opt.page_compressed
|
||||||
|
|| alt_opt.page_compression_level
|
||||||
|
!= opt.page_compression_level
|
||||||
|
|| alt_opt.encryption != opt.encryption
|
||||||
|
|| alt_opt.encryption_key_id != opt.encryption_key_id) {
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alter_inplace_flags == Alter_inplace_info::CHANGE_CREATE_OPTION
|
||||||
&& !(ha_alter_info->create_info->used_fields
|
&& !(ha_alter_info->create_info->used_fields
|
||||||
& (HA_CREATE_USED_ROW_FORMAT
|
& (HA_CREATE_USED_ROW_FORMAT
|
||||||
| HA_CREATE_USED_KEY_BLOCK_SIZE))) {
|
| HA_CREATE_USED_KEY_BLOCK_SIZE))) {
|
||||||
@ -416,7 +427,7 @@ innobase_need_rebuild(
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(!!(ha_alter_info->handler_flags & INNOBASE_ALTER_REBUILD));
|
return(!!(alter_inplace_flags & INNOBASE_ALTER_REBUILD));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Check if virtual column in old and new table are in order, excluding
|
/** Check if virtual column in old and new table are in order, excluding
|
||||||
@ -571,28 +582,6 @@ ha_innobase::check_if_supported_inplace_alter(
|
|||||||
|
|
||||||
update_thd();
|
update_thd();
|
||||||
|
|
||||||
/* Change on engine specific table options require rebuild of the
|
|
||||||
table */
|
|
||||||
if (ha_alter_info->handler_flags
|
|
||||||
& Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
|
||||||
ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct;
|
|
||||||
ha_table_option_struct *old_options= table->s->option_struct;
|
|
||||||
|
|
||||||
if (new_options->page_compressed != old_options->page_compressed ||
|
|
||||||
new_options->page_compression_level != old_options->page_compression_level) {
|
|
||||||
ha_alter_info->unsupported_reason = innobase_get_err_msg(
|
|
||||||
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
|
|
||||||
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_options->encryption != old_options->encryption ||
|
|
||||||
new_options->encryption_key_id != old_options->encryption_key_id) {
|
|
||||||
ha_alter_info->unsupported_reason = innobase_get_err_msg(
|
|
||||||
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
|
|
||||||
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ha_alter_info->handler_flags
|
if (ha_alter_info->handler_flags
|
||||||
& ~(INNOBASE_INPLACE_IGNORE
|
& ~(INNOBASE_INPLACE_IGNORE
|
||||||
| INNOBASE_ALTER_NOREBUILD
|
| INNOBASE_ALTER_NOREBUILD
|
||||||
@ -4501,7 +4490,6 @@ prepare_inplace_alter_table_dict(
|
|||||||
to rebuild the table with a temporary name. */
|
to rebuild the table with a temporary name. */
|
||||||
|
|
||||||
if (new_clustered) {
|
if (new_clustered) {
|
||||||
fil_space_crypt_t* crypt_data;
|
|
||||||
const char* new_table_name
|
const char* new_table_name
|
||||||
= dict_mem_create_temporary_tablename(
|
= dict_mem_create_temporary_tablename(
|
||||||
ctx->heap,
|
ctx->heap,
|
||||||
@ -4515,13 +4503,29 @@ prepare_inplace_alter_table_dict(
|
|||||||
uint32_t key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
uint32_t key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
||||||
fil_encryption_t mode = FIL_ENCRYPTION_DEFAULT;
|
fil_encryption_t mode = FIL_ENCRYPTION_DEFAULT;
|
||||||
|
|
||||||
fil_space_t* space = fil_space_acquire(ctx->prebuilt->table->space);
|
if (fil_space_t* space
|
||||||
crypt_data = space->crypt_data;
|
= fil_space_acquire(ctx->prebuilt->table->space)) {
|
||||||
fil_space_release(space);
|
if (const fil_space_crypt_t* crypt_data
|
||||||
|
= space->crypt_data) {
|
||||||
|
key_id = crypt_data->key_id;
|
||||||
|
mode = crypt_data->encryption;
|
||||||
|
}
|
||||||
|
|
||||||
if (crypt_data) {
|
fil_space_release(space);
|
||||||
key_id = crypt_data->key_id;
|
}
|
||||||
mode = crypt_data->encryption;
|
|
||||||
|
if (ha_alter_info->handler_flags
|
||||||
|
& Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
||||||
|
const ha_table_option_struct& alt_opt=
|
||||||
|
*ha_alter_info->create_info->option_struct;
|
||||||
|
const ha_table_option_struct& opt=
|
||||||
|
*old_table->s->option_struct;
|
||||||
|
if (alt_opt.encryption != opt.encryption
|
||||||
|
|| alt_opt.encryption_key_id
|
||||||
|
!= opt.encryption_key_id) {
|
||||||
|
key_id = alt_opt.encryption_key_id;
|
||||||
|
mode = fil_encryption_t(alt_opt.encryption);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (innobase_check_foreigns(
|
if (innobase_check_foreigns(
|
||||||
|
@ -212,32 +212,44 @@ innobase_fulltext_exist(
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************//**
|
/** Determine if ALTER TABLE needs to rebuild the table.
|
||||||
Determine if ALTER TABLE needs to rebuild the table.
|
@param ha_alter_info the DDL operation
|
||||||
@param ha_alter_info the DDL operation
|
@param table metadata before ALTER TABLE
|
||||||
@param altered_table MySQL original table
|
|
||||||
@return whether it is necessary to rebuild the table */
|
@return whether it is necessary to rebuild the table */
|
||||||
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
static MY_ATTRIBUTE((nonnull, warn_unused_result))
|
||||||
bool
|
bool
|
||||||
innobase_need_rebuild(
|
innobase_need_rebuild(
|
||||||
/*==================*/
|
|
||||||
const Alter_inplace_info* ha_alter_info,
|
const Alter_inplace_info* ha_alter_info,
|
||||||
const TABLE* altered_table)
|
const TABLE* table)
|
||||||
{
|
{
|
||||||
Alter_inplace_info::HA_ALTER_FLAGS alter_inplace_flags =
|
Alter_inplace_info::HA_ALTER_FLAGS alter_inplace_flags =
|
||||||
ha_alter_info->handler_flags & ~(INNOBASE_INPLACE_IGNORE);
|
ha_alter_info->handler_flags & ~INNOBASE_INPLACE_IGNORE;
|
||||||
|
|
||||||
if (alter_inplace_flags
|
if (alter_inplace_flags & Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
||||||
== Alter_inplace_info::CHANGE_CREATE_OPTION
|
const ha_table_option_struct& alt_opt=
|
||||||
|
*ha_alter_info->create_info->option_struct;
|
||||||
|
const ha_table_option_struct& opt= *table->s->option_struct;
|
||||||
|
|
||||||
|
if (alt_opt.page_compressed != opt.page_compressed
|
||||||
|
|| alt_opt.page_compression_level
|
||||||
|
!= opt.page_compression_level
|
||||||
|
|| alt_opt.encryption != opt.encryption
|
||||||
|
|| alt_opt.encryption_key_id != opt.encryption_key_id) {
|
||||||
|
return(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (alter_inplace_flags == Alter_inplace_info::CHANGE_CREATE_OPTION
|
||||||
&& !(ha_alter_info->create_info->used_fields
|
&& !(ha_alter_info->create_info->used_fields
|
||||||
& (HA_CREATE_USED_ROW_FORMAT
|
& (HA_CREATE_USED_ROW_FORMAT
|
||||||
| HA_CREATE_USED_KEY_BLOCK_SIZE))) {
|
| HA_CREATE_USED_KEY_BLOCK_SIZE))) {
|
||||||
/* Any other CHANGE_CREATE_OPTION than changing
|
/* Any other CHANGE_CREATE_OPTION than changing
|
||||||
ROW_FORMAT or KEY_BLOCK_SIZE is ignored. */
|
ROW_FORMAT or KEY_BLOCK_SIZE can be done without
|
||||||
|
rebuilding the table. */
|
||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(!!(ha_alter_info->handler_flags & INNOBASE_ALTER_REBUILD));
|
return(!!(alter_inplace_flags & INNOBASE_ALTER_REBUILD));
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Check if InnoDB supports a particular alter table in-place
|
/** Check if InnoDB supports a particular alter table in-place
|
||||||
@ -287,29 +299,6 @@ ha_innobase::check_if_supported_inplace_alter(
|
|||||||
update_thd();
|
update_thd();
|
||||||
trx_search_latch_release_if_reserved(prebuilt->trx);
|
trx_search_latch_release_if_reserved(prebuilt->trx);
|
||||||
|
|
||||||
/* Change on engine specific table options require rebuild of the
|
|
||||||
table */
|
|
||||||
if (ha_alter_info->handler_flags
|
|
||||||
& Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
|
||||||
ha_table_option_struct *new_options= ha_alter_info->create_info->option_struct;
|
|
||||||
ha_table_option_struct *old_options= table->s->option_struct;
|
|
||||||
|
|
||||||
if (new_options->page_compressed != old_options->page_compressed ||
|
|
||||||
new_options->page_compression_level != old_options->page_compression_level ||
|
|
||||||
new_options->atomic_writes != old_options->atomic_writes) {
|
|
||||||
ha_alter_info->unsupported_reason = innobase_get_err_msg(
|
|
||||||
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
|
|
||||||
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (new_options->encryption != old_options->encryption ||
|
|
||||||
new_options->encryption_key_id != old_options->encryption_key_id) {
|
|
||||||
ha_alter_info->unsupported_reason = innobase_get_err_msg(
|
|
||||||
ER_ALTER_OPERATION_NOT_SUPPORTED_REASON);
|
|
||||||
DBUG_RETURN(HA_ALTER_INPLACE_NOT_SUPPORTED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ha_alter_info->handler_flags
|
if (ha_alter_info->handler_flags
|
||||||
& ~(INNOBASE_INPLACE_IGNORE
|
& ~(INNOBASE_INPLACE_IGNORE
|
||||||
| INNOBASE_ALTER_NOREBUILD
|
| INNOBASE_ALTER_NOREBUILD
|
||||||
@ -589,7 +578,7 @@ ha_innobase::check_if_supported_inplace_alter(
|
|||||||
operation is possible. */
|
operation is possible. */
|
||||||
} else if (((ha_alter_info->handler_flags
|
} else if (((ha_alter_info->handler_flags
|
||||||
& Alter_inplace_info::ADD_PK_INDEX)
|
& Alter_inplace_info::ADD_PK_INDEX)
|
||||||
|| innobase_need_rebuild(ha_alter_info, table))
|
|| innobase_need_rebuild(ha_alter_info, table))
|
||||||
&& (innobase_fulltext_exist(altered_table))) {
|
&& (innobase_fulltext_exist(altered_table))) {
|
||||||
/* Refuse to rebuild the table online, if
|
/* Refuse to rebuild the table online, if
|
||||||
fulltext indexes are to survive the rebuild. */
|
fulltext indexes are to survive the rebuild. */
|
||||||
@ -2870,7 +2859,6 @@ prepare_inplace_alter_table_dict(
|
|||||||
to rebuild the table with a temporary name. */
|
to rebuild the table with a temporary name. */
|
||||||
|
|
||||||
if (new_clustered) {
|
if (new_clustered) {
|
||||||
fil_space_crypt_t* crypt_data;
|
|
||||||
const char* new_table_name
|
const char* new_table_name
|
||||||
= dict_mem_create_temporary_tablename(
|
= dict_mem_create_temporary_tablename(
|
||||||
ctx->heap,
|
ctx->heap,
|
||||||
@ -2881,13 +2869,29 @@ prepare_inplace_alter_table_dict(
|
|||||||
ulint key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
ulint key_id = FIL_DEFAULT_ENCRYPTION_KEY;
|
||||||
fil_encryption_t mode = FIL_ENCRYPTION_DEFAULT;
|
fil_encryption_t mode = FIL_ENCRYPTION_DEFAULT;
|
||||||
|
|
||||||
fil_space_t* space = fil_space_acquire(ctx->prebuilt->table->space);
|
if (fil_space_t* space
|
||||||
crypt_data = space->crypt_data;
|
= fil_space_acquire(ctx->prebuilt->table->space)) {
|
||||||
fil_space_release(space);
|
if (const fil_space_crypt_t* crypt_data
|
||||||
|
= space->crypt_data) {
|
||||||
|
key_id = crypt_data->key_id;
|
||||||
|
mode = crypt_data->encryption;
|
||||||
|
}
|
||||||
|
|
||||||
if (crypt_data) {
|
fil_space_release(space);
|
||||||
key_id = crypt_data->key_id;
|
}
|
||||||
mode = crypt_data->encryption;
|
|
||||||
|
if (ha_alter_info->handler_flags
|
||||||
|
& Alter_inplace_info::CHANGE_CREATE_OPTION) {
|
||||||
|
const ha_table_option_struct& alt_opt=
|
||||||
|
*ha_alter_info->create_info->option_struct;
|
||||||
|
const ha_table_option_struct& opt=
|
||||||
|
*old_table->s->option_struct;
|
||||||
|
if (alt_opt.encryption != opt.encryption
|
||||||
|
|| alt_opt.encryption_key_id
|
||||||
|
!= opt.encryption_key_id) {
|
||||||
|
key_id = alt_opt.encryption_key_id;
|
||||||
|
mode = fil_encryption_t(alt_opt.encryption);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (innobase_check_foreigns(
|
if (innobase_check_foreigns(
|
||||||
|
@ -480,8 +480,9 @@ trx_free_prepared(
|
|||||||
trx_t* trx) /*!< in, own: trx object */
|
trx_t* trx) /*!< in, own: trx object */
|
||||||
{
|
{
|
||||||
ut_a(trx_state_eq(trx, TRX_STATE_PREPARED)
|
ut_a(trx_state_eq(trx, TRX_STATE_PREPARED)
|
||||||
|| (trx_state_eq(trx, TRX_STATE_ACTIVE)
|
|| (trx->is_recovered
|
||||||
&& trx->is_recovered
|
&& (trx_state_eq(trx, TRX_STATE_ACTIVE)
|
||||||
|
|| trx_state_eq(trx, TRX_STATE_COMMITTED_IN_MEMORY))
|
||||||
&& (srv_read_only_mode
|
&& (srv_read_only_mode
|
||||||
|| srv_apply_log_only
|
|| srv_apply_log_only
|
||||||
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO)));
|
|| srv_force_recovery >= SRV_FORCE_NO_TRX_UNDO)));
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
|
|
||||||
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
Copyright (c) 1996, 2016, Oracle and/or its affiliates. All Rights Reserved.
|
||||||
Copyright (c) 2014, 2017, MariaDB Corporation. All Rights Reserved.
|
Copyright (c) 2014, 2017, MariaDB Corporation.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it under
|
This program is free software; you can redistribute it and/or modify it under
|
||||||
the terms of the GNU General Public License as published by the Free Software
|
the terms of the GNU General Public License as published by the Free Software
|
||||||
@ -2015,6 +2015,12 @@ trx_undo_free_prepared(
|
|||||||
switch (trx->update_undo->state) {
|
switch (trx->update_undo->state) {
|
||||||
case TRX_UNDO_PREPARED:
|
case TRX_UNDO_PREPARED:
|
||||||
break;
|
break;
|
||||||
|
case TRX_UNDO_CACHED:
|
||||||
|
case TRX_UNDO_TO_FREE:
|
||||||
|
case TRX_UNDO_TO_PURGE:
|
||||||
|
ut_ad(trx_state_eq(trx,
|
||||||
|
TRX_STATE_COMMITTED_IN_MEMORY));
|
||||||
|
/* fall through */
|
||||||
case TRX_UNDO_ACTIVE:
|
case TRX_UNDO_ACTIVE:
|
||||||
/* lock_trx_release_locks() assigns
|
/* lock_trx_release_locks() assigns
|
||||||
trx->is_recovered=false */
|
trx->is_recovered=false */
|
||||||
@ -2033,6 +2039,12 @@ trx_undo_free_prepared(
|
|||||||
switch (trx->insert_undo->state) {
|
switch (trx->insert_undo->state) {
|
||||||
case TRX_UNDO_PREPARED:
|
case TRX_UNDO_PREPARED:
|
||||||
break;
|
break;
|
||||||
|
case TRX_UNDO_CACHED:
|
||||||
|
case TRX_UNDO_TO_FREE:
|
||||||
|
case TRX_UNDO_TO_PURGE:
|
||||||
|
ut_ad(trx_state_eq(trx,
|
||||||
|
TRX_STATE_COMMITTED_IN_MEMORY));
|
||||||
|
/* fall through */
|
||||||
case TRX_UNDO_ACTIVE:
|
case TRX_UNDO_ACTIVE:
|
||||||
/* lock_trx_release_locks() assigns
|
/* lock_trx_release_locks() assigns
|
||||||
trx->is_recovered=false */
|
trx->is_recovered=false */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user