diff options
Diffstat (limited to 'mysql-test/main/column_compression.test')
-rw-r--r-- | mysql-test/main/column_compression.test | 81 |
1 files changed, 80 insertions, 1 deletions
diff --git a/mysql-test/main/column_compression.test b/mysql-test/main/column_compression.test index 6d6ed3d3993..f3220503694 100644 --- a/mysql-test/main/column_compression.test +++ b/mysql-test/main/column_compression.test @@ -64,11 +64,19 @@ DROP TABLE t1; CREATE TABLE t1(a TINYTEXT COMPRESSED); SET column_compression_threshold=300; +INSERT INTO t1 VALUES(REPEAT('a', 254)); +INSERT INTO t1 VALUES(REPEAT(' ', 254)); --error ER_DATA_TOO_LONG INSERT INTO t1 VALUES(REPEAT('a', 255)); INSERT INTO t1 VALUES(REPEAT(' ', 255)); +--error ER_DATA_TOO_LONG +INSERT INTO t1 VALUES(REPEAT('a', 256)); +INSERT INTO t1 VALUES(REPEAT(' ', 256)); +--error ER_DATA_TOO_LONG +INSERT INTO t1 VALUES(REPEAT('a', 257)); +INSERT INTO t1 VALUES(REPEAT(' ', 257)); SET column_compression_threshold=DEFAULT; -SELECT a, LENGTH(a) FROM t1; +SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1; DROP TABLE t1; --echo # Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length @@ -80,6 +88,22 @@ SET column_compression_threshold=DEFAULT; SELECT a, LENGTH(a) FROM t1; DROP TABLE t1; +CREATE TABLE t1(a VARCHAR(65531) COMPRESSED); +SET column_compression_threshold=65537; +INSERT INTO t1 VALUES(REPEAT('a', 65530)); +INSERT INTO t1 VALUES(REPEAT(' ', 65530)); +INSERT INTO t1 VALUES(REPEAT('a', 65531)); +INSERT INTO t1 VALUES(REPEAT(' ', 65531)); +--error ER_DATA_TOO_LONG +INSERT INTO t1 VALUES(REPEAT('a', 65532)); +INSERT INTO t1 VALUES(REPEAT(' ', 65532)); +--error ER_DATA_TOO_LONG +INSERT INTO t1 VALUES(REPEAT('a', 65533)); +INSERT INTO t1 VALUES(REPEAT(' ', 65533)); +SET column_compression_threshold=DEFAULT; +SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1, 2; +DROP TABLE t1; + --echo # --echo # MDEV-14929 - AddressSanitizer: memcpy-param-overlap in @@ -91,3 +115,58 @@ SET SESSION optimizer_switch = 'derived_merge=off'; SELECT * FROM ( SELECT * FROM t1 ) AS sq ORDER BY b; SET SESSION optimizer_switch=DEFAULT; DROP TABLE t1; + + +--echo # +--echo # MDEV-15762 - VARCHAR(0) COMPRESSED crashes the server +--echo # +CREATE TABLE t1(a VARCHAR(0) COMPRESSED); +--error ER_DATA_TOO_LONG +INSERT INTO t1 VALUES('a'); +INSERT INTO t1 VALUES(' '); +SELECT LENGTH(a) FROM t1; +DROP TABLE t1; + + +--echo # +--echo # MDEV-15763 - VARCHAR(1) COMPRESSED crashes the server +--echo # +CREATE TABLE t1(a VARCHAR(1) COMPRESSED); +SET column_compression_threshold=0; +INSERT INTO t1 VALUES('a'); +SET column_compression_threshold=DEFAULT; +DROP TABLE t1; + + +--echo # +--echo # MDEV-15938 - TINYTEXT CHARACTER SET utf8 COMPRESSED truncates data +--echo # +CREATE TABLE t1(a TINYTEXT COMPRESSED, b TINYTEXT) CHARACTER SET utf8; +INSERT INTO t1 VALUES (REPEAT(_latin1'a', 254), REPEAT(_latin1'a', 254)); +SELECT CHAR_LENGTH(a), CHAR_LENGTH(b), LEFT(a, 10), LEFT(b, 10) FROM t1; +DROP TABLE t1; + + +--echo # +--echo # MDEV-16134 Wrong I_S.COLUMNS.CHARACTER_XXX_LENGTH value for compressed columns +--echo # + +CREATE TABLE t1 +( + a VARCHAR(10) CHARACTER SET latin1 COMPRESSED, + b VARCHAR(10) CHARACTER SET utf8 COMPRESSED +); +SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH +FROM INFORMATION_SCHEMA.COLUMNS +WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1' AND COLUMN_NAME IN ('a','b') +ORDER BY COLUMN_NAME; +DROP TABLE t1; + + +--echo # +--echo # MDEV-15592 - Column COMPRESSED should select a 'high order' datatype +--echo # +CREATE TABLE t1(a TINYTEXT COMPRESSED); +INSERT INTO t1 VALUES(REPEAT('a', 255)); +SELECT LEFT(a, 10), LENGTH(a) FROM t1; +DROP TABLE t1; |