Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления? / 25 сообщений из 44, страница 1 из 2
09.09.2010, 19:18
    #36838792
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
При сортировке используется не совсем верный порядок латышских букв, даже при использовании соответствующего COLLATE WIN1257_LV. 4 буквы из используемых не различают наличие акцентированных букв. Это поведение задокументировано в Collation chart for WIN1257.WIN1257_LV (Firebird 2.0.3) , но не является правильным.

Подскажите можно ли внести исправления самостоятельно и что для этого нужно сделать (если скомпилять свою fbintl, то где её взять)?

п.с. параллельно этому посту зарегистрирую баг в firebird issue-tracker-e
...
Рейтинг: 0 / 0
09.09.2010, 19:33
    #36838812
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Hello, debose!
You wrote on Thu, 09 Sep 10 16:18:32 GMT:

debose d> п.с. параллельно этому посту зарегистрирую баг в firebird issue-tracker-e
2.0.Х специально из-за этого вряд ли кто станет ковырять,
(имхо)

обновить версию не хочешь?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.09.2010, 19:40
    #36838821
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Мимопроходящий, так на последней и тестирую. Баг проявляется в 2.5.

Просто Collation Chart нашёлся только для 2.0.3 версии, вот на него и дал ссылку. Насколько я понимаю с тех пор там ничего особо не изменилось по части латышского.
...
Рейтинг: 0 / 0
09.09.2010, 22:11
    #36838981
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
а мне вот интересно, почему все остальные латышские пользователи этого коллейта работают и не жалуются...
...
Рейтинг: 0 / 0
09.09.2010, 23:58
    #36839089
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitr> а мне вот интересно, почему все остальные латышские пользователи этого коллейта работают и не жалуются...

Тупо не пользуют акцентированные символы?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10.09.2010, 00:01
    #36839092
oleg_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitrа мне вот интересно, почему все остальные латышские пользователи этого коллейта работают и не жалуются... если есть сомнения - можно ведь спросить Яниса. Да и у нас в фирме есть носители языка - могу уточнить.
...
Рейтинг: 0 / 0
10.09.2010, 07:46
    #36839324
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Гаджимурадов РустамТупо не пользуют акцентированные символы?
не верю (с)

oleg_mмогу уточнить
сделай, плиз

Дело в том, что этот коллейт делался (в яффиле, ЕМНИП) как раз по заказу латышей. Так что странно слышать претензии много лет спустя.
...
Рейтинг: 0 / 0
10.09.2010, 08:28
    #36839350
oleg_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitroleg_mмогу уточнить
сделай, плиз

Дело в том, что этот коллейт делался (в яффиле, ЕМНИП) как раз по заказу латышей. Так что странно слышать претензии много лет спустя.
а спросить-то что? :-)
CORE-3131 ?
Вопрос звучит так, если я правильно перевел:
"диакретики должны обязательно идти после простых букв, а не вперемешку, (как сейчас делает FB)"

btw, гугл в первом десятке выдал
© Текст: Доктор наук Инна Друвиете, Латвийский Университет; Доктор наук Байба Кангаре, Стокгольмский Университет; Институт Латвии, 2001 г.


вроде как верно говорит - все диакретики после простых букв. ну так вроде здесь так и есть...

debose - покажите, как выглядит запрос, в котором диакретики не отсортированы. (Collate в сортировке указан?) К записи в трекере полезно прилагать скрипт, воспроизводящий ситуацию.
...
Рейтинг: 0 / 0
10.09.2010, 08:57
    #36839377
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
фраза в тикете, что основные буквы и диакретики идут вперемешку (не отсортированы) не корректна. На самом деле, вопрос стоит по-другому. Сейчас последовательность сортировки такая: a, A, a', A', b, B. В тикете же требуется так: a, a', A, A', b, B (ну или наоборот, от заглавных к строчным), т.е. чтобы в сортировке не перемежались заглавные и строчные буквы разной диакретичности. Я таких требований в ссылке на алфавит никак не наблюдаю.
...
Рейтинг: 0 / 0
10.09.2010, 09:12
    #36839393
oleg_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitr, ок, спрошу, как они в офисе появятся.

Не поленился, и скопировал все "их закорючки" (по-доброму, конечно ) по буквам a и e -
в Excel, и отсортировал в прямом и обратном порядке.

Excel с тобой (и с FB) - согласен.
...
Рейтинг: 0 / 0
10.09.2010, 09:53
    #36839462
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Привет всем.
Правильно так - диакритики идут после простых букв,
например (незнаю выдно ли всем будет шрифт):

АААА
аааа
āāāā
BBBB
bbbb
CCCC
cccc
čččč

В FB вроде всё правильно на мои взгляд
...
Рейтинг: 0 / 0
10.09.2010, 10:23
    #36839529
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Janex,

под твой пример подходят оба оспариваемых варианта :-) Добавь в него "долгое а" заглавное и "мягкое че" заглавное.
...
Рейтинг: 0 / 0
10.09.2010, 10:52
    #36839629
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
И так:
вот как сортирует excel:

aa
AA
āā
ĀĀ
cc
CC
čč
ČČ

То что диакретики идут сразу после простых букв, ето правильно, НО неправильно по
регистру - сперва должны идти большие буквы. Можбить и чтото в самом excell-е в какихто
настроиках ето можно указать, не в курсе ...

Правилпно будет так:

AA
ĀĀ
aa
āā
CC
ČČ
cc
čč

Тоесть правильно так как написано в CORE-3131:
http://tracker.firebirdsql.org/browse/CORE-3131

Наверно ошибся нашёт правильнои сортировки в FB, наверно тогда
неправильно, непроверял, правильно на 100% ето как в CORE-3131 написано.
...
Рейтинг: 0 / 0
10.09.2010, 11:44
    #36839811
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitr
Дело в том, что этот коллейт делался (в яффиле, ЕМНИП) как раз по заказу латышей. Так что странно слышать претензии много лет спустя.

Лично мы долгое время сидели на FB 1.5, а там вместо латышской кодовой страницы использовалась турецкая и танцы с бубном. Подробности того, почему это работало сейчас выяснить будет затруднительно.

Не так давно перешли на WIN1257 и столкнулись с описанной проблемой.

oleg_m
Вопрос звучит так, если я правильно перевел:
"диакретики должны обязательно идти после простых букв, а не вперемешку, (как сейчас делает FB)"

Именно.

CORE-3131 - это и есть мой вчерашний кейс.

oleg_mbtw, гугл в первом десятке выдал
© Текст: Доктор наук Инна Друвиете, Латвийский Университет; Доктор наук Байба Кангаре, Стокгольмский Университет; Институт Латвии, 2001 г.

вроде как верно говорит - все диакретики после простых букв. ну так вроде здесь так и есть...


oleg_mdebose - покажите, как выглядит запрос, в котором диакретики не отсортированы. (Collate в сортировке указан?) К записи в трекере полезно прилагать скрипт, воспроизводящий ситуацию.

Скрипт приложу чуть позже. По нему станет понятно, почему некоторые примеры сейчас работают у всех, а некоторые нет.

dimitrфраза в тикете, что основные буквы и диакретики идут вперемешку (не отсортированы) не корректна. На самом деле, вопрос стоит по-другому. Сейчас последовательность сортировки такая: a, A, a', A', b, B. В тикете же требуется так: a, a', A, A', b, B (ну или наоборот, от заглавных к строчным), т.е. чтобы в сортировке не перемежались заглавные и строчные буквы разной диакретичности. Я таких требований в ссылке на алфавит никак не наблюдаю.

Формулировка действительно кривовата (раз допускается неоднозначная трактовка). Вообще, я не рассматривал ситуацию чередования заглавных и строчных букв в сортировке. Основная проблема в том, что буквы с диакретическими знаками должны следовать после аналогичных букв без этих знаков. Строчные и заглавные буквы были приведены для иллюстрации.
...
Рейтинг: 0 / 0
10.09.2010, 11:45
    #36839814
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
JanexВ FB вроде всё правильно на мои взгляд
В FB всё может выглядеть правильным, до тех пор пока тестовый пример состоит из одинаковых символов.

Проблемы начнутся, с такой последовательностью:
FBaa
āb
ac


Если отсортировать в FB, то получится так как приведено в примере.

А должно быть так:
Excelaa
ac
āb


Аналогичные проблемы и с буквами E I U.
...
Рейтинг: 0 / 0
10.09.2010, 12:03
    #36839872
oleg_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitrСейчас последовательность сортировки такая: a, A, a', A', b, B. В тикете же требуется так: a, a', A, A', b, B (ну или наоборот, от заглавных к строчным)

в общем, хз. с первой попытки она подтвердила слова Яниса, но потом начала сомневаться :-)
может поэтому - раньше никто и не жаловался?

[11:43:23] Oleg Matveyev: вопрос такой: как правильно сортировать список если в нем есть и заглавные/строчные и диакрит ?
[11:43:41] Oleg Matveyev: например
[11:44:02] Oleg Matveyev: так a, A, a', A'
[11:44:12] Oleg Matveyev: или так a, a', A, A'
[11:46:54] Vita: второй вариант
[11:47:01] Oleg Matveyev: спасибо!
[11:47:11] Vita: да не за что (sun)
[11:48:05] Vita: первый вариант тоже будет правильно - главное чтобы длинные буквы стояли за короткими
[11:49:05] Oleg Matveyev: а как же так?
[11:49:14] Oleg Matveyev: нет однозначного толкования?
[11:50:53] Vita: если честно - никогда не обращала внимания на это. но различия между большой буквой и маленькой же нет

Жирным выделил я.

Говорит носитель языка, письма (на латышском) в компании именно она пишет. Что впрочем, не гарантирует ее стопроцентную грамотность.
...
Рейтинг: 0 / 0
10.09.2010, 12:33
    #36839984
Janex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
У меня в родне имеются предподователи, попытаюсь наидти какуюто
толковую по латышкому языку.
Если наиду, дам знать :)
...
Рейтинг: 0 / 0
10.09.2010, 12:39
    #36840012
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Hello, Janex!
You wrote on Fri, 10 Sep 10 09:33:35 GMT:

Janex J> У меня в родне имеются предподователи, попытаюсь наидти какуюто
J> толковую по латышкому языку.
J> Если наиду, дам знать :)Janex, а может есть какие-то стандарты на эту тему?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10.09.2010, 13:00
    #36840087
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Ребят, мне кажется мы отошли от темы. Вопрос не в том, как правильно сортировать заглавные и строчные буквы - в это плане ситуация едва ли отличается от английского языка.

Проблема в том, что некоторые буквы с диакритическими знаками перемешиваются с буквами без этих знаков.

А вопрос топика был следующий: можно ли это как-то исправить своими силами?
...
Рейтинг: 0 / 0
10.09.2010, 13:03
    #36840097
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
debose
А вопрос топика был следующий: можно ли это как-то исправить своими силами?

Насколько я понимаю, достаточно внести изменения в src/intl/collations/win1257_lv.h и
пересобрать птицу.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
10.09.2010, 13:03
    #36840098
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Кстати, эта проблема была характерна не только для Firebird.
...
Рейтинг: 0 / 0
10.09.2010, 13:14
    #36840150
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
Dimitry Sibiryakov
debose
А вопрос топика был следующий: можно ли это как-то исправить своими силами?

Насколько я понимаю, достаточно внести изменения в src/intl/collations/win1257_lv.h и
пересобрать птицу.


Dimitry Sibiryakov, спасибо. Не подскажете, пересобирать придётся всю птицу, или там есть возможность пересобрать только fbintl?
Буду курить исходники пытаясь понять что там к чему и надеясь, что кто-нибудь из разработчиков внемлет отчёту CORE-3131 и решит эту проблему.
...
Рейтинг: 0 / 0
10.09.2010, 13:19
    #36840165
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
насчет вопроса строчная/заглавная - это все фигня. Кто идет первой - вопрос вкуса. Главное, чтобы не было вот такой ерунды: A->B->C->a->b->c. У нас во всех коллейтах первой из пары идет строчная буква, нехай оно так и остается.

кстати, я был неточен насчет нашего порядка сортировки. Диакритик идет за базовым знаком только при полном совпадении строк в их accent-insensitive форме. Иначе все становится веселее: "abc" -> "ābc" -> "acd".

ради интереса посмотрел на другие таблицы на том же сайте collation charts. Наш вариант совпадает с MSSQL (откуда он и был списан яффилом, насколько я помню). Причем locale для старых виндов (до висты) тоже аналогичен (откуда и был предположительно скопирован в MSSQL). Начиная с висты винды считают диакритики (причем не все, а только долготу и мягкость - верхние дефис и "крышечку") отдельным символом. Аналогично считает оракл. Кто тут прав - хрен разберешь :-)

но даже если считать диакритики отдельными, то сортироваться они все равно будут по-экселевскому: a -> A -> ā -> Ā. Разница будет лишь в вышеприведенном примере: "abc" -> "acd" -> "ābc". Т.е. не будет диакритиков вперемешку с базовыми символами. Но надо ли автору именно это, я не знаю.

как добиться варианта от Janex - вопрос интересный. Для этого вес регистра надо делать выше веса акцента. А это, насколько я в курсе, противоречит дизайну многуровневых коллейтов. В том же юникоде четко описано, что 2-й уровень это акцент, а 3-й - регистр. К тому же я пока не увидел ни одного продукта, чей порядок сортировки соответствовал бы требуемому. Так что склонен проявить упрямство :-)
...
Рейтинг: 0 / 0
10.09.2010, 13:23
    #36840181
dimitr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
debose,

если я угадал в своем предпоследнем абзаце выше - то сделаю так без проблем. Но в официальный 2.5.0 это уже не попадет, только в 2.5.1 или в снапшоты.
...
Рейтинг: 0 / 0
10.09.2010, 13:26
    #36840186
debose
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления?
dimitr
ради интереса посмотрел на другие таблицы на том же сайте collation charts. Наш вариант совпадает с MSSQL (откуда он и был списан яффилом, насколько я помню). Причем locale для старых виндов (до висты) тоже аналогичен (откуда и был предположительно скопирован в MSSQL). Начиная с висты винды считают диакритики (причем не все, а только долготу и мягкость - верхние дефис и "крышечку") отдельным символом. Аналогично считает оракл. Кто тут прав - хрен разберешь :-)


Я чуть выше приводил ссылочку , где описывалась история аналогичного бага в MS SQL 2005, и пару примеров иллюстрирующих суть проблемы. А порядок сортировки заглавных и строчных букв, пусть остаётся таким же как был - а то клиенты ещё и за это съедят.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка с COLLATE WIN1257_LV, что можно сделать для исправления? / 25 сообщений из 44, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]