|
Новый компарер баз
|
|||
---|---|---|---|
#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 |
|
|
start [/forum/topic.php?fid=42&msg=39103939&tid=1599411]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 163ms |
0 / 0 |