Page MenuHomePhabricator

Every category page doesn't sort article Bulgarian (cyrillic) names correctly
Closed, ResolvedPublic

Description

Author: some_777

Description:
Hi,

I've set Bulgarian language as default. When I open some category page, the articles are not sorted correctly at all. The Special:Categories page too.

The current order is: АНСУХЩМПИЖЗБГД (only those letters have articles at the moment)

But it should be: АбвГДеЖЗИйклМНоПрСтУфХцчшЩъьюя (low case letters are those for which there is NOT any article at the moment)

My DB is utf8 (charset, collation)

I've noticed that mw_categorylinks.cl_sortkey has collation utf8_bin and changed it to utf8_general_ci, but nothing changed

Here are the sql queries for Category:Статии page (Статии = „Articles“)

BEGIN
SET /* Database::open 127.0.0.1 */ sql_mode = ''
/* Article::pageData 127.0.0.1 */ SELECT page_id,page_namespace,page_title,page_restrictions,page_counter,page_is_redirect,page_is_new,page_random,page_touched,page_latest,page_len FROM mw_page WHERE page_namespace = '14' AND page_title = 'Статии' LIMIT 1

SELECT /* Title::loadRestrictions 127.0.0.1 */ * FROM mw_page_restrictions WHERE pr_page = '33'
/* Title::loadRestrictionsFromRow 127.0.0.1 */ SELECT page_restrictions FROM mw_page WHERE page_id = '33' LIMIT 1

SELECT /* MediaWikiBagOStuff::_doquery 127.0.0.1 */ value,exptime FROM mw_objectcache WHERE keyname='some_db-mw_:pcache:idhash:33-0!1!0!!bg!2!edit=0'

SELECT /* MediaWikiBagOStuff::_doquery 127.0.0.1 */ value,exptime FROM mw_objectcache WHERE keyname='some_db-mw_:messages-hash'

SELECT /* MediaWikiBagOStuff::_doquery 127.0.0.1 */ value,exptime FROM mw_objectcache WHERE keyname='some_db-mw_:messages'

UPDATE /* 127.0.0.1 */ mw_page SET page_counter = page_counter + 1 WHERE page_id = 33
/* CategoryViewer::doCategoryQuery 127.0.0.1 */ SELECT page_title,page_namespace,page_len,page_is_redirect,cl_sortkey FROM mw_page,mw_categorylinks FORCE INDEX (cl_sortkey) WHERE (1 = 1) AND (cl_from = page_id) AND cl_to = 'Статии' ORDER BY cl_sortkey LIMIT 201
/* SiteStatsUpdate::doUpdate 127.0.0.1 */ SELECT * FROM mw_site_stats LIMIT 1

BEGIN
/* SiteStatsUpdate::doUpdate 127.0.0.1 */ UPDATE mw_site_stats SET ss_total_views=ss_total_views+1 LIMIT 1
COMMIT
BEGIN
/* Job::pop 127.0.0.1 */ SELECT * FROM mw_job WHERE job_id >= 0 ORDER BY job_id LIMIT 1
COMMIT
BEGIN
SELECT /* LinkBatch::doQuery 127.0.0.1 */ page_id, page_namespace, page_title FROM mw_page WHERE (page_namespace=2 AND page_title='127.0.0.1') OR (page_namespace=3 AND page_title='127.0.0.1') OR (page_namespace=15 AND page_title='Статии')
/* User::checkNewtalk 127.0.0.1 */ SELECT user_ip FROM mw_user_newtalk WHERE user_ip = '127.0.0.1' LIMIT 1

If there is some way to correct this please tell me.

Thank you


Version: 1.11.x
Severity: major
Platform: PC

Details

Reference
bz10771

Event Timeline

bzimport raised the priority of this task from to High.Nov 21 2014, 9:50 PM
bzimport set Reference to bz10771.
bzimport added a subscriber: Unknown Object (MLST).

some_777 wrote:

PHP 5.x
MySQL 5.0.41-community-nt / XP
but also tested it on Linux Debian mySQL 5

Perhaps every language could define in the language class some order which could be then updated in the DB?
This way different letter orders could be applied as the customer wants.

  • This bug has been marked as a duplicate of bug 164 ***