1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Merge 10.5 into 10.6

This commit is contained in:
Marko Mäkelä
2021-06-18 09:16:20 +03:00
10 changed files with 167 additions and 5 deletions

View File

@@ -1,4 +1,6 @@
[win]
[aix]
[unix]

View File

@@ -22,7 +22,7 @@ use File::Basename;
use File::Path;
use base qw(Exporter);
our @EXPORT= qw(IS_CYGWIN IS_WINDOWS IS_WIN32PERL
our @EXPORT= qw(IS_CYGWIN IS_WINDOWS IS_WIN32PERL IS_AIX
native_path posix_path mixed_path
check_socket_path_length process_alive open_for_append);
@@ -54,6 +54,15 @@ BEGIN {
}
}
BEGIN {
if ($^O eq "aix") {
eval 'sub IS_AIX { 1 }';
}
else {
eval 'sub IS_AIX { 0 }';
}
}
#
# native_path

View File

View File

@@ -17,7 +17,13 @@ sub skip_combinations {
unless $ENV{DEBUG_KEY_MANAGEMENT_SO};
# don't run tests for the wrong platform
$skip{'include/platform.combinations'} = [ (IS_WINDOWS) ? 'unix' : 'win' ];
if (IS_WINDOWS) {
$skip{'include/platform.combinations'} = [ 'aix', 'unix' ];
} elsif (IS_AIX) {
$skip{'include/platform.combinations'} = [ 'win', 'unix' ];
} else {
$skip{'include/platform.combinations'} = [ 'aix', 'win' ];
}
$skip{'include/maybe_debug.combinations'} =
[ defined $::mysqld_variables{'debug-dbug'} ? 'release' : 'debug' ];

View File

@@ -206,3 +206,18 @@ c0123456789012345678 int,
FOREIGN KEY (a012345678901234567,c0123456789012345678,b) REFERENCES tx (x1,x2,x3)
) ENGINE=InnoDB;
ERROR HY000: Can't create table `test`.`t1` (errno: 150 "Foreign key constraint is incorrectly formed")
#
# MDEV-25642 InnoDB rename table copy DDL fails
# while dropping the table
#
call mtr.add_suppression("InnoDB: In ALTER TABLE `test`.`t1` has or is referenced in foreign key constraints which are not compatible with the new table definition.");
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t1_fk (a VARCHAR(40), KEY a (a), FULLTEXT KEY(a), CONSTRAINT fk FOREIGN KEY(a) REFERENCES t1 (a) ON UPDATE CASCADE) ENGINE=InnoDB;
ALTER TABLE t1 RENAME TO tm1, ALGORITHM=COPY;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
ID FOR_NAME REF_NAME N_COLS TYPE
test/fk test/t1_fk test/t1 1 4
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE t1 (c1 BIGINT NOT NULL, c2 BIGINT NOT NULL, PRIMARY KEY(c1), UNIQUE KEY(c2)) ENGINE=MEMORY;
ALTER TABLE t1 ENGINE=InnoDB, ALGORITHM=COPY;
DROP TABLE t1, tm1, t1_fk;

View File

@@ -244,3 +244,19 @@ CREATE TABLE t1 (
c0123456789012345678 int,
FOREIGN KEY (a012345678901234567,c0123456789012345678,b) REFERENCES tx (x1,x2,x3)
) ENGINE=InnoDB;
--echo #
--echo # MDEV-25642 InnoDB rename table copy DDL fails
--echo # while dropping the table
--echo #
call mtr.add_suppression("InnoDB: In ALTER TABLE `test`.`t1` has or is referenced in foreign key constraints which are not compatible with the new table definition.");
CREATE TABLE t1 (a VARCHAR(10) NOT NULL PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t1_fk (a VARCHAR(40), KEY a (a), FULLTEXT KEY(a), CONSTRAINT fk FOREIGN KEY(a) REFERENCES t1 (a) ON UPDATE CASCADE) ENGINE=InnoDB;
ALTER TABLE t1 RENAME TO tm1, ALGORITHM=COPY;
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN;
# Enable SET FOREIGN_KEY_CHECKS after fixing MDEV-25885
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE t1 (c1 BIGINT NOT NULL, c2 BIGINT NOT NULL, PRIMARY KEY(c1), UNIQUE KEY(c2)) ENGINE=MEMORY;
ALTER TABLE t1 ENGINE=InnoDB, ALGORITHM=COPY;
DROP TABLE t1, tm1, t1_fk;

View File

@@ -1,5 +1,6 @@
--source include/have_perfschema.inc
--source include/word_size.inc
--source include/platform.inc
--vertical_results
# need stable timestamp, because its current value is printed below

View File

@@ -0,0 +1,105 @@
diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
index bb3378139f2..ddab28508ec 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result
@@ -4259,99 +4259,9 @@ VARIABLE_COMMENT Define threads usage for handling queries
NUMERIC_MIN_VALUE NULL
NUMERIC_MAX_VALUE NULL
NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST one-thread-per-connection,no-threads,pool-of-threads
+ENUM_VALUE_LIST one-thread-per-connection,no-threads
READ_ONLY YES
COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_DEDICATED_LISTENER
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT If set to 1,listener thread will not pick up queries
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME THREAD_POOL_EXACT_STATS
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE BOOLEAN
-VARIABLE_COMMENT If set to 1, provides better statistics in information_schema threadpool tables
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST OFF,ON
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT OPTIONAL
-VARIABLE_NAME THREAD_POOL_IDLE_TIMEOUT
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT Timeout in seconds for an idle thread in the thread pool.Worker thread will be shut down after timeout
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 4294967295
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_MAX_THREADS
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT Maximum allowed number of worker threads in the thread pool
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 65536
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_OVERSUBSCRIBE
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT How many additional active worker threads in a group are allowed.
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 1000
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_PRIORITY
-VARIABLE_SCOPE SESSION
-VARIABLE_TYPE ENUM
-VARIABLE_COMMENT Threadpool priority. High priority connections usually start executing earlier than low priority.If priority set to 'auto', the the actual priority(low or high) is determined based on whether or not connection is inside transaction.
-NUMERIC_MIN_VALUE NULL
-NUMERIC_MAX_VALUE NULL
-NUMERIC_BLOCK_SIZE NULL
-ENUM_VALUE_LIST high,low,auto
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_PRIO_KICKUP_TIMER
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT The number of milliseconds before a dequeued low-priority statement is moved to the high-priority queue
-NUMERIC_MIN_VALUE 0
-NUMERIC_MAX_VALUE 4294967295
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_SIZE
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT Number of thread groups in the pool. This parameter is roughly equivalent to maximum number of concurrently executing threads (threads in a waiting state do not count as executing).
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 100000
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
-VARIABLE_NAME THREAD_POOL_STALL_LIMIT
-VARIABLE_SCOPE GLOBAL
-VARIABLE_TYPE INT UNSIGNED
-VARIABLE_COMMENT Maximum query execution time in milliseconds,before an executing non-yielding thread is considered stalled.If a worker thread is stalled, additional worker thread may be created to handle remaining clients.
-NUMERIC_MIN_VALUE 1
-NUMERIC_MAX_VALUE 4294967295
-NUMERIC_BLOCK_SIZE 1
-ENUM_VALUE_LIST NULL
-READ_ONLY NO
-COMMAND_LINE_ARGUMENT REQUIRED
VARIABLE_NAME THREAD_STACK
VARIABLE_SCOPE GLOBAL
VARIABLE_TYPE BIGINT UNSIGNED

View File

@@ -10508,7 +10508,12 @@ do_continue:;
DBUG_PRINT("info", ("is_table_renamed: %d engine_changed: %d",
alter_ctx.is_table_renamed(), engine_changed));
if (!alter_ctx.is_table_renamed())
/*
InnoDB cannot use the rename optimization when foreign key
constraint is involved because InnoDB fails to drop the
parent table due to foreign key constraint
*/
if (!alter_ctx.is_table_renamed() || alter_ctx.fk_error_if_delete_row)
{
/*
Rename the old table to temporary name to have a backup in case
@@ -10560,7 +10565,7 @@ do_continue:;
(void) quick_rm_table(thd, new_db_type, &alter_ctx.new_db,
&alter_ctx.tmp_name, FN_IS_TMP);
if (!alter_ctx.is_table_renamed())
if (!alter_ctx.is_table_renamed() || alter_ctx.fk_error_if_delete_row)
{
// Restore the backup of the original table to the old name.
(void) mysql_rename_table(old_db_type, &alter_ctx.db, &backup_name,

View File

@@ -159,7 +159,9 @@ public:
#endif
cb->m_ret_len = ret_len;
cb->m_err = err;
cb->m_callback(cb);
cb->m_internal_task.m_func= cb->m_callback;
thread_pool *pool= (thread_pool *)cb->m_internal;
pool->submit_task(&cb->m_internal_task);
}
virtual int submit_io(aiocb *aiocb) override
@@ -167,6 +169,7 @@ public:
aiocb->m_internal_task.m_func = simulated_aio_callback;
aiocb->m_internal_task.m_arg = aiocb;
aiocb->m_internal_task.m_group = aiocb->m_group;
aiocb->m_internal = m_pool;
m_pool->submit_task(&aiocb->m_internal_task);
return 0;
}