Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не устанавливается значение по ключу / 18 сообщений из 18, страница 1 из 1
18.02.2009, 12:29
    #35824351
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Всем привет!
почему в первом варианте эксепт, а во втором все нормально?
s ttt("aaa"_$wc(23167))=""
s ^ttt("aaa"_$wc(23167))=""
...
Рейтинг: 0 / 0
18.02.2009, 12:32
    #35824363
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Небольшие пояснения. Каше 2008 уникодная база.
...
Рейтинг: 0 / 0
18.02.2009, 12:47
    #35824419
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Синтаксис неправильный, вот и не работает (у меня - в обоих случаях). Надо так:
Код: plaintext
1.
2.
USER>s ^ttt("aaa"_$zwc( 23167 ))=""
 
USER>s ttt("aaa"_$zwc( 23167 ))=""
...
Рейтинг: 0 / 0
18.02.2009, 13:36
    #35824573
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
спасибо, так заработало, но вот примерчик без использования $zwc, который вываливается с ошибкой
s ttt("aaaų")=""
у последнего символа ключа код 0x7301
...
Рейтинг: 0 / 0
18.02.2009, 13:39
    #35824590
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Alexey MaslovСинтаксис неправильный, вот и не работает (у меня - в обоих случаях). Надо так:
Код: plaintext
1.
2.
USER>s ^ttt("aaa"_$zwc( 23167 ))=""
 
USER>s ttt("aaa"_$zwc( 23167 ))=""

Для каше 2008 синтаксис правильный, там есть такая функция.
...
Рейтинг: 0 / 0
18.02.2009, 13:42
    #35824600
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
для наглядности вот:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
USER>s t="aaaų" 
USER>zzdump t 
 0000 :  0061   0061   0061   0173                                      aaaų
USER>s ttt(t)="" 
S ttt(t)=""
^
<TRANSLATE>
USER>
...
Рейтинг: 0 / 0
18.02.2009, 13:44
    #35824605
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Кстати, в неюникодной версии каше 2008 вот что:
USER>s ttt("aaa"_$wc(23167))=""

USER>zzdump $o(ttt(""))

0000: 61 61 61 aaa

После aaa нет символов.
...
Рейтинг: 0 / 0
18.02.2009, 14:50
    #35824891
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
ну яПосле aaa нет символовФункция $wc "возвращает символы, соответствующие числовому коду, распознавая суррогатные пары". В неюникодной версии никакие символы числовым кодам > 255 не соответствуют.
Появление $wc (и ее собратьев) для меня было новостью (спасибо, Евгений :). Интересно, зачем их добавили? Подозреваю, что исключительно ради обработки суррогатных пар. Тогда, если не планируется хранить в БД строки в алфавитах Chinese, Japanese kanji, and Korean hanja, оно нам надо?
...
Рейтинг: 0 / 0
18.02.2009, 15:01
    #35824925
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Дано:
Caché 2008.2.1 (Build 902U)
New Global Collation: Cache standard
Локаль своя (на основе rusw).

Работают все вышеперечисленные примеры.

Думаю, дело в настройках текущей локали. Если сделать текущей локаль rusw , то в примерах возникает ошибка <TRANSLATE> . Детали смогу сообщить позже.

PS: функция $wchar появилась в версии 2008.2
...
Рейтинг: 0 / 0
18.02.2009, 15:36
    #35825032
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
servitЕсли сделать текущей локаль ruswТак она ведь по умолчанию в странах СНГ устанавливается... А какую локаль надо, чтобы заработали примеры?
...
Рейтинг: 0 / 0
18.02.2009, 16:52
    #35825272
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Servit, подозреваю, что сортировка по умолчанию в Вашей локали = Cache Standard.
Угадал?
...
Рейтинг: 0 / 0
18.02.2009, 16:53
    #35825275
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
servit , что конкретно нужно изменить в новой локали, чтобы работало со всеми уникодными символами.
...
Рейтинг: 0 / 0
18.02.2009, 17:23
    #35825382
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Alexey Maslov,
Да
...
Рейтинг: 0 / 0
18.02.2009, 18:40
    #35825582
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Leron servit , что конкретно нужно изменить в новой локали, чтобы работало со всеми уникодными символами.
Тест делал так:
1) установил с нуля СУБД с юникодом;
2) выполнил s ttt("aaa"_$wc(23167))="" - возникает ошибка <TRANSLATE> ;
3) поменял в локали rusw таблицу сортировки по умолчанию с "Cyrillic1" на "Cache standard", перезапустил СУБД;
4) выполнил код выше снова - ошибок нет.

PS: еще сразу после установки я меняю в базах "CACHEAUDIT" и "USER" значение параметра "Сортировка новых глобалов" с "Cyrillic1" на "Cache standard" для единообразия (в тесте выше этого не делал).
...
Рейтинг: 0 / 0
19.02.2009, 17:57
    #35828149
Leron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Спасибо всем огромное, заработало.
А смена таблицы сортировки никак не повлияет на производительность? у меня предполагается работа с уникодными текстами (индексирование, поиск)
...
Рейтинг: 0 / 0
20.02.2009, 12:11
    #35829403
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Скорее наоборот, производительность может даже несколько улучшиться, т.к. Cache Standard - встроенная сортировка Cache, а Cyrillic1 (2) - привнесенные с локализацией. Появление ошибок <TRANSLATE> при использовании Cyrillic1 наводит на мысль, что перед сравнением по ]] выполняется неявная трансляция каждого символа строки во внутренний collation code.
...
Рейтинг: 0 / 0
22.05.2009, 06:48
    #36000759
Hisbreht Victor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
servit3) поменял в локали rusw таблицу сортировки по умолчанию с "Cyrillic1" на "Cache standard", перезапустил СУБД;

PS: еще сразу после установки я меняю в базах "CACHEAUDIT" и "USER" значение параметра "Сортировка новых глобалов" с "Cyrillic1" на "Cache standard" для единообразия (в тесте выше этого не делал).
А как это сделать программно, а не через центр управления?
...
Рейтинг: 0 / 0
22.05.2009, 09:07
    #36000880
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не устанавливается значение по ключу
Hisbreht VictorА как это сделать программно, а не через центр управления?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
zn "%SYS"
s db=##class(SYS.Database).%OpenId("USER")
s db.NewGlobalCollation= 5  ;Cache standard
d db.%Save()

s c=##class(Config.NLS.Locales).%OpenId("rusw")
s c.CollationTable="Cache standard"
d c.%Save()
Список локалей можно посмотреть так:
Код: plaintext
1.
2.
3.
4.
5.
s rs=##class(%ResultSet).%New("%Collate:CollationList")
d rs.Execute( 1 )
while rs.Next() {
  w rs.Get("Number")," = ",rs.Get("Name"),!
}
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Не устанавливается значение по ключу / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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