On 12/12/13 14:10, Damyan Ivanov wrote:
> -=| Alex Peshkoff, 12.12.2013 13:12:11 +0400 |=-
>> On 12/12/13 13:01, Damyan Ivanov wrote:
>>> -=| Damyan Ivanov, 12.12.2013 10:30:22 +0200 |=-
>>>> (This is all on Debian unstable, firebird 2.5.2.26540 from the
>>>> package)
>>>>
>>>>    $ isql-fb
>>>>    Use CONNECT or CREATE DATABASE to specify a database
>>>>    SQL> create database 'test.fdb';
>>>>    SQL> create table xxx (name varchar(32) character set UTF8 collate 
>>>> UNICODE);
>>>>    Statement failed, SQLSTATE = 22021
>>>>    unsuccessful metadata update
>>>>    -XXX
>>>>    -COLLATION UNICODE for CHARACTER SET UTF8 is not installed
>>>>
>>>> The problem appears also when restoring from backup and when opening
>>>> a database which worked with firebird linked to ICU 4.8.1.1.
>>>>
>>>> fbintl.conf is not changed. (icu_versions = default)
>>>> …
>>>> My first idea was to patch the ucTemplate (and other *Template) to
>>>> only use the MAJOR version component. I'll report back if this
>>>> works, but there may be something else going on, given that these
>>>> lookups aren't needed at all when linked with older ICU.
>>> No luck. Patching avoids the lookups for libicuuc.521.so and there is
>>> only one open of libicuuc.52.so at startup, but the error stays.
>>>
>>> Perhaps there are API changes that lead to missing entry points. I'll
>>> try to verify that.
>> Can't help much - the max version I've dealt with is 51.2.
> No problem!
>
> What seems to help is attempting to also find symbols with only major
> version appended:
>
> --- a/src/jrd/unicode_util.cpp
> +++ b/src/jrd/unicode_util.cpp
> @@ -86,6 +86,11 @@ public:
>   
>                  symbol.printf("%s_%d%d", name, majorVersion, minorVersion);
>                  module->findSymbol(symbol, ptr);
> +               if (ptr)
> +                       return;
> +
> +               symbol.printf("%s_%d", name, majorVersion);
> +               module->findSymbol(symbol, ptr);
>          }
>   
>          int majorVersion;
>
> Symbols in 52.1 are named like:
> u_init_52
> uset_clone_52
> ucase_totitle_52
> etc.

Quite reasonable. In trunk we already have an array of patterns and a 
loop on it to make it easier to add new rules. BTW, "%s_%d" is present 
in both it and B2_5_Release.

What's a bit funny - sometimes they had 2-level versioning, i.e. for 
icu30 we had major==3 and minor==0.
Now major is already 52 :-)


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to