Перекомпиляция процедур и триггеров (постановка)
Материал из GedeminWiki
(Различия между версиями)
SYSDBA (обсуждение | вклад) |
SYSDBA (обсуждение | вклад) |
||
| Строка 1: | Строка 1: | ||
| − | + | Предлагается добавить в Гедымин возможность перекомпиляции процедур и триггеров на существующих базах данных. | |
# Сделать три процедуры для обновления статистики индексов, рекомпиляции триггеров и хранимых процедур, с именами UpdateIndicesStat, RecompileTriggers и RecompileProcedures, соответственно. На вход каждой процедуры передается ссылка на компонент типа [[TIBDatabase]] -- текущее подключение к базе данных. | # Сделать три процедуры для обновления статистики индексов, рекомпиляции триггеров и хранимых процедур, с именами UpdateIndicesStat, RecompileTriggers и RecompileProcedures, соответственно. На вход каждой процедуры передается ссылка на компонент типа [[TIBDatabase]] -- текущее подключение к базе данных. | ||
| Строка 12: | Строка 12: | ||
Если получится, сделать перекомпиляцию представлений. Тогда порядок должен быть такой: индексы, представления, процедуры, триггеры. | Если получится, сделать перекомпиляцию представлений. Тогда порядок должен быть такой: индексы, представления, процедуры, триггеры. | ||
| − | [[Category:Постановка]] | + | [[Category:Постановка-Сделано]] |
Текущая версия на 18:51, 10 апреля 2011
Предлагается добавить в Гедымин возможность перекомпиляции процедур и триггеров на существующих базах данных.
- Сделать три процедуры для обновления статистики индексов, рекомпиляции триггеров и хранимых процедур, с именами UpdateIndicesStat, RecompileTriggers и RecompileProcedures, соответственно. На вход каждой процедуры передается ссылка на компонент типа TIBDatabase -- текущее подключение к базе данных.
- Поместить вышеуказанные процедуры в отдельный юнит с именем gdUpdateIndiceStat.pas, расположенный в папке Common проекта Гедымин. Данный юнит не должен подключать никаких других юнитов за исключением стандартных библиотек Delphi и компонентов IBX. Информация о структуре БД должна получаться запросами из RDB$ таблиц.
- Проверить:
- что процедуры работы с триггерами и процедурами берут наименования мета-объектов в двойные кавычки. Убедиться что все правильно работает, добавив в базу данных хотя бы по одному триггеру и процедуре с пробелом в имени и с именем, содержащим символы разного регистра, и выполнив процедуры перекомпиляции.
- что после перекомпиляции триггера не меняется его позиция и состояние (активен, не активен).
- что после перекомпиляции процедуры не меняется порядок входящих и исходящих параметров, а также их написание.
- Оставить только один пункт меню "Обновление статистики индексов" в главном окне программы. В нем сделать вызов трех процедур: обновление статистики индексов, перекомпиляция процедур и триггеров (именно в таком порядке). Убедиться, что при выполнении действия из главной формы проверяется количество подключенных пользователей к БД.
- В диалоговое окно восстановление базы данных из архива добавить чек-бокс "Перекомпилировать процедуры" (там как раз есть одно свободное место). По умолчанию он должен быть включен. По этому чек-боксу вызывать процедуры перекомпиляции процедур и триггеров после восстановления БД из архива, в самом конце, после перестроения интервальных деревьев. После добавления чек-бокса проверить таб-ордер в диалоговом окне!
Если получится, сделать перекомпиляцию представлений. Тогда порядок должен быть такой: индексы, представления, процедуры, триггеры.