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:
@ -14,8 +14,8 @@
|
|||||||
|
|
||||||
MACRO (MYSQL_CHECK_LZO_STATIC)
|
MACRO (MYSQL_CHECK_LZO_STATIC)
|
||||||
|
|
||||||
#CHECK_INCLUDE_FILES(lzo/lzo1x.h HAVE_LZO_H)
|
CHECK_INCLUDE_FILES(lzo/lzo1x.h HAVE_LZO_H)
|
||||||
#CHECK_LIBRARY_EXISTS(liblzo2.a lzo1x_1_compress "" HAVE_LZO_LIB)
|
CHECK_LIBRARY_EXISTS(liblzo2.a lzo1x_1_compress "" HAVE_LZO_LIB)
|
||||||
|
|
||||||
IF(HAVE_LZO_LIB AND HAVE_LZO_H)
|
IF(HAVE_LZO_LIB AND HAVE_LZO_H)
|
||||||
ADD_DEFINITIONS(-DHAVE_LZO=1)
|
ADD_DEFINITIONS(-DHAVE_LZO=1)
|
||||||
@ -25,8 +25,8 @@ ENDMACRO()
|
|||||||
|
|
||||||
MACRO (MYSQL_CHECK_LZO)
|
MACRO (MYSQL_CHECK_LZO)
|
||||||
|
|
||||||
#CHECK_INCLUDE_FILES(lzo/lzo1x.h HAVE_LZO_H)
|
CHECK_INCLUDE_FILES(lzo/lzo1x.h HAVE_LZO_H)
|
||||||
#CHECK_LIBRARY_EXISTS(lzo2 lzo1x_1_compress "" HAVE_LZO_SHARED_LIB)
|
CHECK_LIBRARY_EXISTS(lzo2 lzo1x_1_compress "" HAVE_LZO_SHARED_LIB)
|
||||||
|
|
||||||
IF(HAVE_LZO_SHARED_LIB AND HAVE_LZO_H)
|
IF(HAVE_LZO_SHARED_LIB AND HAVE_LZO_H)
|
||||||
ADD_DEFINITIONS(-DHAVE_LZO=1)
|
ADD_DEFINITIONS(-DHAVE_LZO=1)
|
||||||
|
4
mysql-test/include/have_innodb_lz4.inc
Normal file
4
mysql-test/include/have_innodb_lz4.inc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_lz4' AND variable_value = 1`)
|
||||||
|
{
|
||||||
|
--skip Test requires InnoDB compiled with liblz4
|
||||||
|
}
|
4
mysql-test/include/have_innodb_lzo.inc
Normal file
4
mysql-test/include/have_innodb_lzo.inc
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
if (`SELECT COUNT(*) = 0 FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE LOWER(variable_name) = 'innodb_have_lzo' AND variable_value = 1`)
|
||||||
|
{
|
||||||
|
--skip Test requires InnoDB compiled with liblzo
|
||||||
|
}
|
269
mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
Normal file
269
mysql-test/suite/innodb/r/innodb-page_compression_lz4.result
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||||
|
SET GLOBAL innodb_file_per_table = ON;
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 2;
|
||||||
|
CREATE TABLE INNODB_COMPRESSED(c1 INT, b char(20)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_NORMAL (c1 INT, b char(20)) ENGINE=INNODB;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED1 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED1;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED1 CREATE TABLE `INNODB_PAGE_COMPRESSED1` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=1
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED2 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED2;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED2 CREATE TABLE `INNODB_PAGE_COMPRESSED2` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=2
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED3 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=3;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED3;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED3 CREATE TABLE `INNODB_PAGE_COMPRESSED3` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=3
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED4 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED4;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED4 CREATE TABLE `INNODB_PAGE_COMPRESSED4` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=4
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED5 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=5;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED5;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED5 CREATE TABLE `INNODB_PAGE_COMPRESSED5` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=5
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED6 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=6;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED6;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED6 CREATE TABLE `INNODB_PAGE_COMPRESSED6` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=6
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED7 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=7;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED7;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED7 CREATE TABLE `INNODB_PAGE_COMPRESSED7` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=7
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED8 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED8;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED8 CREATE TABLE `INNODB_PAGE_COMPRESSED8` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED9 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED9;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED9 CREATE TABLE `INNODB_PAGE_COMPRESSED9` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
|
||||||
|
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//
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
CALL INNODB_INSERT_PROC(5000);
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
SELECT COUNT(*) FROM INNODB_NORMAL;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
ALTER TABLE INNODB_NORMAL PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_NORMAL;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_NORMAL CREATE TABLE `INNODB_NORMAL` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
ALTER TABLE INNODB_COMPRESSED ROW_FORMAT=DEFAULT PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8 KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_COMPRESSED;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_COMPRESSED CREATE TABLE `INNODB_COMPRESSED` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 1;
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
269
mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
Normal file
269
mysql-test/suite/innodb/r/innodb-page_compression_lzo.result
Normal file
@ -0,0 +1,269 @@
|
|||||||
|
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||||
|
SET GLOBAL innodb_file_per_table = ON;
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 3;
|
||||||
|
CREATE TABLE INNODB_COMPRESSED(c1 INT, b char(20)) ENGINE=INNODB ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_NORMAL (c1 INT, b char(20)) ENGINE=INNODB;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED1 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED1;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED1 CREATE TABLE `INNODB_PAGE_COMPRESSED1` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=1
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED2 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED2;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED2 CREATE TABLE `INNODB_PAGE_COMPRESSED2` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=2
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED3 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=3;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED3;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED3 CREATE TABLE `INNODB_PAGE_COMPRESSED3` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=3
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED4 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED4;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED4 CREATE TABLE `INNODB_PAGE_COMPRESSED4` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=4
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED5 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=5;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED5;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED5 CREATE TABLE `INNODB_PAGE_COMPRESSED5` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=5
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED6 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=6;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED6;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED6 CREATE TABLE `INNODB_PAGE_COMPRESSED6` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=6
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED7 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=7;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED7;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED7 CREATE TABLE `INNODB_PAGE_COMPRESSED7` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=7
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED8 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED8;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED8 CREATE TABLE `INNODB_PAGE_COMPRESSED8` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED9 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED9;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED9 CREATE TABLE `INNODB_PAGE_COMPRESSED9` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
|
||||||
|
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//
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
CALL INNODB_INSERT_PROC(5000);
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
SELECT COUNT(*) FROM INNODB_NORMAL;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
ALTER TABLE INNODB_NORMAL PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_NORMAL;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_NORMAL CREATE TABLE `INNODB_NORMAL` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
ALTER TABLE INNODB_COMPRESSED ROW_FORMAT=DEFAULT PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8 KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_COMPRESSED;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_COMPRESSED CREATE TABLE `INNODB_COMPRESSED` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 2;
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 1;
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
225
mysql-test/suite/innodb/r/innodb-page_compression_zip.result
Normal file
225
mysql-test/suite/innodb/r/innodb-page_compression_zip.result
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
SET GLOBAL innodb_file_format = `Barracuda`;
|
||||||
|
SET GLOBAL innodb_file_per_table = ON;
|
||||||
|
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;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_NORMAL (c1 INT, b char(20)) ENGINE=INNODB;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED1 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=1;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED1;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED1 CREATE TABLE `INNODB_PAGE_COMPRESSED1` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=1
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED2 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=2;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED2;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED2 CREATE TABLE `INNODB_PAGE_COMPRESSED2` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=2
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED3 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=3;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED3;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED3 CREATE TABLE `INNODB_PAGE_COMPRESSED3` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=3
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED4 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=4;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED4;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED4 CREATE TABLE `INNODB_PAGE_COMPRESSED4` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=4
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED5 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=5;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED5;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED5 CREATE TABLE `INNODB_PAGE_COMPRESSED5` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=5
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED6 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=6;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED6;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED6 CREATE TABLE `INNODB_PAGE_COMPRESSED6` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=6
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED7 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=7;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED7;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED7 CREATE TABLE `INNODB_PAGE_COMPRESSED7` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=7
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED8 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED8;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED8 CREATE TABLE `INNODB_PAGE_COMPRESSED8` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
CREATE TABLE INNODB_PAGE_COMPRESSED9 (c1 INT, b char(20)) ENGINE=INNODB PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=9;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_PAGE_COMPRESSED9;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_PAGE_COMPRESSED9 CREATE TABLE `INNODB_PAGE_COMPRESSED9` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=9
|
||||||
|
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//
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=0;
|
||||||
|
CALL INNODB_INSERT_PROC(5000);
|
||||||
|
COMMIT;
|
||||||
|
SET AUTOCOMMIT=1;
|
||||||
|
SELECT COUNT(*) FROM INNODB_NORMAL;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
ALTER TABLE INNODB_NORMAL PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_NORMAL;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_NORMAL CREATE TABLE `INNODB_NORMAL` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
ALTER TABLE INNODB_COMPRESSED ROW_FORMAT=DEFAULT PAGE_COMPRESSED=1 PAGE_COMPRESSION_LEVEL=8 KEY_BLOCK_SIZE=0;
|
||||||
|
SHOW WARNINGS;
|
||||||
|
Level Code Message
|
||||||
|
SHOW CREATE TABLE INNODB_COMPRESSED;
|
||||||
|
Table Create Table
|
||||||
|
INNODB_COMPRESSED CREATE TABLE `INNODB_COMPRESSED` (
|
||||||
|
`c1` int(11) DEFAULT NULL,
|
||||||
|
`b` char(20) DEFAULT NULL
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1 `PAGE_COMPRESSED`=1 `PAGE_COMPRESSION_LEVEL`=8
|
||||||
|
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;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED1 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED2 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED3 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED4 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED5 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED6 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED7 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED8 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
SELECT COUNT(*) FROM INNODB_PAGE_COMPRESSED9 WHERE C1 < 500000;
|
||||||
|
COUNT(*)
|
||||||
|
5000
|
||||||
|
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;
|
162
mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
Normal file
162
mysql-test/suite/innodb/t/innodb-page_compression_lz4.test
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
-- source include/have_innodb.inc
|
||||||
|
-- source include/have_innodb_lz4.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;
|
||||||
|
|
||||||
|
# LZ4
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 2;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# ZLIB
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 1;
|
||||||
|
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;
|
||||||
|
|
||||||
|
# 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
|
163
mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
Normal file
163
mysql-test/suite/innodb/t/innodb-page_compression_lzo.test
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
-- source include/have_innodb.inc
|
||||||
|
-- source include/have_innodb_lzo.inc
|
||||||
|
-- source include/have_innodb_lz4.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;
|
||||||
|
|
||||||
|
# LZO
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 3;
|
||||||
|
|
||||||
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
# LZ4
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 2;
|
||||||
|
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;
|
||||||
|
|
||||||
|
# zlib
|
||||||
|
SET GLOBAL innodb_compression_algorithm = 1;
|
||||||
|
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
|
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
|
3
mysql-test/suite/sys_vars/r/innodb_have_lz4_basic.result
Normal file
3
mysql-test/suite/sys_vars/r/innodb_have_lz4_basic.result
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
select @@global.innodb_have_lz4;
|
||||||
|
@@global.innodb_have_lz4
|
||||||
|
0
|
3
mysql-test/suite/sys_vars/r/innodb_have_lzo_basic.result
Normal file
3
mysql-test/suite/sys_vars/r/innodb_have_lzo_basic.result
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
select @@global.innodb_have_lzo;
|
||||||
|
@@global.innodb_have_lzo
|
||||||
|
0
|
@ -0,0 +1 @@
|
|||||||
|
--innodb-compression-algorithm=1
|
5
mysql-test/suite/sys_vars/t/innodb_have_lz4_basic.test
Normal file
5
mysql-test/suite/sys_vars/t/innodb_have_lz4_basic.test
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $inno= `select @@global.innodb_have_lz4`
|
||||||
|
--replace_result $inno 0
|
||||||
|
select @@global.innodb_have_lz4;
|
5
mysql-test/suite/sys_vars/t/innodb_have_lzo_basic.test
Normal file
5
mysql-test/suite/sys_vars/t/innodb_have_lzo_basic.test
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
--source include/have_innodb.inc
|
||||||
|
|
||||||
|
--let $inno= `select @@global.innodb_have_lzo`
|
||||||
|
--replace_result $inno 0
|
||||||
|
select @@global.innodb_have_lzo;
|
@ -173,6 +173,11 @@ fil_compress_page(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PAGE_UNCOMPRESSED:
|
||||||
|
*out_len = len;
|
||||||
|
return (buf);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
ut_error;
|
ut_error;
|
||||||
break;
|
break;
|
||||||
|
@ -559,7 +559,23 @@ static inline
|
|||||||
ulint
|
ulint
|
||||||
innobase_map_isolation_level(
|
innobase_map_isolation_level(
|
||||||
/*=========================*/
|
/*=========================*/
|
||||||
enum_tx_isolation iso); /*!< in: MySQL isolation level code */
|
enum_tx_isolation iso); /*!< in: MySQL isolation level code
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*************************************************************//**
|
||||||
|
Check for a valid value of innobase_compression_algorithm.
|
||||||
|
@return 0 for valid innodb_compression_algorithm. */
|
||||||
|
static
|
||||||
|
int
|
||||||
|
innodb_compression_algorithm_validate(
|
||||||
|
/*==================================*/
|
||||||
|
THD* thd, /*!< in: thread handle */
|
||||||
|
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
||||||
|
variable */
|
||||||
|
void* save, /*!< out: immediate result
|
||||||
|
for update function */
|
||||||
|
struct st_mysql_value* value); /*!< in: incoming string */
|
||||||
|
|
||||||
|
|
||||||
static const char innobase_hton_name[]= "InnoDB";
|
static const char innobase_hton_name[]= "InnoDB";
|
||||||
|
|
||||||
@ -723,6 +739,10 @@ static SHOW_VAR innodb_status_variables[]= {
|
|||||||
(char*) &export_vars.innodb_page_compressed_trim_op_saved, SHOW_LONGLONG},
|
(char*) &export_vars.innodb_page_compressed_trim_op_saved, SHOW_LONGLONG},
|
||||||
{"num_pages_page_decompressed",
|
{"num_pages_page_decompressed",
|
||||||
(char*) &export_vars.innodb_pages_page_decompressed, SHOW_LONGLONG},
|
(char*) &export_vars.innodb_pages_page_decompressed, SHOW_LONGLONG},
|
||||||
|
{"have_lz4",
|
||||||
|
(char*) &export_vars.innodb_have_lz4, SHOW_LONG},
|
||||||
|
{"have_lzo",
|
||||||
|
(char*) &export_vars.innodb_have_lzo, SHOW_LONG},
|
||||||
|
|
||||||
{NullS, NullS, SHOW_LONG}
|
{NullS, NullS, SHOW_LONG}
|
||||||
};
|
};
|
||||||
@ -2986,6 +3006,24 @@ innobase_init(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HAVE_LZ4
|
||||||
|
if (innodb_compression_algorithm == PAGE_LZ4_ALGORITHM) {
|
||||||
|
sql_print_error("InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblz4 is not installed. \n",
|
||||||
|
innodb_compression_algorithm);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == PAGE_LZO_ALGORITHM) {
|
||||||
|
sql_print_error("InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblzo is not installed. \n",
|
||||||
|
innodb_compression_algorithm);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
os_innodb_umask = (ulint) my_umask;
|
os_innodb_umask = (ulint) my_umask;
|
||||||
|
|
||||||
/* First calculate the default path for innodb_data_home_dir etc.,
|
/* First calculate the default path for innodb_data_home_dir etc.,
|
||||||
@ -17022,9 +17060,21 @@ static TYPELIB page_compression_algorithms_typelib=
|
|||||||
static MYSQL_SYSVAR_ENUM(compression_algorithm, innodb_compression_algorithm,
|
static MYSQL_SYSVAR_ENUM(compression_algorithm, innodb_compression_algorithm,
|
||||||
PLUGIN_VAR_OPCMDARG,
|
PLUGIN_VAR_OPCMDARG,
|
||||||
"Compression algorithm used on page compression. One of: none, zlib, lz4, or lzo",
|
"Compression algorithm used on page compression. One of: none, zlib, lz4, or lzo",
|
||||||
NULL, NULL, default_compression_algorithm,
|
innodb_compression_algorithm_validate, NULL, default_compression_algorithm,
|
||||||
&page_compression_algorithms_typelib);
|
&page_compression_algorithms_typelib);
|
||||||
|
|
||||||
|
static MYSQL_SYSVAR_ULONG(have_lz4, srv_have_lz4,
|
||||||
|
PLUGIN_VAR_READONLY,
|
||||||
|
"InnoDB compiled support with liblz4",
|
||||||
|
NULL, NULL, srv_have_lz4,
|
||||||
|
0, 1, 0);
|
||||||
|
|
||||||
|
static MYSQL_SYSVAR_ULONG(have_lzo, srv_have_lzo,
|
||||||
|
PLUGIN_VAR_READONLY,
|
||||||
|
"InnoDB compiled support with liblzo",
|
||||||
|
NULL, NULL, srv_have_lzo,
|
||||||
|
0, 1, 0);
|
||||||
|
|
||||||
static MYSQL_SYSVAR_LONG(mtflush_threads, srv_mtflush_threads,
|
static MYSQL_SYSVAR_LONG(mtflush_threads, srv_mtflush_threads,
|
||||||
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
||||||
"Number of multi-threaded flush threads",
|
"Number of multi-threaded flush threads",
|
||||||
@ -17201,6 +17251,8 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
|
|||||||
MYSQL_SYSVAR(compression_algorithm),
|
MYSQL_SYSVAR(compression_algorithm),
|
||||||
MYSQL_SYSVAR(mtflush_threads),
|
MYSQL_SYSVAR(mtflush_threads),
|
||||||
MYSQL_SYSVAR(use_mtflush),
|
MYSQL_SYSVAR(use_mtflush),
|
||||||
|
MYSQL_SYSVAR(have_lz4),
|
||||||
|
MYSQL_SYSVAR(have_lzo),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -17703,3 +17755,72 @@ innobase_convert_to_system_charset(
|
|||||||
static_cast<uint>(len), errors));
|
static_cast<uint>(len), errors));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************//**
|
||||||
|
Check for a valid value of innobase_compression_algorithm.
|
||||||
|
@return 0 for valid innodb_compression_algorithm. */
|
||||||
|
static
|
||||||
|
int
|
||||||
|
innodb_compression_algorithm_validate(
|
||||||
|
/*==================================*/
|
||||||
|
THD* thd, /*!< in: thread handle */
|
||||||
|
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
||||||
|
variable */
|
||||||
|
void* save, /*!< out: immediate result
|
||||||
|
for update function */
|
||||||
|
struct st_mysql_value* value) /*!< in: incoming string */
|
||||||
|
{
|
||||||
|
long compression_algorithm;
|
||||||
|
DBUG_ENTER("innobase_compression_algorithm_validate");
|
||||||
|
|
||||||
|
if (value->value_type(value) == MYSQL_VALUE_TYPE_STRING) {
|
||||||
|
char buff[STRING_BUFFER_USUAL_SIZE];
|
||||||
|
const char *str;
|
||||||
|
int length= sizeof(buff);
|
||||||
|
|
||||||
|
if (!(str= value->val_str(value, buff, &length))) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((compression_algorithm= (long)find_type(str, &page_compression_algorithms_typelib, 0) - 1) < 0) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
long long tmp;
|
||||||
|
|
||||||
|
if (value->val_int(value, &tmp)) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmp < 0 || tmp >= page_compression_algorithms_typelib.count) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
compression_algorithm= (long) tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
*reinterpret_cast<ulong*>(save) = compression_algorithm;
|
||||||
|
|
||||||
|
#ifndef HAVE_LZ4
|
||||||
|
if (compression_algorithm == PAGE_LZ4_ALGORITHM) {
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
HA_ERR_UNSUPPORTED,
|
||||||
|
"InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblz4 is not installed. \n",
|
||||||
|
compression_algorithm);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_LZO
|
||||||
|
if (compression_algorithm == PAGE_LZO_ALGORITHM) {
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
HA_ERR_UNSUPPORTED,
|
||||||
|
"InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblzo is not installed. \n",
|
||||||
|
compression_algorithm);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
@ -264,6 +264,9 @@ extern long srv_mtflush_threads;
|
|||||||
/* If this flag is TRUE, then we will use multi threaded flush. */
|
/* If this flag is TRUE, then we will use multi threaded flush. */
|
||||||
extern my_bool srv_use_mtflush;
|
extern my_bool srv_use_mtflush;
|
||||||
|
|
||||||
|
extern ulong srv_have_lz4;
|
||||||
|
extern ulong srv_have_lzo;
|
||||||
|
|
||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
extern ibool srv_use_native_conditions;
|
extern ibool srv_use_native_conditions;
|
||||||
#endif /* __WIN__ */
|
#endif /* __WIN__ */
|
||||||
@ -916,6 +919,8 @@ struct export_var_t{
|
|||||||
compression */
|
compression */
|
||||||
ib_int64_t innodb_pages_page_compression_error;/*!< Number of page
|
ib_int64_t innodb_pages_page_compression_error;/*!< Number of page
|
||||||
compression errors */
|
compression errors */
|
||||||
|
ulint innodb_have_lz4; /*!< HAVE_LZ4 */
|
||||||
|
ulint innodb_have_lzo; /*!< HAVE_LZO */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Thread slot in the thread table. */
|
/** Thread slot in the thread table. */
|
||||||
|
@ -224,12 +224,7 @@ struct os_aio_slot_t{
|
|||||||
int n_bytes; /* bytes written/read. */
|
int n_bytes; /* bytes written/read. */
|
||||||
int ret; /* AIO return code */
|
int ret; /* AIO return code */
|
||||||
#endif /* WIN_ASYNC_IO */
|
#endif /* WIN_ASYNC_IO */
|
||||||
#ifdef HAVE_LZO
|
byte *lzo_mem; /* Temporal memory used by LZO */
|
||||||
byte lzo_mem[LZO1X_1_15_MEM_COMPRESS];
|
|
||||||
#else
|
|
||||||
byte lzo_mem[1]; /* Temporal memory used by LZO */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The asynchronous i/o array structure */
|
/** The asynchronous i/o array structure */
|
||||||
@ -366,6 +361,17 @@ os_slot_alloc_page_buf(
|
|||||||
/*===================*/
|
/*===================*/
|
||||||
os_aio_slot_t* slot); /*!< in: slot structure */
|
os_aio_slot_t* slot); /*!< in: slot structure */
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
/**********************************************************************//**
|
||||||
|
Allocate memory for temporal memory used for page compression when
|
||||||
|
LZO compression method is used */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
os_slot_alloc_lzo_mem(
|
||||||
|
/*===================*/
|
||||||
|
os_aio_slot_t* slot); /*!< in: slot structure */
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************//**
|
/****************************************************************//**
|
||||||
Does error handling when a file operation fails.
|
Does error handling when a file operation fails.
|
||||||
@return TRUE if we should retry the operation */
|
@return TRUE if we should retry the operation */
|
||||||
@ -4094,6 +4100,11 @@ os_aio_array_free(
|
|||||||
ut_free(slot->page_compression_page);
|
ut_free(slot->page_compression_page);
|
||||||
slot->page_compression_page = NULL;
|
slot->page_compression_page = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (slot->lzo_mem) {
|
||||||
|
ut_free(slot->lzo_mem);
|
||||||
|
slot->lzo_mem = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_free(array->slots);
|
ut_free(array->slots);
|
||||||
@ -4548,7 +4559,11 @@ found:
|
|||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_ad(slot->page_buf);
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Call page compression */
|
/* Call page compression */
|
||||||
tmp = fil_compress_page(fil_node_get_space_id(slot->message1),
|
tmp = fil_compress_page(fil_node_get_space_id(slot->message1),
|
||||||
@ -5232,7 +5247,11 @@ os_aio_windows_handle(
|
|||||||
if (slot->page_buf == NULL) {
|
if (slot->page_buf == NULL) {
|
||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
ut_ad(slot->page_buf);
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (slot->type == OS_FILE_READ) {
|
if (slot->type == OS_FILE_READ) {
|
||||||
if (fil_page_is_compressed(slot->buf)) {
|
if (fil_page_is_compressed(slot->buf)) {
|
||||||
@ -5346,7 +5365,12 @@ retry:
|
|||||||
if (slot->page_buf == NULL) {
|
if (slot->page_buf == NULL) {
|
||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
ut_ad(slot->page_buf);
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (slot->type == OS_FILE_READ) {
|
if (slot->type == OS_FILE_READ) {
|
||||||
if (fil_page_is_compressed(slot->buf)) {
|
if (fil_page_is_compressed(slot->buf)) {
|
||||||
@ -6351,9 +6375,27 @@ os_slot_alloc_page_buf(
|
|||||||
byte* cbuf2;
|
byte* cbuf2;
|
||||||
byte* cbuf;
|
byte* cbuf;
|
||||||
|
|
||||||
|
ut_a(slot != NULL);
|
||||||
/* We allocate extra to avoid memory overwrite on compression */
|
/* We allocate extra to avoid memory overwrite on compression */
|
||||||
cbuf2 = static_cast<byte *>(ut_malloc(UNIV_PAGE_SIZE*2));
|
cbuf2 = static_cast<byte *>(ut_malloc(UNIV_PAGE_SIZE*2));
|
||||||
cbuf = static_cast<byte *>(ut_align(cbuf2, UNIV_PAGE_SIZE));
|
cbuf = static_cast<byte *>(ut_align(cbuf2, UNIV_PAGE_SIZE));
|
||||||
slot->page_compression_page = static_cast<byte *>(cbuf2);
|
slot->page_compression_page = static_cast<byte *>(cbuf2);
|
||||||
slot->page_buf = static_cast<byte *>(cbuf);
|
slot->page_buf = static_cast<byte *>(cbuf);
|
||||||
|
ut_a(slot->page_buf != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
/**********************************************************************//**
|
||||||
|
Allocate memory for temporal memory used for page compression when
|
||||||
|
LZO compression method is used */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
os_slot_alloc_lzo_mem(
|
||||||
|
/*===================*/
|
||||||
|
os_aio_slot_t* slot) /*!< in: slot structure */
|
||||||
|
{
|
||||||
|
ut_a(slot != NULL);
|
||||||
|
slot->lzo_mem = static_cast<byte *>(ut_malloc(LZO1X_1_15_MEM_COMPRESS));
|
||||||
|
ut_a(slot->lzo_mem != NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -209,6 +209,18 @@ UNIV_INTERN uint srv_flush_log_at_timeout = 1;
|
|||||||
UNIV_INTERN ulong srv_page_size = UNIV_PAGE_SIZE_DEF;
|
UNIV_INTERN ulong srv_page_size = UNIV_PAGE_SIZE_DEF;
|
||||||
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
|
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
|
||||||
|
|
||||||
|
#ifdef HAVE_LZ4
|
||||||
|
UNIV_INTERN ulong srv_have_lz4 = 1;
|
||||||
|
#else
|
||||||
|
UNIV_INTERN ulong srv_have_lz4 = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
UNIV_INTERN ulong srv_have_lzo = 1;
|
||||||
|
#else
|
||||||
|
UNIV_INTERN ulong srv_have_lzo = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Try to flush dirty pages so as to avoid IO bursts at
|
/* Try to flush dirty pages so as to avoid IO bursts at
|
||||||
the checkpoints. */
|
the checkpoints. */
|
||||||
UNIV_INTERN char srv_adaptive_flushing = TRUE;
|
UNIV_INTERN char srv_adaptive_flushing = TRUE;
|
||||||
@ -1422,6 +1434,9 @@ srv_export_innodb_status(void)
|
|||||||
#endif
|
#endif
|
||||||
export_vars.innodb_page_size = UNIV_PAGE_SIZE;
|
export_vars.innodb_page_size = UNIV_PAGE_SIZE;
|
||||||
|
|
||||||
|
export_vars.innodb_have_lz4 = srv_have_lz4;
|
||||||
|
export_vars.innodb_have_lzo = srv_have_lzo;
|
||||||
|
|
||||||
export_vars.innodb_log_waits = srv_stats.log_waits;
|
export_vars.innodb_log_waits = srv_stats.log_waits;
|
||||||
|
|
||||||
export_vars.innodb_os_log_written = srv_stats.os_log_written;
|
export_vars.innodb_os_log_written = srv_stats.os_log_written;
|
||||||
|
@ -21,8 +21,8 @@ INCLUDE(CheckCSourceRuns)
|
|||||||
INCLUDE(lz4)
|
INCLUDE(lz4)
|
||||||
INCLUDE(lzo)
|
INCLUDE(lzo)
|
||||||
|
|
||||||
MYSQL_CHECK_LZ4_STATIC()
|
MYSQL_CHECK_LZ4()
|
||||||
MYSQL_CHECK_LZO_STATIC()
|
MYSQL_CHECK_LZO()
|
||||||
|
|
||||||
# OS tests
|
# OS tests
|
||||||
IF(UNIX)
|
IF(UNIX)
|
||||||
|
@ -173,6 +173,10 @@ fil_compress_page(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PAGE_UNCOMPRESSED:
|
||||||
|
*out_len = len;
|
||||||
|
return (buf);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ut_error;
|
ut_error;
|
||||||
break;
|
break;
|
||||||
|
@ -654,6 +654,20 @@ static int innobase_checkpoint_state(handlerton *hton, bool disable)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************//**
|
||||||
|
Check for a valid value of innobase_compression_algorithm.
|
||||||
|
@return 0 for valid innodb_compression_algorithm. */
|
||||||
|
static
|
||||||
|
int
|
||||||
|
innodb_compression_algorithm_validate(
|
||||||
|
/*==================================*/
|
||||||
|
THD* thd, /*!< in: thread handle */
|
||||||
|
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
||||||
|
variable */
|
||||||
|
void* save, /*!< out: immediate result
|
||||||
|
for update function */
|
||||||
|
struct st_mysql_value* value); /*!< in: incoming string */
|
||||||
|
|
||||||
static const char innobase_hton_name[]= "InnoDB";
|
static const char innobase_hton_name[]= "InnoDB";
|
||||||
|
|
||||||
static MYSQL_THDVAR_BOOL(support_xa, PLUGIN_VAR_OPCMDARG,
|
static MYSQL_THDVAR_BOOL(support_xa, PLUGIN_VAR_OPCMDARG,
|
||||||
@ -919,6 +933,10 @@ static SHOW_VAR innodb_status_variables[]= {
|
|||||||
(char*) &export_vars.innodb_page_compressed_trim_op_saved, SHOW_LONGLONG},
|
(char*) &export_vars.innodb_page_compressed_trim_op_saved, SHOW_LONGLONG},
|
||||||
{"num_pages_page_decompressed",
|
{"num_pages_page_decompressed",
|
||||||
(char*) &export_vars.innodb_pages_page_decompressed, SHOW_LONGLONG},
|
(char*) &export_vars.innodb_pages_page_decompressed, SHOW_LONGLONG},
|
||||||
|
{"have_lz4",
|
||||||
|
(char*) &export_vars.innodb_have_lz4, SHOW_LONG},
|
||||||
|
{"have_lzo",
|
||||||
|
(char*) &export_vars.innodb_have_lzo, SHOW_LONG},
|
||||||
|
|
||||||
{NullS, NullS, SHOW_LONG}
|
{NullS, NullS, SHOW_LONG}
|
||||||
};
|
};
|
||||||
@ -3373,6 +3391,24 @@ innobase_init(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef HAVE_LZ4
|
||||||
|
if (innodb_compression_algorithm == PAGE_LZ4_ALGORITHM) {
|
||||||
|
sql_print_error("InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblz4 is not installed. \n",
|
||||||
|
innodb_compression_algorithm);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == PAGE_LZO_ALGORITHM) {
|
||||||
|
sql_print_error("InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblzo is not installed. \n",
|
||||||
|
innodb_compression_algorithm);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
os_innodb_umask = (ulint) my_umask;
|
os_innodb_umask = (ulint) my_umask;
|
||||||
|
|
||||||
/* First calculate the default path for innodb_data_home_dir etc.,
|
/* First calculate the default path for innodb_data_home_dir etc.,
|
||||||
@ -18200,9 +18236,21 @@ static TYPELIB page_compression_algorithms_typelib=
|
|||||||
static MYSQL_SYSVAR_ENUM(compression_algorithm, innodb_compression_algorithm,
|
static MYSQL_SYSVAR_ENUM(compression_algorithm, innodb_compression_algorithm,
|
||||||
PLUGIN_VAR_OPCMDARG,
|
PLUGIN_VAR_OPCMDARG,
|
||||||
"Compression algorithm used on page compression. One of: none, zlib, lz4, or lzo",
|
"Compression algorithm used on page compression. One of: none, zlib, lz4, or lzo",
|
||||||
NULL, NULL, default_compression_algorithm,
|
innodb_compression_algorithm_validate, NULL, default_compression_algorithm,
|
||||||
&page_compression_algorithms_typelib);
|
&page_compression_algorithms_typelib);
|
||||||
|
|
||||||
|
static MYSQL_SYSVAR_ULONG(have_lz4, srv_have_lz4,
|
||||||
|
PLUGIN_VAR_READONLY,
|
||||||
|
"InnoDB compiled support with liblz4",
|
||||||
|
NULL, NULL, srv_have_lz4,
|
||||||
|
0, 1, 0);
|
||||||
|
|
||||||
|
static MYSQL_SYSVAR_ULONG(have_lzo, srv_have_lzo,
|
||||||
|
PLUGIN_VAR_READONLY,
|
||||||
|
"InnoDB compiled support with liblzo",
|
||||||
|
NULL, NULL, srv_have_lzo,
|
||||||
|
0, 1, 0);
|
||||||
|
|
||||||
static MYSQL_SYSVAR_LONG(mtflush_threads, srv_mtflush_threads,
|
static MYSQL_SYSVAR_LONG(mtflush_threads, srv_mtflush_threads,
|
||||||
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_READONLY,
|
||||||
"Number of multi-threaded flush threads",
|
"Number of multi-threaded flush threads",
|
||||||
@ -18417,6 +18465,9 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
|
|||||||
MYSQL_SYSVAR(compression_algorithm),
|
MYSQL_SYSVAR(compression_algorithm),
|
||||||
MYSQL_SYSVAR(mtflush_threads),
|
MYSQL_SYSVAR(mtflush_threads),
|
||||||
MYSQL_SYSVAR(use_mtflush),
|
MYSQL_SYSVAR(use_mtflush),
|
||||||
|
MYSQL_SYSVAR(have_lz4),
|
||||||
|
MYSQL_SYSVAR(have_lzo),
|
||||||
|
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -18917,12 +18968,83 @@ int ha_innobase::multi_range_read_explain_info(uint mrr_mode, char *str, size_t
|
|||||||
return ds_mrr.dsmrr_explain_info(mrr_mode, str, size);
|
return ds_mrr.dsmrr_explain_info(mrr_mode, str, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
A helper function used only in index_cond_func_innodb
|
A helper function used only in index_cond_func_innodb
|
||||||
*/
|
*/
|
||||||
|
|
||||||
bool ha_innobase::is_thd_killed()
|
bool ha_innobase::is_thd_killed()
|
||||||
{
|
{
|
||||||
return thd_kill_level(user_thd);
|
return thd_kill_level(user_thd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*************************************************************//**
|
||||||
|
Check for a valid value of innobase_compression_algorithm.
|
||||||
|
@return 0 for valid innodb_compression_algorithm. */
|
||||||
|
static
|
||||||
|
int
|
||||||
|
innodb_compression_algorithm_validate(
|
||||||
|
/*==================================*/
|
||||||
|
THD* thd, /*!< in: thread handle */
|
||||||
|
struct st_mysql_sys_var* var, /*!< in: pointer to system
|
||||||
|
variable */
|
||||||
|
void* save, /*!< out: immediate result
|
||||||
|
for update function */
|
||||||
|
struct st_mysql_value* value) /*!< in: incoming string */
|
||||||
|
{
|
||||||
|
long compression_algorithm;
|
||||||
|
DBUG_ENTER("innobase_compression_algorithm_validate");
|
||||||
|
|
||||||
|
if (value->value_type(value) == MYSQL_VALUE_TYPE_STRING) {
|
||||||
|
char buff[STRING_BUFFER_USUAL_SIZE];
|
||||||
|
const char *str;
|
||||||
|
int length= sizeof(buff);
|
||||||
|
|
||||||
|
if (!(str= value->val_str(value, buff, &length))) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((compression_algorithm= (long)find_type(str, &page_compression_algorithms_typelib, 0) - 1) < 0) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
long long tmp;
|
||||||
|
|
||||||
|
if (value->val_int(value, &tmp)) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tmp < 0 || tmp >= page_compression_algorithms_typelib.count) {
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
compression_algorithm= (long) tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
*reinterpret_cast<ulong*>(save) = compression_algorithm;
|
||||||
|
|
||||||
|
#ifndef HAVE_LZ4
|
||||||
|
if (compression_algorithm == PAGE_LZ4_ALGORITHM) {
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
HA_ERR_UNSUPPORTED,
|
||||||
|
"InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblz4 is not installed. \n",
|
||||||
|
compression_algorithm);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef HAVE_LZO
|
||||||
|
if (compression_algorithm == PAGE_LZO_ALGORITHM) {
|
||||||
|
push_warning_printf(thd, Sql_condition::WARN_LEVEL_WARN,
|
||||||
|
HA_ERR_UNSUPPORTED,
|
||||||
|
"InnoDB: innodb_compression_algorithm = %lu unsupported.\n"
|
||||||
|
"InnoDB: liblzo is not installed. \n",
|
||||||
|
compression_algorithm);
|
||||||
|
DBUG_RETURN(1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DBUG_RETURN(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -282,6 +282,9 @@ extern long srv_mtflush_threads;
|
|||||||
/* If this flag is TRUE, then we will use multi threaded flush. */
|
/* If this flag is TRUE, then we will use multi threaded flush. */
|
||||||
extern my_bool srv_use_mtflush;
|
extern my_bool srv_use_mtflush;
|
||||||
|
|
||||||
|
extern ulong srv_have_lz4;
|
||||||
|
extern ulong srv_have_lzo;
|
||||||
|
|
||||||
/** Server undo tablespaces directory, can be absolute path. */
|
/** Server undo tablespaces directory, can be absolute path. */
|
||||||
extern char* srv_undo_dir;
|
extern char* srv_undo_dir;
|
||||||
|
|
||||||
@ -1127,6 +1130,8 @@ struct export_var_t{
|
|||||||
compression */
|
compression */
|
||||||
ib_int64_t innodb_pages_page_compression_error;/*!< Number of page
|
ib_int64_t innodb_pages_page_compression_error;/*!< Number of page
|
||||||
compression errors */
|
compression errors */
|
||||||
|
ulint innodb_have_lz4; /*!< HAVE_LZ4 */
|
||||||
|
ulint innodb_have_lzo; /*!< HAVE_LZO */
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Thread slot in the thread table. */
|
/** Thread slot in the thread table. */
|
||||||
|
@ -233,12 +233,7 @@ struct os_aio_slot_t{
|
|||||||
int n_bytes; /* bytes written/read. */
|
int n_bytes; /* bytes written/read. */
|
||||||
int ret; /* AIO return code */
|
int ret; /* AIO return code */
|
||||||
#endif /* WIN_ASYNC_IO */
|
#endif /* WIN_ASYNC_IO */
|
||||||
#ifdef HAVE_LZO
|
byte *lzo_mem; /* Temporal memory used by LZO */
|
||||||
byte lzo_mem[LZO1X_1_15_MEM_COMPRESS];
|
|
||||||
#else
|
|
||||||
byte lzo_mem[1]; /* Temporal memory used by LZO */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/** The asynchronous i/o array structure */
|
/** The asynchronous i/o array structure */
|
||||||
@ -366,6 +361,17 @@ os_slot_alloc_page_buf(
|
|||||||
/*===================*/
|
/*===================*/
|
||||||
os_aio_slot_t* slot); /*!< in: slot structure */
|
os_aio_slot_t* slot); /*!< in: slot structure */
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
/**********************************************************************//**
|
||||||
|
Allocate memory for temporal memory used for page compression when
|
||||||
|
LZO compression method is used */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
os_slot_alloc_lzo_mem(
|
||||||
|
/*===================*/
|
||||||
|
os_aio_slot_t* slot); /*!< in: slot structure */
|
||||||
|
#endif
|
||||||
|
|
||||||
/****************************************************************//**
|
/****************************************************************//**
|
||||||
Does error handling when a file operation fails.
|
Does error handling when a file operation fails.
|
||||||
@return TRUE if we should retry the operation */
|
@return TRUE if we should retry the operation */
|
||||||
@ -4202,6 +4208,11 @@ os_aio_array_free(
|
|||||||
ut_free(slot->page_compression_page);
|
ut_free(slot->page_compression_page);
|
||||||
slot->page_compression_page = NULL;
|
slot->page_compression_page = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (slot->lzo_mem) {
|
||||||
|
ut_free(slot->lzo_mem);
|
||||||
|
slot->lzo_mem = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_free(array->slots);
|
ut_free(array->slots);
|
||||||
@ -4669,7 +4680,11 @@ found:
|
|||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
|
|
||||||
ut_ad(slot->page_buf);
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Call page compression */
|
/* Call page compression */
|
||||||
tmp = fil_compress_page(fil_node_get_space_id(slot->message1),
|
tmp = fil_compress_page(fil_node_get_space_id(slot->message1),
|
||||||
@ -5299,8 +5314,12 @@ os_aio_windows_handle(
|
|||||||
if (slot->page_buf == NULL) {
|
if (slot->page_buf == NULL) {
|
||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
ut_ad(slot->page_buf);
|
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (slot->type == OS_FILE_READ) {
|
if (slot->type == OS_FILE_READ) {
|
||||||
if (fil_page_is_compressed(slot->buf)) {
|
if (fil_page_is_compressed(slot->buf)) {
|
||||||
fil_decompress_page(slot->page_buf, slot->buf, slot->len, slot->write_size);
|
fil_decompress_page(slot->page_buf, slot->buf, slot->len, slot->write_size);
|
||||||
@ -5413,8 +5432,12 @@ retry:
|
|||||||
if (slot->page_buf == NULL) {
|
if (slot->page_buf == NULL) {
|
||||||
os_slot_alloc_page_buf(slot);
|
os_slot_alloc_page_buf(slot);
|
||||||
}
|
}
|
||||||
ut_ad(slot->page_buf);
|
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
if (innodb_compression_algorithm == 3 && slot->lzo_mem == NULL) {
|
||||||
|
os_slot_alloc_lzo_mem(slot);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
if (slot->type == OS_FILE_READ) {
|
if (slot->type == OS_FILE_READ) {
|
||||||
if (fil_page_is_compressed(slot->buf)) {
|
if (fil_page_is_compressed(slot->buf)) {
|
||||||
fil_decompress_page(slot->page_buf, slot->buf, slot->len, slot->write_size);
|
fil_decompress_page(slot->page_buf, slot->buf, slot->len, slot->write_size);
|
||||||
@ -6459,9 +6482,27 @@ os_slot_alloc_page_buf(
|
|||||||
byte* cbuf2;
|
byte* cbuf2;
|
||||||
byte* cbuf;
|
byte* cbuf;
|
||||||
|
|
||||||
|
ut_a(slot != NULL);
|
||||||
/* We allocate extra to avoid memory overwrite on compression */
|
/* We allocate extra to avoid memory overwrite on compression */
|
||||||
cbuf2 = static_cast<byte *>(ut_malloc(UNIV_PAGE_SIZE*2));
|
cbuf2 = static_cast<byte *>(ut_malloc(UNIV_PAGE_SIZE*2));
|
||||||
cbuf = static_cast<byte *>(ut_align(cbuf2, UNIV_PAGE_SIZE));
|
cbuf = static_cast<byte *>(ut_align(cbuf2, UNIV_PAGE_SIZE));
|
||||||
slot->page_compression_page = static_cast<byte *>(cbuf2);
|
slot->page_compression_page = static_cast<byte *>(cbuf2);
|
||||||
slot->page_buf = static_cast<byte *>(cbuf);
|
slot->page_buf = static_cast<byte *>(cbuf);
|
||||||
|
ut_a(slot->page_buf != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
/**********************************************************************//**
|
||||||
|
Allocate memory for temporal memory used for page compression when
|
||||||
|
LZO compression method is used */
|
||||||
|
UNIV_INTERN
|
||||||
|
void
|
||||||
|
os_slot_alloc_lzo_mem(
|
||||||
|
/*===================*/
|
||||||
|
os_aio_slot_t* slot) /*!< in: slot structure */
|
||||||
|
{
|
||||||
|
ut_a(slot != NULL);
|
||||||
|
slot->lzo_mem = static_cast<byte *>(ut_malloc(LZO1X_1_15_MEM_COMPRESS));
|
||||||
|
ut_a(slot->lzo_mem != NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -237,6 +237,18 @@ UNIV_INTERN ulong srv_page_size = UNIV_PAGE_SIZE_DEF;
|
|||||||
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
|
UNIV_INTERN ulong srv_page_size_shift = UNIV_PAGE_SIZE_SHIFT_DEF;
|
||||||
UNIV_INTERN char srv_use_global_flush_log_at_trx_commit = TRUE;
|
UNIV_INTERN char srv_use_global_flush_log_at_trx_commit = TRUE;
|
||||||
|
|
||||||
|
#ifdef HAVE_LZ4
|
||||||
|
UNIV_INTERN ulong srv_have_lz4 = 1;
|
||||||
|
#else
|
||||||
|
UNIV_INTERN ulong srv_have_lz4 = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_LZO
|
||||||
|
UNIV_INTERN ulong srv_have_lzo = 1;
|
||||||
|
#else
|
||||||
|
UNIV_INTERN ulong srv_have_lzo = 0;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Try to flush dirty pages so as to avoid IO bursts at
|
/* Try to flush dirty pages so as to avoid IO bursts at
|
||||||
the checkpoints. */
|
the checkpoints. */
|
||||||
UNIV_INTERN char srv_adaptive_flushing = TRUE;
|
UNIV_INTERN char srv_adaptive_flushing = TRUE;
|
||||||
@ -1801,6 +1813,9 @@ srv_export_innodb_status(void)
|
|||||||
#endif
|
#endif
|
||||||
export_vars.innodb_page_size = UNIV_PAGE_SIZE;
|
export_vars.innodb_page_size = UNIV_PAGE_SIZE;
|
||||||
|
|
||||||
|
export_vars.innodb_have_lz4 = srv_have_lz4;
|
||||||
|
export_vars.innodb_have_lzo = srv_have_lzo;
|
||||||
|
|
||||||
export_vars.innodb_log_waits = srv_stats.log_waits;
|
export_vars.innodb_log_waits = srv_stats.log_waits;
|
||||||
|
|
||||||
export_vars.innodb_os_log_written = srv_stats.os_log_written;
|
export_vars.innodb_os_log_written = srv_stats.os_log_written;
|
||||||
|
Reference in New Issue
Block a user