--source include/have_innodb.inc --source include/have_csv.inc let $MYSQLD_DATADIR= `select @@datadir`; SET column_compression_zlib_wrap=true; let $typec= BLOB COMPRESSED; let $typeu= BLOB; --source column_compression.inc let $typec= TEXT COMPRESSED; let $typeu= TEXT; --source column_compression.inc let $typec= VARBINARY(10000) COMPRESSED; let $typeu= VARBINARY(10000); --source column_compression.inc let $typec= VARCHAR(10000) COMPRESSED; let $typeu= VARCHAR(10000); --source column_compression.inc let $typec= TEXT CHARSET ucs2 COMPRESSED; let $typeu= TEXT; --source column_compression.inc SET column_compression_zlib_wrap=DEFAULT; let $typec= BLOB COMPRESSED; let $typeu= BLOB; --source column_compression.inc --error ER_WRONG_FIELD_SPEC CREATE TABLE t1(a CHAR(100) COMPRESSED); --error ER_WRONG_FIELD_SPEC CREATE TABLE t1(a INT COMPRESSED); --error ER_UNKNOWN_COMPRESSION_METHOD CREATE TABLE t1(a BLOB COMPRESSED=unknown); CREATE TABLE t1(a BLOB COMPRESSED COMPRESSED); DROP TABLE t1; CREATE TABLE t1(a INT); --error ER_WRONG_FIELD_SPEC ALTER TABLE t1 MODIFY a INT COMPRESSED; DROP TABLE t1; --echo # Test CSV CREATE TABLE t1(a BLOB NOT NULL COMPRESSED) ENGINE=CSV; INSERT INTO t1 VALUES(REPEAT('a', 110)); SELECT LENGTH(a) FROM t1; ALTER TABLE t1 ENGINE=MyISAM; SELECT LENGTH(a) FROM t1; ALTER TABLE t1 ENGINE=CSV; SELECT LENGTH(a) FROM t1; SHOW CREATE TABLE t1; --cat_file $MYSQLD_DATADIR/test/t1.CSV DROP TABLE t1; --echo # Test fields that don't fit data CREATE TABLE t1(a VARCHAR(9) COMPRESSED); --error ER_DATA_TOO_LONG INSERT INTO t1 VALUES(REPEAT('a', 10)); INSERT INTO t1 VALUES(REPEAT(' ', 10)); SELECT a, LENGTH(a) FROM t1; DROP TABLE t1; CREATE TABLE t1(a TINYTEXT COMPRESSED); SET column_compression_threshold=300; --error ER_DATA_TOO_LONG INSERT INTO t1 VALUES(REPEAT('a', 255)); INSERT INTO t1 VALUES(REPEAT(' ', 255)); SET column_compression_threshold=DEFAULT; SELECT a, LENGTH(a) FROM t1; DROP TABLE t1; --echo # Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length CREATE TABLE t1(a VARCHAR(255) COMPRESSED); SHOW CREATE TABLE t1; SET column_compression_threshold=300; INSERT INTO t1 VALUES(REPEAT('a', 255)); SET column_compression_threshold=DEFAULT; SELECT a, LENGTH(a) FROM t1; DROP TABLE t1;