wrong result when comparing utf8 column with an invalid literal

Description

The test case shows that SELECT returns a row that doesn't match the WHERE condition. This only happens when the column is not indexed, if there's an index the result is correct (no rows found).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 DROP DATABASE IF EXISTS `strict_unicode_test`; SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'; SET SESSION sql_mode='STRICT_ALL_TABLES'; CREATE DATABASE `strict_unicode_test` COLLATE utf8_unicode_ci; USE `strict_unicode_test`; SHOW VARIABLES LIKE 'coll%'; SHOW VARIABLES LIKE 'character%'; DROP TABLE IF EXISTS `users`; CREATE TABLE `users` ( `ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `login` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; INSERT INTO users (login) VALUES ('admin'); SELECT * FROM `users` WHERE `login` = 'admin𝌆'; SHOW WARNINGS;

Environment

None

Status

Assignee

Alexander Barkov

Reporter

Sergei Golubchik

Labels

None

External issue ID

None

External issue ID

None

Components

Fix versions

Affects versions

10.0
5.5

Priority

Blocker
Configure