Merge 10.10 into 10.11
This commit is contained in:
commit
7343a2ceb6
@ -214,6 +214,21 @@ WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test';
|
|||||||
TABLE_ROWS AVG_ROW_LENGTH>0
|
TABLE_ROWS AVG_ROW_LENGTH>0
|
||||||
3 1
|
3 1
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-29975 InnoDB fails to release savepoint during bulk insert
|
||||||
|
#
|
||||||
|
CREATE TABLE t (c INT KEY) ENGINE=InnoDB;
|
||||||
|
begin;
|
||||||
|
INSERT INTO t VALUES (0,0);
|
||||||
|
ERROR 21S01: Column count doesn't match value count at row 1
|
||||||
|
SAVEPOINT a;
|
||||||
|
INSERT INTO t VALUES (0),(0);
|
||||||
|
ERROR HY000: Got error 1 "Operation not permitted" during COMMIT
|
||||||
|
SAVEPOINT a;
|
||||||
|
commit;
|
||||||
|
SELECT * FROM t;
|
||||||
|
c
|
||||||
|
DROP TABLE t;
|
||||||
# End of 10.6 tests
|
# End of 10.6 tests
|
||||||
#
|
#
|
||||||
# MDEV-26947 UNIQUE column checks fail in InnoDB resulting
|
# MDEV-26947 UNIQUE column checks fail in InnoDB resulting
|
||||||
|
@ -2,6 +2,11 @@ SET GLOBAL innodb_fast_shutdown=0;
|
|||||||
# restart: --innodb_undo_tablespaces=2
|
# restart: --innodb_undo_tablespaces=2
|
||||||
SET GLOBAL innodb_undo_log_truncate = 0;
|
SET GLOBAL innodb_undo_log_truncate = 0;
|
||||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
||||||
|
=== information_schema.innodb_sys_tablespaces and innodb_sys_datafiles ===
|
||||||
|
Space_Name Page_Size Zip_Size Path
|
||||||
|
innodb_undo001 DEFAULT DEFAULT MYSQLD_DATADIR//undo001
|
||||||
|
innodb_undo002 DEFAULT DEFAULT MYSQLD_DATADIR//undo002
|
||||||
|
innodb_temporary DEFAULT DEFAULT MYSQLD_DATADIR/ibtmp1
|
||||||
create table t1(keyc int primary key, c char(100)) engine = innodb;
|
create table t1(keyc int primary key, c char(100)) engine = innodb;
|
||||||
create table t2(keyc int primary key, c char(100)) engine = innodb;
|
create table t2(keyc int primary key, c char(100)) engine = innodb;
|
||||||
connect con1,localhost,root,,;
|
connect con1,localhost,root,,;
|
||||||
|
@ -235,6 +235,20 @@ SELECT TABLE_ROWS, AVG_ROW_LENGTH>0 FROM INFORMATION_SCHEMA.TABLES
|
|||||||
WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test';
|
WHERE TABLE_NAME='t1' AND TABLE_SCHEMA='test';
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-29975 InnoDB fails to release savepoint during bulk insert
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t (c INT KEY) ENGINE=InnoDB;
|
||||||
|
begin;
|
||||||
|
--error ER_WRONG_VALUE_COUNT_ON_ROW
|
||||||
|
INSERT INTO t VALUES (0,0);
|
||||||
|
SAVEPOINT a;
|
||||||
|
--error ER_ERROR_DURING_COMMIT
|
||||||
|
INSERT INTO t VALUES (0),(0);
|
||||||
|
SAVEPOINT a;
|
||||||
|
commit;
|
||||||
|
SELECT * FROM t;
|
||||||
|
DROP TABLE t;
|
||||||
--echo # End of 10.6 tests
|
--echo # End of 10.6 tests
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
--innodb-buffer-pool-size=24M
|
--innodb-buffer-pool-size=24M
|
||||||
--innodb-immediate-scrub-data-uncompressed=ON
|
--innodb-immediate-scrub-data-uncompressed=ON
|
||||||
|
--loose-innodb-sys-tablespaces
|
||||||
|
@ -19,6 +19,9 @@ let $restart_parameters="--innodb_undo_tablespaces=2";
|
|||||||
SET GLOBAL innodb_undo_log_truncate = 0;
|
SET GLOBAL innodb_undo_log_truncate = 0;
|
||||||
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
SET GLOBAL innodb_purge_rseg_truncate_frequency = 1;
|
||||||
|
|
||||||
|
LET $MYSQLD_DATADIR = `select @@datadir`;
|
||||||
|
LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`;
|
||||||
|
--source suite/innodb/include/show_i_s_tablespaces.inc
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# Perform DML action using multiple clients and multiple undo tablespace.
|
# Perform DML action using multiple clients and multiple undo tablespace.
|
||||||
|
@ -4455,6 +4455,25 @@ innobase_commit_ordered(
|
|||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Mark the end of a statement.
|
||||||
|
@param trx transaction
|
||||||
|
@return whether an error occurred */
|
||||||
|
static bool end_of_statement(trx_t *trx)
|
||||||
|
{
|
||||||
|
trx_mark_sql_stat_end(trx);
|
||||||
|
if (UNIV_LIKELY(trx->error_state == DB_SUCCESS))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
trx_savept_t savept;
|
||||||
|
savept.least_undo_no= 0;
|
||||||
|
trx->rollback(&savept);
|
||||||
|
/* MariaDB will roll back the entire transaction. */
|
||||||
|
trx->bulk_insert= false;
|
||||||
|
trx->last_sql_stat_start.least_undo_no= 0;
|
||||||
|
trx->savepoints_discard();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
/*****************************************************************//**
|
/*****************************************************************//**
|
||||||
Commits a transaction in an InnoDB database or marks an SQL statement
|
Commits a transaction in an InnoDB database or marks an SQL statement
|
||||||
ended.
|
ended.
|
||||||
@ -4531,10 +4550,7 @@ innobase_commit(
|
|||||||
/* Store the current undo_no of the transaction so that we
|
/* Store the current undo_no of the transaction so that we
|
||||||
know where to roll back if we have to roll back the next
|
know where to roll back if we have to roll back the next
|
||||||
SQL statement */
|
SQL statement */
|
||||||
|
if (UNIV_UNLIKELY(end_of_statement(trx))) {
|
||||||
trx_mark_sql_stat_end(trx);
|
|
||||||
if (UNIV_UNLIKELY(trx->error_state != DB_SUCCESS)) {
|
|
||||||
trx_rollback_for_mysql(trx);
|
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -16954,10 +16970,7 @@ innobase_xa_prepare(
|
|||||||
/* Store the current undo_no of the transaction so that we
|
/* Store the current undo_no of the transaction so that we
|
||||||
know where to roll back if we have to roll back the next
|
know where to roll back if we have to roll back the next
|
||||||
SQL statement */
|
SQL statement */
|
||||||
|
if (UNIV_UNLIKELY(end_of_statement(trx))) {
|
||||||
trx_mark_sql_stat_end(trx);
|
|
||||||
if (UNIV_UNLIKELY(trx->error_state != DB_SUCCESS)) {
|
|
||||||
trx_rollback_for_mysql(trx);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6142,8 +6142,13 @@ static int i_s_sys_tablespaces_fill(THD *thd, const fil_space_t &s, TABLE *t)
|
|||||||
OK(f->store(name.data(), name.size(), system_charset_info));
|
OK(f->store(name.data(), name.size(), system_charset_info));
|
||||||
f->set_notnull();
|
f->set_notnull();
|
||||||
}
|
}
|
||||||
else
|
else if (srv_is_undo_tablespace(s.id))
|
||||||
f->set_notnull();
|
{
|
||||||
|
char name[15];
|
||||||
|
snprintf(name, sizeof name, "innodb_undo%03u",
|
||||||
|
(s.id - srv_undo_space_id_start + 1));
|
||||||
|
OK(f->store(name, strlen(name), system_charset_info));
|
||||||
|
} else f->set_notnull();
|
||||||
}
|
}
|
||||||
|
|
||||||
fields[SYS_TABLESPACES_NAME]->set_null();
|
fields[SYS_TABLESPACES_NAME]->set_null();
|
||||||
|
@ -557,9 +557,13 @@ trx_release_savepoint_for_mysql(
|
|||||||
|
|
||||||
if (savep != NULL) {
|
if (savep != NULL) {
|
||||||
trx_roll_savepoint_free(trx, savep);
|
trx_roll_savepoint_free(trx, savep);
|
||||||
|
return DB_SUCCESS;
|
||||||
|
} else if (trx->last_sql_stat_start.least_undo_no == 0) {
|
||||||
|
/* Bulk insert could have discarded savepoints */
|
||||||
|
return DB_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(savep != NULL ? DB_SUCCESS : DB_NO_SAVEPOINT);
|
return DB_NO_SAVEPOINT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*******************************************************************//**
|
/*******************************************************************//**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user