diff options
Diffstat (limited to 'mysql-test/suite/innodb/t/innodb-page_compression_tables.test')
-rw-r--r-- | mysql-test/suite/innodb/t/innodb-page_compression_tables.test | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb/t/innodb-page_compression_tables.test b/mysql-test/suite/innodb/t/innodb-page_compression_tables.test new file mode 100644 index 00000000..312aa22e --- /dev/null +++ b/mysql-test/suite/innodb/t/innodb-page_compression_tables.test @@ -0,0 +1,112 @@ +--source include/have_innodb.inc +--source include/not_embedded.inc + +let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`; + +# zlib +set global innodb_compression_algorithm = 1; + +create table innodb_normal(c1 bigint not null, b char(200)) engine=innodb; +create table innodb_compact(c1 bigint not null, b char(200)) engine=innodb row_format=compact page_compressed=1; +create table innodb_dynamic(c1 bigint not null, b char(200)) engine=innodb row_format=dynamic page_compressed=1; +--error 1005 +create table innodb_compressed(c1 bigint not null, b char(200)) engine=innodb row_format=compressed page_compressed=1; +show warnings; +show create table innodb_compact; +show create table innodb_dynamic; + +# MDEV-7133: InnoDB: Assertion failure in thread 140737091569408 in file dict0mem.cc line 74 +# InnoDB: Failing assertion: dict_tf_is_valid(flags) +--error 1005 +create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant page_compressed=1; +show warnings; +create table innodb_redundant(c1 bigint not null, b char(200)) engine=innodb row_format=redundant; +show create table innodb_redundant; +--error ER_ILLEGAL_HA_CREATE_OPTION +alter table innodb_redundant page_compressed=1; +show warnings; +show create table innodb_redundant; +alter table innodb_redundant row_format=compact page_compressed=1; +show create table innodb_redundant; +drop table innodb_redundant; + +--echo # +--echo # MDEV-24455 Assertion `!m_freed_space' failed in mtr_t::start +--echo # +CREATE TABLE t1 (a TEXT, b TEXT) ENGINE=InnoDB PAGE_COMPRESSED='ON'; +BEGIN; INSERT INTO t1 VALUES(REPEAT('x',81),REPEAT('x',8034)); ROLLBACK; +DROP TABLE t1; + +delimiter //; +create procedure innodb_insert_proc (repeat_count int) +begin + declare current_num int; + set current_num = 0; + while current_num < repeat_count do + insert into innodb_normal values(current_num, substring(MD5(RAND()), -64)); + set current_num = current_num + 1; + end while; +end// +delimiter ;// +commit; + +set autocommit=0; +call innodb_insert_proc(5000); +commit; +set autocommit=1; + +insert into innodb_compact select * from innodb_normal; +insert into innodb_dynamic select * from innodb_normal; + +update innodb_compact set c1 = c1 + 1; +update innodb_dynamic set c1 = c1 + 1; +select count(*) from innodb_compact where c1 < 1500000; +select count(*) from innodb_dynamic where c1 < 1500000; + +--source include/restart_mysqld.inc + +update innodb_compact set c1 = c1 + 1; +update innodb_dynamic set c1 = c1 + 1; +select count(*) from innodb_compact where c1 < 1500000; +select count(*) from innodb_dynamic where c1 < 1500000; + +# none +set global innodb_compression_algorithm = 0; + +--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON +alter table innodb_compact page_compressed=DEFAULT, algorithm=instant; +alter table innodb_compact page_compressed=DEFAULT; +--error ER_ALTER_OPERATION_NOT_SUPPORTED_REASON +alter table innodb_dynamic page_compressed=DEFAULT, algorithm=instant; +alter table innodb_dynamic page_compressed=DEFAULT; +show create table innodb_compact; +show create table innodb_dynamic; + +update innodb_compact set c1 = c1 + 1; +update innodb_dynamic set c1 = c1 + 1; +select count(*) from innodb_compact where c1 < 1500000; +select count(*) from innodb_dynamic where c1 < 1500000; + +drop procedure innodb_insert_proc; +drop table innodb_normal; +drop table innodb_compact; +drop table innodb_dynamic; + +# MDEV-9820 introducing variable for having page compression turned on by default on InnoDB tables +# test that innodb_compression_default works as expected, i.e. if it has a value of 1 (ON) tables are by default created with page_compressed=1; +CREATE TABLE no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB; +SET SESSION innodb_compression_default = 1; +CREATE TABLE default_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB; +CREATE TABLE explicit_no_compression (id INT NOT NULL, name VARCHAR(200)) ENGINE=InnoDB PAGE_COMPRESSED=0; +SHOW CREATE TABLE no_compression; +SHOW CREATE TABLE default_compression; +SHOW CREATE TABLE explicit_no_compression; +DROP TABLE no_compression; +DROP TABLE default_compression; +DROP TABLE explicit_no_compression; +SET SESSION innodb_compression_default = 0; + +# reset system +--disable_query_log +EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig; +--enable_query_log |