Собственно.
Сервер Firebird 1.5.4
ОС любая (пробовали)
набор UDF (rfunc)
Клиентское приложение (C++ Builder + FibPlus)
ОС тоже любая
Сервер и клиент ставим на одну станцию и подключение через localhost
Из клиентского приложения запускается некая хранимая процедура, выполняющая update/insert в некий набор таблиц.
На некоторых БД все отрабатывает правильно и без проблем.
Проблема в том, что на некоторых БД в процессе работы вылетает следующее сообщение:
unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Connection lost to database
Пробовали отработать процедуру из EMS SQL Manager, сообщения нет, но она не выполняется.
Открываем firebird.log
Читаем
IT-DEP-01 (Server) Thu May 29 12:25:54 2008
The user defined function: DIV
referencing entrypoint: fn_div
in module: rfunc
caused the fatal exception: Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.
IT-DEP-01 (Server) Thu May 29 12:25:54 2008
Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.
IT-DEP-01 (Server) Thu May 29 12:25:54 2008
Integer divide by zero.
The code attempted to divide an integer value
by an integer divisor of zero.
This exception will cause the Firebird server
to terminate abnormally.
IT-DEP-01 (Client) Thu May 29 12:25:54 2008
C:\Program Files\Firebird\Firebird_1_5\bin\fbserver.exe: terminated abnormally (4294967295)
IT-DEP-01 (Client) Thu May 29 12:25:55 2008
Guardian starting: C:\Program Files\Firebird\Firebird_1_5\bin\fbserver.exe
Действительно, в хранимой процедуре используется UDF DIV
НО. до каждого ее вызова (в нескольких точках) перепроверяются значения используемых ею переменных (нам достаточно выставить их в 1, если хоть один равен 0)
Кто может подсказать, где копать? и главное, какой лопатой?
unsuccessful execution caused by system error ...
Re: unsuccessful execution caused by system error ...
В исходниках UDF, вестимоCrazy Bee писал(а):
Кто может подсказать, где копать? и главное, какой лопатой?
Re: unsuccessful execution caused by system error ...
В ХП нулл не равен нулю, а внутри УДФ он 0.Crazy Bee писал(а): НО. до каждого ее вызова (в нескольких точках) перепроверяются значения используемых ею переменных (нам достаточно выставить их в 1, если хоть один равен 0)
Re: unsuccessful execution caused by system error ...
Это смотря какая UDFMerlin писал(а):В ХП нулл не равен нулю, а внутри УДФ он 0.