mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-34222 Alter operation on redundant table aborts the server
- InnoDB page compression works only on COMPACT or DYNAMIC row format tables. So InnoDB should throw error when alter table tries to enable PAGE_COMPRESSED for redundant table.
This commit is contained in:
@ -210,3 +210,14 @@ ALTER TABLE t1 PAGE_COMPRESSED = 1;
|
|||||||
INSERT INTO t1 VALUES(2);
|
INSERT INTO t1 VALUES(2);
|
||||||
# restart
|
# restart
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# MDEV-34222 Alter operation on redundant table aborts the server
|
||||||
|
#
|
||||||
|
SET @df_row = @@global.INNODB_DEFAULT_ROW_FORMAT;
|
||||||
|
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT=REDUNDANT;
|
||||||
|
CREATE TABLE t1 (c CHAR(1)) ENGINE=InnoDB;
|
||||||
|
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT=compact;
|
||||||
|
ALTER TABLE t1 PAGE_COMPRESSED=1;
|
||||||
|
ERROR HY000: Table storage engine 'InnoDB' does not support the create option 'PAGE_COMPRESSED=1 ROW_FORMAT=REDUNDANT'
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@global.INNODB_DEFAULT_ROW_FORMAT = @df_row;
|
||||||
|
@ -257,3 +257,15 @@ INSERT INTO t1 VALUES(2);
|
|||||||
let $shutdown_timeout = 0;
|
let $shutdown_timeout = 0;
|
||||||
--source include/restart_mysqld.inc
|
--source include/restart_mysqld.inc
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-34222 Alter operation on redundant table aborts the server
|
||||||
|
--echo #
|
||||||
|
SET @df_row = @@global.INNODB_DEFAULT_ROW_FORMAT;
|
||||||
|
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT=REDUNDANT;
|
||||||
|
CREATE TABLE t1 (c CHAR(1)) ENGINE=InnoDB;
|
||||||
|
SET GLOBAL INNODB_DEFAULT_ROW_FORMAT=compact;
|
||||||
|
--error ER_ILLEGAL_HA_CREATE_OPTION
|
||||||
|
ALTER TABLE t1 PAGE_COMPRESSED=1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
SET @@global.INNODB_DEFAULT_ROW_FORMAT = @df_row;
|
||||||
|
@ -8339,6 +8339,15 @@ field_changed:
|
|||||||
DBUG_RETURN(true);
|
DBUG_RETURN(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((ha_alter_info->handler_flags & ALTER_OPTIONS)
|
||||||
|
&& ctx->page_compression_level
|
||||||
|
&& !ctx->old_table->not_redundant()) {
|
||||||
|
my_error(ER_ILLEGAL_HA_CREATE_OPTION, MYF(0),
|
||||||
|
table_type(),
|
||||||
|
"PAGE_COMPRESSED=1 ROW_FORMAT=REDUNDANT");
|
||||||
|
DBUG_RETURN(true);
|
||||||
|
}
|
||||||
|
|
||||||
if (!(ha_alter_info->handler_flags & INNOBASE_ALTER_DATA)
|
if (!(ha_alter_info->handler_flags & INNOBASE_ALTER_DATA)
|
||||||
&& alter_templ_needs_rebuild(altered_table, ha_alter_info,
|
&& alter_templ_needs_rebuild(altered_table, ha_alter_info,
|
||||||
ctx->new_table)
|
ctx->new_table)
|
||||||
|
Reference in New Issue
Block a user