[MDEV-27311] Wrong (corrupt) result upon SELECT with ORDER BY, compressed column and certain charsets Created: 2021-12-20  Updated: 2023-04-27

Status: Open
Project: MariaDB Server
Component/s: Character Sets, Server
Affects Version/s: 10.3, 10.4, 10.5, 10.6, 10.7
Fix Version/s: 10.4, 10.5, 10.6

Type: Bug Priority: Major
Reporter: Elena Stepanova Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None


 Description   

CREATE TABLE t (a varchar(64) /*!100301 COMPRESSED*/, b INT) CHARSET utf32;
INSERT INTO t VALUES ('foo',1),('bar',2);
 
SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) ) ORDER BY a;
SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) );
 
# Cleanup
DROP TABLE t;

The second (unordered) select returns the expected values. The first one, with ORDER BY, returns garbage, even though HEX is okay.

10.3 3fd80d08 with utf32

SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) ) ORDER BY a;
a	HEX(a)
	000000660000006F0000006F
	000000620000006100000072
SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) );
a	HEX(a)
foo	000000660000006F0000006F
bar	000000620000006100000072

with utf16

SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) ) ORDER BY a;
a	HEX(a)
ba	006200610072
fo	0066006F006F
SELECT a, HEX(a) FROM t WHERE b IN ( SELECT b FROM t WHERE b IN ( SELECT b FROM t ) );
a	HEX(a)
foo	0066006F006F
bar	006200610072


Generated at Thu Feb 08 09:51:57 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.