Subject | RE: [firebird-support] Upgrade Firebird 1.5.3 to 2.5.4 - function F_STRINGLENGTH is not defined |
---|---|
Author | stwizard |
Post date | 2015-08-10T20:51:33Z |
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