Firebird RC1 FAQ


оригинал: http://www.ibphoenix.com/ibp_rc1_faq.htmlby Paul Beach
перевод: КДВ (http://www.ibase.ru/)
абсолютный url: http://www.ibase.ru/v6/fbrcfaq.htm
дата перевода: 02.12.2001
дата последнего обновления: 05.12.2001

Замечания относительно Firebird Release Candidate 1

Скоро будет доступен Release Candidate 2. Практически все перечисленные здесь проблемы в нем будут отсутствовать. Обращайте внимание на "Статус" после описания каждой проблемы.

У snapshot для Win32 неверный номер FILEVERSION

Если Вы загрузили snapshot RC1 для Windows, рекомендуем Вам загрузить самую последнюю версию.

FILEVERSION это скрытый ресурс, хранимый как integer. Он не виден в File | Properties для ibserver.exe. Однако он используется инсталляционными скриптами для определения номера версии исполняемых и dll файлов. Оригинальный релиз Win32 RC1 содержит FILEVERSION равный 7.2. Если эти файлы оставить на диске, то инсталляторы новых версий Firebird или Interbase могут сработать неправильно (т.е. не переписать ibserver.exe и другие файлы).

Если вы используете старый RC1, то рекомендуется вручную удалить файлы *.exe, *.dll и gds32.dll перед установкой новой версии, или не удаляя переписать их файлами из более свежего snapshot.

Дистрибутив с инсталлятором для Win32 использует самые последние версии исполняемых файлов, и не имеет подобной проблемы.

Если вы устанавливаете файлы из snapshot, то поставте RC1a snapshot. В нем находятся правильные файлы.
RC1a выпущен 26 ноября, и содержит файлы билда 612.

Статус — исправлено в RC2

Я думал, что по умолчанию у создаваемых баз данных ForcedWrites = ON.

Статус — исправлено в RC2. Т.е. вновь создаваемые БД имеют FW = ON.

Как я могу узнать, с каким билдом RC1 я работаю?

Первоначально выложенный snapshot впоследствии был заменен файлами с правильным FILEVERSION. Дата правильного snapshot должна быть 19-NOV-01 01:00:00. У неправильных файлов дата равна или меньше 13-NOV-01.

У меня раньше работал запрос, а теперь он возвращает ошибку:

SQL error code = -204
Ambiguous field name between table/view TOKEN and table/view

Firebird теперь не выполняет запросы, которые ссылаются на имена столбцов, которые повторяются в выбираемых таблицах. Прежнее поведение всех версий Interbase и Firebird могли дать (и часто давали) неверный результат выборки, зависящий в том числе от порядка выбираемых таблиц.

Это один из основных пунктов при миграции на новые версии Firebird.

КДВ: привожу пример неоднозначной выборки над employee.gdb:

select po_number, customer, department, last_name, phone_no
from customer c, employee e, sales s, department d
where c.cust_no = s.cust_no and
d.dept_no = e.dept_no and
e.emp_no = s.sales_rep

поле phone_no есть как в delartment, так и в sales. Поэтому Firebird на такой запрос будет "ругаться", требуя указать алиасы полей явно. Не ленитесь, поскольку такое требование указано и в стандарте (т.е. подобное поведение Firebird — это не самодеятельность).

Статус — расширено в RC2 (в диалекте 1 подобный запрос отработает, а в диалекте 3 — выдаст ошибку).

Именно поэтому драйвер EasySoft ODBC работает с RC1 криво?

Увы, да. Драйвер использует запросы с неуточнением имен полей. В RC2 это будет исправлено.

Статус — исправлено в RC2.

Я слышал про баг связанный с DELETE и новым оператором FIRST

Да, есть такое. Замечательный способ удалить все данные в таблице. Пример:

delete from table where col in (select col first 5 from table);

не удалит только 5 строк, а удалит все записи. Потому что подзапрос выполняется для КАЖДОЙ записи внешнего запроса. Собственно, указывать FIRST в подобных случаях нельзя, однако сообщение об ошибке пока не выдается.

Статус — не решено. Не исправлено в RC2.

Когда я использую комментарий -- в скрипте или ISQL я получаю сообщение:

-SQL error code = -104
-Token unknown — line N, char X

Да, есть такая ошибка в ISQL. Вполне возможно, что она уже исправлена в самых последних билдах Firebird.

Статус — исправлено в RC2.

Билды для Linux поддерживают файлы больше 2Gb (64bit I/O), или нет?

Пока нет. Код добавлен в дерево исходных текстов, но пока полностью под Linux не тестировался. В настоящее время файлы базы данных более 2Гб поддерживаются только на Win32 и Darwin (Mac OS X). Так что пока для баз больше 2Гб используйте многофайловые БД.

Когда код будет окончательно протестирован, будут доступны отдельные дистрибутивы. Так будет потому, что сама операционная система должна поддерживать работу с большими файлами, а это есть только в Linux kernel 2.4, да и то работает пока не совсем надежно или однозначно.

Статус — в процессе.

В Release Notes маловато информации о неисправленных багах. Где я могу найти побольше?

Такая информация есть на http://www.ibphoenix.com/FirebirdBugsOpen.html. Этот же файл есть в виде zip в каталоге doc инсталляции. При наличии доступа в internet клик на номере бага отправит вас на соответствующее описание на SourceForge.

В Release Notes упоминается FBUDF.DLL. Не могу найти ее.

Действительно. Этот момент был упущен при создании дистрибутива. Файл будет доступен в самое ближайшее время.

Порядок триггеров (position) игнорируется в RC1

КДВ: RC1 начался с билда 1.0.0.555. Там этот баг был. В билде 1.0.0.608RC1 он уже исправлен.

Да, если в вашей базе данных порядок триггеров важен, то в данной версии он игнорируется.

Статус — исправлено в RC2.

Запрос работал в Beta 2, но теперь не работает в RC1:

SELECT X.CUST_NO, ABS(SUM(X.TOTAL_VALUE))
FROM SALES X
GROUP BY X.CUST_NO;

InterBase никогда не позволял группировать по вычисляемым выражениям или пользовательским функциям (UDF). В Firebird эта возможность добавлена, однако она имеет ряд побочных эффектов, поэтому пока была выключена.

Статус — возможно исправлено в RC2, требует проверки.

GBAK не может сохранить значения генераторов с именами, содержащими пробелы

Да, баг есть, причем достаточно старый, и возможно относится ко всем версиям Interbase 6.0. Уже исправлен в билдах Firebird 1.0.0.608 и выше.

Статус — исправлено в RC2.


(С) http://firebird.sourceforge.net/