Subject Re: embedded firebird - UDF problem
Author Adam
--- In firebird-support@yahoogroups.com, Slawomir Bialek <civic@n...>
wrote:
> Hi,
>
> I have application which is installed on the windows
> server and it uses embedded firebird 1.5.
>
> The application is accessible in our network
> via something like \\10.10.10.1\app\app.exe
>
> Everything was fine with it before,
> but lastly we have added some features
> which require UDF. There is subdirectory
> udf in \app\ on the server and the application
> works fine locally.
>
> We are trying to run it via \\10.10.10.1\app\app.exe
> and it gives us:
> Invalid request BLR at offset...
> function SUBSTR is not defined
> module name or entrypoint could not be found.
>
> I think firebird is not able to load UDF DLLs
> via \\10.10.10.1\app\udf\...
> We don't want to map \\10.10.10.1\ to a drive letter.
> We have played with root dir in firebird.conf - no effect.
>
> Is there something we can do with it? :)

A Firebird Server will not connect to a database that is on a volume
not directly controlled by the server. It is a sure fire way to
achieve a corrupted database. As Embedded Firebird is based on
Superserver (it is just a superserver encapsulated inside a library
that looks to your application to be the same as the normal client
library), I imagine it would share this restriction.

You basically have two choices.

1. Move the application folder locally to the client. (No a mapped
drive will not trick it into working).

2. Use a proper firebird server. This would be my recommendation.
Install Superserver onto 10.10.10.1 (because that behaves similar to
embedded. On 10.10.10.1, go to add a line in aliases.conf (normally
c:\Program files\Firebird\Firebird_1_5\aliases.conf) that looks like

Myapp=c:\path\to\database.fdb

(substitute the alias name for something recognisable, and the path
for the actual path of the database).

Change the applications connection string to

10.10.10.1:MyApp

and it should work as before.

If there is a firewall installed on the server, you will need to
create an exception on the port (3050) or the application (fbserver).

One thing this may do that may or may not be desirable is it allows
multiple connections whereas embedded limited the first one in. There
are easy ways around this, attempting to open a dummy file in write
mode is a simple one.

Adam