-=| 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.

Patching library filename doesn't seem to be needed at least for 
Debian, where there can't be multiple minor versions installed at the 
same time. Still, I may be able to get something nice for review, e.g. 
try libXXX.so.MAJORMINOR, then libXXX.so.MAJOR.MINOR

-- dam

------------------------------------------------------------------------------
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