|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Обновил на днях IBExpert на машине, где обновляются базы. И сразу наткнулся на следующие проблемы: 1. Папка Objects to alter. Раздел процедуры. Не нашел, как обновить выбранную ХП. в контекстном меню ничего нет, двойной клик не работает. 2. Тот же раздел. Тупой копипаст нового текста не отрабатывает, так как генерируется скрипт CREATE PROCEDURE, а должно быть CREATE OR ALTER. 3. Двойной клик на имени процедуры в скрипте не работает. Это очень неудобно. 4. Выбираю измененную таблицы. Посмотрел я на различия. Согласен с ними. И хочу получить скрипт, который применит эти изменения. Но такой кнопки нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 04:28 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
А никто вот этого всего и не обещал, и не собирался делать. Компарер, как и прежде, генерирует ОДИН скрипт для полной синхронизации метаданных. Остальное исключительно для визуализации того, что и где изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 06:17 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Пункт 2 можно сделать? Кстати, новый компарер стал делать огромные портянки скриптов - с кучей альтер ХП, триггеров и прочее в начале. И самое неприятное, я не могу понять, из-за чего. Раньше было очевидно - если куча изменений ХП и триггеров, значит, надо сделать смотреть изменения доменов, сделать несколько альтеров доменов вручную и во втором заходе скрипт превращается из сотен манипуляций с таблицами, ХП и триггерами в десяток. Сейчас же не написано, что вызывает альтер, и разбираться в пухлом скрипте просто невозможно. Что надо сделать, чтобы вы исправили это? Пример: Код: sql 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.
И пошла портянка ALTER TRIGGER и ALTER PROCEDURE на двадцать экранов. Что вызвало это, я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:30 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Ничего не нужно делать. Я не буду исправлять несуществующие проблемы. Не нравится генерируемый скрипт - делай все ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:39 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertЯ не буду исправлять несуществующие проблемы. Это такая тонкая шутка от разработчика? Я вам в предыдущем посте описал про существующую проблему. Распишу еще подробнее. Берем раздел Objects to alter. Процедур там - 18 . Открываю Update Script. Там 89 ХП. Уже интересно. Смотрю список. Там зачищается и восстанавливается ХП "CHK$DOC$HOUSE$CHANGE_UNIT". Зависимостей от нее в базе нет. Внимание вопрос: зачем она зачищается? Я согласен это сделать, но напишите, зачем. Вдруг я проглядел что или другой разработчик поменял что-то? Другой пример. Есть база, в которую надо применить изменения, но не все. Часть ХП и триггеров оставить неизменными. Вот вижу изменен триггер. Смотрю что поменялось - это очень удобно. С изменениями согласен. Думаю, зачем я буду сейчас выполнять скрипт, я прямо сейчас его поменяю. А поменять - никак. Надо в эксплорере искать триггер по названию, и вносить туда правку. Когда было бы гораздо проще кликнуть на триггер в дереве и он открывается. Или прямо в редакторе поменять текст и скомпилировать, это было бы самое то. Не хватает кнопок "Следующая разница" и "Предыдущая разница". Кликаю ХП, открывается дифф. Текста на 30 кб. И сижу, листаю экраны, в поисках изменения, которое в самом конце. Мелкий недостаток. Создание уникального ключа. Здесь лишний пробел перед двоеточием: Код: sql 1.
Александр, новый вьювер расхождений мне понравился. Но вот эти мелочи делают его просто неудобным для работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:25 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxЭто такая тонкая шутка от разработчика? Я вам в предыдущем посте описал про существующую проблему. Нет там описания проблемы. Есть жалоба на то, что скрипт большой, и непонимание того, что и для чего в этом скрипте. Проблема - это когда сгенерированный скрипт не выполняется. Или когда после его выполнения компарер снова находит различия. CyberMaxРаспишу еще подробнее. Берем раздел Objects to alter. Процедур там - 18 . Открываю Update Script. Там 89 ХП. Уже интересно. Что интересного? Objects to alter показывает только процедуры, определения которых различаются. В скрипте, разумеется, могут присутствовать не только они, но и другие процедуры, которые придется альтерить для разруливания зависимостей. CyberMaxСмотрю список. Там зачищается и восстанавливается ХП "CHK$DOC$HOUSE$CHANGE_UNIT". Зависимостей от нее в базе нет. Внимание вопрос: зачем она зачищается? Я согласен это сделать, но напишите, зачем. Вдруг я проглядел что или другой разработчик поменял что-то? Я не телепат. Раз компарер её чистит и восстанавливает, значит он нашел соответствующие зависимости. Компарер анализирует не RDB$DEPENDENCIES, а текст процедуры. CyberMaxАлександр, новый вьювер расхождений мне понравился. Но вот эти мелочи делают его просто неудобным для работы. Он для того, чтобы посмотреть, что в базе изменилось. И только. Никто и не планировал делать там то, что ты в нем ищешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 11:01 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertНет там описания проблемы. Есть жалоба на то, что скрипт большой, и непонимание того, что и для чего в этом скрипте. Проблема - это когда сгенерированный скрипт не выполняется. Или когда после его выполнения компарер снова находит различия. Проблема - это когда в скрипт попадает то, что раньше не попадало. Объясните мне в скрипте, для чего все эти запросы. Я их не понимаю. IBExpertЧто интересного? Objects to alter показывает только процедуры, определения которых различаются. В скрипте, разумеется, могут присутствовать не только они, но и другие процедуры, которые придется альтерить для разруливания зависимостей. Пускай так. IBExpertЯ не телепат. Раз компарер её чистит и восстанавливает, значит он нашел соответствующие зависимости. Компарер анализирует не RDB$DEPENDENCIES, а текст процедуры. Отлично. Зависимостей от ХП нет. Но компарер что-то нашел. Напишите в скрипте, для чего он зачищает ХП, восстанавливает ее и затем еще прописывает примечание (sic!). Если всего лишь текст другой, зачем все эти телодвижения? За ними ускользает суть манипуляций. Мало того, что скрипт пухнет, так и не понятно, что там собственно делается. Я согласен подропать и заальтерить хоть все триггера с ХП, объясните только, для чего это. И почему этого нельзя избежать. IBExpertОн для того, чтобы посмотреть, что в базе изменилось. И только. Никто и не планировал делать там то, что ты в нем ищешь. Даже если не планировали. Но это достаточно очевидный и нужный функционал, чтобы реализовать его. У вас базы с каким количеством метаданных? У меня в базе под 1500 ХП и 500 триггеров. В одной исключительной базе 50 таблиц, которые дропать нельзя (они только для этой базы), 15 ХП, которые обновлять нельзя, и 5 триггеров, которые тоже обновлять нельзя. Когда каждый запрос скрипта анализируется на предмет, применять его или нет для базы. И в один прекрасный день скрипт диффа становится больше в два раза, для чего все эти альтеры - непонятно, то ли поменял кто-то что-то где-то, то ли компарер недостаточно умный (например, старый не использовал ALTER DOMAIN, где это можно было, генерируя тысячи бесполезных запросов, когда можно было одним обойтись), то ли баг компарера. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:29 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxОтлично. Зависимостей от ХП нет. Но компарер что-то нашел. Напишите в скрипте, для чего он зачищает ХП, восстанавливает ее и затем еще прописывает примечание (sic!). Если всего лишь текст другой, зачем все эти телодвижения? За ними ускользает суть манипуляций. Мало того, что скрипт пухнет, так и не понятно, что там собственно делается. Я согласен подропать и заальтерить хоть все триггера с ХП, объясните только, для чего это. И почему этого нельзя избежать. Не, извини. Я ликбез по зависимостям проводить не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:35 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertНе, извини. Я ликбез по зависимостям проводить не буду. Причем тут ликбез? Верните вот эти примечания: Код: sql 1. 2. 3. 4. 5. 6.
Благодаря им, я мог понять, что собственно делается и соптимизировать процесс обновления. А теперь там темный лес, я не понимаю, для чего половина альтеров. Или я не имею права знать, что случилось с ХП, что ее надо обновить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:53 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxПричем тут ликбез? Верните вот эти примечания: Нет, не верну. Алгоритм генерации скрипта изменился, и теперь все зависимости "обнуляются" в одном месте: в секции "Deactivating dependencies of objects". Подробно расписывать там, почему тот или иной объект деактивируется, я не буду. Хотя бы по той причине, что каждое конкретное "обнуление" может быть результатом не одной зависимости, а многих, причем не обязательно прямых, а опосредованных. CyberMax Благодаря им, я мог понять, что собственно делается и соптимизировать процесс обновления. А теперь там темный лес, я не понимаю, для чего половина альтеров. Или я не имею права знать, что случилось с ХП, что ее надо обновить? Ничего с ней не случилось. Твоя ХП использует что-то, что модифицируется ниже в скрипте. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 13:19 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Если старый компарер не обновляет ХП, а новый обновляет, в чем причина? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 14:04 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxЕсли старый компарер не обновляет ХП, а новый обновляет, в чем причина? Причина в изменившемся алгоритме. Ты мне погадать предлагаешь. Без текста процедуры даже. Откуда мне знать, почему старый не обновлял каку-то процедуру, а новый обновляет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 14:15 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
А я никогда не пользовался компарером. У меня вместо этого имелся скрипт "сделать как надо". Хотя Firebird - не лучшая база для таких вещей как раз из-за зависимостей, но работать в таком стиле можно. Скрипт был разбит на файлы по зависимостям и по темам. Файлы хранились в системе контроля версий. Если над базой работают N разработчиков, они делают merge в системе хранения версий и таким образом сливают свои изменения. Также легко узнать, что изменилось в базе, скажем, за последние полгода. Плюс к тому был файл эволюции, где был отдельный кусочек кода на каждое изменение, непосильное скрипту, т.е., добавление поля в таблицу, модификация данных, и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 18:38 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> А я никогда не пользовался компарером. Ну а?! Не надо путать компарер и скрипты обновлений - последние есть у многих (вручную формируются или как - другой вопрос), а компарер нужен для выявления различий в двух БД (при чём не только метаданных). > У меня вместо этого имелся скрипт "сделать как надо". > Хотя Firebird - не лучшая база для таких вещей Денис, Вы бы поосторожнее с такими заявлениями-то :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 18:43 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, компарер у меня тоже был. Он дампил все объекты в файл с определённой сортировкой. А потом winmerge-м сравниваем два текстовых файла. Правда, медленно работал. Но и нужен он был редко, поскольку вышеописанная система делала эту задачу мало актуальной. Насколько я понимаю, смысл старого компарера в IBExpert состоял не в сравнении баз, а в написании скрипта, который приводит метаданные одной базы в соответствие с другой. Зачем ещё он был нужен, я не могу помыслить. Касаемо неподходящести Firebird для таких вещей - это так. Из-за зависимости объектов, которая, к тому же, не целиком прописана в системных таблицах (по состоянию на 2.5) не так легко перестроить базу. В MS SQL с этим на порядок проще. Из этого ничего не следует в плане общего сравнения этих двух баз - они совершенно разные в очень многих отношениях, так что не напрягайся от этого чрезмерно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 22:09 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
buddenКасаемо неподходящести Firebird для таких вещей - это так.Сказал, как отрезал. :) У нас компарер эксперта ровняет все как надо, да мелкие претензии есть, топик мой под это дело был, про вьюхи, но там ничего принципиального нет, так, косметика. Базы у нас по метаданным твоим не уступают, разве что вьюх посредников у нас не плодится таком кол-ве. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 11:56 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> компарер у меня тоже был. ... Правда, медленно работал. Но и нужен он был редко А зачем велосипед нужен-то? Или он под все СУБД у тебя? > Касаемо неподходящести Firebird для таких вещей - это так. > Из-за зависимости объектов, которая, к тому же, не целиком > прописана в системных таблицах (по состоянию на 2.5) О чём конкретно речь ? Вложенные зависимости имеются в виду? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 12:35 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Ivan_PisarevskybuddenКасаемо неподходящести Firebird для таких вещей - это так.Сказал, как отрезал. :) У нас компарер эксперта ровняет все как надо, да мелкие претензии есть, топик мой под это дело был, про вьюхи, но там ничего принципиального нет, так, косметика. Базы у нас по метаданным твоим не уступают, разве что вьюх посредников у нас не плодится таком кол-ве. Моя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. Ivan_PisarevskyУ нас компарер эксперта ровняет все как надо, да мелкие претензии есть. Если бы я своевременно нашёл этот компарер, есть небольшая вероятность, что не стал бы городить свою кухню. Но всё же, если есть два разработчика и две разработческие базы, то технология со скриптом "как надо" и системой контроля версий помогает, а компарер - не поможет. Т.е., компарер - это какая-то ущербная технология. Только оператор присваивания, без оператора сложения. На мой взгляд, нужно уходить от таких технологий. Моя практика показывает, что без IBExpert-ного компарера вполне можно обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 17:55 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамА зачем велосипед нужен-то? Или он под все СУБД у тебя? Затем, что цель IBExpert-ного компарера - это привести базу A к базе Б. Для задачи сравнения баз он избыточен. Если изменилась одна процедура, но глубоко вложенная по графу вызовов, скрипт IBExpert-ного компарера может включать сотни SQL-предложений. И сиди, разбирайся, какие из них ничего не делают, кроме удаления с последующим воссозданием. Во всяком случае, это так для старого компаратора. Что там в новом IBExpert-е - я не видел. Если же просто сделать дамп базы, как его делает isql, то там объекты не отсортированы. И опять же, там есть кое-что лишнее. Может, я просто не нашёл правильные ключи isql. В любом случае, написать этот компарер мне не составило труда. О чём конкретно речь ? Вложенные зависимости имеются в виду? Я в этой теме последний раз был года два назад. Кажется, там не прописываются какие-то зависимости вьюх (в 2.1, во всяком случае, про 2.5 не знаю, эта тема не всплывала). Я эти зависимости отдельно прописывал руками в свою систему сборки-разборки. Я думаю, что IBExpert смотрит на исходники объектов для вычисления всех зависимостей и даже когда-то это здесь обсуждалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 18:02 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden Моя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. наоборот механизм зависимостей существенно облегчает сопровождение БД. В MSSQL как раз таки можно грохнуть таблицу, которая использовалась в какой-то ХП или может быть в 10 ХП. А Узнаешь о том что они перестали работать через месяц. Вот веселуха то будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 18:27 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> Но всё же, если есть два разработчика и две budden> разработческие базы, то ... компарер - не поможет. budden> ... budden> Т.е., компарер - это какая-то ущербная технология. budden> ... budden> Затем, что цель IBExpert-ного компарера - это привести budden> базу A к базе Б. Для задачи сравнения баз он избыточен. Не улавливаю смысла в этом потоке мыслей. :) Сравниваются две БД, формируется скрипт. Что не устраивает, как надо и чем отличается правильный (твой) компарер от описанного? budden> Если изменилась одна процедура, но глубоко вложенная budden> по графу вызовов, скрипт IBExpert-ного компарера может budden> включать сотни SQL-предложений. Не совсем понял. Во-первых, конкретно процедуру можно редактировать, даже наплевав на зависимости. Дропнуть нельзя, а изменить можно, даже наплевав на несовместимость нового интерфейса с зависисящими от неё объектами. Во-вторых, не знаю о каких сотнях и какой вложенности ты говоришь, если в самом крайнем случае достаточно занулить тело прямых зависимостей, не трогая интерфейса, а затем восстановить - и всё. Что в данном случае IBE делает не так и как надо? budden> Я думаю, что IBExpert смотрит на исходники объектов для budden> вычисления всех зависимостей и даже когда-то это здесь обсуждалось. Я голову на отсечение не дам, но уверен, что это бред. Т.е. IBE может, конечно, заглянуть внутрь зависимостей для доп. определения чего-то там (прав, ещё чего-то), но сами зависимости вычисляет по rdb$dependencies, а не тупым парсингом. Саша как появится, надеюсь, просветит на сей счёт, расставит точки на i. budden> Моя практика показывает, что без budden> IBExpert-ного компарера вполне можно обойтись. Обойтись-то можно, но почему бы себе жизнь не упростить? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:52 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Симонов ДенисbuddenМоя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. наоборот механизм зависимостей существенно облегчает сопровождение БД. В MSSQL как раз таки можно грохнуть таблицу, которая использовалась в какой-то ХП или может быть в 10 ХП. А Узнаешь о том что они перестали работать через месяц. Вот веселуха то будет. Я не говорил о сопровождении вообще. Я говорил только о написании скрипта "сделать как надо". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:59 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Cкрипт "сделать как надо" нужно писАть не компарером, а вообще "вручную", для нужной версии БД (и с опр. требованиями к предыдущей версии), ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:04 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, я ж написал: а что, если разработчиков более одного? Оба скопировали себе 1 числа базу TEST, затем один правил одну часть базы в базе DEV1, другой правил другую часть базы в базе DEV2. Как теперь IBExpert поможет 7-го числа залить в базу TEST изменения из обоих DEV1 и DEV2? Насколько я понимаю - никак, только ручная работа. А если каждый из разработчиков представил разбитый на файлы скрипт "сделать как надо", то их можно слить с помощью Mercurial-а (или другой системы контроля версий). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:06 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, > Cкрипт "сделать как надо" нужно писАть не компарером, а вообще "вручную", Да. Ты его один раз написал, а дальше только дописываешь. Конечно, это тоже требует усилий. Работа вообще дело такое - на ней иногда нужно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:07 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Ну и плюс у меня там было кое-что для автоматизации, например, разборка зависимостей была автоматической. Можно было ещё кое-что допилить, чтобы было его намного легче писать, но до этого руки не дошли. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:09 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> Как теперь IBExpert поможет 7-го числа залить в базу TEST budden> изменения из обоих DEV1 и DEV2? Насколько я понимаю - budden> никак, только ручная работа. 1. Срванить D1 c TEST, получить скрипт1. 2. Срванить D2 c TEST, получить скрипт2. 3. Накатить скрипт1, скрипт2. 4. Разрулить проблему с несовместимостью скриптов, если они есть. В чём проблема, собсно? А если вручную можно (т.е. каждый из разработчиков знает, какие именно объекты нужно перенести, а не "у меня БД правильная, слейте") - ещё проще. > А если каждый из разработчиков представил разбитый > на файлы скрипт "сделать как надо", то их можно слить > с помощью Mercurial-а (или другой системы контроля версий). Зачем их вообще сливать, тем более мерджерами/VCS, если скрипты уже готовы? Выполни их и всё или даже просто объедини в один скрипт. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:34 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, Скрипт "сделать как надо" у меня делал как надо не только то, что изменил разработчик, а всю базу. Он собирает абсолютно все вьюхи, триггеры и хранимки. Т.е., база становится "программой" и у неё есть кнопка "скомпилировать". ПОэтому, когда два разрабочтика работают, каждый из них клонирует себе репозиторий (Mercurial) с исходником серверной части, вносит в него сколько угодно изменнеий. Когда наступает время сливаться, сливаем репозитории а потом пробуем скомпилировать то, что в итоге получилось. Также мы сливаем спец.файл, где написаны alter-ы для таблиц. Его, как правило, руками приходится править. Но исходники хранимок, вьюх, триггеров, сливаются автоматически. Причём эта технология масштабируется на большое число разработчиков. Честно сказать, там были нерешённые вопросы. Например, если изменялась сигнатура взаимно рекурсивных процедур, то это приходилось руками разруливать. И иногда получалось, что процедура удалялась после того, как была создана, если порядок сборки неправильно описан. Это и есть трудности Firebird. Но на это у меня были средства контроля, которые сообщали о том, что процедура такая-то стёрта. Тогда нужно подправить порядок сборки. На самом деле, это можно было автоматизировать, просто руки не успели дойти. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 21:44 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> Скрипт "сделать как надо" у меня делал как надо не только то, что budden> изменил разработчик, а всю базу. Он собирает абсолютно все budden> вьюхи, триггеры и хранимки. Не, я, конечно, не против вашего желания нажить себе геморрой, но другим-то зачем советовать так мучаться? > Также мы сливаем спец.файл, где написаны alter-ы для таблиц. > Его, как правило, руками приходится править. А, так у вас, по сути, сабжа и никакой автоматизации тут нет. > И иногда получалось, что процедура удалялась после того, > как была создана, если порядок сборки неправильно описан. > Это и есть трудности Firebird. Я не знаю, что у вас там не получилось и почему порядок неправильный (в этом тоже FB виноват?), но, по сути, ХП вообще никогда не нужно удалять при изменении - кроме случаев, когда это самоцель - достаточно занулить её тело, поработать с зависимостями и скомпилировать её обратно. FB тут никаким боком, начиная с какой-то версии он даже позволял работу с ХП, приводящую к невалидности других ХП (и не только ХП, наверное, не помню). Собсно, что он не позволяет (не позволял, как щас - ХЗ) - так это всякую невалидность таблиц. Но тут все СУБД одинаковы, наверное Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 22:17 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, я хранимки и не удалял - именно обнулял тело. Альтеры таблиц составляют малую часть всех изменений. Ну в общем, не убедил вас - и ладно. Главное, чтобы меня услышал автор IBExpert, впрочем даже и это не столь важно. Я этим способом пользовался около 10 лет на MS SQL и на Firebird и нахожу его единственно правильным. Скрипты - система контроля версий - скрипты эволюции - сборка серверной части из скриптов "как надо". Если ещё буду работать с любой СУБД - буду делать только так. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 22:59 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамЯ голову на отсечение не дам, но уверен, что это бред. Т.е. IBE может, конечно, заглянуть внутрь зависимостей для доп. определения чего-то там (прав, ещё чего-то), но сами зависимости вычисляет по rdb$dependencies, а не тупым парсингом. Саша как появится, надеюсь, просветит на сей счёт, расставит точки на i. Расставляю... RDB$DEPENDENCIES вообще не анализируется. Потому что в скриптах ее нет. А если есть механизм для анализа зависимостей в скрипте, то зачем использовать другой для анализа зависимостей в базе? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 08:47 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
buddenГлавное, чтобы меня услышал автор IBExpert Честно говоря, я твою мысль в отношении компарера не понял. Он делает то, что должен делать, для чего задумывался. Плохо или хорошо - это другой вопрос. Твоя-то идея в чем заключается? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 09:04 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpert> Расставляю... RDB$DEPENDENCIES вообще не анализируется. IBExpert> Потому что в скриптах ее нет. А если есть механизм для анализа IBExpert> зависимостей в скрипте, то зачем использовать другой для ... Я не очень понял, что ты имеешь в виду под "анализом зависимостей в скрипте" (чего там анализировать? пустышки ХП, триггеры в конце, сначала таблицы, потом вьюхи т .д.), но я имел в виду редактирование ХП - никогда не поверю, что для анализа зависимых от неё объектов ты какие-то там скрипты формируешь и анализируешь. Компарер-то сам по себе никаких зависимостей не "анализирует", или ты результирующий скрипт анализируешь для упорядочивания операторов? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 21:21 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамКомпарер-то сам по себе никаких зависимостей не "анализирует", или ты результирующий скрипт анализируешь для упорядочивания операторов? Компарер анализирует зависимости, чтобы сгенерировать корректный скрипт обновления. Так вот он не таблицу зависимостей анализирует, а DDL объектов БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 04:27 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpert, я тебе на почту написал, тема - "ответ на тему с sql.ru" ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 19:01 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
вставлю свои пять копеек. тоже столкнулся. изменил одну процедуру. в ней была использована вьюха. В итоге эксперт пол базы выгреб в скрипт. причем выгреб все вьюхи документов. правда они используются в другой процедуре, которая в свою очередь используется в триггере той самой вьюхи, которая используется в измененной процедуре. однако на базе стоит логирование изменений метаданных. там отражено только изменение одной процедуры. и было еще такое. сравнил базы. накатил скрипт. в процессе выполнения ругнулся, что у какого-то поля вьюхи есть зависимости. однако после повторного сравнения баз разницы не было найдено. по всей видимости ругнулся он на поле вьюхи, которая была вытянута из базы по зависимостям. те в принципе не измененная. вот выполнение скрипта на нем и споткнулось. и по этому повторное сравнение и не нашло изменений. тк по сути эта вьюха была выбрана по "глубоким" зависимостям. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 22:30 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
buddenIBExpert, я тебе на почту написал, тема - "ответ на тему с sql.ru" Нет ничего, только в спаме про "невидимые бюстгальтеры". Не твое? :) Пиши здесь, чё стесняться-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 06:27 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqтоже столкнулся. изменил одну процедуру. в ней была использована вьюха. В итоге эксперт пол базы выгреб в скрипт. причем выгреб все вьюхи документов. правда они используются в другой процедуре, которая в свою очередь используется в триггере той самой вьюхи, которая используется в измененной процедуре. Похоже на багу, если только процедура была изменена. Проверю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 06:28 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
С компарером в новой версии все еще есть проблемы мастер база имеет индексы Код: sql 1. 2.
в слайве индексы Код: sql 1. 2.
после сравнение базы в IBExpert 2015.11.11.1 и выполнение скрипта индексы не изменились Код: sql 1. 2.
после сравнения IBExpert 2015.7.26.1 все хорошо Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:50 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
noisy_by, Проверил, проблем не обнаружил. Индексы пересоздаются и при добавлении поля в индекс, и при удалении поля из него. Тесткейз можешь сделать? Одна табличка, пара индексов. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 12:59 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqтоже столкнулся. изменил одну процедуру. в ней была использована вьюха. В итоге эксперт пол базы выгреб в скрипт. причем выгреб все вьюхи документов. правда они используются в другой процедуре, которая в свою очередь используется в триггере той самой вьюхи, которая используется в измененной процедуре. Проверил на простом примере: вьюха + процедура, делающая выборку из вьюхи. При изменении текста процедуры только она альтерится, вьюху эксперт не трогает. У тебя, вроде, случай сложнее, но без конкретного примера искать вслепую я не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 13:20 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
еще раз прогнал сравнение IBExpert 2015.11.12.1 получается эксперт увидел различия, но не удаляет индекс перед созданием нового Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 21:00 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
noisy_byполучается эксперт увидел различия, но не удаляет индекс перед созданием нового Я проверял - удаляет. Без воспроизводимого примера сложно понять, в чем проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 05:25 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Последняя версия 2015.11.13 индексы удалило. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 11:19 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertsergqтоже столкнулся. изменил одну процедуру. в ней была использована вьюха. В итоге эксперт пол базы выгреб в скрипт. причем выгреб все вьюхи документов. правда они используются в другой процедуре, которая в свою очередь используется в триггере той самой вьюхи, которая используется в измененной процедуре. Проверил на простом примере: вьюха + процедура, делающая выборку из вьюхи. При изменении текста процедуры только она альтерится, вьюху эксперт не трогает. У тебя, вроде, случай сложнее, но без конкретного примера искать вслепую я не буду. вроде на 2015.11.13.1 не наблюдается ничего из мною перечисленного ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 16:15 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
хотя вроде осталось в некоторых случаях если дропается вьюха с триггерами, то почему-то в скрипте сначала дропается вьюха, потом создается триггер, а потом создается сама вьюха. На триггере ругается, что нет old.x. И такую еще штуку заметил. в одной из вьюх последняя строка - комментарий через двойное тире. и в конце строки точка с запятой. просто раньше эта срока была частью запроса. вот на этой вьюхе почему-то не ставится терминатор ; и выполнение скрипта на этой строке ругается. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.11.2015, 17:08 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqхотя вроде осталось в некоторых случаях если дропается вьюха с триггерами, то почему-то в скрипте сначала дропается вьюха, потом создается триггер, а потом создается сама вьюха. На триггере ругается, что нет old.x. Триггеры создаются после создания таблиц и вьюх. Не было бы вьюхи - ругалось бы на ее отсутствие, а не на old.x sergqв одной из вьюх последняя строка - комментарий через двойное тире. и в конце строки точка с запятой. просто раньше эта срока была частью запроса. вот на этой вьюхе почему-то не ставится терминатор ; и выполнение скрипта на этой строке ругается. Лучше вообще избавиться от такого комментария. В компарере-то я поправил, но попутно выяснилось, что при выполнении такого статемента через isc_dsql_execute_immediate точка с запятой все равно будет вырезана. И тексты представлений в базах будут различаться, что на следующем прогоне снова обнаружит компарер, и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 08:42 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpert, вот маленький пример 2015.11.13.1 если синхронизировать t1 на t2, то сначала будет создан триггер на спецификацию ( в котором удаляется из вьюхи договора) А потом уже сама вьюха договора. И естественно облом выполнения скрипта ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 20:05 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Есть простая тестовая база Код: sql 1. 2.
При сравнении ее самой с собой получаю Код: sql 1.
Скорее всего дело в RDB$USER_PRIVILEGES, но сам туда ручками я не лазил. В архиве тестовая база (fb 2.5) https://yadi.sk/d/dLMduU9CkUPHz ... |
|||
:
Нравится:
Не нравится:
|
|||
15.11.2015, 20:33 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Действительно. Поддержу CyberMax. есть вьюха. у нее три зависимых процедуры и 26 триггеров. Добавил просто в текст вьюхи пробел. в итоге выгребло в скрипт все процедуры и триггера. Хотя Objects to alter - 1 ради интереса сделал тестовую таблицу. на нее вьюху и у нее триггер с исключением. в процедуре сделал добавление во вью. Запустил процедуру. выдала исключение. поменял тест исключения. опять без перекомпиляции процедуры запустил ее. текст исключения другой. значит процедуру не надо прекомпилировать ))) Можно было б сделать в компарере действительно кнопку выгрузки чистого скрипта. ведь компарер как то понимает, что Objects to alter всего один.. вот чтоб по этой кнопке и выгружало только 1 объект. а если будет в пользователя желание - все ) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 01:22 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqвот маленький пример 2015.11.13.1 если синхронизировать t1 на t2, то сначала будет создан триггер на спецификацию ( в котором удаляется из вьюхи договора) А потом уже сама вьюха договора. И естественно облом выполнения скрипта t2 создает пустую базу, так и должно быть? Ты что сравниваешь - скрипты или базы? Если сравнивать базы, созданные твоими скриптами, то скрипт правильный генерируется, выполняется без ошибок, последующее сравнение показывает отсутствие различий. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 08:24 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqесли синхронизировать t1 на t2, то сначала будет создан триггер на спецификацию ( в котором удаляется из вьюхи договора) А потом уже сама вьюха договора. И естественно облом выполнения скрипта Сравнил скрипты компарером - тоже корректный скрипт выдал. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 08:28 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Шавлюк ЕвгенийЕсть простая тестовая база Код: sql 1. 2.
При сравнении ее самой с собой получаю Код: sql 1.
Скорее всего дело в RDB$USER_PRIVILEGES, но сам туда ручками я не лазил. Там, оказывается, два одинаковых набора привилегий от DBA и SYSDBA. Вот эксперт в них и запутался. Не очень понятно, как разруливать такие ситуации, пока сделал извлечение привилегий без привязки к grantor'у. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 09:58 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpert, сейчас на работе не вспомню, но t2 от t1 отличалась только отсутствием SPECS_VIEW_BODY_AD0 сейчас скачал 2015.11.16.1 в t2 отсутствует SPECS_VIEW_BODY_AD0. однако сравнение ничего не нашло (. Скрипт пуст ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 10:31 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
sergqсейчас на работе не вспомню, но t2 от t1 отличалась только отсутствием SPECS_VIEW_BODY_AD0 сейчас скачал 2015.11.16.1 в t2 отсутствует SPECS_VIEW_BODY_AD0. однако сравнение ничего не нашло (. Скрипт пуст Удалил из второй базы SPECS_VIEW_BODY_AD0, сравнил - все нашлось. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 10:48 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpert, как ни странно, но и у меня нашлось и сформировалось все корректно. но в первый раз не формировалось. чудеса да и только ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2015, 13:39 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Новый компарер красиво, но WTF... Не первый раз замечаю проблему с порядком создания объектов когда происходит изменение в взаимозависимых объектах. Замечал и на триггерах с процедурами и на процедурах с процедурами. дойдут руки - сделаю тестовый пример. Старый компарер работал как часы... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 17:35 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
FedorinoFFНе первый раз замечаю проблему с порядком создания объектов когда происходит изменение в взаимозависимых объектах. Проблема-то в чем конкретно выражается? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 18:27 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertFedorinoFFНе первый раз замечаю проблему с порядком создания объектов когда происходит изменение в взаимозависимых объектах. Проблема-то в чем конкретно выражается? Отправил две базы на личную почту. Проблема в неработоспособном скрипте. надеюсь поправимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2015, 19:08 |
|
|
start [/forum/topic.php?all=1&fid=42&tid=1599411]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 199ms |
0 / 0 |