Subject Re: Problem with loading libfbclient.so under linux
Author Marius popa
--- In firebird-support@yahoogroups.com, "b0bik2000" <b0bik@...> wrote:
>
> Hello
>
> I have a little problem with udf function that needs to load fbclient
> library under linux.
>
> It is about: FirebirdSS-2.1.1.17910-0.ntpl.i686.tar.gz.tar
>
> After "instalation" I did following things:
>
> 1. aliases.conf - new line pointing to my fdb file
> 2. firebird.conf:
> RemoteServicePort = 5005
> UdfAccess = Restrict UDF
> BugcheckAbort = 1
> 3. Restart firebird server
>
> I created a simple library with - Free Pascal Compiler:
>
> test.dpr:
>
> library test;
>
> uses funcs in 'funcs.pas';
>
> exports ftest;
>
> begin
> end.
>
> funcs.pas:
>
> unit funcs;
>
> interface
>
> uses Types;
>
> type
>
> TM = record
> tm_sec: integer;
> tm_min: integer;
> tm_hour: integer;
> tm_mday: integer;
> tm_mon: integer;
> tm_year: integer;
> tm_wday: integer;
> tm_yday: integer;
> tm_isdst: integer;
> end;
>
> ISC_TIMESTAMP = record
> timestamp_data: LongInt;
> timestamp_time: DWord;
> end;
>
> PTM = ^TM;
> PISC_TIMESTAMP = ^ISC_TIMESTAMP;
>
> procedure isc_decode_timestamp(ib_date: PISC_TIMESTAMP; tm_date: PTM);
> cdecl; external 'fbclient';
> function ib_util_malloc(l: integer): pointer; cdecl; external
> 'ib_util';
>
> function ftest(aDateTime : PISC_TIMESTAMP): Integer; cdecl;
>
> implementation
>
> function ftest(aDateTime: PISC_TIMESTAMP): Integer; cdecl;
> var theTM: TM;
> begin
> Result := 0;
> isc_decode_timestamp(aDateTime, @theTM); {*}


it should be
isc_decode_timestamp(@aDateTime, @theTM);

> Result := 1;
> end;
>
> end.
>
> After building library I copied it into UDF directory
> (/opt/firebird/UDF/)
>
> I declared external function using:
>
> DECLARE EXTERNAL FUNCTION FTEST
> TIMESTAMP NULL
> RETURNS INTEGER BY VALUE
> ENTRY_POINT 'ftest'
> MODULE_NAME 'test'
>
> After committing, I connected to my database using isql utility and
> run a query:
>
> select ftest(current_timestamp) from rdb$database
>
> and nothing, query execution never ends. But neither fbserver nor
> fbguard process takes lot of CPU time. When I connect to Linux machine
> from Windows (using flamerobin) and execute the same query, flame
> writes:
>
> "Starting transaction ..."
>
> and nothing happens too.
>
>
> When I comment line marked with {*} in my udf everything works OK.
>
> Where did I make mistake ?
>
> Best regards
> b0bik
>