|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Наконец мы уговорили заказчика мигрировать с Interbase на Firebird. Тут расскажу о выявленных подводных камнях. Переходили мы с IB 2017 (хотя реально база разрабатывалась на 2009) на FB3.0 1. Сама миграция базы. По классике нужно слить в SQL скрипт метаданные и данные (это замечательно делает IBExpert) и загрузить их в новую базу. Вероятные проблемы: 1.1 В IB максимальная длина идентификатора 67 символов. В FB 31. Пришлось часть объектов переименовать 1.2 В FB модификация данных системных таблиц запрещена. В частности у меня обломился хак с динамическим текстом исключения. Но в FB добавили штатную функциональность для этого 1.3 Вместо таблиц TMP$ нужно обращаться к MON$ 1.4 При значительном объеме данных залить их в новую базу не просто. Подробности и способы увеличения скорости здесь 2. Далее, самый большой пакет проблем я отгреб с BOOLEAN 2.1 IBX (проект пока на нем) не поддерживает тип Firebird BOOLEAN. Пришлось вручную допиливать эти компоненты. У FireDac проблем с этим типом нет, но проект на IBX 2.2 В IB можно было делать свободный каст между BOOLEAN и SMALLINT. В FB строка Код: sql 1. 2. 3. 4.
приводит к ошибке конвертации типов. Причем не компиляции, а выполнения. Поэтому все процедуры и триггеры нужно очень внимательно прошерстить на этот предмет. 3. Сортировка 3.1 В IB нет конструкции NULLS FIRST | LAST. А все NULL значения помещались в конец выборки. В FB если явно не указал NULLS LAST получишь NULL в начале выборки 3.2 IB позволяла указывать полное название таблицы в имени сортируемого поля, даже если таблице присваивался алиас. Т.е. в IB такой запрос Код: sql 1.
работал. В FB нужно писать строго Код: sql 1.
В целом переход получился безболезненным и довольно простым. С уважением, Vasilisk ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 14:31 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
_Vasilisk_1.1 В IB максимальная длина идентификатора 67 символов. В FB 31. Пришлось часть объектов переименовать ну это только в 4.0 расширено до 63 символов. Причём в FB честные символы. В IB скорее всего не символы, а байты. _Vasilisk_2.1 IBX (проект пока на нем) не поддерживает тип Firebird BOOLEAN. Пришлось вручную допиливать эти компоненты. У FireDac проблем с этим типом нет, но проект на IBX IBX можно легко поправить для поддержки BOOLEAN в Firebird ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 14:39 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Симонов ДенисIBX можно легко поправить для поддержки BOOLEAN в Firebird Не совсем. Там подколка не столько в номере типа, сколько в его размере. Легко не обратить внимание и получить порчу памяти. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 14:45 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Парни, кстати, прошу привести минимальный патч IBX для поддержки BOOLEAN-полей. А то сквозь годы и сам по разным поводам его патчил, но вот на предмет именно этого руки так и не дошли.)) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:06 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Легко не обратить внимание и получить порчу памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:07 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Vlad F Парни, кстати, прошу привести минимальный патч IBX для поддержки BOOLEAN-полей. Общий алгоритм такой: 1. В IBHeader объявляешь Код: pascal 1.
2. А потом ищешь все упоминания SQL_BOOLEAN и добавляешь рядом SQL_BOOLEAN_FB с учетом того, что SQL_BOOLEAN это два байта, а SQL_BOOLEAN_FB - один ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:12 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
_Vasilisk_IB такой запрос SELECT * FROM mytable t ORDER BY mytable.fld киянкой по пальцам за такой запрос. Независимо от того, выполнялся он или нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:22 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
_Vasilisk_, Если конкретно, то хотелось бы для той что в составе D 10.3.3 (CE). P.S. Прошу не счесть за наглость, но м.б. у кого-то уже есть для нее готовое\проверенное (в ответ могу поделиться чем-нибудь своим)). P.P.S. В любом случае за совет спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:23 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
kdv киянкой по пальцам за такой запрос ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2020, 15:28 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
kdv _Vasilisk_IB такой запрос SELECT * FROM mytable t ORDER BY mytable.fld киянкой по пальцам за такой запрос. Независимо от того, выполнялся он или нет. А за что именно? За игнорирование алиаса в ORDER BY? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 11:53 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
alekcvp, за комбинирование - алиас у таблицы указан, а у столбца вместо алиаса имя таблицы написано. Либо одно, либо другое, а сразу оба - не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 11:54 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
alekcvp, заодно и за "select *". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 12:11 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
kdv а сразу оба - не надо. Так FB и не даст, начиная с какой-то версии. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 13:30 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
KreatorXXI alekcvp, заодно и за "select *". А что плохого в 'select * ', если это мелкий справочник какой-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 13:47 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
alekcvp, если ты железно уверен что состав и порядок полей в таблице никогда не изменится, то может и ничего. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 13:54 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
alekcvp KreatorXXI alekcvp, заодно и за "select *". А что плохого в 'select * ', если это мелкий справочник какой-то? При чем тут размер? 1. Вставил новое поле, изменил порядок полей - лови глюки. Например, там, где ссылка к полю по номеру. 2. Добавил новое поле - и оно сразу в выборке, даже тогда, когда оно не нужно. 3. Не видно нибуя, что хотел сказать афтар. Пример: нужны описания реляций, в порядке названий. Какое из предложений более пригодно для глаза кодера: Код: sql 1. 2.
Код: sql 1. 2.
Код: sql 1. 2.
Код: sql 1. 2.
- ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 13:58 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
alekcvp, на клиенте могут быть проблемы. Как сказал Симонов Денис, порядок и состав полей могут на клиенте не совпадать с сервером. По хорошему, клиент знает только то, что ему разрешили знать. А селектом со звёздочкой Вы ломаете эти знания. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:00 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Селект со звездочкой нужен, чтобы быстро посмотреть, когда руками в базе копаешься. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:03 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
ъъъъъ, и ещё в EXISTS(SELECT * ...) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:05 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Симонов Денис, я раньше "нафсякий" писал Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:11 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Помнится, Kdv мне тоже вставлял за * )) Но мир все-таки не черно-белый. Иногда можно. Главное понимать, что и как. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:25 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Barmaley57, звёздочка и есть чёрно-белый мир! Звёздочка в клиентском приложении. Вы представьте себе - банальная перестановка полей на сервере приводит к краху работы огромного программного комплекса. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:39 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
Осталось найти идиота-самоубийцу, чтобы он поменял местами поля в базе, обслуживающей огромный программный комплекс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 14:41 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
KreatorXXI заодно и за "select *". Dimitry Sibiryakov Осталось найти идиота-самоубийцу, чтобы он поменял местами поля в базе, обслуживающей огромный программный комплекс. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 15:33 |
|
Миграция с IB на FB. Опыт
|
|||
---|---|---|---|
#18+
KreatorXXI Вы представьте себе - банальная перестановка полей на сервере приводит к краху работы огромного программного комплекса. У меня есть тема с точностью до наоборот: изменение порядка полей в базе меняет их расположение в таблицах и формах на клиенте. И даже звездочка спокойно прокатывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2020, 15:50 |
|
|
start [/forum/topic.php?fid=40&msg=39970561&tid=1560319]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
154ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
others: | 288ms |
total: | 568ms |
0 / 0 |