FB2.1 и UDF
Модераторы: kdv, Alexey Kovyazin
-
- Сообщения: 25
- Зарегистрирован: 11 авг 2007, 17:40
FB2.1 и UDF
не понимаю что происходит.сервер Linux Ubuntu,если ставлю FB из deb то не могу прикрутить UDF-не найдена.а если ставлю из исходников то всё работает.всё делаю одинаково,меняю владельца файла и права после копирования.не помогает.сама UDF не моя.может быть какая-то маленькая ошибка в самой UDF которая приводит к такому результату?или всё-таки что-то не так с правами?а может быть такое что при вызове UDF FB вызывает какие-то ещё библиотеки и вот именно их недоступность и приводит к ошибке а сама UDF не при чём?
Re: FB2.1 и UDF
в чем вопрос ? где текст ошибки ?
-
- Сообщения: 25
- Зарегистрирован: 11 авг 2007, 17:40
Re: FB2.1 и UDF
разобрался.некоторые проблемы с подключением сторонних UDF могут быть связаны с отсутствием файла /usr/lib/libgds.so.он был в старых версиях интербейза.в FB его заменяет libfbclient.so.2.виндовый инсталятор FB предлагает скопировать в %systemroot% fbclient.dll под именем GDS.dll.возможно если ставить FB из исходников там делается симлинк,а если из пакетов то увы нет.решается проблема одной командой ln -s /usr/lib/libfbclient.so.2 /usr/lib/libgds.so.жаль что разработчики пакетов не добавляют её в постинстолл скрипт.возможно это является причиной многих глюков.
ну вот.сам спросил,сам и ответил:)
ну вот.сам спросил,сам и ответил:)
Re: FB2.1 и UDF
С какой радости инсталлятор FB должен штатно (!) ломать (!) существующую библиотеку от другого (!) продукта ???
-
- Сообщения: 25
- Зарегистрирован: 11 авг 2007, 17:40
Re: FB2.1 и UDF
виндовый инсталятор FB предлагает скопировать в %systemroot% fbclient.dll под именем GDS.dll
ничто не мешает сделать это в линуксе
ничто не мешает сделать это в линуксе
Re: FB2.1 и UDF
Ничто не мешает думать головой, а не...
Re: FB2.1 и UDF
Добавлю. Если UDF требует gds32, то она написана для IB и нехрен её класть под FB.
Так понятнее ?
Так понятнее ?
-
- Сообщения: 25
- Зарегистрирован: 11 авг 2007, 17:40
Re: FB2.1 и UDF
ничто не мешает быть повежливее.может написана для IB но под FB работает прекрасно.тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
так для интереса,у меня программа написанная под IB56 работает на FB21.правда пришлось кое-что в базе подправить.но причина по которой пришлось править базу-банальные ошибки которые IB56 прощал
так для интереса,у меня программа написанная под IB56 работает на FB21.правда пришлось кое-что в базе подправить.но причина по которой пришлось править базу-банальные ошибки которые IB56 прощал
Re: FB2.1 и UDF
программа и udf - разные вещи. Программа может быть хоть под ИБ4 написана, и при успешном переносе базы может работать и с IB 2009 и с FB 2.5.
А вот UDF... есть несколько критериев, когда могут быть глюки
- в udf есть функции требующие декларации с FREE_IT, но при этом функции используют malloc вместо модуля ib_utul.dll. Тут север просто будет падать.
- udf использует функции из клиентской библиотеки (gds32.dll, fbclient.dll). Если используемые функции отличаются по реализации между FB и IB - возможны глюки и падения сервера
Основная проблема в том, что udf при некорректной работе валит сервер. Некорректная клиентская программа такого сделать не может в принципе.
Если же подсунуть клиенту gds32.dll от InterBase, а сервер будет Firebird, то могут быть проблемы с работой приложения (вылезут несовместимости), или может сервер или клиентская часть падать - несовместимость протокола клиента и сервера.
Странно, что все это приходится объяснять, если Вы писали программы еще под IB 5.6. Как бы, IB 5 существует с 1997 года. А IB 6 - с 2000. Как минимум 9-10 лет минуло.
А вот UDF... есть несколько критериев, когда могут быть глюки
- в udf есть функции требующие декларации с FREE_IT, но при этом функции используют malloc вместо модуля ib_utul.dll. Тут север просто будет падать.
- udf использует функции из клиентской библиотеки (gds32.dll, fbclient.dll). Если используемые функции отличаются по реализации между FB и IB - возможны глюки и падения сервера
Основная проблема в том, что udf при некорректной работе валит сервер. Некорректная клиентская программа такого сделать не может в принципе.
потому что у ФБ начиная с 1.5 клиент называется fbclient.dll. и если в вашу программу вкомпилировано использование gds32.dll (например, если используется IBX), то без создания gds32.dll из fbclient.dll программа не будет работать, т.е. попросту не найдет gds32.dll.тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
Если же подсунуть клиенту gds32.dll от InterBase, а сервер будет Firebird, то могут быть проблемы с работой приложения (вылезут несовместимости), или может сервер или клиентская часть падать - несовместимость протокола клиента и сервера.
Странно, что все это приходится объяснять, если Вы писали программы еще под IB 5.6. Как бы, IB 5 существует с 1997 года. А IB 6 - с 2000. Как минимум 9-10 лет минуло.
Re: FB2.1 и UDF
А он не тупо копирует. Он ещё и номер версии правит при этом. Для чего ? RTFMSeventhSon писал(а):тогда объясните зачем виндовый инсталятор предлагает скопировать fbclient под именем gds?
-
- Сообщения: 25
- Зарегистрирован: 11 авг 2007, 17:40
Re: FB2.1 и UDF
я может не так выразился или меня не так поняли.под IB56 я не писал ничего.программа написана другими, я сопровождаю.
так вот по UDF.как я понял прежде чем задекларировать UDF с FREE_IT её нужно соответствующим образом написать и скомпилировать.а если она написана в допотопные времена то и никакого FREE_IT в декларации быть не может.во всяком случае у меня так и есть.и сервер не падает.
зачем UDF требует libgds.so не знаю.но после того как я сделал симлинк всё работает.это факт.
собственно всё это я написал для тех кто попадёт в похожую ситуацию.может кому-то поможет
так вот по UDF.как я понял прежде чем задекларировать UDF с FREE_IT её нужно соответствующим образом написать и скомпилировать.а если она написана в допотопные времена то и никакого FREE_IT в декларации быть не может.во всяком случае у меня так и есть.и сервер не падает.
зачем UDF требует libgds.so не знаю.но после того как я сделал симлинк всё работает.это факт.
собственно всё это я написал для тех кто попадёт в похожую ситуацию.может кому-то поможет
Re: FB2.1 и UDF
не совсем так, правда я уже достоверно не помню - возможно 5.0 была без этой самой ib_utul.dll, но впоследствии она появилась, и использовать вызов ib_util_malloc вместо malloc в udf с FREE_IT стало обязательным. Но на тот момент разработчики этим особо не парились, т.к. в перспективе про Firebird и даже IB 6 (компилируемые другими компиляторами, и с другим менеджером памяти для malloc) никто не думал.как я понял прежде чем задекларировать UDF с FREE_IT её нужно соответствующим образом написать и скомпилировать.а если она написана в допотопные времена то и никакого FREE_IT в декларации быть не может
могут еще использоваться функции конвертации дат, которые по всем версиям IB/FB совместимы.зачем UDF требует libgds.so не знаю.