there are 1 dependencies

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
sydenis
Сообщения: 64
Зарегистрирован: 22 фев 2005, 16:09

there are 1 dependencies

Сообщение sydenis » 25 июн 2007, 13:38

В чём может быть проблема (FB2.0.1):
Есть таблица TAB1 с полем old_id, есть ХП PROC1 которая это поле юзает.
С клиента (fibplus) поочерёдно посылаем
drop procedure proc1;
commit;
alter table tab1 drop old_id;
commit;
первый комит проходит нормально, второй выдаёт:
This operation is not defined for system tables. unsuccessful metadata update. cannot delete.COLUMN OLD_ID. there are 1 dependencies.
Он не проходит даже после рестарта FB. Если посмотреть зависимости через IBE, то он указывает как раз на несуществующую PROC1...
Можно конечно пробовать вручную чистить системные таблицы, но наверно это не здорово. Спасает тока b/r.
Надо сказать, что перед этим в базе идёт большое измение метаданных, но TAB1 оно не касается - она только создаётся.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 25 июн 2007, 15:57

Чего-то ты недоговариваешь.
Если сделать не дроп, а скажем, альтер пустым телом, зависимости остаются?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 25 июн 2007, 17:01

Была такая бага на IB4, не всегда, требовался какой-то дополнителный эффект. Мож зацепили чего.

sydenis
Сообщения: 64
Зарегистрирован: 22 фев 2005, 16:09

Сообщение sydenis » 25 июн 2007, 18:41

в общем-то сейчас это не сильно напрягает - просто странно...
а насчёт "недоговариваешь" - дык скажи об чём - я договорю :))
"альтер пустым телом" - как дожен выглядеть?

вот нашёл в RDB$DEPENDENCIES запись
RDB$DEPENDENT_NAME = 'PROC1',
RDB$DEPENDED_ON_NAME = 'TAB1',
RDB$FIELD_NAME = 'OLD_ID',
хотя proc1 давно в базе нет

если её вручную потереть - большие грабли не всплывут?
Последний раз редактировалось sydenis 25 июн 2007, 19:15, всего редактировалось 1 раз.

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 25 июн 2007, 18:47

Если в том, что её нет, уверен апаслютна (а не глядишь в разных окнах иксперта в разные базы, например), то никаких.

sydenis
Сообщения: 64
Зарегистрирован: 22 фев 2005, 16:09

Сообщение sydenis » 25 июн 2007, 21:54

дело, видимо, в клиенте (который fibplus).
Попробовал после удаления процедуры переоткрыть БД
db.Close;
db.Open;
и стало всё проходить нормально, хотя раньше old_id не удавалось удалить даже много позже, после рестарта FB или из другого клиента (IBE)..
такая вот удивительная история...

Ответить