Skip to content

Commit

Permalink
Merge 10.1 into 10.2
Browse files Browse the repository at this point in the history
  • Loading branch information
dr-m committed Jul 22, 2019
2 parents 12614af + a5e268a commit 60c790d
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 11 deletions.
10 changes: 10 additions & 0 deletions mysql-test/suite/innodb/r/create_select.result
@@ -0,0 +1,10 @@
connect con1, localhost, root,,;
connection default;
CREATE TABLE t1 ENGINE=InnoDB SELECT * FROM seq_1_to_100000000;
connection con1;
KILL QUERY @id;
disconnect con1;
connection default;
ERROR 70100: Query execution was interrupted
CREATE TABLE t1 (a SERIAL) ENGINE=InnoDB;
DROP TABLE t1;
28 changes: 28 additions & 0 deletions mysql-test/suite/innodb/t/create_select.test
@@ -0,0 +1,28 @@
--source include/have_innodb.inc
--source include/have_sequence.inc
--source include/count_sessions.inc

let $ID= `SELECT @id := CONNECTION_ID()`;

connect (con1, localhost, root,,);
let $ignore= `SELECT @id := $ID`;

connection default;
send CREATE TABLE t1 ENGINE=InnoDB SELECT * FROM seq_1_to_100000000;

connection con1;
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = 'Sending data'
and info = 'CREATE TABLE t1 ENGINE=InnoDB SELECT * FROM seq_1_to_100000000';
--source include/wait_condition.inc
KILL QUERY @id;
disconnect con1;

connection default;
--error ER_QUERY_INTERRUPTED
reap;

CREATE TABLE t1 (a SERIAL) ENGINE=InnoDB;
DROP TABLE t1;
--source include/wait_until_count_sessions.inc
4 changes: 3 additions & 1 deletion storage/innobase/row/row0mysql.cc
Expand Up @@ -3382,7 +3382,9 @@ row_drop_table_for_mysql(
calling btr_search_drop_page_hash_index() while we
hold the InnoDB dictionary lock, we will drop any
adaptive hash index entries upfront. */
bool immune = is_temp_name
const bool immune = is_temp_name
|| create_failed
|| sqlcom == SQLCOM_CREATE_TABLE
|| strstr(table->name.m_name, "/FTS");

while (buf_LRU_drop_page_hash_for_tablespace(table)) {
Expand Down
12 changes: 7 additions & 5 deletions storage/xtradb/handler/ha_innodb.cc
Expand Up @@ -13146,11 +13146,12 @@ ha_innobase::delete_table(
++trx->will_lock;
trx->ddl = true;

const int sqlcom = thd_sql_command(thd);

/* Drop the table in InnoDB */
err = row_drop_table_for_mysql(
norm_name, trx, thd_sql_command(thd) == SQLCOM_DROP_DB,
FALSE);

norm_name, trx, sqlcom == SQLCOM_DROP_DB,
sqlcom == SQLCOM_CREATE_TABLE /* CREATE TABLE ... SELECT */);

if (err == DB_TABLE_NOT_FOUND
&& innobase_get_lower_case_table_names() == 1) {
Expand Down Expand Up @@ -13180,8 +13181,9 @@ ha_innobase::delete_table(
#endif
err = row_drop_table_for_mysql(
par_case_name, trx,
thd_sql_command(thd) == SQLCOM_DROP_DB,
FALSE);
sqlcom == SQLCOM_DROP_DB,
sqlcom == SQLCOM_CREATE_TABLE
/* CREATE TABLE ... SELECT */);
}
}

Expand Down
4 changes: 2 additions & 2 deletions storage/xtradb/include/row0mysql.h
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All Rights Reserved.
Copyright (c) 2017, MariaDB Corporation.
Copyright (c) 2017, 2019, MariaDB Corporation.
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
Expand Down Expand Up @@ -493,7 +493,7 @@ row_drop_table_for_mysql(
const char* name, /*!< in: table name */
trx_t* trx, /*!< in: dictionary transaction handle */
bool drop_db,/*!< in: true=dropping whole database */
ibool create_failed,/*!<in: TRUE=create table failed
bool create_failed,/*!<in: TRUE=create table failed
because e.g. foreign key column
type mismatch. */
bool nonatomic = true)
Expand Down
7 changes: 4 additions & 3 deletions storage/xtradb/row/row0mysql.cc
Expand Up @@ -3893,7 +3893,7 @@ row_drop_table_for_mysql(
const char* name, /*!< in: table name */
trx_t* trx, /*!< in: transaction handle */
bool drop_db,/*!< in: true=dropping whole database */
ibool create_failed,/*!<in: TRUE=create table failed
bool create_failed,/*!<in: TRUE=create table failed
because e.g. foreign key column
type mismatch. */
bool nonatomic)
Expand Down Expand Up @@ -4233,12 +4233,13 @@ row_drop_table_for_mysql(
calling btr_search_drop_page_hash_index() while we
hold the InnoDB dictionary lock, we will drop any
adaptive hash index entries upfront. */
const bool is_temp = dict_table_is_temporary(table)
const bool immune = create_failed
|| dict_table_is_temporary(table)
|| strncmp(tablename_minus_db, tmp_file_prefix,
tmp_file_prefix_length)
|| strncmp(tablename_minus_db, "FTS_", 4);
while (buf_LRU_drop_page_hash_for_tablespace(table)) {
if ((!is_temp && trx_is_interrupted(trx))
if ((!immune && trx_is_interrupted(trx))
|| srv_shutdown_state != SRV_SHUTDOWN_NONE) {
err = DB_INTERRUPTED;
goto funct_exit;
Expand Down

0 comments on commit 60c790d

Please sign in to comment.