Subject RE: [firebird-support] UDF on linux
Author Dalton Calford
Helen, your graceful manner in answering the question reminds me why I like you sooooo much.

What had me mystified when reading the documentation in the firebird conf file was that when I ran it with the default commented out, it did not work, so I assumed the default was some how wrong.

I did try Full and used the full path to the udf in question when declaring it, that also did not work, I just did not include that sample in the email.

When I used the Restrict, I used the full path to the directory, in quotes as the documentation suggested ie

# as in FB 1.0. To specify access to specific trees, enum all required
# paths (for Win32 this may be something like 'C:\ExternalFunctions',
# for unix - '/db/extern;/mnt/extern').

And when that did not work, I resorted to asking on the list, as I have many other versions of FB/IB installed on various machines. This one had me stumped.

When I removed the comment from the line UdfAccess = Restrict UDF and commented my own lines out, it began to work.


Now, are all the paths that are given to the udfs relative to the firebird directory under linux? That would explain my issue as I was giving all paths relative to the root of the file tree. I have not played with this, but perhaps that needs further testing and if that is what is intended, it should be in the documentation.

regards

Dalton


________________________________

From: firebird-support@yahoogroups.com [mailto:firebird-support@yahoogroups.com] On Behalf Of Helen Borrie
Sent: August 18, 2009 9:44 AM
To: firebird-support@yahoogroups.com
Subject: Re: [firebird-support] UDF on linux




At 11:18 PM 18/08/2009, you wrote:

>The FreeUDFLibC UDF is found in /opt/firebird/UDF
>
>The UDF will register without error,

Not "register". You can DECLARE a UDF that doesn't exist, actually. It just won't work.;-)

>module name or entrypoint could not be found
>
>Now, the problem also occurs with the UDF libraries that are supplied with firebird.
>
>DECLARE EXTERNAL FUNCTION ascii_char
> INTEGER
> RETURNS CSTRING(1) FREE_IT
> ENTRY_POINT 'IB_UDF_ascii_char' MODULE_NAME 'ib_udf';
>
>Commit;
>
>select ASCII_CHAR(65) from RDB$DATABASE;
>
>module name or entrypoint could not be found
>
>
>Now, looking at my firebird.conf file
>
>RootDirectory= /opt/firebird/
>UdfAccess = Restrict '/opt/firebird/UDF'

Should be Restrict UDF

>But I have also tried UdfAccess = Full
>
>To no avail.

Wouldn't work with your declaration. To use Full you must declare the *full path* to the module.

>Does anyone know what I am doing incorrectly?

Yes. ;-) Trying to wing it, when the documentation is staring you in the face, right there in firebird.conf.

./heLen






[Non-text portions of this message have been removed]