mirror of
https://github.com/MariaDB/server.git
synced 2025-01-20 05:52:27 +01:00
ha_innobase::add_index(): Reset trx->error_state in error handling.
(Bug #53591)
This commit is contained in:
parent
805b2acfd5
commit
28b6339790
3 changed files with 40 additions and 0 deletions
16
mysql-test/suite/innodb_plugin/r/innodb_bug53591.result
Normal file
16
mysql-test/suite/innodb_plugin/r/innodb_bug53591.result
Normal file
|
@ -0,0 +1,16 @@
|
|||
SET GLOBAL innodb_file_format='Barracuda';
|
||||
SET GLOBAL innodb_file_per_table=on;
|
||||
set old_alter_table=0;
|
||||
CREATE TABLE bug53591(a text charset utf8 not null)
|
||||
ENGINE=InnoDB KEY_BLOCK_SIZE=1;
|
||||
ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
|
||||
ERROR HY000: Too big row
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Error 139 Too big row
|
||||
Error 1118 Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. You have to change some columns to TEXT or BLOBs
|
||||
Error 1030 Got error 139 from storage engine
|
||||
DROP TABLE bug53591;
|
||||
SET GLOBAL innodb_file_format=Antelope;
|
||||
SET GLOBAL innodb_file_format_check=Antelope;
|
||||
SET GLOBAL innodb_file_per_table=0;
|
22
mysql-test/suite/innodb_plugin/t/innodb_bug53591.test
Normal file
22
mysql-test/suite/innodb_plugin/t/innodb_bug53591.test
Normal file
|
@ -0,0 +1,22 @@
|
|||
-- source include/have_innodb_plugin.inc
|
||||
|
||||
let $file_format=`select @@innodb_file_format`;
|
||||
let $file_format_check=`select @@innodb_file_format_check`;
|
||||
let $file_per_table=`select @@innodb_file_per_table`;
|
||||
|
||||
SET GLOBAL innodb_file_format='Barracuda';
|
||||
SET GLOBAL innodb_file_per_table=on;
|
||||
|
||||
set old_alter_table=0;
|
||||
|
||||
CREATE TABLE bug53591(a text charset utf8 not null)
|
||||
ENGINE=InnoDB KEY_BLOCK_SIZE=1;
|
||||
-- error 139
|
||||
ALTER TABLE bug53591 ADD PRIMARY KEY(a(220));
|
||||
SHOW WARNINGS;
|
||||
|
||||
DROP TABLE bug53591;
|
||||
|
||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
||||
EVAL SET GLOBAL innodb_file_format_check=$file_format_check;
|
||||
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
|
@ -894,6 +894,8 @@ error:
|
|||
prebuilt->trx->error_info = NULL;
|
||||
/* fall through */
|
||||
default:
|
||||
trx->error_state = DB_SUCCESS;
|
||||
|
||||
if (new_primary) {
|
||||
if (indexed_table != innodb_table) {
|
||||
row_merge_drop_table(trx, indexed_table);
|
||||
|
|
Loading…
Reference in a new issue