Regression: engine may throw transliteration errors when running from non-ASCII 
system path
-------------------------------------------------------------------------------------------

                 Key: CORE-5159
                 URL: http://tracker.firebirdsql.org/browse/CORE-5159
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 4.0 Initial, 3.0 RC2
            Reporter: Dmitry Yemanov


Unpack Firebird into some non-ASCII directory and try to create some ICU 
collation (or restore a backup with ICU attributes), for example:

c:\тест\firebird>gbak -r -v -p 8192 c:\firebird\test.fbk c:\firebird\test.fdb
gbak:opened file c:\firebird\test.fbk
gbak:transportable backup -- data in XDR format
gbak:           backup file is compressed
gbak:backup version is 9
gbak: ERROR:arithmetic exception, numeric overflow, or string truncation
gbak: ERROR:    Cannot transliterate character between character sets
gbak: ERROR:failed to create database c:\firebird\test.fdb
gbak:Exiting before completion due to errors

It works fine with FB 2.5. Stack trace for error:

        fbintl.dll!Jrd::CsConvert::convert()
        fbintl.dll!Firebird::IntlUtil::parseSpecificAttributes()
        fbintl.dll!Jrd::getVersions()
        fbintl.dll!Jrd::UnicodeUtil::loadICU()
        fbintl.dll!Jrd::UnicodeUtil::getCollVersion()
        fbintl.dll!Firebird::IntlUtil::setupIcuAttributes()
        fbintl.dll!LCICU_setup_attributes()
        fbintl.dll!LD_setup_attributes()
        engine12.dll!Jrd::IntlManager::setupCollationAttributes()
        engine12.dll!setupSpecificCollationAttributes()
        engine12.dll!create_collation()
        engine12.dll!DFW_perform_work()
        engine12.dll!DFW_perform_system_work()
        engine12.dll!INI_format()
        engine12.dll!Jrd::JProvider::createDatabase()

Transliteration error happens because attributes are treated as ASCII:

        charset cs;
        IntlUtil::initAsciiCharset(&cs);

        AutoPtr<CharSet> 
ascii(Jrd::CharSet::createInstance(*getDefaultMemoryPool(), 0, &cs));

        IntlUtil::SpecificAttributesMap config;
        IntlUtil::parseSpecificAttributes(ascii, configInfo.length(),
                (const UCHAR*) configInfo.c_str(), &config);

but in fact it includes a "filename" attribute containing ANSI characters:

p = 0x00000000004a0dab "c:\тест\firebird\intl\fbintl;icu_versions=default"


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to