[MDEV-10759] Fix Aria to support 2-byte collation IDs Created: 2016-09-07 Updated: 2016-12-02 Resolved: 2016-12-02 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Character Sets, Storage Engine - Aria |
| Fix Version/s: | 10.1.20 |
| Type: | Task | Priority: | Major |
| Reporter: | Alexander Barkov | Assignee: | Michael Widenius |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Description |
|
The Aria engine currently supports only 8-bit collation IDs. As of version 10.2.2 we have 95 collations with 2-byte IDs, according to this query:
A big number of collations with 2-byte IDs was added by It would be nice to fix before the 10.2.2 release. |
| Comments |
| Comment by Sergei Golubchik [ 2016-10-09 ] | ||||||||||||||||||||||||
|
What's the effect of Aria not supporting these collations? | ||||||||||||||||||||||||
| Comment by Alexander Barkov [ 2016-10-10 ] | ||||||||||||||||||||||||
|
Aria internally compares according to a collation with ID equal to id%256. Btw, In some cases (e.g in case of NO PAD collations) a query result can even be correct:
| ||||||||||||||||||||||||
| Comment by Alexander Barkov [ 2016-12-02 ] | ||||||||||||||||||||||||
|
This is the correct result using MyISAM:
Notice:
If I do the same in ARIA, instead of utf8_croatian_ci (ID=576) it uses armscii8_bin (ID=576%256=64)
Notice:
| ||||||||||||||||||||||||
| Comment by Alexander Barkov [ 2016-12-02 ] | ||||||||||||||||||||||||
|
Here's the mapping that happens when the high byte disappears:
| ||||||||||||||||||||||||
| Comment by Michael Widenius [ 2016-12-02 ] | ||||||||||||||||||||||||
|
Fixed by using same approach that was done some time ago in MyISAM |