powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как получить информацию об индексах?
21 сообщений из 21, страница 1 из 1
Как получить информацию об индексах?
    #34783175
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поспрошаю умных людей...

Как получить информацию об индексах? Т.е. есть имя класса - нужно получить список индексов...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783416
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaПоспрошаю умных людей...

Как получить информацию об индексах? Т.е. есть имя класса - нужно получить список индексов...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Думаю, надо пробежаться по метаданным класса и узнать у каких свойств стоит тип INDEX
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783453
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set cdef=##class(%ClassDefinition).%OpenId("classname")
For i=1:1:cdef.Indices.Count() {w cdef.Indices.GetAt(i) }

тут еще можно просмотреть %Library.IndexDefinition

For i=1:1:cdef.Properties.Count() { w cdef.Properties.GetAt(i).Type, !}
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783457
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это и я понял! Вопрос как? Вот так не желает...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 s ocls=##class(%Dictionary.ClassDefinition).%OpenId(ClsName)
 s o=##class(%ResultSet).%New("%DynamicQuery:SQL")
 s sql="Select * From %Dictionary.IndexDefinition Where parent=?"
 s ok=o.Prepare(sql)
 w !,ok
 s ok=o.Execute(ocls.%Id())
 while o.Next() {
	w !,o.Get("Description")
 }
 d o.Close()
 d ocls.%Close()
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783464
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRover , спасибо!

А как потом работать со свойствами индекса? Например узнать дескрипшен и по каким свойствам класса он (индекс) создавался
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783470
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LenRoverSet cdef=##class(%ClassDefinition).%OpenId("classname")
For i=1:1:cdef.Indices.Count() {w cdef.Indices.GetAt(i) }

тут еще можно просмотреть %Library.IndexDefinition

For i=1:1:cdef.Properties.Count() { w cdef.Properties.GetAt(i).Type, !}

вот названия индексов

For i=1:1:cdef.Indices.Count() {w cdef.Indices.GetAt(i).Name }
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783477
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясненько! Благодарю.
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783514
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А SQLно никак?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783528
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот мне нравится через глобалы.
Кстати, как-то делал классы с маппингом на глобалы классов ;-)
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783542
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не-е-е... Через глобалы точно не стану информацию брать. Только "классово" или SQL. Лично для меня SQL предпочтительнее...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783564
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
даже не знаю... никогда не сталкивалась с необходимостью работы с метаданными через sql.
Можно в принципе создать метод в классе типа
ClassMethod cPut(Name As %String) As %Boolean [ SqlProc ],
в который подавать название колонки, а далее средствами COSa вернуть true или flase (является ли индексом или нет).

а в запросе, чтобы запустить метод:
where ISS.forSql_cPut(cPut)=1

где ISS.forSql - класс где лежит метод
а cPut - название метода..


не уверена, что вам это поможет.. но вдруг окажется полезным.
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783586
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Не-е-е... Через глобалы точно не стану информацию брать.
Измена? М-щик не хочет брать данные из глобала?

Сделайте маппинг, правда все равно ковырять глобалы придется. Но не вижу проблемы.
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783600
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.>Не-е-е... Через глобалы точно не стану информацию брать.
Измена? М-щик не хочет брать данные из глобала?

Сделайте маппинг, правда все равно ковырять глобалы придется. Но не вижу проблемы.

Совсем необязательно через глобалы. Достаточно средствамми COS - %ClassDefinition
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783633
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Совсем необязательно через глобалы. Достаточно средствамми COS - %ClassDefinition
И правда. Раньше не знал. Вот так приходится изобретать велосипед...
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783643
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знал, что они поддерживают SQL.
А в каше 4 поддерживало?
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783657
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaА SQLно никак?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Никак.... если только не выгрузить DDL и разобрать его
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783675
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SELECT *
FROM %Dictionary.CompiledIndex
?
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783746
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Измена? М-щик не хочет брать данные из глобала?
Скорее настороженость/опасение Сегодня у них так... Потом вот эндак... Зачем рисковать?

Про SQL понял... Спасибо.
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34783995
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если индекс делается по нескольким свойствам (это возможно?), то как имена свойств будут храниться в ocls.Indices.GetAt(i).Properties?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34784041
LenRover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaЕсли индекс делается по нескольким свойствам (это возможно?), то как имена свойств будут храниться в ocls.Indices.GetAt(i).Properties?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Да, это возможно. В этом случае индекс прописывается в виде
Index IndProp On (Prop1, Prop2);

и чтобы получить их имена:

EZH>Set cdef=##class(%ClassDefinition).%OpenId("test.class")
EZH>For i=1:1:cdef.Indices.Count() {w cdef.Indices.GetAt(i).Properties, ! }
Name
Prop1,Prop2

то есть, они просто через запятую выводятся
...
Рейтинг: 0 / 0
Как получить информацию об индексах?
    #34784052
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LenRoverто есть, они просто через запятую выводятся
Ясненько... Спасибо большее! -<-@
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как получить информацию об индексах?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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