|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
То что из таблицы можно дропнуть поле, к которому обращается хранимая процедура в пакете как-то непривычно... Оно так и задумано или это "детская болезнь" которая будет вылечена? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 13:05 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
shaposhОно так и задумано или это "детская болезнь" которая будет вылечена? Пакеты делал Адриано так, чтобы было как в Оракуле. Так что именно так оно и задумано. Пакет у него инвалидируется. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 13:17 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
shaposh, что-то не заметил Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: sql 1.
This operation is not defined for system tables. unsuccessful metadata update. cannot delete. COLUMN T2.B. there are 1 dependencies. Может покажешь воспроизводимый пример? P.S. FB 3.0.0.32060 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 13:21 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, инвалидируется он только если ты заголовок пакета поменял, а тело нет. Когда объявление процедур/функций в заголовке и шапке и теле не совпадают по параметрам. Ибо заголовок и тело пакета создаются разными статментами ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 13:23 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Не воспроизводится для контрольного примера... Вся проблема в том, что ситуация с невалидным пакетом все-таки была изначально какой то последовательностью действий. До того момента как не воспроизведу эту последовательность вопрос, разумеется, снят ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2015, 15:15 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов Денисинвалидируется он только если ты заголовок пакета поменял, а тело нет . Когда объявление процедур/функций в заголовке и шапке и теле не совпадают по параметрам. Вот эти две фразы немного завихряют мой бедный моцг: 1) из синенькой фразы следует, что при любом изменении заголовка пакета, даже при пересохранении того же самого заголовка через alter, тело пакета должно стать инвалидным; 2) а из красненькой фразы следует, что тело пакета будет инвалидным, если ранее объявленные ХП/функции стали расходиться в заголовке и теле по списку/типам параметров. В общем, я поизгалялся слегка, и получилось вот что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47.
Output: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
А теперь, граждане, смотрим внимательно: между парами маркеров [1:begin] ...[1:end] и [2:begin]...[2:end] - один и тот же код заголовка пакета. Я ничего в нём не менял, но его тело после этого сталп инвалидным. В нашей доке, на стр. 186, сказано:ALTER PACKAGEОператор ALTER PACKAGE изменяет заголовок пакета. Позволяется изменять количество и состав процедур и функций, их входных и выходных параметров. При этом исходный код тела пакета сохраняется. Состояние соответствия тела пакета его заголовку отображается в столбце RDB$PACKAGES.RDB$VALID_BODY_FLAG Увы, но про смену rdb$valid_body_flag с 1 на 0 даже при "холостой" перекомпиляции заголовка я не вижу ничего. В doc\sql.extensions\README.packages.txt про возможность удаления объектов, от которых зависит заголовок, сказано так, что я НХНП, к чему относится выделенное ниже красно-жырным местоимение 'it': к телу пакета или к "тому объекту", который можно дропать, невзирая на зависимость от него этого тела ? Вот цитата:doc\sql.extensions\README.packages.txtWhen a packaged routine uses a determined database object, it's registered on Firebird system tables that the package body depends on that object . If you want to, for example, drop that object , you first need to remove who depends on it. As who depends on it is a package body, you can just drop it even if some other database object depends on this package. When the body is dropped, the header remains, allowing you to create its body again after changing it based on the object removal. PS. Кажется странным, что после дропания таблицы можно глядеть спокойненько в show package и там в ЗАГОЛОВКЕ пакета выводится ссылка на неё. Почему тогда заголовок пакета тоже не маркируется как инвалидный ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 20:42 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Таблоидпро возможность удаления объектов, от которых зависит заголовоктьфу, не заголовок, а тело пакета, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 20:44 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
ТаблоидА теперь, граждане, смотрим внимательно: между парами маркеров [1:begin] ...[1:end] и [2:begin]...[2:end] - один и тот же код заголовка пакета. Я ничего в нём не менял, но его тело после этого сталп инвалидным. ... Увы, но про смену rdb$valid_body_flag с 1 на 0 даже при "холостой" перекомпиляции заголовка я не вижу ничего. ИМХО, это косяк реализации, такого быть не должно. Адриано судя по всему считает, что если ты сделал ALTER PACKAGE то уж точно что-то там поменял и должен тут же пересоздать тело пакета. Впрочем данный флаг ни на что не влияет, хотя мог бы использоваться в IBE для индикации инвалидных пакетов. ТаблоидPS. Кажется странным, что после дропания таблицы можно глядеть спокойненько в show package и там в ЗАГОЛОВКЕ пакета выводится ссылка на неё. Почему тогда заголовок пакета тоже не маркируется как инвалидный ? Ты это проверял? По идее если есть ссылка на таблицу в заголовке, то удалить её нельзя. Если это не так, то я склонен считать это багом. А вот если зависимость только в теле, то наверное допустимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:18 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов Денисданный флаг ни на что не влияетКак это "не влияет" ? именно из-за этого флага (когда RDB$VALID_BODY_FLAG стал = 0) я и смог дропнуть таблицу. Симонов ДенисТаблоидPS. Кажется странным, что после дропания таблицы можно глядеть спокойненько в show package и там в ЗАГОЛОВКЕ пакета выводится ссылка на неё. Почему тогда заголовок пакета тоже не маркируется как инвалидный ?Ты это проверял?гы... а что, по-твоему, руками текст output'a сюда вбивал ? давай, делай уже копипаст к себе и пробуй тоже :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:32 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Таблоид, вторую половину не заметил. В общем по мне так это бага. Заголовок - это интерфейс. Интерфейс не в коем случае не должен ссылаться на несуществующие объекты, примерно так же как и для обычных процедур/функций. Уж не знаю какие соображение по этому поводу у Адриано. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:38 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов ДенисУж не знаю какие соображение по этому поводу у Адриано. "Сделать как в Оракуле." Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:46 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Таблоид, 1. такое ощущение что проверка валидации тела сильно упрощена. Т.е. она делается при создании/пересоздании тела пакета. А при любом изменении заголовка тупо сбрасывается в 0, даже если реального изменения не было. По хорошему полная валидация должна делаться не только при изменении создании/пересоздании тела, но и при изменении заголовка. Хотя это не так страшно. Кстати это хороших повод взять за правило сразу после изменения заголовка тут же менять и тело. 2. То что можно удалить объект на который имеется ссылка в заголовке это баг. То что можно удалить объект на который имеется ссылка в теле инвалидного пакета, но не имеется в заголовке это нормально. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:50 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСимонов ДенисУж не знаю какие соображение по этому поводу у Адриано. "Сделать как в Оракуле." ну тогда уж по полной делать надо с переменными пакета. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:53 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов Денисну тогда уж по полной делать надо с переменными пакета. Он решил ограничиться введением инвалидных объектов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 21:56 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов ДенисТо что можно удалить объект на который имеется ссылка в заголовке это баг.Ну, значит так тому и быть. Пущай фиксит . ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 22:00 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ну тогда это поведение не совсем последовательное. Ибо см. мой пример 18272295 Там почему, то пакет инвалидным не становится и дропать зависимые объекты не позволяет. А стоит только сделать тело инвалидным - пожалуйста, даже если в заголовке зависимость осталась. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 22:04 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов Денисну тогда это поведение не совсем последовательное. А когда это Адриано действовал последовательно? Не его это стиль... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 22:06 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Таблоид, Замечание по поводу изменения заголовка. Сравнением текста предыдущего и нового заголовка это не решить. По мне так добавление комментариев, изменения форматирования и др. это не те изменения заголовка которые должны приводить к инвалидации тела пакета. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 22:11 |
|
Зависимости в пакетах Firebird 3
|
|||
---|---|---|---|
#18+
Симонов Денисдобавление комментариев, изменения форматирования и др. это не те изменения заголовка которые должны приводить к инвалидации тела пакета.+1 А добавь эту мысль в тикет, плз. Пусть там "кое-кто" знает, что нас тут не один, а уже несколько таких придирчивых :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.10.2015, 22:21 |
|
|
start [/forum/topic.php?fid=40&msg=39084165&tid=1562568]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
37ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 151ms |
0 / 0 |