Bug #86517 | Tend to ER_OUT_OF_SORTMEMORY on UTF8MB4_UNICODE_CI much frequently (than UTF8MB4 | ||
---|---|---|---|
Submitted: | 31 May 2017 8:02 | Modified: | 13 Jun 2017 16:45 |
Reporter: | Seunguck Lee | Email Updates: | |
Status: | Verified | Impact on me: | |
Category: | MySQL Server: Charsets | Severity: | S3 (Non-critical) |
Version: | 5.7.17 | OS: | Any |
Assigned to: | CPU Architecture: | Any | |
Tags: | ER_OUT_OF_SORTMEMORY, strnxfrmlen, utf8mb4_unicode_ci |
[31 May 2017 8:02]
Seunguck Lee
[31 May 2017 8:59]
Seunguck Lee
The strnxfrmlen function I've mentioned is here(https://github.com/mysql/mysql-server/blob/5.7/sql/filesort.cc#L2342)
[13 Jun 2017 16:45]
MySQL Verification Team
Hi! Your report is correct. Only, I re-arranged your test case so that query with _GENERAL_CI is run before the one with _UNICODE_CI. And I have debugged in the debugger. First three values are lengths for general collation and second three for the unicode collation: (lldb) print sortorder->length (uint) $3 = 180 2017-06-13T16:39:15.074631Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 13077ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.) (lldb) print sortorder->length (uint) $4 = 180 (lldb) print sortorder->length (uint) $5 = 400 (lldb) print sortorder->length (uint) $6 = 2880 (lldb) print sortorder->length (uint) $7 = 2880 (lldb) print sortorder->length (uint) $8 = 3200 Unrelated to the issue is that your sort buffer is too small. Please, use our default. Verified.