Subject RE: [firebird-support] Upgrade Firebird 1.5.3 to 2.5.4 - function F_STRINGLENGTH is not defined
Author stwizard

Helen,

 

Thanks for all the time you took to share your ideas in this post and the prior concerning this issue.

 

I was NOT able to use this:

 

ALTER EXTERNAL FUNCTION funcname
[ENTRY_POINT 'new_entry_point']
[MODULE_NAME 'new_library_name'];

It would allow me to do this, but I was still getting the error.

 

Instead I had to the following:

1)      Rename all RDB$DEPENDED_ON_NAME in the RDB$DEPENDENCIES table where RDV$DEPENED_ON_TYPE = 15

 

                /* Change the name of all existing UDF's to prefix them with 'xyz'.  This allows us to successfully drop the FreeUDFLib functions */

               UPDATE RDB$DEPENDENCIES SET RDB$DEPENDED_ON_NAME = 'xyz' || RDB$DEPENDED_ON_NAME   WHERE RDB$DEPENDED_ON_TYPE = 15;

 

2)      Drop all external functions (All had to be named)

                DROP EXTERNAL FUNCTION F_BLOBMAXSEGMENTLENGTH;

                DROP EXTERNAL FUNCTION F_BLOBSEGMENTCOUNT;

                …

 

3)      Install fresh FreeAdhocUDF library

 

4)      Then finally restore all RDB$DEPENDED_ON_NAME in the RDB$DEPENDENCIES table.

 

/* Activate the (old) dependendies */

UPDATE RDB$DEPENDENCIES

SET RDB$DEPENDED_ON_NAME = F_REPLACESTRING(RDB$DEPENDED_ON_NAME, 'xyz', '', 0, 0)

WHERE RDB$DEPENDED_ON_TYPE = 15 AND RDB$DEPENDED_ON_NAME STARTING WITH 'xyz';  

 

After this I did a compile all procedures and triggers and it appears I had success.

 

Of course all of this was on a metadata only restore.

 

I created a script to handle all of this when ready to do it again.

 

Thanks, for all you help.

Mike