Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Наследование индексов
|
|||
|---|---|---|---|
|
#18+
Доброе время суток. Есть два класса: 1. Class Test.Test Extends %Persistent [ ClassType = persistent, ProcedureBlock ] { Property a As %Boolean; Index Ia On a; } 2. Class Test.Test2 Extends (%Persistent, Test.Test) [ ClassType = persistent, ProcedureBlock ] { Property b As %String; Index Ib On b; } Делаю: USER>s o=##class(Test.Test2).%New() USER>s o.a=1 USER>s o.b="!!!" USER>d o.%Save() Индекс по полю "а" кашей не создан. Создается только в случае переопределения индекса Ia в классе Тест2. Что здесь не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2006, 14:57 |
|
||
|
Наследование индексов
|
|||
|---|---|---|---|
|
#18+
Прогноз погоды ООП в СУБД со своими оссобенностями. Индексы наследуются если наследуемый класс является подмножеством базового класса - то есть храняться в одном месте (глобале). Собсно наследования на самом деле никакого не происходить, базовый класс честно строить индексы для всех своих объектов - просто объекты это не только его получуаються. Это же приводить к еще одному ограничению - в таким образом унаследованных классах (во всех ветвях базового) не должно быть индексов с одинаковыми названиями. На уровне кода - и компилятора - индексы не наследуются. В вашем случаем имеется два класса хранящийся в разных местах (глобалах) и наследующих только общую программную часть (триггеры кстати всё таки наследуются) Для классов хранящийся в одном месте - наследование должно быть следующим: Class Test.Test2 Extends Test.Test В данном случае комплиятор прицепляет структуру хранения Test.Test2 к структуре хранения Test.Test, которая и будет автоматически "наследовать индексы" Ваш же вариант: Class Test.Test2 Extends (%Persistent, Test.Test) Если первым стоить %Persistent то компилятор формирует новую структуру хранения на основе имени класса Test.Test2. Если вам нужно хранить таблицы раздельно - то выход можно найти в создании в базовом Test.Test метода-генератора, который в момент компиляции будет вставлять необходимый индекс. Либо руками переопределять . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 12:23 |
|
||
|
Наследование индексов
|
|||
|---|---|---|---|
|
#18+
Большое спасибо, за развернутый ответ. Дейсвительно, такое наследование классом Тест2 использую для хранения данных в разных глобалах. Будем икать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2006, 15:21 |
|
||
|
Наследование индексов
|
|||
|---|---|---|---|
|
#18+
а нафига, позволю себе полюбопытствовать, сначала определяете %Persistent и только потом Test.Test ? какой то скрытый смысл или по незнанию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 11:37 |
|
||
|
Наследование индексов
|
|||
|---|---|---|---|
|
#18+
u78а нафига, позволю себе полюбопытствовать, сначала определяете %Persistent и только потом Test.Test ? какой то скрытый смысл или по незнанию? Очевидно что бы воспользоваться оссобеностями ОПП в Cach'e и никакого скрытого смысла. PS: посмотрите наследование триггеров например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2006, 17:09 |
|
||
|
|

start [/forum/search_topic.php?author=Dzhakipov&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
10ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 436ms |
| total: | 600ms |

| 0 / 0 |
