SET column_compression_zlib_wrap=true;
FLUSH STATUS;
CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a BLOB COMPRESSED);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a BLOB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
28
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a BLOB) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	1000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
40
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
36
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	1
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
FLUSH STATUS;
CREATE TABLE t1(a TEXT COMPRESSED, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a TEXT COMPRESSED);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a TEXT;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a TEXT COMPRESSED;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
28
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a TEXT) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b TEXT COMPRESSED DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	1000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
40
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
36
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	1
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 TEXT COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 TEXT COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c TEXT COMPRESSED) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
FLUSH STATUS;
CREATE TABLE t1(a VARBINARY(10000) COMPRESSED, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a VARBINARY(10000) COMPRESSED);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000) COMPRESSED;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
28
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a VARBINARY(10000)) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varbinary(10000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b VARBINARY(10000) COMPRESSED DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	1000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
40
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
32
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	1
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c VARBINARY(10000) COMPRESSED) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
FLUSH STATUS;
CREATE TABLE t1(a VARCHAR(10000) COMPRESSED, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a VARCHAR(10000) COMPRESSED);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000) COMPRESSED;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
28
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a VARCHAR(10000)) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` varchar(10000) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b VARCHAR(10000) COMPRESSED DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	1000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
40
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
32
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	1
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c VARCHAR(10000) COMPRESSED) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
FLUSH STATUS;
CREATE TABLE t1(a TEXT COMPRESSED CHARSET ucs2, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a TEXT COMPRESSED CHARSET ucs2);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	2000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
36
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a TEXT;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a TEXT COMPRESSED CHARSET ucs2;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	2000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
36
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	2000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
36
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a TEXT) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` text DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	2000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b TEXT COMPRESSED CHARSET ucs2 DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	2000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
60
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
44
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	2
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 TEXT COMPRESSED CHARSET ucs2) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 TEXT COMPRESSED CHARSET ucs2) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c TEXT COMPRESSED CHARSET ucs2) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
SET column_compression_zlib_wrap=DEFAULT;
FLUSH STATUS;
CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1(a BLOB COMPRESSED);
ALTER TABLE t1 ADD KEY(a(10));
ERROR HY000: Compressed column 'a' can't be used in key specification
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
# Make sure column was actually compressed
INSERT INTO t1 VALUES(REPEAT('a', 1000));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	2
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
24
# Make sure ALTER TABLE rebuilds table
ALTER TABLE t1 MODIFY COLUMN a BLOB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	1
COLUMN_DECOMPRESSIONS	3
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
1008
# Rebuild back
ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	5
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
24
# Make sure CREATE TABLE ... LIKE inherits compression
CREATE TABLE t2 LIKE t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t2;
# Make sure implicit CREATE TABLE ... SELECT inherits compression
CREATE TABLE t2 SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	7
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
24
DROP TABLE t2;
# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
CREATE TABLE t2(a BLOB) SELECT * FROM t1;
SHOW CREATE TABLE t2;
Table	Create Table
t2	CREATE TABLE `t2` (
  `a` blob DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t2;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	8
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
DATA_LENGTH
1008
DROP TABLE t2;
# Make sure engine change works
ALTER TABLE t1 ENGINE=InnoDB;
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	1000
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	10
# Make sure online add column works (requires InnoDB)
ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
LEFT(a, 10)	LENGTH(a)	b
aaaaaaaaaa	1000	must be visible
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	2
COLUMN_DECOMPRESSIONS	12
ALTER TABLE t1 DROP COLUMN b;
ALTER TABLE t1 ENGINE=MyISAM;
TRUNCATE TABLE t1;
# Make sure column_compression_zlib_level works
SET column_compression_zlib_level= 1;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	3
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
36
TRUNCATE TABLE t1;
SET column_compression_zlib_level= 9;
INSERT INTO t1 VALUES(REPEAT('ab', 1000));
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
28
SET column_compression_zlib_level= DEFAULT;
TRUNCATE TABLE t1;
# No compression, original data shorter than compressed
INSERT INTO t1 VALUES('a');
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
a	1
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
DATA_LENGTH
20
# Coverage for store(double) and store(longlong)
INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
# and for sort_string()
SELECT * FROM t1 ORDER BY a;
a
NULL

1
3.14
9.8
a
# Coverage for val_real() and val_int()
SELECT a+1 FROM t1 ORDER BY 1;
a+1
NULL
1
1
2
4.140000000000001
10.8
Warnings:
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
Warning	1292	Truncated incorrect DOUBLE value: 'a'
Warning	1292	Truncated incorrect DOUBLE value: ''
SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
VARIABLE_NAME	VARIABLE_VALUE
COLUMN_COMPRESSIONS	4
COLUMN_DECOMPRESSIONS	12
DROP TABLE t1;
#
# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
#              Field* Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
c1
foo
bar
DROP TABLE t1, t2;
#
# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
#              failed in Field_varstring_compressed::new_key_field
#
CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
INSERT INTO t1 VALUES ('foo'),('bar');
SELECT DISTINCT c FROM t1;
c
foo
bar
DROP TABLE t1;
CREATE TABLE t1(a CHAR(100) COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1(a CHAR(100) NOT NULL COMPRESSED);
ERROR 42000: Incorrect column specifier for column 'a'
CREATE TABLE t1(a INT COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1(a BLOB COMPRESSED=unknown);
ERROR HY000: Unknown compression method: unknown
CREATE TABLE t1(a BLOB COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1(a INT);
ALTER TABLE t1 MODIFY a INT COMPRESSED;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED' at line 1
ALTER TABLE t1 MODIFY a INT NOT NULL COMPRESSED;
ERROR 42000: Incorrect column specifier for column 'a'
DROP TABLE t1;
# Test CSV
CREATE TABLE t1(a BLOB COMPRESSED NOT NULL) ENGINE=CSV;
INSERT INTO t1 VALUES(REPEAT('a', 110));
SELECT LENGTH(a) FROM t1;
LENGTH(a)
110
ALTER TABLE t1 ENGINE=MyISAM;
SELECT LENGTH(a) FROM t1;
LENGTH(a)
110
ALTER TABLE t1 ENGINE=CSV;
SELECT LENGTH(a) FROM t1;
LENGTH(a)
110
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ NOT NULL DEFAULT ''
) ENGINE=CSV DEFAULT CHARSET=latin1
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
DROP TABLE t1;
# Test fields that don't fit data
CREATE TABLE t1(a VARCHAR(9) COMPRESSED);
INSERT INTO t1 VALUES(REPEAT('a', 10));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 10));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
         	9
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));
INSERT INTO t1 VALUES(REPEAT('a', 255));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 255));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT('a', 256));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 256));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
Note	1265	Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT('a', 257));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 257));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
Note	1265	Data truncated for column 'a' at row 1
SET column_compression_threshold=DEFAULT;
SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1;
LEFT(a, 10)	LENGTH(a)
          	254
          	254
          	254
          	254
aaaaaaaaaa	254
DROP TABLE t1;
# Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length
CREATE TABLE t1(a VARCHAR(255) COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(255) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SET column_compression_threshold=300;
INSERT INTO t1 VALUES(REPEAT('a', 255));
SET column_compression_threshold=DEFAULT;
SELECT a, LENGTH(a) FROM t1;
a	LENGTH(a)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	255
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));
INSERT INTO t1 VALUES(REPEAT('a', 65532));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 65532));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT('a', 65533));
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(REPEAT(' ', 65533));
Warnings:
Note	1265	Data truncated for column 'a' at row 1
SET column_compression_threshold=DEFAULT;
SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1, 2;
LEFT(a, 10)	LENGTH(a)
          	65530
          	65531
          	65531
          	65531
aaaaaaaaaa	65530
aaaaaaaaaa	65531
DROP TABLE t1;
#
# MDEV-14929 - AddressSanitizer: memcpy-param-overlap in
#              Field_longstr::compress
#
CREATE TABLE t1(b BLOB COMPRESSED);
INSERT INTO t1 VALUES('foo'),('bar');
SET SESSION optimizer_switch = 'derived_merge=off';
SELECT * FROM ( SELECT * FROM t1 ) AS sq ORDER BY b;
b
bar
foo
SET SESSION optimizer_switch=DEFAULT;
DROP TABLE t1;
#
# MDEV-15762 - VARCHAR(0) COMPRESSED crashes the server
#
CREATE TABLE t1(a VARCHAR(0) COMPRESSED);
INSERT INTO t1 VALUES('a');
ERROR 22001: Data too long for column 'a' at row 1
INSERT INTO t1 VALUES(' ');
Warnings:
Note	1265	Data truncated for column 'a' at row 1
SELECT LENGTH(a) FROM t1;
LENGTH(a)
0
DROP TABLE t1;
#
# MDEV-15763 - VARCHAR(1) COMPRESSED crashes the server
#
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;
#
# MDEV-15938 - TINYTEXT CHARACTER SET utf8 COMPRESSED truncates data
#
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;
CHAR_LENGTH(a)	CHAR_LENGTH(b)	LEFT(a, 10)	LEFT(b, 10)
254	254	aaaaaaaaaa	aaaaaaaaaa
DROP TABLE t1;
#
# MDEV-16134 Wrong I_S.COLUMNS.CHARACTER_XXX_LENGTH value for compressed columns
#
CREATE TABLE t1
(
a VARCHAR(10) COMPRESSED CHARACTER SET latin1,
b VARCHAR(10) COMPRESSED CHARACTER SET utf8
);
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;
COLUMN_NAME	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH
a	10	10
b	10	30
DROP TABLE t1;
#
# MDEV-15592 - Column COMPRESSED should select a 'high order' datatype
#
CREATE TABLE t1(a TINYTEXT COMPRESSED);
INSERT INTO t1 VALUES(REPEAT('a', 255));
SELECT LEFT(a, 10), LENGTH(a) FROM t1;
LEFT(a, 10)	LENGTH(a)
aaaaaaaaaa	255
DROP TABLE t1;
#
# MDEV-16729 VARCHAR COMPRESSED is created with a wrong length for multi-byte character sets
#
CREATE OR REPLACE TABLE t1 (a VARCHAR(1000) COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
COLUMN_TYPE
varchar(1000) /*!100301 COMPRESSED*/
DROP TABLE t1;
#
# MDEV-17363 - Compressed columns cannot be restored from dump
#
CREATE TABLE t1(a INT NOT NULL COMPRESSED);
ERROR 42000: Incorrect column specifier for column 'a'
SHOW WARNINGS;
Level	Code	Message
Error	1063	Incorrect column specifier for column 'a'
CREATE TABLE t1(
a JSON COMPRESSED,
b VARCHAR(1000) COMPRESSED BINARY,
c NVARCHAR(1000) COMPRESSED BINARY,
d TINYTEXT COMPRESSED BINARY
);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`a`)),
  `b` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
  `c` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `d` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# VARCHAR and TEXT variants
#
#
# The following statements run without warnings.
# The `compressed opt_binary` grammar sequence is covered.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED UNICODE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a VARCHAR(10) BINARY COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) ASCII COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) BYTE COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
# The `compressed opt_binary` grammar sequence is covered.
#
CREATE TABLE t1 (a TINYTEXT COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED UNICODE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a TINYTEXT BINARY COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT ASCII COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYTEXT BYTE COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
# The `compressed opt_binary` grammar sequence is covered.
#
CREATE TABLE t1 (a TEXT COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED BINARY);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED BINARY ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED BYTE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED UNICODE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a TEXT COMPRESSED BYTE DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED BINARY DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED ASCII DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a TEXT BINARY COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT ASCII COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TEXT BYTE COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a TEXT COMPRESSED BYTE COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED ASCII COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a TEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
# The `compressed opt_binary` grammar sequence is covered.
#
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED UNICODE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a MEDIUMTEXT BINARY COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT ASCII COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMTEXT BYTE COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
# The `compressed opt_binary` grammar sequence is covered.
#
CREATE TABLE t1 (a LONGTEXT COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED UNICODE);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a LONGTEXT BINARY COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT ASCII COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGTEXT BYTE COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# VARBINARY and BLOB variables
#
#
# The following statements run without warnings.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED NULL);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a VARCHAR(10) DEFAULT '' COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a VARCHAR(10) NULL COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a VARCHAR(10) COMPRESSED NULL COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
#
CREATE TABLE t1 (a TINYBLOB COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a TINYBLOB COMPRESSED DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYBLOB COMPRESSED NULL);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a TINYBLOB DEFAULT '' COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a TINYBLOB NULL COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a TINYBLOB COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a TINYBLOB COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a TINYBLOB COMPRESSED NULL COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
#
CREATE TABLE t1 (a BLOB COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a BLOB COMPRESSED DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a BLOB COMPRESSED NULL);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a BLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a BLOB DEFAULT '' COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a BLOB NULL COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a BLOB COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a BLOB COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a BLOB COMPRESSED NULL COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
#
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED NULL);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a MEDIUMBLOB DEFAULT '' COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a MEDIUMBLOB NULL COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED NULL COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements run without warnings.
#
CREATE TABLE t1 (a LONGBLOB COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements run without warnings.
# They have extra column attributes (or GENERATED) after COMPRESSED.
#
CREATE TABLE t1 (a LONGBLOB COMPRESSED DEFAULT '');
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGBLOB COMPRESSED NULL);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements return deprecated syntax warnings
#
CREATE TABLE t1 (a LONGBLOB DEFAULT '' COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a LONGBLOB NULL COMPRESSED);
Warnings:
Warning	1287	'<data type> <character set clause> ... COMPRESSED...' is deprecated and will be removed in a future release. Please use '<data type> COMPRESSED... <character set clause> ...' instead
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
#
# The following statements fail by the grammar,
# because COMPRESSED immediately follows  'field_type'.
#
CREATE TABLE t1 (a LONGBLOB COMPRESSED COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# The following statements are not prohibited by the *.yy grammar,
# because the sequence `field_type attribute COMPRESSED` is allowed
# (notice there is at least one attribute after `field_type`).
# The first COMPRESSED is parsed inside `field_type`.
# The second COMPRESSED passes through the parser but then is caught
# inside Column_definition::set_compressed_deprecated_with_type_check()
# and a syntax error is raised.
#
CREATE TABLE t1 (a LONGBLOB COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a LONGBLOB COMPRESSED NULL COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# NVARCHAR
#
CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED);
SHOW CREATE TABLE t1;
Table	Create Table
t1	CREATE TABLE `t1` (
  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
DROP TABLE t1;
CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED BINARY COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED DEFAULT '' COMPRESSED);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'COMPRESSED)' at line 1
#
# End of 10.3 tests
#
#
# Start of 10.5 tests
#
#
# MDEV-19727 Add Type_handler::Key_part_spec_init_ft
#
CREATE TABLE t1 (a VARCHAR(1000) COMPRESSED, FULLTEXT INDEX(a));
ERROR HY000: Compressed column 'a' can't be used in key specification
CREATE TABLE t1 (a TEXT COMPRESSED, FULLTEXT INDEX(a));
ERROR HY000: Compressed column 'a' can't be used in key specification
#
# End of 10.5 tests
#
