IMAP sort requires input string collation according to the i;unicode-casemap,
which describes string conversion to "titlecased
canonicalized UTF-8".
Conversion consists of sequential conversion of string's unicode codepoints to
"titlecase property" (which is normally the same as the
uppercase property according to RFC).
This conversion shouldn't be locale-dependant, so I came up with this fix
(works with PostgreSQL, hasn't been tested with other dbs):
else if ( MATCH(key, "subject") ) {
_append_join(value->table, "subjectfield");
_append_sort(value->order, "UPPER(COALESCE(sortfield, ''))
COLLATE\"C\"", reverse);
(*idx)++;
}
COLLATE "C" is necessary because of locale issues (database could be created
with different locales, and PostgreSQL's sorting depends on the initial locale).
It works fine except that null strings won't sort correctly in reversed order
(they mess with empty strings).
_______________________________________________
Dbmail-dev mailing list
[email protected]
http://mailman.fastxs.nl/cgi-bin/mailman/listinfo/dbmail-dev