1SET column_compression_zlib_wrap=true;
2FLUSH STATUS;
3CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
4ERROR HY000: Compressed column 'a' can't be used in key specification
5CREATE TABLE t1(a BLOB COMPRESSED);
6ALTER TABLE t1 ADD KEY(a(10));
7ERROR HY000: Compressed column 'a' can't be used in key specification
8SHOW CREATE TABLE t1;
9Table	Create Table
10t1	CREATE TABLE `t1` (
11  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
12) ENGINE=MyISAM DEFAULT CHARSET=latin1
13# Make sure column was actually compressed
14INSERT INTO t1 VALUES(REPEAT('a', 1000));
15SELECT LEFT(a, 10), LENGTH(a) FROM t1;
16LEFT(a, 10)	LENGTH(a)
17aaaaaaaaaa	1000
18SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
19VARIABLE_NAME	VARIABLE_VALUE
20COLUMN_COMPRESSIONS	1
21COLUMN_DECOMPRESSIONS	2
22SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
23DATA_LENGTH
2428
25# Make sure ALTER TABLE rebuilds table
26ALTER TABLE t1 MODIFY COLUMN a BLOB;
27SHOW CREATE TABLE t1;
28Table	Create Table
29t1	CREATE TABLE `t1` (
30  `a` blob DEFAULT NULL
31) ENGINE=MyISAM DEFAULT CHARSET=latin1
32SELECT LEFT(a, 10), LENGTH(a) FROM t1;
33LEFT(a, 10)	LENGTH(a)
34aaaaaaaaaa	1000
35SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
36VARIABLE_NAME	VARIABLE_VALUE
37COLUMN_COMPRESSIONS	1
38COLUMN_DECOMPRESSIONS	3
39SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
40DATA_LENGTH
411008
42# Rebuild back
43ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
44SHOW CREATE TABLE t1;
45Table	Create Table
46t1	CREATE TABLE `t1` (
47  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
48) ENGINE=MyISAM DEFAULT CHARSET=latin1
49SELECT LEFT(a, 10), LENGTH(a) FROM t1;
50LEFT(a, 10)	LENGTH(a)
51aaaaaaaaaa	1000
52SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
53VARIABLE_NAME	VARIABLE_VALUE
54COLUMN_COMPRESSIONS	2
55COLUMN_DECOMPRESSIONS	5
56SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
57DATA_LENGTH
5828
59# Make sure CREATE TABLE ... LIKE inherits compression
60CREATE TABLE t2 LIKE t1;
61SHOW CREATE TABLE t2;
62Table	Create Table
63t2	CREATE TABLE `t2` (
64  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
65) ENGINE=MyISAM DEFAULT CHARSET=latin1
66DROP TABLE t2;
67# Make sure implicit CREATE TABLE ... SELECT inherits compression
68CREATE TABLE t2 SELECT * FROM t1;
69SHOW CREATE TABLE t2;
70Table	Create Table
71t2	CREATE TABLE `t2` (
72  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
73) ENGINE=MyISAM DEFAULT CHARSET=latin1
74SELECT LEFT(a, 10), LENGTH(a) FROM t2;
75LEFT(a, 10)	LENGTH(a)
76aaaaaaaaaa	1000
77SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
78VARIABLE_NAME	VARIABLE_VALUE
79COLUMN_COMPRESSIONS	2
80COLUMN_DECOMPRESSIONS	7
81SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
82DATA_LENGTH
8328
84DROP TABLE t2;
85# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
86CREATE TABLE t2(a BLOB) SELECT * FROM t1;
87SHOW CREATE TABLE t2;
88Table	Create Table
89t2	CREATE TABLE `t2` (
90  `a` blob DEFAULT NULL
91) ENGINE=MyISAM DEFAULT CHARSET=latin1
92SELECT LEFT(a, 10), LENGTH(a) FROM t2;
93LEFT(a, 10)	LENGTH(a)
94aaaaaaaaaa	1000
95SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
96VARIABLE_NAME	VARIABLE_VALUE
97COLUMN_COMPRESSIONS	2
98COLUMN_DECOMPRESSIONS	8
99SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
100DATA_LENGTH
1011008
102DROP TABLE t2;
103# Make sure engine change works
104ALTER TABLE t1 ENGINE=InnoDB;
105SHOW CREATE TABLE t1;
106Table	Create Table
107t1	CREATE TABLE `t1` (
108  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
109) ENGINE=InnoDB DEFAULT CHARSET=latin1
110SELECT LEFT(a, 10), LENGTH(a) FROM t1;
111LEFT(a, 10)	LENGTH(a)
112aaaaaaaaaa	1000
113SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
114VARIABLE_NAME	VARIABLE_VALUE
115COLUMN_COMPRESSIONS	2
116COLUMN_DECOMPRESSIONS	10
117# Make sure online add column works (requires InnoDB)
118ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
119SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
120LEFT(a, 10)	LENGTH(a)	b
121aaaaaaaaaa	1000	must be visible
122SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
123VARIABLE_NAME	VARIABLE_VALUE
124COLUMN_COMPRESSIONS	2
125COLUMN_DECOMPRESSIONS	12
126ALTER TABLE t1 DROP COLUMN b;
127ALTER TABLE t1 ENGINE=MyISAM;
128TRUNCATE TABLE t1;
129# Make sure column_compression_zlib_level works
130SET column_compression_zlib_level= 1;
131INSERT INTO t1 VALUES(REPEAT('ab', 1000));
132SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
133VARIABLE_NAME	VARIABLE_VALUE
134COLUMN_COMPRESSIONS	3
135COLUMN_DECOMPRESSIONS	12
136SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
137DATA_LENGTH
13840
139TRUNCATE TABLE t1;
140SET column_compression_zlib_level= 9;
141INSERT INTO t1 VALUES(REPEAT('ab', 1000));
142SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
143VARIABLE_NAME	VARIABLE_VALUE
144COLUMN_COMPRESSIONS	4
145COLUMN_DECOMPRESSIONS	12
146SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
147DATA_LENGTH
14836
149SET column_compression_zlib_level= DEFAULT;
150TRUNCATE TABLE t1;
151# No compression, original data shorter than compressed
152INSERT INTO t1 VALUES('a');
153SELECT a, LENGTH(a) FROM t1;
154a	LENGTH(a)
155a	1
156SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
157VARIABLE_NAME	VARIABLE_VALUE
158COLUMN_COMPRESSIONS	4
159COLUMN_DECOMPRESSIONS	12
160SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
161DATA_LENGTH
16220
163# Coverage for store(double) and store(longlong)
164INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
165# and for sort_string()
166SELECT * FROM t1 ORDER BY a;
167a
168NULL
169
1701
1713.14
1729.8
173a
174# Coverage for val_real() and val_int()
175SELECT a+1 FROM t1 ORDER BY 1;
176a+1
177NULL
1781
1791
1802
1814.140000000000001
18210.8
183Warnings:
184Warning	1292	Truncated incorrect DOUBLE value: 'a'
185Warning	1292	Truncated incorrect DOUBLE value: ''
186Warning	1292	Truncated incorrect DOUBLE value: 'a'
187Warning	1292	Truncated incorrect DOUBLE value: ''
188SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
189VARIABLE_NAME	VARIABLE_VALUE
190COLUMN_COMPRESSIONS	4
191COLUMN_DECOMPRESSIONS	12
192DROP TABLE t1;
193#
194# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
195#              Field* Field_varstring_compressed::new_key_field
196#
197CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
198INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
199CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
200INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
201SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
202c1
203foo
204bar
205DROP TABLE t1, t2;
206#
207# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
208#              failed in Field_varstring_compressed::new_key_field
209#
210CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
211INSERT INTO t1 VALUES ('foo'),('bar');
212SELECT DISTINCT c FROM t1;
213c
214foo
215bar
216DROP TABLE t1;
217FLUSH STATUS;
218CREATE TABLE t1(a TEXT COMPRESSED, KEY(a(10)));
219ERROR HY000: Compressed column 'a' can't be used in key specification
220CREATE TABLE t1(a TEXT COMPRESSED);
221ALTER TABLE t1 ADD KEY(a(10));
222ERROR HY000: Compressed column 'a' can't be used in key specification
223SHOW CREATE TABLE t1;
224Table	Create Table
225t1	CREATE TABLE `t1` (
226  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
227) ENGINE=MyISAM DEFAULT CHARSET=latin1
228# Make sure column was actually compressed
229INSERT INTO t1 VALUES(REPEAT('a', 1000));
230SELECT LEFT(a, 10), LENGTH(a) FROM t1;
231LEFT(a, 10)	LENGTH(a)
232aaaaaaaaaa	1000
233SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
234VARIABLE_NAME	VARIABLE_VALUE
235COLUMN_COMPRESSIONS	1
236COLUMN_DECOMPRESSIONS	2
237SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
238DATA_LENGTH
23928
240# Make sure ALTER TABLE rebuilds table
241ALTER TABLE t1 MODIFY COLUMN a TEXT;
242SHOW CREATE TABLE t1;
243Table	Create Table
244t1	CREATE TABLE `t1` (
245  `a` text DEFAULT NULL
246) ENGINE=MyISAM DEFAULT CHARSET=latin1
247SELECT LEFT(a, 10), LENGTH(a) FROM t1;
248LEFT(a, 10)	LENGTH(a)
249aaaaaaaaaa	1000
250SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
251VARIABLE_NAME	VARIABLE_VALUE
252COLUMN_COMPRESSIONS	1
253COLUMN_DECOMPRESSIONS	3
254SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
255DATA_LENGTH
2561008
257# Rebuild back
258ALTER TABLE t1 MODIFY COLUMN a TEXT COMPRESSED;
259SHOW CREATE TABLE t1;
260Table	Create Table
261t1	CREATE TABLE `t1` (
262  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
263) ENGINE=MyISAM DEFAULT CHARSET=latin1
264SELECT LEFT(a, 10), LENGTH(a) FROM t1;
265LEFT(a, 10)	LENGTH(a)
266aaaaaaaaaa	1000
267SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
268VARIABLE_NAME	VARIABLE_VALUE
269COLUMN_COMPRESSIONS	2
270COLUMN_DECOMPRESSIONS	5
271SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
272DATA_LENGTH
27328
274# Make sure CREATE TABLE ... LIKE inherits compression
275CREATE TABLE t2 LIKE t1;
276SHOW CREATE TABLE t2;
277Table	Create Table
278t2	CREATE TABLE `t2` (
279  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
280) ENGINE=MyISAM DEFAULT CHARSET=latin1
281DROP TABLE t2;
282# Make sure implicit CREATE TABLE ... SELECT inherits compression
283CREATE TABLE t2 SELECT * FROM t1;
284SHOW CREATE TABLE t2;
285Table	Create Table
286t2	CREATE TABLE `t2` (
287  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
288) ENGINE=MyISAM DEFAULT CHARSET=latin1
289SELECT LEFT(a, 10), LENGTH(a) FROM t2;
290LEFT(a, 10)	LENGTH(a)
291aaaaaaaaaa	1000
292SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
293VARIABLE_NAME	VARIABLE_VALUE
294COLUMN_COMPRESSIONS	2
295COLUMN_DECOMPRESSIONS	7
296SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
297DATA_LENGTH
29828
299DROP TABLE t2;
300# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
301CREATE TABLE t2(a TEXT) SELECT * FROM t1;
302SHOW CREATE TABLE t2;
303Table	Create Table
304t2	CREATE TABLE `t2` (
305  `a` text DEFAULT NULL
306) ENGINE=MyISAM DEFAULT CHARSET=latin1
307SELECT LEFT(a, 10), LENGTH(a) FROM t2;
308LEFT(a, 10)	LENGTH(a)
309aaaaaaaaaa	1000
310SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
311VARIABLE_NAME	VARIABLE_VALUE
312COLUMN_COMPRESSIONS	2
313COLUMN_DECOMPRESSIONS	8
314SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
315DATA_LENGTH
3161008
317DROP TABLE t2;
318# Make sure engine change works
319ALTER TABLE t1 ENGINE=InnoDB;
320SHOW CREATE TABLE t1;
321Table	Create Table
322t1	CREATE TABLE `t1` (
323  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
324) ENGINE=InnoDB DEFAULT CHARSET=latin1
325SELECT LEFT(a, 10), LENGTH(a) FROM t1;
326LEFT(a, 10)	LENGTH(a)
327aaaaaaaaaa	1000
328SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
329VARIABLE_NAME	VARIABLE_VALUE
330COLUMN_COMPRESSIONS	2
331COLUMN_DECOMPRESSIONS	10
332# Make sure online add column works (requires InnoDB)
333ALTER TABLE t1 ADD COLUMN b TEXT COMPRESSED DEFAULT "must be visible";
334SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
335LEFT(a, 10)	LENGTH(a)	b
336aaaaaaaaaa	1000	must be visible
337SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
338VARIABLE_NAME	VARIABLE_VALUE
339COLUMN_COMPRESSIONS	2
340COLUMN_DECOMPRESSIONS	12
341ALTER TABLE t1 DROP COLUMN b;
342ALTER TABLE t1 ENGINE=MyISAM;
343TRUNCATE TABLE t1;
344# Make sure column_compression_zlib_level works
345SET column_compression_zlib_level= 1;
346INSERT INTO t1 VALUES(REPEAT('ab', 1000));
347SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
348VARIABLE_NAME	VARIABLE_VALUE
349COLUMN_COMPRESSIONS	3
350COLUMN_DECOMPRESSIONS	12
351SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
352DATA_LENGTH
35340
354TRUNCATE TABLE t1;
355SET column_compression_zlib_level= 9;
356INSERT INTO t1 VALUES(REPEAT('ab', 1000));
357SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
358VARIABLE_NAME	VARIABLE_VALUE
359COLUMN_COMPRESSIONS	4
360COLUMN_DECOMPRESSIONS	12
361SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
362DATA_LENGTH
36336
364SET column_compression_zlib_level= DEFAULT;
365TRUNCATE TABLE t1;
366# No compression, original data shorter than compressed
367INSERT INTO t1 VALUES('a');
368SELECT a, LENGTH(a) FROM t1;
369a	LENGTH(a)
370a	1
371SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
372VARIABLE_NAME	VARIABLE_VALUE
373COLUMN_COMPRESSIONS	4
374COLUMN_DECOMPRESSIONS	12
375SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
376DATA_LENGTH
37720
378# Coverage for store(double) and store(longlong)
379INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
380# and for sort_string()
381SELECT * FROM t1 ORDER BY a;
382a
383NULL
384
3851
3863.14
3879.8
388a
389# Coverage for val_real() and val_int()
390SELECT a+1 FROM t1 ORDER BY 1;
391a+1
392NULL
3931
3941
3952
3964.140000000000001
39710.8
398Warnings:
399Warning	1292	Truncated incorrect DOUBLE value: 'a'
400Warning	1292	Truncated incorrect DOUBLE value: ''
401Warning	1292	Truncated incorrect DOUBLE value: 'a'
402Warning	1292	Truncated incorrect DOUBLE value: ''
403SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
404VARIABLE_NAME	VARIABLE_VALUE
405COLUMN_COMPRESSIONS	4
406COLUMN_DECOMPRESSIONS	12
407DROP TABLE t1;
408#
409# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
410#              Field* Field_varstring_compressed::new_key_field
411#
412CREATE TABLE t1 (c1 TEXT COMPRESSED) ENGINE=MyISAM;
413INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
414CREATE TABLE t2 (c2 TEXT COMPRESSED) ENGINE=MyISAM;
415INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
416SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
417c1
418foo
419bar
420DROP TABLE t1, t2;
421#
422# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
423#              failed in Field_varstring_compressed::new_key_field
424#
425CREATE TABLE t1 (c TEXT COMPRESSED) ENGINE=InnoDB;
426INSERT INTO t1 VALUES ('foo'),('bar');
427SELECT DISTINCT c FROM t1;
428c
429foo
430bar
431DROP TABLE t1;
432FLUSH STATUS;
433CREATE TABLE t1(a VARBINARY(10000) COMPRESSED, KEY(a(10)));
434ERROR HY000: Compressed column 'a' can't be used in key specification
435CREATE TABLE t1(a VARBINARY(10000) COMPRESSED);
436ALTER TABLE t1 ADD KEY(a(10));
437ERROR HY000: Compressed column 'a' can't be used in key specification
438SHOW CREATE TABLE t1;
439Table	Create Table
440t1	CREATE TABLE `t1` (
441  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
442) ENGINE=MyISAM DEFAULT CHARSET=latin1
443# Make sure column was actually compressed
444INSERT INTO t1 VALUES(REPEAT('a', 1000));
445SELECT LEFT(a, 10), LENGTH(a) FROM t1;
446LEFT(a, 10)	LENGTH(a)
447aaaaaaaaaa	1000
448SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
449VARIABLE_NAME	VARIABLE_VALUE
450COLUMN_COMPRESSIONS	1
451COLUMN_DECOMPRESSIONS	2
452SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
453DATA_LENGTH
45428
455# Make sure ALTER TABLE rebuilds table
456ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000);
457SHOW CREATE TABLE t1;
458Table	Create Table
459t1	CREATE TABLE `t1` (
460  `a` varbinary(10000) DEFAULT NULL
461) ENGINE=MyISAM DEFAULT CHARSET=latin1
462SELECT LEFT(a, 10), LENGTH(a) FROM t1;
463LEFT(a, 10)	LENGTH(a)
464aaaaaaaaaa	1000
465SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
466VARIABLE_NAME	VARIABLE_VALUE
467COLUMN_COMPRESSIONS	1
468COLUMN_DECOMPRESSIONS	3
469SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
470DATA_LENGTH
4711008
472# Rebuild back
473ALTER TABLE t1 MODIFY COLUMN a VARBINARY(10000) COMPRESSED;
474SHOW CREATE TABLE t1;
475Table	Create Table
476t1	CREATE TABLE `t1` (
477  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
478) ENGINE=MyISAM DEFAULT CHARSET=latin1
479SELECT LEFT(a, 10), LENGTH(a) FROM t1;
480LEFT(a, 10)	LENGTH(a)
481aaaaaaaaaa	1000
482SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
483VARIABLE_NAME	VARIABLE_VALUE
484COLUMN_COMPRESSIONS	2
485COLUMN_DECOMPRESSIONS	5
486SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
487DATA_LENGTH
48828
489# Make sure CREATE TABLE ... LIKE inherits compression
490CREATE TABLE t2 LIKE t1;
491SHOW CREATE TABLE t2;
492Table	Create Table
493t2	CREATE TABLE `t2` (
494  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
495) ENGINE=MyISAM DEFAULT CHARSET=latin1
496DROP TABLE t2;
497# Make sure implicit CREATE TABLE ... SELECT inherits compression
498CREATE TABLE t2 SELECT * FROM t1;
499SHOW CREATE TABLE t2;
500Table	Create Table
501t2	CREATE TABLE `t2` (
502  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
503) ENGINE=MyISAM DEFAULT CHARSET=latin1
504SELECT LEFT(a, 10), LENGTH(a) FROM t2;
505LEFT(a, 10)	LENGTH(a)
506aaaaaaaaaa	1000
507SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
508VARIABLE_NAME	VARIABLE_VALUE
509COLUMN_COMPRESSIONS	2
510COLUMN_DECOMPRESSIONS	7
511SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
512DATA_LENGTH
51328
514DROP TABLE t2;
515# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
516CREATE TABLE t2(a VARBINARY(10000)) SELECT * FROM t1;
517SHOW CREATE TABLE t2;
518Table	Create Table
519t2	CREATE TABLE `t2` (
520  `a` varbinary(10000) DEFAULT NULL
521) ENGINE=MyISAM DEFAULT CHARSET=latin1
522SELECT LEFT(a, 10), LENGTH(a) FROM t2;
523LEFT(a, 10)	LENGTH(a)
524aaaaaaaaaa	1000
525SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
526VARIABLE_NAME	VARIABLE_VALUE
527COLUMN_COMPRESSIONS	2
528COLUMN_DECOMPRESSIONS	8
529SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
530DATA_LENGTH
5311008
532DROP TABLE t2;
533# Make sure engine change works
534ALTER TABLE t1 ENGINE=InnoDB;
535SHOW CREATE TABLE t1;
536Table	Create Table
537t1	CREATE TABLE `t1` (
538  `a` varbinary(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
539) ENGINE=InnoDB DEFAULT CHARSET=latin1
540SELECT LEFT(a, 10), LENGTH(a) FROM t1;
541LEFT(a, 10)	LENGTH(a)
542aaaaaaaaaa	1000
543SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
544VARIABLE_NAME	VARIABLE_VALUE
545COLUMN_COMPRESSIONS	2
546COLUMN_DECOMPRESSIONS	10
547# Make sure online add column works (requires InnoDB)
548ALTER TABLE t1 ADD COLUMN b VARBINARY(10000) COMPRESSED DEFAULT "must be visible";
549SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
550LEFT(a, 10)	LENGTH(a)	b
551aaaaaaaaaa	1000	must be visible
552SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
553VARIABLE_NAME	VARIABLE_VALUE
554COLUMN_COMPRESSIONS	2
555COLUMN_DECOMPRESSIONS	12
556ALTER TABLE t1 DROP COLUMN b;
557ALTER TABLE t1 ENGINE=MyISAM;
558TRUNCATE TABLE t1;
559# Make sure column_compression_zlib_level works
560SET column_compression_zlib_level= 1;
561INSERT INTO t1 VALUES(REPEAT('ab', 1000));
562SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
563VARIABLE_NAME	VARIABLE_VALUE
564COLUMN_COMPRESSIONS	3
565COLUMN_DECOMPRESSIONS	12
566SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
567DATA_LENGTH
56840
569TRUNCATE TABLE t1;
570SET column_compression_zlib_level= 9;
571INSERT INTO t1 VALUES(REPEAT('ab', 1000));
572SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
573VARIABLE_NAME	VARIABLE_VALUE
574COLUMN_COMPRESSIONS	4
575COLUMN_DECOMPRESSIONS	12
576SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
577DATA_LENGTH
57832
579SET column_compression_zlib_level= DEFAULT;
580TRUNCATE TABLE t1;
581# No compression, original data shorter than compressed
582INSERT INTO t1 VALUES('a');
583SELECT a, LENGTH(a) FROM t1;
584a	LENGTH(a)
585a	1
586SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
587VARIABLE_NAME	VARIABLE_VALUE
588COLUMN_COMPRESSIONS	4
589COLUMN_DECOMPRESSIONS	12
590SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
591DATA_LENGTH
59220
593# Coverage for store(double) and store(longlong)
594INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
595# and for sort_string()
596SELECT * FROM t1 ORDER BY a;
597a
598NULL
599
6001
6013.14
6029.8
603a
604# Coverage for val_real() and val_int()
605SELECT a+1 FROM t1 ORDER BY 1;
606a+1
607NULL
6081
6091
6102
6114.140000000000001
61210.8
613Warnings:
614Warning	1292	Truncated incorrect DOUBLE value: 'a'
615Warning	1292	Truncated incorrect DOUBLE value: ''
616Warning	1292	Truncated incorrect DOUBLE value: 'a'
617Warning	1292	Truncated incorrect DOUBLE value: ''
618SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
619VARIABLE_NAME	VARIABLE_VALUE
620COLUMN_COMPRESSIONS	4
621COLUMN_DECOMPRESSIONS	12
622DROP TABLE t1;
623#
624# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
625#              Field* Field_varstring_compressed::new_key_field
626#
627CREATE TABLE t1 (c1 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
628INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
629CREATE TABLE t2 (c2 VARBINARY(10000) COMPRESSED) ENGINE=MyISAM;
630INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
631SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
632c1
633foo
634bar
635DROP TABLE t1, t2;
636#
637# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
638#              failed in Field_varstring_compressed::new_key_field
639#
640CREATE TABLE t1 (c VARBINARY(10000) COMPRESSED) ENGINE=InnoDB;
641INSERT INTO t1 VALUES ('foo'),('bar');
642SELECT DISTINCT c FROM t1;
643c
644foo
645bar
646DROP TABLE t1;
647FLUSH STATUS;
648CREATE TABLE t1(a VARCHAR(10000) COMPRESSED, KEY(a(10)));
649ERROR HY000: Compressed column 'a' can't be used in key specification
650CREATE TABLE t1(a VARCHAR(10000) COMPRESSED);
651ALTER TABLE t1 ADD KEY(a(10));
652ERROR HY000: Compressed column 'a' can't be used in key specification
653SHOW CREATE TABLE t1;
654Table	Create Table
655t1	CREATE TABLE `t1` (
656  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
657) ENGINE=MyISAM DEFAULT CHARSET=latin1
658# Make sure column was actually compressed
659INSERT INTO t1 VALUES(REPEAT('a', 1000));
660SELECT LEFT(a, 10), LENGTH(a) FROM t1;
661LEFT(a, 10)	LENGTH(a)
662aaaaaaaaaa	1000
663SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
664VARIABLE_NAME	VARIABLE_VALUE
665COLUMN_COMPRESSIONS	1
666COLUMN_DECOMPRESSIONS	2
667SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
668DATA_LENGTH
66928
670# Make sure ALTER TABLE rebuilds table
671ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000);
672SHOW CREATE TABLE t1;
673Table	Create Table
674t1	CREATE TABLE `t1` (
675  `a` varchar(10000) DEFAULT NULL
676) ENGINE=MyISAM DEFAULT CHARSET=latin1
677SELECT LEFT(a, 10), LENGTH(a) FROM t1;
678LEFT(a, 10)	LENGTH(a)
679aaaaaaaaaa	1000
680SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
681VARIABLE_NAME	VARIABLE_VALUE
682COLUMN_COMPRESSIONS	1
683COLUMN_DECOMPRESSIONS	3
684SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
685DATA_LENGTH
6861008
687# Rebuild back
688ALTER TABLE t1 MODIFY COLUMN a VARCHAR(10000) COMPRESSED;
689SHOW CREATE TABLE t1;
690Table	Create Table
691t1	CREATE TABLE `t1` (
692  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
693) ENGINE=MyISAM DEFAULT CHARSET=latin1
694SELECT LEFT(a, 10), LENGTH(a) FROM t1;
695LEFT(a, 10)	LENGTH(a)
696aaaaaaaaaa	1000
697SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
698VARIABLE_NAME	VARIABLE_VALUE
699COLUMN_COMPRESSIONS	2
700COLUMN_DECOMPRESSIONS	5
701SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
702DATA_LENGTH
70328
704# Make sure CREATE TABLE ... LIKE inherits compression
705CREATE TABLE t2 LIKE t1;
706SHOW CREATE TABLE t2;
707Table	Create Table
708t2	CREATE TABLE `t2` (
709  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
710) ENGINE=MyISAM DEFAULT CHARSET=latin1
711DROP TABLE t2;
712# Make sure implicit CREATE TABLE ... SELECT inherits compression
713CREATE TABLE t2 SELECT * FROM t1;
714SHOW CREATE TABLE t2;
715Table	Create Table
716t2	CREATE TABLE `t2` (
717  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
718) ENGINE=MyISAM DEFAULT CHARSET=latin1
719SELECT LEFT(a, 10), LENGTH(a) FROM t2;
720LEFT(a, 10)	LENGTH(a)
721aaaaaaaaaa	1000
722SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
723VARIABLE_NAME	VARIABLE_VALUE
724COLUMN_COMPRESSIONS	2
725COLUMN_DECOMPRESSIONS	7
726SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
727DATA_LENGTH
72828
729DROP TABLE t2;
730# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
731CREATE TABLE t2(a VARCHAR(10000)) SELECT * FROM t1;
732SHOW CREATE TABLE t2;
733Table	Create Table
734t2	CREATE TABLE `t2` (
735  `a` varchar(10000) DEFAULT NULL
736) ENGINE=MyISAM DEFAULT CHARSET=latin1
737SELECT LEFT(a, 10), LENGTH(a) FROM t2;
738LEFT(a, 10)	LENGTH(a)
739aaaaaaaaaa	1000
740SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
741VARIABLE_NAME	VARIABLE_VALUE
742COLUMN_COMPRESSIONS	2
743COLUMN_DECOMPRESSIONS	8
744SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
745DATA_LENGTH
7461008
747DROP TABLE t2;
748# Make sure engine change works
749ALTER TABLE t1 ENGINE=InnoDB;
750SHOW CREATE TABLE t1;
751Table	Create Table
752t1	CREATE TABLE `t1` (
753  `a` varchar(10000) /*!100301 COMPRESSED*/ DEFAULT NULL
754) ENGINE=InnoDB DEFAULT CHARSET=latin1
755SELECT LEFT(a, 10), LENGTH(a) FROM t1;
756LEFT(a, 10)	LENGTH(a)
757aaaaaaaaaa	1000
758SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
759VARIABLE_NAME	VARIABLE_VALUE
760COLUMN_COMPRESSIONS	2
761COLUMN_DECOMPRESSIONS	10
762# Make sure online add column works (requires InnoDB)
763ALTER TABLE t1 ADD COLUMN b VARCHAR(10000) COMPRESSED DEFAULT "must be visible";
764SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
765LEFT(a, 10)	LENGTH(a)	b
766aaaaaaaaaa	1000	must be visible
767SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
768VARIABLE_NAME	VARIABLE_VALUE
769COLUMN_COMPRESSIONS	2
770COLUMN_DECOMPRESSIONS	12
771ALTER TABLE t1 DROP COLUMN b;
772ALTER TABLE t1 ENGINE=MyISAM;
773TRUNCATE TABLE t1;
774# Make sure column_compression_zlib_level works
775SET column_compression_zlib_level= 1;
776INSERT INTO t1 VALUES(REPEAT('ab', 1000));
777SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
778VARIABLE_NAME	VARIABLE_VALUE
779COLUMN_COMPRESSIONS	3
780COLUMN_DECOMPRESSIONS	12
781SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
782DATA_LENGTH
78340
784TRUNCATE TABLE t1;
785SET column_compression_zlib_level= 9;
786INSERT INTO t1 VALUES(REPEAT('ab', 1000));
787SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
788VARIABLE_NAME	VARIABLE_VALUE
789COLUMN_COMPRESSIONS	4
790COLUMN_DECOMPRESSIONS	12
791SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
792DATA_LENGTH
79332
794SET column_compression_zlib_level= DEFAULT;
795TRUNCATE TABLE t1;
796# No compression, original data shorter than compressed
797INSERT INTO t1 VALUES('a');
798SELECT a, LENGTH(a) FROM t1;
799a	LENGTH(a)
800a	1
801SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
802VARIABLE_NAME	VARIABLE_VALUE
803COLUMN_COMPRESSIONS	4
804COLUMN_DECOMPRESSIONS	12
805SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
806DATA_LENGTH
80720
808# Coverage for store(double) and store(longlong)
809INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
810# and for sort_string()
811SELECT * FROM t1 ORDER BY a;
812a
813NULL
814
8151
8163.14
8179.8
818a
819# Coverage for val_real() and val_int()
820SELECT a+1 FROM t1 ORDER BY 1;
821a+1
822NULL
8231
8241
8252
8264.140000000000001
82710.8
828Warnings:
829Warning	1292	Truncated incorrect DOUBLE value: 'a'
830Warning	1292	Truncated incorrect DOUBLE value: ''
831Warning	1292	Truncated incorrect DOUBLE value: 'a'
832Warning	1292	Truncated incorrect DOUBLE value: ''
833SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
834VARIABLE_NAME	VARIABLE_VALUE
835COLUMN_COMPRESSIONS	4
836COLUMN_DECOMPRESSIONS	12
837DROP TABLE t1;
838#
839# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
840#              Field* Field_varstring_compressed::new_key_field
841#
842CREATE TABLE t1 (c1 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
843INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
844CREATE TABLE t2 (c2 VARCHAR(10000) COMPRESSED) ENGINE=MyISAM;
845INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
846SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
847c1
848foo
849bar
850DROP TABLE t1, t2;
851#
852# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
853#              failed in Field_varstring_compressed::new_key_field
854#
855CREATE TABLE t1 (c VARCHAR(10000) COMPRESSED) ENGINE=InnoDB;
856INSERT INTO t1 VALUES ('foo'),('bar');
857SELECT DISTINCT c FROM t1;
858c
859foo
860bar
861DROP TABLE t1;
862FLUSH STATUS;
863CREATE TABLE t1(a TEXT COMPRESSED CHARSET ucs2, KEY(a(10)));
864ERROR HY000: Compressed column 'a' can't be used in key specification
865CREATE TABLE t1(a TEXT COMPRESSED CHARSET ucs2);
866ALTER TABLE t1 ADD KEY(a(10));
867ERROR HY000: Compressed column 'a' can't be used in key specification
868SHOW CREATE TABLE t1;
869Table	Create Table
870t1	CREATE TABLE `t1` (
871  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
872) ENGINE=MyISAM DEFAULT CHARSET=latin1
873# Make sure column was actually compressed
874INSERT INTO t1 VALUES(REPEAT('a', 1000));
875SELECT LEFT(a, 10), LENGTH(a) FROM t1;
876LEFT(a, 10)	LENGTH(a)
877aaaaaaaaaa	2000
878SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
879VARIABLE_NAME	VARIABLE_VALUE
880COLUMN_COMPRESSIONS	1
881COLUMN_DECOMPRESSIONS	2
882SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
883DATA_LENGTH
88436
885# Make sure ALTER TABLE rebuilds table
886ALTER TABLE t1 MODIFY COLUMN a TEXT;
887SHOW CREATE TABLE t1;
888Table	Create Table
889t1	CREATE TABLE `t1` (
890  `a` text DEFAULT NULL
891) ENGINE=MyISAM DEFAULT CHARSET=latin1
892SELECT LEFT(a, 10), LENGTH(a) FROM t1;
893LEFT(a, 10)	LENGTH(a)
894aaaaaaaaaa	1000
895SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
896VARIABLE_NAME	VARIABLE_VALUE
897COLUMN_COMPRESSIONS	1
898COLUMN_DECOMPRESSIONS	3
899SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
900DATA_LENGTH
9011008
902# Rebuild back
903ALTER TABLE t1 MODIFY COLUMN a TEXT COMPRESSED CHARSET ucs2;
904SHOW CREATE TABLE t1;
905Table	Create Table
906t1	CREATE TABLE `t1` (
907  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
908) ENGINE=MyISAM DEFAULT CHARSET=latin1
909SELECT LEFT(a, 10), LENGTH(a) FROM t1;
910LEFT(a, 10)	LENGTH(a)
911aaaaaaaaaa	2000
912SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
913VARIABLE_NAME	VARIABLE_VALUE
914COLUMN_COMPRESSIONS	2
915COLUMN_DECOMPRESSIONS	5
916SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
917DATA_LENGTH
91836
919# Make sure CREATE TABLE ... LIKE inherits compression
920CREATE TABLE t2 LIKE t1;
921SHOW CREATE TABLE t2;
922Table	Create Table
923t2	CREATE TABLE `t2` (
924  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
925) ENGINE=MyISAM DEFAULT CHARSET=latin1
926DROP TABLE t2;
927# Make sure implicit CREATE TABLE ... SELECT inherits compression
928CREATE TABLE t2 SELECT * FROM t1;
929SHOW CREATE TABLE t2;
930Table	Create Table
931t2	CREATE TABLE `t2` (
932  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
933) ENGINE=MyISAM DEFAULT CHARSET=latin1
934SELECT LEFT(a, 10), LENGTH(a) FROM t2;
935LEFT(a, 10)	LENGTH(a)
936aaaaaaaaaa	2000
937SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
938VARIABLE_NAME	VARIABLE_VALUE
939COLUMN_COMPRESSIONS	2
940COLUMN_DECOMPRESSIONS	7
941SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
942DATA_LENGTH
94336
944DROP TABLE t2;
945# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
946CREATE TABLE t2(a TEXT) SELECT * FROM t1;
947SHOW CREATE TABLE t2;
948Table	Create Table
949t2	CREATE TABLE `t2` (
950  `a` text DEFAULT NULL
951) ENGINE=MyISAM DEFAULT CHARSET=latin1
952SELECT LEFT(a, 10), LENGTH(a) FROM t2;
953LEFT(a, 10)	LENGTH(a)
954aaaaaaaaaa	1000
955SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
956VARIABLE_NAME	VARIABLE_VALUE
957COLUMN_COMPRESSIONS	2
958COLUMN_DECOMPRESSIONS	8
959SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
960DATA_LENGTH
9611008
962DROP TABLE t2;
963# Make sure engine change works
964ALTER TABLE t1 ENGINE=InnoDB;
965SHOW CREATE TABLE t1;
966Table	Create Table
967t1	CREATE TABLE `t1` (
968  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
969) ENGINE=InnoDB DEFAULT CHARSET=latin1
970SELECT LEFT(a, 10), LENGTH(a) FROM t1;
971LEFT(a, 10)	LENGTH(a)
972aaaaaaaaaa	2000
973SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
974VARIABLE_NAME	VARIABLE_VALUE
975COLUMN_COMPRESSIONS	2
976COLUMN_DECOMPRESSIONS	10
977# Make sure online add column works (requires InnoDB)
978ALTER TABLE t1 ADD COLUMN b TEXT COMPRESSED CHARSET ucs2 DEFAULT "must be visible";
979SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
980LEFT(a, 10)	LENGTH(a)	b
981aaaaaaaaaa	2000	must be visible
982SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
983VARIABLE_NAME	VARIABLE_VALUE
984COLUMN_COMPRESSIONS	2
985COLUMN_DECOMPRESSIONS	12
986ALTER TABLE t1 DROP COLUMN b;
987ALTER TABLE t1 ENGINE=MyISAM;
988TRUNCATE TABLE t1;
989# Make sure column_compression_zlib_level works
990SET column_compression_zlib_level= 1;
991INSERT INTO t1 VALUES(REPEAT('ab', 1000));
992SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
993VARIABLE_NAME	VARIABLE_VALUE
994COLUMN_COMPRESSIONS	3
995COLUMN_DECOMPRESSIONS	12
996SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
997DATA_LENGTH
99860
999TRUNCATE TABLE t1;
1000SET column_compression_zlib_level= 9;
1001INSERT INTO t1 VALUES(REPEAT('ab', 1000));
1002SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1003VARIABLE_NAME	VARIABLE_VALUE
1004COLUMN_COMPRESSIONS	4
1005COLUMN_DECOMPRESSIONS	12
1006SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1007DATA_LENGTH
100844
1009SET column_compression_zlib_level= DEFAULT;
1010TRUNCATE TABLE t1;
1011# No compression, original data shorter than compressed
1012INSERT INTO t1 VALUES('a');
1013SELECT a, LENGTH(a) FROM t1;
1014a	LENGTH(a)
1015a	2
1016SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1017VARIABLE_NAME	VARIABLE_VALUE
1018COLUMN_COMPRESSIONS	4
1019COLUMN_DECOMPRESSIONS	12
1020SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1021DATA_LENGTH
102220
1023# Coverage for store(double) and store(longlong)
1024INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
1025# and for sort_string()
1026SELECT * FROM t1 ORDER BY a;
1027a
1028NULL
1029
10301
10313.14
10329.8
1033a
1034# Coverage for val_real() and val_int()
1035SELECT a+1 FROM t1 ORDER BY 1;
1036a+1
1037NULL
10381
10391
10402
10414.140000000000001
104210.8
1043Warnings:
1044Warning	1292	Truncated incorrect DOUBLE value: 'a'
1045Warning	1292	Truncated incorrect DOUBLE value: ''
1046Warning	1292	Truncated incorrect DOUBLE value: 'a'
1047Warning	1292	Truncated incorrect DOUBLE value: ''
1048SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1049VARIABLE_NAME	VARIABLE_VALUE
1050COLUMN_COMPRESSIONS	4
1051COLUMN_DECOMPRESSIONS	12
1052DROP TABLE t1;
1053#
1054# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
1055#              Field* Field_varstring_compressed::new_key_field
1056#
1057CREATE TABLE t1 (c1 TEXT COMPRESSED CHARSET ucs2) ENGINE=MyISAM;
1058INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
1059CREATE TABLE t2 (c2 TEXT COMPRESSED CHARSET ucs2) ENGINE=MyISAM;
1060INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
1061SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
1062c1
1063foo
1064bar
1065DROP TABLE t1, t2;
1066#
1067# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
1068#              failed in Field_varstring_compressed::new_key_field
1069#
1070CREATE TABLE t1 (c TEXT COMPRESSED CHARSET ucs2) ENGINE=InnoDB;
1071INSERT INTO t1 VALUES ('foo'),('bar');
1072SELECT DISTINCT c FROM t1;
1073c
1074foo
1075bar
1076DROP TABLE t1;
1077SET column_compression_zlib_wrap=DEFAULT;
1078FLUSH STATUS;
1079CREATE TABLE t1(a BLOB COMPRESSED, KEY(a(10)));
1080ERROR HY000: Compressed column 'a' can't be used in key specification
1081CREATE TABLE t1(a BLOB COMPRESSED);
1082ALTER TABLE t1 ADD KEY(a(10));
1083ERROR HY000: Compressed column 'a' can't be used in key specification
1084SHOW CREATE TABLE t1;
1085Table	Create Table
1086t1	CREATE TABLE `t1` (
1087  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1088) ENGINE=MyISAM DEFAULT CHARSET=latin1
1089# Make sure column was actually compressed
1090INSERT INTO t1 VALUES(REPEAT('a', 1000));
1091SELECT LEFT(a, 10), LENGTH(a) FROM t1;
1092LEFT(a, 10)	LENGTH(a)
1093aaaaaaaaaa	1000
1094SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1095VARIABLE_NAME	VARIABLE_VALUE
1096COLUMN_COMPRESSIONS	1
1097COLUMN_DECOMPRESSIONS	2
1098SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1099DATA_LENGTH
110024
1101# Make sure ALTER TABLE rebuilds table
1102ALTER TABLE t1 MODIFY COLUMN a BLOB;
1103SHOW CREATE TABLE t1;
1104Table	Create Table
1105t1	CREATE TABLE `t1` (
1106  `a` blob DEFAULT NULL
1107) ENGINE=MyISAM DEFAULT CHARSET=latin1
1108SELECT LEFT(a, 10), LENGTH(a) FROM t1;
1109LEFT(a, 10)	LENGTH(a)
1110aaaaaaaaaa	1000
1111SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1112VARIABLE_NAME	VARIABLE_VALUE
1113COLUMN_COMPRESSIONS	1
1114COLUMN_DECOMPRESSIONS	3
1115SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1116DATA_LENGTH
11171008
1118# Rebuild back
1119ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED;
1120SHOW CREATE TABLE t1;
1121Table	Create Table
1122t1	CREATE TABLE `t1` (
1123  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1124) ENGINE=MyISAM DEFAULT CHARSET=latin1
1125SELECT LEFT(a, 10), LENGTH(a) FROM t1;
1126LEFT(a, 10)	LENGTH(a)
1127aaaaaaaaaa	1000
1128SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1129VARIABLE_NAME	VARIABLE_VALUE
1130COLUMN_COMPRESSIONS	2
1131COLUMN_DECOMPRESSIONS	5
1132SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1133DATA_LENGTH
113424
1135# Make sure CREATE TABLE ... LIKE inherits compression
1136CREATE TABLE t2 LIKE t1;
1137SHOW CREATE TABLE t2;
1138Table	Create Table
1139t2	CREATE TABLE `t2` (
1140  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1141) ENGINE=MyISAM DEFAULT CHARSET=latin1
1142DROP TABLE t2;
1143# Make sure implicit CREATE TABLE ... SELECT inherits compression
1144CREATE TABLE t2 SELECT * FROM t1;
1145SHOW CREATE TABLE t2;
1146Table	Create Table
1147t2	CREATE TABLE `t2` (
1148  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1149) ENGINE=MyISAM DEFAULT CHARSET=latin1
1150SELECT LEFT(a, 10), LENGTH(a) FROM t2;
1151LEFT(a, 10)	LENGTH(a)
1152aaaaaaaaaa	1000
1153SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1154VARIABLE_NAME	VARIABLE_VALUE
1155COLUMN_COMPRESSIONS	2
1156COLUMN_DECOMPRESSIONS	7
1157SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
1158DATA_LENGTH
115924
1160DROP TABLE t2;
1161# Make sure explicit CREATE TABLE ... SELECT doesn't inherit compression
1162CREATE TABLE t2(a BLOB) SELECT * FROM t1;
1163SHOW CREATE TABLE t2;
1164Table	Create Table
1165t2	CREATE TABLE `t2` (
1166  `a` blob DEFAULT NULL
1167) ENGINE=MyISAM DEFAULT CHARSET=latin1
1168SELECT LEFT(a, 10), LENGTH(a) FROM t2;
1169LEFT(a, 10)	LENGTH(a)
1170aaaaaaaaaa	1000
1171SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1172VARIABLE_NAME	VARIABLE_VALUE
1173COLUMN_COMPRESSIONS	2
1174COLUMN_DECOMPRESSIONS	8
1175SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t2';
1176DATA_LENGTH
11771008
1178DROP TABLE t2;
1179# Make sure engine change works
1180ALTER TABLE t1 ENGINE=InnoDB;
1181SHOW CREATE TABLE t1;
1182Table	Create Table
1183t1	CREATE TABLE `t1` (
1184  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1185) ENGINE=InnoDB DEFAULT CHARSET=latin1
1186SELECT LEFT(a, 10), LENGTH(a) FROM t1;
1187LEFT(a, 10)	LENGTH(a)
1188aaaaaaaaaa	1000
1189SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1190VARIABLE_NAME	VARIABLE_VALUE
1191COLUMN_COMPRESSIONS	2
1192COLUMN_DECOMPRESSIONS	10
1193# Make sure online add column works (requires InnoDB)
1194ALTER TABLE t1 ADD COLUMN b BLOB COMPRESSED DEFAULT "must be visible";
1195SELECT LEFT(a, 10), LENGTH(a), b FROM t1;
1196LEFT(a, 10)	LENGTH(a)	b
1197aaaaaaaaaa	1000	must be visible
1198SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1199VARIABLE_NAME	VARIABLE_VALUE
1200COLUMN_COMPRESSIONS	2
1201COLUMN_DECOMPRESSIONS	12
1202ALTER TABLE t1 DROP COLUMN b;
1203ALTER TABLE t1 ENGINE=MyISAM;
1204TRUNCATE TABLE t1;
1205# Make sure column_compression_zlib_level works
1206SET column_compression_zlib_level= 1;
1207INSERT INTO t1 VALUES(REPEAT('ab', 1000));
1208SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1209VARIABLE_NAME	VARIABLE_VALUE
1210COLUMN_COMPRESSIONS	3
1211COLUMN_DECOMPRESSIONS	12
1212SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1213DATA_LENGTH
121436
1215TRUNCATE TABLE t1;
1216SET column_compression_zlib_level= 9;
1217INSERT INTO t1 VALUES(REPEAT('ab', 1000));
1218SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1219VARIABLE_NAME	VARIABLE_VALUE
1220COLUMN_COMPRESSIONS	4
1221COLUMN_DECOMPRESSIONS	12
1222SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1223DATA_LENGTH
122428
1225SET column_compression_zlib_level= DEFAULT;
1226TRUNCATE TABLE t1;
1227# No compression, original data shorter than compressed
1228INSERT INTO t1 VALUES('a');
1229SELECT a, LENGTH(a) FROM t1;
1230a	LENGTH(a)
1231a	1
1232SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1233VARIABLE_NAME	VARIABLE_VALUE
1234COLUMN_COMPRESSIONS	4
1235COLUMN_DECOMPRESSIONS	12
1236SELECT DATA_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1237DATA_LENGTH
123820
1239# Coverage for store(double) and store(longlong)
1240INSERT INTO t1 VALUES(3.14),(CAST(9.8 AS DOUBLE)),(1),(''),(NULL);
1241# and for sort_string()
1242SELECT * FROM t1 ORDER BY a;
1243a
1244NULL
1245
12461
12473.14
12489.8
1249a
1250# Coverage for val_real() and val_int()
1251SELECT a+1 FROM t1 ORDER BY 1;
1252a+1
1253NULL
12541
12551
12562
12574.140000000000001
125810.8
1259Warnings:
1260Warning	1292	Truncated incorrect DOUBLE value: 'a'
1261Warning	1292	Truncated incorrect DOUBLE value: ''
1262Warning	1292	Truncated incorrect DOUBLE value: 'a'
1263Warning	1292	Truncated incorrect DOUBLE value: ''
1264SELECT * FROM INFORMATION_SCHEMA.SESSION_STATUS WHERE VARIABLE_NAME IN('Column_compressions', 'Column_decompressions');
1265VARIABLE_NAME	VARIABLE_VALUE
1266COLUMN_COMPRESSIONS	4
1267COLUMN_DECOMPRESSIONS	12
1268DROP TABLE t1;
1269#
1270# MDEV-13540 - Server crashes in copy or Assertion `0' failed in virtual
1271#              Field* Field_varstring_compressed::new_key_field
1272#
1273CREATE TABLE t1 (c1 BLOB COMPRESSED) ENGINE=MyISAM;
1274INSERT IGNORE INTO t1 VALUES ('foo'),('bar');
1275CREATE TABLE t2 (c2 BLOB COMPRESSED) ENGINE=MyISAM;
1276INSERT IGNORE INTO t2 VALUES ('qux'),('abc');
1277SELECT * FROM t1 WHERE c1 NOT IN ( SELECT c2 FROM t2 WHERE c2 = c1 );
1278c1
1279foo
1280bar
1281DROP TABLE t1, t2;
1282#
1283# MDEV-13541 - Server crashes in next_breadth_first_tab or Assertion `0'
1284#              failed in Field_varstring_compressed::new_key_field
1285#
1286CREATE TABLE t1 (c BLOB COMPRESSED) ENGINE=InnoDB;
1287INSERT INTO t1 VALUES ('foo'),('bar');
1288SELECT DISTINCT c FROM t1;
1289c
1290foo
1291bar
1292DROP TABLE t1;
1293CREATE TABLE t1(a CHAR(100) COMPRESSED);
1294ERROR 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
1295CREATE TABLE t1(a CHAR(100) NOT NULL COMPRESSED);
1296ERROR 42000: Incorrect column specifier for column 'a'
1297CREATE TABLE t1(a INT COMPRESSED);
1298ERROR 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
1299CREATE TABLE t1(a BLOB COMPRESSED=unknown);
1300ERROR HY000: Unknown compression method: unknown
1301CREATE TABLE t1(a BLOB COMPRESSED COMPRESSED);
1302ERROR 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
1303CREATE TABLE t1(a INT);
1304ALTER TABLE t1 MODIFY a INT COMPRESSED;
1305ERROR 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
1306ALTER TABLE t1 MODIFY a INT NOT NULL COMPRESSED;
1307ERROR 42000: Incorrect column specifier for column 'a'
1308DROP TABLE t1;
1309# Test CSV
1310CREATE TABLE t1(a BLOB COMPRESSED NOT NULL) ENGINE=CSV;
1311INSERT INTO t1 VALUES(REPEAT('a', 110));
1312SELECT LENGTH(a) FROM t1;
1313LENGTH(a)
1314110
1315ALTER TABLE t1 ENGINE=MyISAM;
1316SELECT LENGTH(a) FROM t1;
1317LENGTH(a)
1318110
1319ALTER TABLE t1 ENGINE=CSV;
1320SELECT LENGTH(a) FROM t1;
1321LENGTH(a)
1322110
1323SHOW CREATE TABLE t1;
1324Table	Create Table
1325t1	CREATE TABLE `t1` (
1326  `a` blob /*!100301 COMPRESSED*/ NOT NULL DEFAULT ''
1327) ENGINE=CSV DEFAULT CHARSET=latin1
1328"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
1329DROP TABLE t1;
1330# Test fields that don't fit data
1331CREATE TABLE t1(a VARCHAR(9) COMPRESSED);
1332INSERT INTO t1 VALUES(REPEAT('a', 10));
1333ERROR 22001: Data too long for column 'a' at row 1
1334INSERT INTO t1 VALUES(REPEAT(' ', 10));
1335Warnings:
1336Note	1265	Data truncated for column 'a' at row 1
1337SELECT a, LENGTH(a) FROM t1;
1338a	LENGTH(a)
1339         	9
1340DROP TABLE t1;
1341CREATE TABLE t1(a TINYTEXT COMPRESSED);
1342SET column_compression_threshold=300;
1343INSERT INTO t1 VALUES(REPEAT('a', 254));
1344INSERT INTO t1 VALUES(REPEAT(' ', 254));
1345INSERT INTO t1 VALUES(REPEAT('a', 255));
1346ERROR 22001: Data too long for column 'a' at row 1
1347INSERT INTO t1 VALUES(REPEAT(' ', 255));
1348Warnings:
1349Note	1265	Data truncated for column 'a' at row 1
1350INSERT INTO t1 VALUES(REPEAT('a', 256));
1351ERROR 22001: Data too long for column 'a' at row 1
1352INSERT INTO t1 VALUES(REPEAT(' ', 256));
1353Warnings:
1354Note	1265	Data truncated for column 'a' at row 1
1355Note	1265	Data truncated for column 'a' at row 1
1356INSERT INTO t1 VALUES(REPEAT('a', 257));
1357ERROR 22001: Data too long for column 'a' at row 1
1358INSERT INTO t1 VALUES(REPEAT(' ', 257));
1359Warnings:
1360Note	1265	Data truncated for column 'a' at row 1
1361Note	1265	Data truncated for column 'a' at row 1
1362SET column_compression_threshold=DEFAULT;
1363SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1;
1364LEFT(a, 10)	LENGTH(a)
1365          	254
1366          	254
1367          	254
1368          	254
1369aaaaaaaaaa	254
1370DROP TABLE t1;
1371# Corner case: VARCHAR(255) COMPRESSED must have 2 bytes pack length
1372CREATE TABLE t1(a VARCHAR(255) COMPRESSED);
1373SHOW CREATE TABLE t1;
1374Table	Create Table
1375t1	CREATE TABLE `t1` (
1376  `a` varchar(255) /*!100301 COMPRESSED*/ DEFAULT NULL
1377) ENGINE=MyISAM DEFAULT CHARSET=latin1
1378SET column_compression_threshold=300;
1379INSERT INTO t1 VALUES(REPEAT('a', 255));
1380SET column_compression_threshold=DEFAULT;
1381SELECT a, LENGTH(a) FROM t1;
1382a	LENGTH(a)
1383aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	255
1384DROP TABLE t1;
1385CREATE TABLE t1(a VARCHAR(65531) COMPRESSED);
1386SET column_compression_threshold=65537;
1387INSERT INTO t1 VALUES(REPEAT('a', 65530));
1388INSERT INTO t1 VALUES(REPEAT(' ', 65530));
1389INSERT INTO t1 VALUES(REPEAT('a', 65531));
1390INSERT INTO t1 VALUES(REPEAT(' ', 65531));
1391INSERT INTO t1 VALUES(REPEAT('a', 65532));
1392ERROR 22001: Data too long for column 'a' at row 1
1393INSERT INTO t1 VALUES(REPEAT(' ', 65532));
1394Warnings:
1395Note	1265	Data truncated for column 'a' at row 1
1396INSERT INTO t1 VALUES(REPEAT('a', 65533));
1397ERROR 22001: Data too long for column 'a' at row 1
1398INSERT INTO t1 VALUES(REPEAT(' ', 65533));
1399Warnings:
1400Note	1265	Data truncated for column 'a' at row 1
1401SET column_compression_threshold=DEFAULT;
1402SELECT LEFT(a, 10), LENGTH(a) FROM t1 ORDER BY 1, 2;
1403LEFT(a, 10)	LENGTH(a)
1404          	65530
1405          	65531
1406          	65531
1407          	65531
1408aaaaaaaaaa	65530
1409aaaaaaaaaa	65531
1410DROP TABLE t1;
1411#
1412# MDEV-14929 - AddressSanitizer: memcpy-param-overlap in
1413#              Field_longstr::compress
1414#
1415CREATE TABLE t1(b BLOB COMPRESSED);
1416INSERT INTO t1 VALUES('foo'),('bar');
1417SET SESSION optimizer_switch = 'derived_merge=off';
1418SELECT * FROM ( SELECT * FROM t1 ) AS sq ORDER BY b;
1419b
1420bar
1421foo
1422SET SESSION optimizer_switch=DEFAULT;
1423DROP TABLE t1;
1424#
1425# MDEV-15762 - VARCHAR(0) COMPRESSED crashes the server
1426#
1427CREATE TABLE t1(a VARCHAR(0) COMPRESSED);
1428INSERT INTO t1 VALUES('a');
1429ERROR 22001: Data too long for column 'a' at row 1
1430INSERT INTO t1 VALUES(' ');
1431Warnings:
1432Note	1265	Data truncated for column 'a' at row 1
1433SELECT LENGTH(a) FROM t1;
1434LENGTH(a)
14350
1436DROP TABLE t1;
1437#
1438# MDEV-15763 - VARCHAR(1) COMPRESSED crashes the server
1439#
1440CREATE TABLE t1(a VARCHAR(1) COMPRESSED);
1441SET column_compression_threshold=0;
1442INSERT INTO t1 VALUES('a');
1443SET column_compression_threshold=DEFAULT;
1444DROP TABLE t1;
1445#
1446# MDEV-15938 - TINYTEXT CHARACTER SET utf8 COMPRESSED truncates data
1447#
1448CREATE TABLE t1(a TINYTEXT COMPRESSED, b TINYTEXT) CHARACTER SET utf8;
1449INSERT INTO t1 VALUES (REPEAT(_latin1'a', 254), REPEAT(_latin1'a', 254));
1450SELECT CHAR_LENGTH(a), CHAR_LENGTH(b), LEFT(a, 10), LEFT(b, 10) FROM t1;
1451CHAR_LENGTH(a)	CHAR_LENGTH(b)	LEFT(a, 10)	LEFT(b, 10)
1452254	254	aaaaaaaaaa	aaaaaaaaaa
1453DROP TABLE t1;
1454#
1455# MDEV-16134 Wrong I_S.COLUMNS.CHARACTER_XXX_LENGTH value for compressed columns
1456#
1457CREATE TABLE t1
1458(
1459a VARCHAR(10) COMPRESSED CHARACTER SET latin1,
1460b VARCHAR(10) COMPRESSED CHARACTER SET utf8
1461);
1462SELECT COLUMN_NAME, CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH
1463FROM INFORMATION_SCHEMA.COLUMNS
1464WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1' AND COLUMN_NAME IN ('a','b')
1465ORDER BY COLUMN_NAME;
1466COLUMN_NAME	CHARACTER_MAXIMUM_LENGTH	CHARACTER_OCTET_LENGTH
1467a	10	10
1468b	10	30
1469DROP TABLE t1;
1470#
1471# MDEV-15592 - Column COMPRESSED should select a 'high order' datatype
1472#
1473CREATE TABLE t1(a TINYTEXT COMPRESSED);
1474INSERT INTO t1 VALUES(REPEAT('a', 255));
1475SELECT LEFT(a, 10), LENGTH(a) FROM t1;
1476LEFT(a, 10)	LENGTH(a)
1477aaaaaaaaaa	255
1478DROP TABLE t1;
1479#
1480# MDEV-16729 VARCHAR COMPRESSED is created with a wrong length for multi-byte character sets
1481#
1482CREATE OR REPLACE TABLE t1 (a VARCHAR(1000) COMPRESSED CHARACTER SET utf8);
1483SHOW CREATE TABLE t1;
1484Table	Create Table
1485t1	CREATE TABLE `t1` (
1486  `a` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
1487) ENGINE=MyISAM DEFAULT CHARSET=latin1
1488SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
1489WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
1490COLUMN_TYPE
1491varchar(1000) /*!100301 COMPRESSED*/
1492DROP TABLE t1;
1493#
1494# MDEV-17363 - Compressed columns cannot be restored from dump
1495#
1496CREATE TABLE t1(a INT NOT NULL COMPRESSED);
1497ERROR 42000: Incorrect column specifier for column 'a'
1498SHOW WARNINGS;
1499Level	Code	Message
1500Error	1063	Incorrect column specifier for column 'a'
1501CREATE TABLE t1(
1502a JSON COMPRESSED,
1503b VARCHAR(1000) COMPRESSED BINARY,
1504c NVARCHAR(1000) COMPRESSED BINARY,
1505d TINYTEXT COMPRESSED BINARY
1506);
1507SHOW CREATE TABLE t1;
1508Table	Create Table
1509t1	CREATE TABLE `t1` (
1510  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`a`)),
1511  `b` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
1512  `c` varchar(1000) /*!100301 COMPRESSED*/ CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
1513  `d` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1514) ENGINE=MyISAM DEFAULT CHARSET=latin1
1515DROP TABLE t1;
1516#
1517# VARCHAR and TEXT variants
1518#
1519#
1520# The following statements run without warnings.
1521# The `compressed opt_binary` grammar sequence is covered.
1522#
1523CREATE TABLE t1 (a VARCHAR(10) COMPRESSED);
1524SHOW CREATE TABLE t1;
1525Table	Create Table
1526t1	CREATE TABLE `t1` (
1527  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
1528) ENGINE=MyISAM DEFAULT CHARSET=latin1
1529DROP TABLE t1;
1530CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY);
1531SHOW CREATE TABLE t1;
1532Table	Create Table
1533t1	CREATE TABLE `t1` (
1534  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1535) ENGINE=MyISAM DEFAULT CHARSET=latin1
1536DROP TABLE t1;
1537CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY ASCII);
1538SHOW CREATE TABLE t1;
1539Table	Create Table
1540t1	CREATE TABLE `t1` (
1541  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1542) ENGINE=MyISAM DEFAULT CHARSET=latin1
1543DROP TABLE t1;
1544CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE);
1545SHOW CREATE TABLE t1;
1546Table	Create Table
1547t1	CREATE TABLE `t1` (
1548  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT NULL
1549) ENGINE=MyISAM DEFAULT CHARSET=latin1
1550DROP TABLE t1;
1551CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII);
1552SHOW CREATE TABLE t1;
1553Table	Create Table
1554t1	CREATE TABLE `t1` (
1555  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
1556) ENGINE=MyISAM DEFAULT CHARSET=latin1
1557DROP TABLE t1;
1558CREATE TABLE t1 (a VARCHAR(10) COMPRESSED UNICODE);
1559SHOW CREATE TABLE t1;
1560Table	Create Table
1561t1	CREATE TABLE `t1` (
1562  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
1563) ENGINE=MyISAM DEFAULT CHARSET=latin1
1564DROP TABLE t1;
1565CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8);
1566SHOW CREATE TABLE t1;
1567Table	Create Table
1568t1	CREATE TABLE `t1` (
1569  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
1570) ENGINE=MyISAM DEFAULT CHARSET=latin1
1571DROP TABLE t1;
1572#
1573# The following statements run without warnings.
1574# They have extra column attributes (or GENERATED) after COMPRESSED.
1575#
1576CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE DEFAULT '');
1577SHOW CREATE TABLE t1;
1578Table	Create Table
1579t1	CREATE TABLE `t1` (
1580  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT ''
1581) ENGINE=MyISAM DEFAULT CHARSET=latin1
1582DROP TABLE t1;
1583CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY DEFAULT '');
1584SHOW CREATE TABLE t1;
1585Table	Create Table
1586t1	CREATE TABLE `t1` (
1587  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
1588) ENGINE=MyISAM DEFAULT CHARSET=latin1
1589DROP TABLE t1;
1590CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII DEFAULT '');
1591SHOW CREATE TABLE t1;
1592Table	Create Table
1593t1	CREATE TABLE `t1` (
1594  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
1595) ENGINE=MyISAM DEFAULT CHARSET=latin1
1596DROP TABLE t1;
1597CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 DEFAULT '');
1598SHOW CREATE TABLE t1;
1599Table	Create Table
1600t1	CREATE TABLE `t1` (
1601  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
1602) ENGINE=MyISAM DEFAULT CHARSET=latin1
1603DROP TABLE t1;
1604CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
1605SHOW CREATE TABLE t1;
1606Table	Create Table
1607t1	CREATE TABLE `t1` (
1608  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
1609) ENGINE=MyISAM DEFAULT CHARSET=latin1
1610DROP TABLE t1;
1611#
1612# The following statements return deprecated syntax warnings
1613#
1614CREATE TABLE t1 (a VARCHAR(10) BINARY COMPRESSED);
1615Warnings:
1616Warning	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
1617SHOW CREATE TABLE t1;
1618Table	Create Table
1619t1	CREATE TABLE `t1` (
1620  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1621) ENGINE=MyISAM DEFAULT CHARSET=latin1
1622DROP TABLE t1;
1623CREATE TABLE t1 (a VARCHAR(10) ASCII COMPRESSED);
1624Warnings:
1625Warning	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
1626SHOW CREATE TABLE t1;
1627Table	Create Table
1628t1	CREATE TABLE `t1` (
1629  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
1630) ENGINE=MyISAM DEFAULT CHARSET=latin1
1631DROP TABLE t1;
1632CREATE TABLE t1 (a VARCHAR(10) BYTE COMPRESSED);
1633Warnings:
1634Warning	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
1635SHOW CREATE TABLE t1;
1636Table	Create Table
1637t1	CREATE TABLE `t1` (
1638  `a` varbinary(10) /*!100301 COMPRESSED*/ DEFAULT NULL
1639) ENGINE=MyISAM DEFAULT CHARSET=latin1
1640DROP TABLE t1;
1641#
1642# The following statements fail by the grammar,
1643# because COMPRESSED immediately follows  'field_type'.
1644#
1645CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE COMPRESSED);
1646ERROR 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
1647CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY COMPRESSED);
1648ERROR 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
1649CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII COMPRESSED);
1650ERROR 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
1651CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 COMPRESSED);
1652ERROR 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
1653#
1654# The following statements are not prohibited by the *.yy grammar,
1655# because the sequence `field_type attribute COMPRESSED` is allowed
1656# (notice there is at least one attribute after `field_type`).
1657# The first COMPRESSED is parsed inside `field_type`.
1658# The second COMPRESSED passes through the parser but then is caught
1659# inside Column_definition::set_compressed_deprecated_with_type_check()
1660# and a syntax error is raised.
1661#
1662CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BYTE DEFAULT '' COMPRESSED);
1663ERROR 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
1664CREATE TABLE t1 (a VARCHAR(10) COMPRESSED BINARY DEFAULT '' COMPRESSED);
1665ERROR 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
1666CREATE TABLE t1 (a VARCHAR(10) COMPRESSED ASCII DEFAULT '' COMPRESSED);
1667ERROR 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
1668CREATE TABLE t1 (a VARCHAR(10) COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
1669ERROR 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
1670#
1671# The following statements run without warnings.
1672# The `compressed opt_binary` grammar sequence is covered.
1673#
1674CREATE TABLE t1 (a TINYTEXT COMPRESSED);
1675SHOW CREATE TABLE t1;
1676Table	Create Table
1677t1	CREATE TABLE `t1` (
1678  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
1679) ENGINE=MyISAM DEFAULT CHARSET=latin1
1680DROP TABLE t1;
1681CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY);
1682SHOW CREATE TABLE t1;
1683Table	Create Table
1684t1	CREATE TABLE `t1` (
1685  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1686) ENGINE=MyISAM DEFAULT CHARSET=latin1
1687DROP TABLE t1;
1688CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY ASCII);
1689SHOW CREATE TABLE t1;
1690Table	Create Table
1691t1	CREATE TABLE `t1` (
1692  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1693) ENGINE=MyISAM DEFAULT CHARSET=latin1
1694DROP TABLE t1;
1695CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE);
1696SHOW CREATE TABLE t1;
1697Table	Create Table
1698t1	CREATE TABLE `t1` (
1699  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
1700) ENGINE=MyISAM DEFAULT CHARSET=latin1
1701DROP TABLE t1;
1702CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII);
1703SHOW CREATE TABLE t1;
1704Table	Create Table
1705t1	CREATE TABLE `t1` (
1706  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
1707) ENGINE=MyISAM DEFAULT CHARSET=latin1
1708DROP TABLE t1;
1709CREATE TABLE t1 (a TINYTEXT COMPRESSED UNICODE);
1710SHOW CREATE TABLE t1;
1711Table	Create Table
1712t1	CREATE TABLE `t1` (
1713  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
1714) ENGINE=MyISAM DEFAULT CHARSET=latin1
1715DROP TABLE t1;
1716CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8);
1717SHOW CREATE TABLE t1;
1718Table	Create Table
1719t1	CREATE TABLE `t1` (
1720  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
1721) ENGINE=MyISAM DEFAULT CHARSET=latin1
1722DROP TABLE t1;
1723#
1724# The following statements run without warnings.
1725# They have extra column attributes (or GENERATED) after COMPRESSED.
1726#
1727CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE DEFAULT '');
1728SHOW CREATE TABLE t1;
1729Table	Create Table
1730t1	CREATE TABLE `t1` (
1731  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
1732) ENGINE=MyISAM DEFAULT CHARSET=latin1
1733DROP TABLE t1;
1734CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY DEFAULT '');
1735SHOW CREATE TABLE t1;
1736Table	Create Table
1737t1	CREATE TABLE `t1` (
1738  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
1739) ENGINE=MyISAM DEFAULT CHARSET=latin1
1740DROP TABLE t1;
1741CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII DEFAULT '');
1742SHOW CREATE TABLE t1;
1743Table	Create Table
1744t1	CREATE TABLE `t1` (
1745  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT ''
1746) ENGINE=MyISAM DEFAULT CHARSET=latin1
1747DROP TABLE t1;
1748CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
1749SHOW CREATE TABLE t1;
1750Table	Create Table
1751t1	CREATE TABLE `t1` (
1752  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
1753) ENGINE=MyISAM DEFAULT CHARSET=latin1
1754DROP TABLE t1;
1755CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
1756SHOW CREATE TABLE t1;
1757Table	Create Table
1758t1	CREATE TABLE `t1` (
1759  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
1760) ENGINE=MyISAM DEFAULT CHARSET=latin1
1761DROP TABLE t1;
1762#
1763# The following statements return deprecated syntax warnings
1764#
1765CREATE TABLE t1 (a TINYTEXT BINARY COMPRESSED);
1766Warnings:
1767Warning	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
1768SHOW CREATE TABLE t1;
1769Table	Create Table
1770t1	CREATE TABLE `t1` (
1771  `a` tinytext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1772) ENGINE=MyISAM DEFAULT CHARSET=latin1
1773DROP TABLE t1;
1774CREATE TABLE t1 (a TINYTEXT ASCII COMPRESSED);
1775Warnings:
1776Warning	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
1777SHOW CREATE TABLE t1;
1778Table	Create Table
1779t1	CREATE TABLE `t1` (
1780  `a` tinytext /*!100301 COMPRESSED*/ DEFAULT NULL
1781) ENGINE=MyISAM DEFAULT CHARSET=latin1
1782DROP TABLE t1;
1783CREATE TABLE t1 (a TINYTEXT BYTE COMPRESSED);
1784Warnings:
1785Warning	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
1786SHOW CREATE TABLE t1;
1787Table	Create Table
1788t1	CREATE TABLE `t1` (
1789  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
1790) ENGINE=MyISAM DEFAULT CHARSET=latin1
1791DROP TABLE t1;
1792#
1793# The following statements fail by the grammar,
1794# because COMPRESSED immediately follows  'field_type'.
1795#
1796CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE COMPRESSED);
1797ERROR 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
1798CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY COMPRESSED);
1799ERROR 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
1800CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII COMPRESSED);
1801ERROR 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
1802CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
1803ERROR 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
1804#
1805# The following statements are not prohibited by the *.yy grammar,
1806# because the sequence `field_type attribute COMPRESSED` is allowed
1807# (notice there is at least one attribute after `field_type`).
1808# The first COMPRESSED is parsed inside `field_type`.
1809# The second COMPRESSED passes through the parser but then is caught
1810# inside Column_definition::set_compressed_deprecated_with_type_check()
1811# and a syntax error is raised.
1812#
1813CREATE TABLE t1 (a TINYTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
1814ERROR 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
1815CREATE TABLE t1 (a TINYTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
1816ERROR 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
1817CREATE TABLE t1 (a TINYTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
1818ERROR 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
1819CREATE TABLE t1 (a TINYTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
1820ERROR 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
1821#
1822# The following statements run without warnings.
1823# The `compressed opt_binary` grammar sequence is covered.
1824#
1825CREATE TABLE t1 (a TEXT COMPRESSED);
1826SHOW CREATE TABLE t1;
1827Table	Create Table
1828t1	CREATE TABLE `t1` (
1829  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
1830) ENGINE=MyISAM DEFAULT CHARSET=latin1
1831DROP TABLE t1;
1832CREATE TABLE t1 (a TEXT COMPRESSED BINARY);
1833SHOW CREATE TABLE t1;
1834Table	Create Table
1835t1	CREATE TABLE `t1` (
1836  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1837) ENGINE=MyISAM DEFAULT CHARSET=latin1
1838DROP TABLE t1;
1839CREATE TABLE t1 (a TEXT COMPRESSED BINARY ASCII);
1840SHOW CREATE TABLE t1;
1841Table	Create Table
1842t1	CREATE TABLE `t1` (
1843  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1844) ENGINE=MyISAM DEFAULT CHARSET=latin1
1845DROP TABLE t1;
1846CREATE TABLE t1 (a TEXT COMPRESSED BYTE);
1847SHOW CREATE TABLE t1;
1848Table	Create Table
1849t1	CREATE TABLE `t1` (
1850  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1851) ENGINE=MyISAM DEFAULT CHARSET=latin1
1852DROP TABLE t1;
1853CREATE TABLE t1 (a TEXT COMPRESSED ASCII);
1854SHOW CREATE TABLE t1;
1855Table	Create Table
1856t1	CREATE TABLE `t1` (
1857  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
1858) ENGINE=MyISAM DEFAULT CHARSET=latin1
1859DROP TABLE t1;
1860CREATE TABLE t1 (a TEXT COMPRESSED UNICODE);
1861SHOW CREATE TABLE t1;
1862Table	Create Table
1863t1	CREATE TABLE `t1` (
1864  `a` text /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
1865) ENGINE=MyISAM DEFAULT CHARSET=latin1
1866DROP TABLE t1;
1867CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8);
1868SHOW CREATE TABLE t1;
1869Table	Create Table
1870t1	CREATE TABLE `t1` (
1871  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
1872) ENGINE=MyISAM DEFAULT CHARSET=latin1
1873DROP TABLE t1;
1874#
1875# The following statements run without warnings.
1876# They have extra column attributes (or GENERATED) after COMPRESSED.
1877#
1878CREATE TABLE t1 (a TEXT COMPRESSED BYTE DEFAULT '');
1879SHOW CREATE TABLE t1;
1880Table	Create Table
1881t1	CREATE TABLE `t1` (
1882  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
1883) ENGINE=MyISAM DEFAULT CHARSET=latin1
1884DROP TABLE t1;
1885CREATE TABLE t1 (a TEXT COMPRESSED BINARY DEFAULT '');
1886SHOW CREATE TABLE t1;
1887Table	Create Table
1888t1	CREATE TABLE `t1` (
1889  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
1890) ENGINE=MyISAM DEFAULT CHARSET=latin1
1891DROP TABLE t1;
1892CREATE TABLE t1 (a TEXT COMPRESSED ASCII DEFAULT '');
1893SHOW CREATE TABLE t1;
1894Table	Create Table
1895t1	CREATE TABLE `t1` (
1896  `a` text /*!100301 COMPRESSED*/ DEFAULT ''
1897) ENGINE=MyISAM DEFAULT CHARSET=latin1
1898DROP TABLE t1;
1899CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
1900SHOW CREATE TABLE t1;
1901Table	Create Table
1902t1	CREATE TABLE `t1` (
1903  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
1904) ENGINE=MyISAM DEFAULT CHARSET=latin1
1905DROP TABLE t1;
1906CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
1907SHOW CREATE TABLE t1;
1908Table	Create Table
1909t1	CREATE TABLE `t1` (
1910  `a` text /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
1911) ENGINE=MyISAM DEFAULT CHARSET=latin1
1912DROP TABLE t1;
1913#
1914# The following statements return deprecated syntax warnings
1915#
1916CREATE TABLE t1 (a TEXT BINARY COMPRESSED);
1917Warnings:
1918Warning	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
1919SHOW CREATE TABLE t1;
1920Table	Create Table
1921t1	CREATE TABLE `t1` (
1922  `a` text /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1923) ENGINE=MyISAM DEFAULT CHARSET=latin1
1924DROP TABLE t1;
1925CREATE TABLE t1 (a TEXT ASCII COMPRESSED);
1926Warnings:
1927Warning	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
1928SHOW CREATE TABLE t1;
1929Table	Create Table
1930t1	CREATE TABLE `t1` (
1931  `a` text /*!100301 COMPRESSED*/ DEFAULT NULL
1932) ENGINE=MyISAM DEFAULT CHARSET=latin1
1933DROP TABLE t1;
1934CREATE TABLE t1 (a TEXT BYTE COMPRESSED);
1935Warnings:
1936Warning	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
1937SHOW CREATE TABLE t1;
1938Table	Create Table
1939t1	CREATE TABLE `t1` (
1940  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
1941) ENGINE=MyISAM DEFAULT CHARSET=latin1
1942DROP TABLE t1;
1943#
1944# The following statements fail by the grammar,
1945# because COMPRESSED immediately follows  'field_type'.
1946#
1947CREATE TABLE t1 (a TEXT COMPRESSED BYTE COMPRESSED);
1948ERROR 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
1949CREATE TABLE t1 (a TEXT COMPRESSED BINARY COMPRESSED);
1950ERROR 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
1951CREATE TABLE t1 (a TEXT COMPRESSED ASCII COMPRESSED);
1952ERROR 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
1953CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
1954ERROR 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
1955#
1956# The following statements are not prohibited by the *.yy grammar,
1957# because the sequence `field_type attribute COMPRESSED` is allowed
1958# (notice there is at least one attribute after `field_type`).
1959# The first COMPRESSED is parsed inside `field_type`.
1960# The second COMPRESSED passes through the parser but then is caught
1961# inside Column_definition::set_compressed_deprecated_with_type_check()
1962# and a syntax error is raised.
1963#
1964CREATE TABLE t1 (a TEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
1965ERROR 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
1966CREATE TABLE t1 (a TEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
1967ERROR 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
1968CREATE TABLE t1 (a TEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
1969ERROR 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
1970CREATE TABLE t1 (a TEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
1971ERROR 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
1972#
1973# The following statements run without warnings.
1974# The `compressed opt_binary` grammar sequence is covered.
1975#
1976CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED);
1977SHOW CREATE TABLE t1;
1978Table	Create Table
1979t1	CREATE TABLE `t1` (
1980  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
1981) ENGINE=MyISAM DEFAULT CHARSET=latin1
1982DROP TABLE t1;
1983CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY);
1984SHOW CREATE TABLE t1;
1985Table	Create Table
1986t1	CREATE TABLE `t1` (
1987  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1988) ENGINE=MyISAM DEFAULT CHARSET=latin1
1989DROP TABLE t1;
1990CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY ASCII);
1991SHOW CREATE TABLE t1;
1992Table	Create Table
1993t1	CREATE TABLE `t1` (
1994  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
1995) ENGINE=MyISAM DEFAULT CHARSET=latin1
1996DROP TABLE t1;
1997CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE);
1998SHOW CREATE TABLE t1;
1999Table	Create Table
2000t1	CREATE TABLE `t1` (
2001  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
2002) ENGINE=MyISAM DEFAULT CHARSET=latin1
2003DROP TABLE t1;
2004CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII);
2005SHOW CREATE TABLE t1;
2006Table	Create Table
2007t1	CREATE TABLE `t1` (
2008  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
2009) ENGINE=MyISAM DEFAULT CHARSET=latin1
2010DROP TABLE t1;
2011CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED UNICODE);
2012SHOW CREATE TABLE t1;
2013Table	Create Table
2014t1	CREATE TABLE `t1` (
2015  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
2016) ENGINE=MyISAM DEFAULT CHARSET=latin1
2017DROP TABLE t1;
2018CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8);
2019SHOW CREATE TABLE t1;
2020Table	Create Table
2021t1	CREATE TABLE `t1` (
2022  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
2023) ENGINE=MyISAM DEFAULT CHARSET=latin1
2024DROP TABLE t1;
2025#
2026# The following statements run without warnings.
2027# They have extra column attributes (or GENERATED) after COMPRESSED.
2028#
2029CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE DEFAULT '');
2030SHOW CREATE TABLE t1;
2031Table	Create Table
2032t1	CREATE TABLE `t1` (
2033  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
2034) ENGINE=MyISAM DEFAULT CHARSET=latin1
2035DROP TABLE t1;
2036CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY DEFAULT '');
2037SHOW CREATE TABLE t1;
2038Table	Create Table
2039t1	CREATE TABLE `t1` (
2040  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
2041) ENGINE=MyISAM DEFAULT CHARSET=latin1
2042DROP TABLE t1;
2043CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII DEFAULT '');
2044SHOW CREATE TABLE t1;
2045Table	Create Table
2046t1	CREATE TABLE `t1` (
2047  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT ''
2048) ENGINE=MyISAM DEFAULT CHARSET=latin1
2049DROP TABLE t1;
2050CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
2051SHOW CREATE TABLE t1;
2052Table	Create Table
2053t1	CREATE TABLE `t1` (
2054  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
2055) ENGINE=MyISAM DEFAULT CHARSET=latin1
2056DROP TABLE t1;
2057CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
2058SHOW CREATE TABLE t1;
2059Table	Create Table
2060t1	CREATE TABLE `t1` (
2061  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
2062) ENGINE=MyISAM DEFAULT CHARSET=latin1
2063DROP TABLE t1;
2064#
2065# The following statements return deprecated syntax warnings
2066#
2067CREATE TABLE t1 (a MEDIUMTEXT BINARY COMPRESSED);
2068Warnings:
2069Warning	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
2070SHOW CREATE TABLE t1;
2071Table	Create Table
2072t1	CREATE TABLE `t1` (
2073  `a` mediumtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
2074) ENGINE=MyISAM DEFAULT CHARSET=latin1
2075DROP TABLE t1;
2076CREATE TABLE t1 (a MEDIUMTEXT ASCII COMPRESSED);
2077Warnings:
2078Warning	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
2079SHOW CREATE TABLE t1;
2080Table	Create Table
2081t1	CREATE TABLE `t1` (
2082  `a` mediumtext /*!100301 COMPRESSED*/ DEFAULT NULL
2083) ENGINE=MyISAM DEFAULT CHARSET=latin1
2084DROP TABLE t1;
2085CREATE TABLE t1 (a MEDIUMTEXT BYTE COMPRESSED);
2086Warnings:
2087Warning	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
2088SHOW CREATE TABLE t1;
2089Table	Create Table
2090t1	CREATE TABLE `t1` (
2091  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
2092) ENGINE=MyISAM DEFAULT CHARSET=latin1
2093DROP TABLE t1;
2094#
2095# The following statements fail by the grammar,
2096# because COMPRESSED immediately follows  'field_type'.
2097#
2098CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE COMPRESSED);
2099ERROR 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
2100CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY COMPRESSED);
2101ERROR 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
2102CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII COMPRESSED);
2103ERROR 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
2104CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
2105ERROR 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
2106#
2107# The following statements are not prohibited by the *.yy grammar,
2108# because the sequence `field_type attribute COMPRESSED` is allowed
2109# (notice there is at least one attribute after `field_type`).
2110# The first COMPRESSED is parsed inside `field_type`.
2111# The second COMPRESSED passes through the parser but then is caught
2112# inside Column_definition::set_compressed_deprecated_with_type_check()
2113# and a syntax error is raised.
2114#
2115CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
2116ERROR 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
2117CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
2118ERROR 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
2119CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
2120ERROR 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
2121CREATE TABLE t1 (a MEDIUMTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
2122ERROR 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
2123#
2124# The following statements run without warnings.
2125# The `compressed opt_binary` grammar sequence is covered.
2126#
2127CREATE TABLE t1 (a LONGTEXT COMPRESSED);
2128SHOW CREATE TABLE t1;
2129Table	Create Table
2130t1	CREATE TABLE `t1` (
2131  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
2132) ENGINE=MyISAM DEFAULT CHARSET=latin1
2133DROP TABLE t1;
2134CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY);
2135SHOW CREATE TABLE t1;
2136Table	Create Table
2137t1	CREATE TABLE `t1` (
2138  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
2139) ENGINE=MyISAM DEFAULT CHARSET=latin1
2140DROP TABLE t1;
2141CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY ASCII);
2142SHOW CREATE TABLE t1;
2143Table	Create Table
2144t1	CREATE TABLE `t1` (
2145  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
2146) ENGINE=MyISAM DEFAULT CHARSET=latin1
2147DROP TABLE t1;
2148CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE);
2149SHOW CREATE TABLE t1;
2150Table	Create Table
2151t1	CREATE TABLE `t1` (
2152  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
2153) ENGINE=MyISAM DEFAULT CHARSET=latin1
2154DROP TABLE t1;
2155CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII);
2156SHOW CREATE TABLE t1;
2157Table	Create Table
2158t1	CREATE TABLE `t1` (
2159  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
2160) ENGINE=MyISAM DEFAULT CHARSET=latin1
2161DROP TABLE t1;
2162CREATE TABLE t1 (a LONGTEXT COMPRESSED UNICODE);
2163SHOW CREATE TABLE t1;
2164Table	Create Table
2165t1	CREATE TABLE `t1` (
2166  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET ucs2 DEFAULT NULL
2167) ENGINE=MyISAM DEFAULT CHARSET=latin1
2168DROP TABLE t1;
2169CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8);
2170SHOW CREATE TABLE t1;
2171Table	Create Table
2172t1	CREATE TABLE `t1` (
2173  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
2174) ENGINE=MyISAM DEFAULT CHARSET=latin1
2175DROP TABLE t1;
2176#
2177# The following statements run without warnings.
2178# They have extra column attributes (or GENERATED) after COMPRESSED.
2179#
2180CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE DEFAULT '');
2181SHOW CREATE TABLE t1;
2182Table	Create Table
2183t1	CREATE TABLE `t1` (
2184  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
2185) ENGINE=MyISAM DEFAULT CHARSET=latin1
2186DROP TABLE t1;
2187CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY DEFAULT '');
2188SHOW CREATE TABLE t1;
2189Table	Create Table
2190t1	CREATE TABLE `t1` (
2191  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT ''
2192) ENGINE=MyISAM DEFAULT CHARSET=latin1
2193DROP TABLE t1;
2194CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII DEFAULT '');
2195SHOW CREATE TABLE t1;
2196Table	Create Table
2197t1	CREATE TABLE `t1` (
2198  `a` longtext /*!100301 COMPRESSED*/ DEFAULT ''
2199) ENGINE=MyISAM DEFAULT CHARSET=latin1
2200DROP TABLE t1;
2201CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '');
2202SHOW CREATE TABLE t1;
2203Table	Create Table
2204t1	CREATE TABLE `t1` (
2205  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT ''
2206) ENGINE=MyISAM DEFAULT CHARSET=latin1
2207DROP TABLE t1;
2208CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 GENERATED ALWAYS AS (REPEAT('a',100)));
2209SHOW CREATE TABLE t1;
2210Table	Create Table
2211t1	CREATE TABLE `t1` (
2212  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET utf8 GENERATED ALWAYS AS (repeat('a',100)) VIRTUAL
2213) ENGINE=MyISAM DEFAULT CHARSET=latin1
2214DROP TABLE t1;
2215#
2216# The following statements return deprecated syntax warnings
2217#
2218CREATE TABLE t1 (a LONGTEXT BINARY COMPRESSED);
2219Warnings:
2220Warning	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
2221SHOW CREATE TABLE t1;
2222Table	Create Table
2223t1	CREATE TABLE `t1` (
2224  `a` longtext /*!100301 COMPRESSED*/ CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL
2225) ENGINE=MyISAM DEFAULT CHARSET=latin1
2226DROP TABLE t1;
2227CREATE TABLE t1 (a LONGTEXT ASCII COMPRESSED);
2228Warnings:
2229Warning	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
2230SHOW CREATE TABLE t1;
2231Table	Create Table
2232t1	CREATE TABLE `t1` (
2233  `a` longtext /*!100301 COMPRESSED*/ DEFAULT NULL
2234) ENGINE=MyISAM DEFAULT CHARSET=latin1
2235DROP TABLE t1;
2236CREATE TABLE t1 (a LONGTEXT BYTE COMPRESSED);
2237Warnings:
2238Warning	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
2239SHOW CREATE TABLE t1;
2240Table	Create Table
2241t1	CREATE TABLE `t1` (
2242  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
2243) ENGINE=MyISAM DEFAULT CHARSET=latin1
2244DROP TABLE t1;
2245#
2246# The following statements fail by the grammar,
2247# because COMPRESSED immediately follows  'field_type'.
2248#
2249CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE COMPRESSED);
2250ERROR 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
2251CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY COMPRESSED);
2252ERROR 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
2253CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII COMPRESSED);
2254ERROR 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
2255CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 COMPRESSED);
2256ERROR 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
2257#
2258# The following statements are not prohibited by the *.yy grammar,
2259# because the sequence `field_type attribute COMPRESSED` is allowed
2260# (notice there is at least one attribute after `field_type`).
2261# The first COMPRESSED is parsed inside `field_type`.
2262# The second COMPRESSED passes through the parser but then is caught
2263# inside Column_definition::set_compressed_deprecated_with_type_check()
2264# and a syntax error is raised.
2265#
2266CREATE TABLE t1 (a LONGTEXT COMPRESSED BYTE DEFAULT '' COMPRESSED);
2267ERROR 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
2268CREATE TABLE t1 (a LONGTEXT COMPRESSED BINARY DEFAULT '' COMPRESSED);
2269ERROR 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
2270CREATE TABLE t1 (a LONGTEXT COMPRESSED ASCII DEFAULT '' COMPRESSED);
2271ERROR 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
2272CREATE TABLE t1 (a LONGTEXT COMPRESSED CHARACTER SET utf8 DEFAULT '' COMPRESSED);
2273ERROR 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
2274#
2275# VARBINARY and BLOB variables
2276#
2277#
2278# The following statements run without warnings.
2279#
2280CREATE TABLE t1 (a VARCHAR(10) COMPRESSED);
2281SHOW CREATE TABLE t1;
2282Table	Create Table
2283t1	CREATE TABLE `t1` (
2284  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
2285) ENGINE=MyISAM DEFAULT CHARSET=latin1
2286DROP TABLE t1;
2287#
2288# The following statements run without warnings.
2289# They have extra column attributes (or GENERATED) after COMPRESSED.
2290#
2291CREATE TABLE t1 (a VARCHAR(10) COMPRESSED DEFAULT '');
2292SHOW CREATE TABLE t1;
2293Table	Create Table
2294t1	CREATE TABLE `t1` (
2295  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
2296) ENGINE=MyISAM DEFAULT CHARSET=latin1
2297DROP TABLE t1;
2298CREATE TABLE t1 (a VARCHAR(10) COMPRESSED NULL);
2299SHOW CREATE TABLE t1;
2300Table	Create Table
2301t1	CREATE TABLE `t1` (
2302  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
2303) ENGINE=MyISAM DEFAULT CHARSET=latin1
2304DROP TABLE t1;
2305CREATE TABLE t1 (a VARCHAR(10) COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
2306SHOW CREATE TABLE t1;
2307Table	Create Table
2308t1	CREATE TABLE `t1` (
2309  `a` varchar(10) /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
2310) ENGINE=MyISAM DEFAULT CHARSET=latin1
2311DROP TABLE t1;
2312#
2313# The following statements return deprecated syntax warnings
2314#
2315CREATE TABLE t1 (a VARCHAR(10) DEFAULT '' COMPRESSED);
2316Warnings:
2317Warning	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
2318SHOW CREATE TABLE t1;
2319Table	Create Table
2320t1	CREATE TABLE `t1` (
2321  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT ''
2322) ENGINE=MyISAM DEFAULT CHARSET=latin1
2323DROP TABLE t1;
2324CREATE TABLE t1 (a VARCHAR(10) NULL COMPRESSED);
2325Warnings:
2326Warning	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
2327SHOW CREATE TABLE t1;
2328Table	Create Table
2329t1	CREATE TABLE `t1` (
2330  `a` varchar(10) /*!100301 COMPRESSED*/ DEFAULT NULL
2331) ENGINE=MyISAM DEFAULT CHARSET=latin1
2332DROP TABLE t1;
2333#
2334# The following statements fail by the grammar,
2335# because COMPRESSED immediately follows  'field_type'.
2336#
2337CREATE TABLE t1 (a VARCHAR(10) COMPRESSED COMPRESSED);
2338ERROR 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
2339#
2340# The following statements are not prohibited by the *.yy grammar,
2341# because the sequence `field_type attribute COMPRESSED` is allowed
2342# (notice there is at least one attribute after `field_type`).
2343# The first COMPRESSED is parsed inside `field_type`.
2344# The second COMPRESSED passes through the parser but then is caught
2345# inside Column_definition::set_compressed_deprecated_with_type_check()
2346# and a syntax error is raised.
2347#
2348CREATE TABLE t1 (a VARCHAR(10) COMPRESSED DEFAULT '' COMPRESSED);
2349ERROR 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
2350CREATE TABLE t1 (a VARCHAR(10) COMPRESSED NULL COMPRESSED);
2351ERROR 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
2352#
2353# The following statements run without warnings.
2354#
2355CREATE TABLE t1 (a TINYBLOB COMPRESSED);
2356SHOW CREATE TABLE t1;
2357Table	Create Table
2358t1	CREATE TABLE `t1` (
2359  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
2360) ENGINE=MyISAM DEFAULT CHARSET=latin1
2361DROP TABLE t1;
2362#
2363# The following statements run without warnings.
2364# They have extra column attributes (or GENERATED) after COMPRESSED.
2365#
2366CREATE TABLE t1 (a TINYBLOB COMPRESSED DEFAULT '');
2367SHOW CREATE TABLE t1;
2368Table	Create Table
2369t1	CREATE TABLE `t1` (
2370  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
2371) ENGINE=MyISAM DEFAULT CHARSET=latin1
2372DROP TABLE t1;
2373CREATE TABLE t1 (a TINYBLOB COMPRESSED NULL);
2374SHOW CREATE TABLE t1;
2375Table	Create Table
2376t1	CREATE TABLE `t1` (
2377  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
2378) ENGINE=MyISAM DEFAULT CHARSET=latin1
2379DROP TABLE t1;
2380CREATE TABLE t1 (a TINYBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
2381SHOW CREATE TABLE t1;
2382Table	Create Table
2383t1	CREATE TABLE `t1` (
2384  `a` tinyblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
2385) ENGINE=MyISAM DEFAULT CHARSET=latin1
2386DROP TABLE t1;
2387#
2388# The following statements return deprecated syntax warnings
2389#
2390CREATE TABLE t1 (a TINYBLOB DEFAULT '' COMPRESSED);
2391Warnings:
2392Warning	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
2393SHOW CREATE TABLE t1;
2394Table	Create Table
2395t1	CREATE TABLE `t1` (
2396  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT ''
2397) ENGINE=MyISAM DEFAULT CHARSET=latin1
2398DROP TABLE t1;
2399CREATE TABLE t1 (a TINYBLOB NULL COMPRESSED);
2400Warnings:
2401Warning	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
2402SHOW CREATE TABLE t1;
2403Table	Create Table
2404t1	CREATE TABLE `t1` (
2405  `a` tinyblob /*!100301 COMPRESSED*/ DEFAULT NULL
2406) ENGINE=MyISAM DEFAULT CHARSET=latin1
2407DROP TABLE t1;
2408#
2409# The following statements fail by the grammar,
2410# because COMPRESSED immediately follows  'field_type'.
2411#
2412CREATE TABLE t1 (a TINYBLOB COMPRESSED COMPRESSED);
2413ERROR 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
2414#
2415# The following statements are not prohibited by the *.yy grammar,
2416# because the sequence `field_type attribute COMPRESSED` is allowed
2417# (notice there is at least one attribute after `field_type`).
2418# The first COMPRESSED is parsed inside `field_type`.
2419# The second COMPRESSED passes through the parser but then is caught
2420# inside Column_definition::set_compressed_deprecated_with_type_check()
2421# and a syntax error is raised.
2422#
2423CREATE TABLE t1 (a TINYBLOB COMPRESSED DEFAULT '' COMPRESSED);
2424ERROR 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
2425CREATE TABLE t1 (a TINYBLOB COMPRESSED NULL COMPRESSED);
2426ERROR 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
2427#
2428# The following statements run without warnings.
2429#
2430CREATE TABLE t1 (a BLOB COMPRESSED);
2431SHOW CREATE TABLE t1;
2432Table	Create Table
2433t1	CREATE TABLE `t1` (
2434  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
2435) ENGINE=MyISAM DEFAULT CHARSET=latin1
2436DROP TABLE t1;
2437#
2438# The following statements run without warnings.
2439# They have extra column attributes (or GENERATED) after COMPRESSED.
2440#
2441CREATE TABLE t1 (a BLOB COMPRESSED DEFAULT '');
2442SHOW CREATE TABLE t1;
2443Table	Create Table
2444t1	CREATE TABLE `t1` (
2445  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
2446) ENGINE=MyISAM DEFAULT CHARSET=latin1
2447DROP TABLE t1;
2448CREATE TABLE t1 (a BLOB COMPRESSED NULL);
2449SHOW CREATE TABLE t1;
2450Table	Create Table
2451t1	CREATE TABLE `t1` (
2452  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
2453) ENGINE=MyISAM DEFAULT CHARSET=latin1
2454DROP TABLE t1;
2455CREATE TABLE t1 (a BLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
2456SHOW CREATE TABLE t1;
2457Table	Create Table
2458t1	CREATE TABLE `t1` (
2459  `a` blob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
2460) ENGINE=MyISAM DEFAULT CHARSET=latin1
2461DROP TABLE t1;
2462#
2463# The following statements return deprecated syntax warnings
2464#
2465CREATE TABLE t1 (a BLOB DEFAULT '' COMPRESSED);
2466Warnings:
2467Warning	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
2468SHOW CREATE TABLE t1;
2469Table	Create Table
2470t1	CREATE TABLE `t1` (
2471  `a` blob /*!100301 COMPRESSED*/ DEFAULT ''
2472) ENGINE=MyISAM DEFAULT CHARSET=latin1
2473DROP TABLE t1;
2474CREATE TABLE t1 (a BLOB NULL COMPRESSED);
2475Warnings:
2476Warning	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
2477SHOW CREATE TABLE t1;
2478Table	Create Table
2479t1	CREATE TABLE `t1` (
2480  `a` blob /*!100301 COMPRESSED*/ DEFAULT NULL
2481) ENGINE=MyISAM DEFAULT CHARSET=latin1
2482DROP TABLE t1;
2483#
2484# The following statements fail by the grammar,
2485# because COMPRESSED immediately follows  'field_type'.
2486#
2487CREATE TABLE t1 (a BLOB COMPRESSED COMPRESSED);
2488ERROR 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
2489#
2490# The following statements are not prohibited by the *.yy grammar,
2491# because the sequence `field_type attribute COMPRESSED` is allowed
2492# (notice there is at least one attribute after `field_type`).
2493# The first COMPRESSED is parsed inside `field_type`.
2494# The second COMPRESSED passes through the parser but then is caught
2495# inside Column_definition::set_compressed_deprecated_with_type_check()
2496# and a syntax error is raised.
2497#
2498CREATE TABLE t1 (a BLOB COMPRESSED DEFAULT '' COMPRESSED);
2499ERROR 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
2500CREATE TABLE t1 (a BLOB COMPRESSED NULL COMPRESSED);
2501ERROR 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
2502#
2503# The following statements run without warnings.
2504#
2505CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED);
2506SHOW CREATE TABLE t1;
2507Table	Create Table
2508t1	CREATE TABLE `t1` (
2509  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
2510) ENGINE=MyISAM DEFAULT CHARSET=latin1
2511DROP TABLE t1;
2512#
2513# The following statements run without warnings.
2514# They have extra column attributes (or GENERATED) after COMPRESSED.
2515#
2516CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED DEFAULT '');
2517SHOW CREATE TABLE t1;
2518Table	Create Table
2519t1	CREATE TABLE `t1` (
2520  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
2521) ENGINE=MyISAM DEFAULT CHARSET=latin1
2522DROP TABLE t1;
2523CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED NULL);
2524SHOW CREATE TABLE t1;
2525Table	Create Table
2526t1	CREATE TABLE `t1` (
2527  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
2528) ENGINE=MyISAM DEFAULT CHARSET=latin1
2529DROP TABLE t1;
2530CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
2531SHOW CREATE TABLE t1;
2532Table	Create Table
2533t1	CREATE TABLE `t1` (
2534  `a` mediumblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
2535) ENGINE=MyISAM DEFAULT CHARSET=latin1
2536DROP TABLE t1;
2537#
2538# The following statements return deprecated syntax warnings
2539#
2540CREATE TABLE t1 (a MEDIUMBLOB DEFAULT '' COMPRESSED);
2541Warnings:
2542Warning	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
2543SHOW CREATE TABLE t1;
2544Table	Create Table
2545t1	CREATE TABLE `t1` (
2546  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT ''
2547) ENGINE=MyISAM DEFAULT CHARSET=latin1
2548DROP TABLE t1;
2549CREATE TABLE t1 (a MEDIUMBLOB NULL COMPRESSED);
2550Warnings:
2551Warning	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
2552SHOW CREATE TABLE t1;
2553Table	Create Table
2554t1	CREATE TABLE `t1` (
2555  `a` mediumblob /*!100301 COMPRESSED*/ DEFAULT NULL
2556) ENGINE=MyISAM DEFAULT CHARSET=latin1
2557DROP TABLE t1;
2558#
2559# The following statements fail by the grammar,
2560# because COMPRESSED immediately follows  'field_type'.
2561#
2562CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED COMPRESSED);
2563ERROR 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
2564#
2565# The following statements are not prohibited by the *.yy grammar,
2566# because the sequence `field_type attribute COMPRESSED` is allowed
2567# (notice there is at least one attribute after `field_type`).
2568# The first COMPRESSED is parsed inside `field_type`.
2569# The second COMPRESSED passes through the parser but then is caught
2570# inside Column_definition::set_compressed_deprecated_with_type_check()
2571# and a syntax error is raised.
2572#
2573CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED DEFAULT '' COMPRESSED);
2574ERROR 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
2575CREATE TABLE t1 (a MEDIUMBLOB COMPRESSED NULL COMPRESSED);
2576ERROR 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
2577#
2578# The following statements run without warnings.
2579#
2580CREATE TABLE t1 (a LONGBLOB COMPRESSED);
2581SHOW CREATE TABLE t1;
2582Table	Create Table
2583t1	CREATE TABLE `t1` (
2584  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
2585) ENGINE=MyISAM DEFAULT CHARSET=latin1
2586DROP TABLE t1;
2587#
2588# The following statements run without warnings.
2589# They have extra column attributes (or GENERATED) after COMPRESSED.
2590#
2591CREATE TABLE t1 (a LONGBLOB COMPRESSED DEFAULT '');
2592SHOW CREATE TABLE t1;
2593Table	Create Table
2594t1	CREATE TABLE `t1` (
2595  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
2596) ENGINE=MyISAM DEFAULT CHARSET=latin1
2597DROP TABLE t1;
2598CREATE TABLE t1 (a LONGBLOB COMPRESSED NULL);
2599SHOW CREATE TABLE t1;
2600Table	Create Table
2601t1	CREATE TABLE `t1` (
2602  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
2603) ENGINE=MyISAM DEFAULT CHARSET=latin1
2604DROP TABLE t1;
2605CREATE TABLE t1 (a LONGBLOB COMPRESSED GENERATED ALWAYS AS (REPEAT('a',10)));
2606SHOW CREATE TABLE t1;
2607Table	Create Table
2608t1	CREATE TABLE `t1` (
2609  `a` longblob /*!100301 COMPRESSED*/ GENERATED ALWAYS AS (repeat('a',10)) VIRTUAL
2610) ENGINE=MyISAM DEFAULT CHARSET=latin1
2611DROP TABLE t1;
2612#
2613# The following statements return deprecated syntax warnings
2614#
2615CREATE TABLE t1 (a LONGBLOB DEFAULT '' COMPRESSED);
2616Warnings:
2617Warning	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
2618SHOW CREATE TABLE t1;
2619Table	Create Table
2620t1	CREATE TABLE `t1` (
2621  `a` longblob /*!100301 COMPRESSED*/ DEFAULT ''
2622) ENGINE=MyISAM DEFAULT CHARSET=latin1
2623DROP TABLE t1;
2624CREATE TABLE t1 (a LONGBLOB NULL COMPRESSED);
2625Warnings:
2626Warning	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
2627SHOW CREATE TABLE t1;
2628Table	Create Table
2629t1	CREATE TABLE `t1` (
2630  `a` longblob /*!100301 COMPRESSED*/ DEFAULT NULL
2631) ENGINE=MyISAM DEFAULT CHARSET=latin1
2632DROP TABLE t1;
2633#
2634# The following statements fail by the grammar,
2635# because COMPRESSED immediately follows  'field_type'.
2636#
2637CREATE TABLE t1 (a LONGBLOB COMPRESSED COMPRESSED);
2638ERROR 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
2639#
2640# The following statements are not prohibited by the *.yy grammar,
2641# because the sequence `field_type attribute COMPRESSED` is allowed
2642# (notice there is at least one attribute after `field_type`).
2643# The first COMPRESSED is parsed inside `field_type`.
2644# The second COMPRESSED passes through the parser but then is caught
2645# inside Column_definition::set_compressed_deprecated_with_type_check()
2646# and a syntax error is raised.
2647#
2648CREATE TABLE t1 (a LONGBLOB COMPRESSED DEFAULT '' COMPRESSED);
2649ERROR 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
2650CREATE TABLE t1 (a LONGBLOB COMPRESSED NULL COMPRESSED);
2651ERROR 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
2652#
2653# NVARCHAR
2654#
2655CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED);
2656SHOW CREATE TABLE t1;
2657Table	Create Table
2658t1	CREATE TABLE `t1` (
2659  `a` varchar(10) /*!100301 COMPRESSED*/ CHARACTER SET utf8 DEFAULT NULL
2660) ENGINE=MyISAM DEFAULT CHARSET=latin1
2661DROP TABLE t1;
2662CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED BINARY COMPRESSED);
2663ERROR 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
2664CREATE TABLE t1 (a NVARCHAR(10) COMPRESSED DEFAULT '' COMPRESSED);
2665ERROR 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
2666#
2667# MDEV-21348 - Memory leak in Storage-Engine Independent Column
2668#              Compression
2669#
2670CREATE TABLE t1(a BLOB COMPRESSED);
2671SET column_compression_threshold=0;
2672INSERT INTO t1 VALUES('aa');
2673SET column_compression_threshold=DEFAULT;
2674DROP TABLE t1;
2675