mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-6361: innodb_compression_algorithm configuration variable can
be set to unsupported value. MDEV-6350: Excessive unnecessary memory allocation at InnoDB/XtraDB startup if LZO is installed.
This commit is contained in:
137
mysql-test/suite/innodb/t/innodb-page_compression_zip.test
Normal file
137
mysql-test/suite/innodb/t/innodb-page_compression_zip.test
Normal file
@ -0,0 +1,137 @@
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
--disable_query_log
|
||||
let $innodb_compression_algorithm_orig=`SELECT @@innodb_compression_algorithm`;
|
||||
let $innodb_file_format_orig = `SELECT @@innodb_file_format`;
|
||||
let $innodb_file_per_table_orig = `SELECT @@innodb_file_per_table`;
|
||||
--enable_query_log
|
||||
|
||||
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||
SET GLOBAL innodb_file_per_table = ON;
|
||||
|
||||
# ZLIB
|
||||
SET GLOBAL innodb_compression_algorithm = 1;
|
||||
|
||||
CREATE TABLE INNODB_COMPRESSED(c1 INT, b char(20)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||
SHOW WARNINGS;
|
||||
CREATE TABLE INNODB_NORMAL (c1 INT, b char(20)) ENGINE=INNODB;
|
||||
SHOW WARNINGS;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED1 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=1;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED1;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED2 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=2;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED2;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED3 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=3;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED3;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED4 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=4;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED4;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED5 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=5;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED5;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED6 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=6;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED6;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED7 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=7;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED7;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED8 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED8;
|
||||
CREATE TABLE INNODB_PAGE_COMPRESSED9 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED9;
|
||||
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,'Testing..');
|
||||
SET CURRENT_NUM = CURRENT_NUM + 1;
|
||||
END WHILE;
|
||||
END//
|
||||
DELIMITER ;//
|
||||
COMMIT;
|
||||
|
||||
SET AUTOCOMMIT=0;
|
||||
CALL INNODB_INSERT_PROC(5000);
|
||||
COMMIT;
|
||||
SET AUTOCOMMIT=1;
|
||||
SELECT COUNT(*) FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_COMPRESSED SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED1 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED2 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED3 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED4 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED5 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED6 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED7 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED8 SELECT * FROM INNODB_NORMAL;
|
||||
INSERT INTO INNODB_PAGE_COMPRESSED9 SELECT * FROM INNODB_NORMAL;
|
||||
COMMIT;
|
||||
SELECT COUNT(*) FROM INNODB_COMPRESSED;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||
|
||||
ALTER TABLE INNODB_NORMAL PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_NORMAL;
|
||||
ALTER TABLE INNODB_COMPRESSED ROW_FORMAT=DEFAULT PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8 KEY_BLOCK_SIZE=0;
|
||||
SHOW WARNINGS;
|
||||
SHOW CREATE TABLE INNODB_COMPRESSED;
|
||||
|
||||
|
||||
# NONE
|
||||
SET GLOBAL innodb_compression_algorithm = 0;
|
||||
UPDATE INNODB_PAGE_COMPRESSED1 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED2 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED3 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED4 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED5 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED6 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED7 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED8 SET c1 = c1 + 1;
|
||||
UPDATE INNODB_PAGE_COMPRESSED9 SET c1 = c1 + 1;
|
||||
COMMIT;
|
||||
SELECT COUNT(*) FROM INNODB_COMPRESSED;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||
|
||||
DROP PROCEDURE INNODB_INSERT_PROC;
|
||||
DROP TABLE INNODB_NORMAL;
|
||||
DROP TABLE INNODB_COMPRESSED;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED1;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED2;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED3;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED4;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED5;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED6;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED7;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED8;
|
||||
DROP TABLE INNODB_PAGE_COMPRESSED9;
|
||||
|
||||
# reset system
|
||||
--disable_query_log
|
||||
EVAL SET GLOBAL innodb_compression_algorithm = $innodb_compression_algorithm_orig;
|
||||
EVAL SET GLOBAL innodb_file_per_table = $innodb_file_per_table_orig;
|
||||
EVAL SET GLOBAL innodb_file_format = $innodb_file_format_orig;
|
||||
--enable_query_log
|
Reference in New Issue
Block a user