Hello community, here is the log from the commit of package firebird for openSUSE:Factory checked in at 2012-11-12 16:04:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/firebird (Old) and /work/SRC/openSUSE:Factory/.firebird.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "firebird", Maintainer is "" Changes: -------- --- /work/SRC/openSUSE:Factory/firebird/firebird-classic.changes 2012-07-30 09:13:00.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.firebird.new/firebird-classic.changes 2012-11-12 16:04:50.000000000 +0100 @@ -1,0 +2,41 @@ +Sun Nov 11 15:16:01 UTC 2012 - [email protected] + +- update to upstream version 2.5.2.26539 (2.5.2 final) + * Optimizer level solution for CORE-2790/CORE-3449 + * CORE-2666: Make it possible to use API to do remote + backups/restores + * backup state lock should be released at latch timeout, else + lock state accounting becomes inconsistent + * CORE-3873: Server crashes while switching to the shadow if the + disk I/O fault happens while flushing the cache + * CORE-3860: Trace API: Faulty database filter crashes server + * CORE-3875: GBak does not check correctly parameters and backups + random database with -B ":" + * CORE-3879: Make fb_lock_print a bit more handy + * CORE-3656: Support for sweep information in Trace API + * CORE-2668: Write note into log when automatic sweep is started + * Enabled per-table runtime stats for sweeper (necessary for + CORE-3656) + * CORE-3884: Server crashes on preparing empty query when trace + is enabled + * CORE-3238: Makes GEN_UUID return a compliant RFC-4122 binary + UUID + * CORE-3887: CHAR_TO_UUID and UUID_TO_CHAR works different in + big/little endian architectures - problem similar to CORE-2898 + * CORE-3895: High memory usage when PSQL code SELECT's from + stored procedure which modified some data + * Fixed the server crash in Stack::assign() + * CORE-3902: Derived fields may not be optimized via an index + * Fixed the broken (working as no-op) sweep in SuperServer + * Use better name from trunk for CORE-3911 + * Restored the ODS level compatibility with v2.5.1 index keys, + while using the "old good" index key format in new indices. It + allows to claim that CORE-3675 and CORE-3853 are fixed (after + migration via backup/restore) but still operate almost + correctly with keys created in v2.5.1. + * CORE-3912: segfault in superclassic + * Better diagnostic (CORE-3786) +- firebird-2.5.2-icu49.patch: + fix broken unicode collations (bnc#789171, CORE-3946) + +------------------------------------------------------------------- firebird.changes: same change Old: ---- Firebird-2.5.2.26494-0.tar.bz2 New: ---- Firebird-2.5.2.26539-0.tar.bz2 firebird-2.5.2-icu49.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ firebird-classic.spec ++++++ --- /var/tmp/diff_new_pack.b4uSWJ/_old 2012-11-12 16:04:52.000000000 +0100 +++ /var/tmp/diff_new_pack.b4uSWJ/_new 2012-11-12 16:04:52.000000000 +0100 @@ -16,7 +16,7 @@ # -%define upversion 2.5.2.26494 +%define upversion 2.5.2.26539 %define pkgversion Firebird-%{upversion}-0 %define bname firebird @@ -53,6 +53,7 @@ Patch7: %{bname}-2.5.2-pkgconfig.patch Patch8: %{bname}-2.5.2-runlevel.patch Patch9: ppc64-libdir.patch +Patch10: %{bname}-2.5.2-icu49.patch Patch11: %{bname}-2.5.2-isqlalign.patch Patch12: %{bname}-2.5.2-isqllocale.patch Patch13: %{bname}-2.5.2-isqlwidth.patch @@ -80,6 +81,7 @@ %patch7 %patch8 -p1 %patch9 -p1 +%patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 ++++++ firebird.spec ++++++ --- /var/tmp/diff_new_pack.b4uSWJ/_old 2012-11-12 16:04:52.000000000 +0100 +++ /var/tmp/diff_new_pack.b4uSWJ/_new 2012-11-12 16:04:52.000000000 +0100 @@ -16,7 +16,7 @@ # -%define upversion 2.5.2.26494 +%define upversion 2.5.2.26539 %define pkgversion Firebird-%{upversion}-0 %if 0%{?suse_version} < 1130 @@ -52,6 +52,7 @@ Patch7: %{name}-2.5.2-pkgconfig.patch Patch8: %{name}-2.5.2-runlevel.patch Patch9: ppc64-libdir.patch +Patch10: %{name}-2.5.2-icu49.patch Patch11: %{name}-2.5.2-isqlalign.patch Patch12: %{name}-2.5.2-isqllocale.patch Patch13: %{name}-2.5.2-isqlwidth.patch @@ -74,6 +75,7 @@ %patch7 %patch8 -p1 %patch9 -p1 +%patch10 -p1 %patch11 -p1 %patch12 -p1 %patch13 -p1 ++++++ Firebird-2.5.2.26494-0.tar.bz2 -> Firebird-2.5.2.26539-0.tar.bz2 ++++++ /work/SRC/openSUSE:Factory/firebird/Firebird-2.5.2.26494-0.tar.bz2 /work/SRC/openSUSE:Factory/.firebird.new/Firebird-2.5.2.26539-0.tar.bz2 differ: char 11, line 1 ++++++ firebird-2.5.2-icu49.patch ++++++ commit 91ad9c27591ec11bfed97b7a9b22ab9e99779dad Author: asfernandes <asfernandes@de594faa-8d1b-4a0c-9a6a-a7de5f8bf859> Date: Fri Oct 12 21:20:30 2012 +0000 Backport fix for CORE-3946 - UNICODE collations does not work with ICU 49. git-svn-id: https://firebird.svn.sourceforge.net/svnroot/firebird/firebird/branches/B2_5_Release@57236 de594faa-8d1b-4a0c-9a6a-a7de5f8bf859 diff --git a/src/jrd/unicode_util.cpp b/src/jrd/unicode_util.cpp index ba675c3..ca561f9 100644 --- a/src/jrd/unicode_util.cpp +++ b/src/jrd/unicode_util.cpp @@ -42,6 +42,9 @@ #include "unicode/ucnv.h" #include "unicode/ucol.h" +// The next major ICU version after 4.8 is 49. +#define ICU_NEW_VERSION_MEANING 49 + using namespace Firebird; @@ -49,8 +52,16 @@ using namespace Firebird; namespace Jrd { +#if U_ICU_VERSION_MAJOR_NUM >= ICU_NEW_VERSION_MEANING +const char* const UnicodeUtil::DEFAULT_ICU_VERSION = STRINGIZE(U_ICU_VERSION_MAJOR_NUM); +#else const char* const UnicodeUtil::DEFAULT_ICU_VERSION = STRINGIZE(U_ICU_VERSION_MAJOR_NUM)"."STRINGIZE(U_ICU_VERSION_MINOR_NUM); +#endif + + +static void formatFilename(PathName& filename, const char* templateName, + int majorVersion, int minorVersion); // encapsulate ICU collations libraries @@ -79,6 +90,11 @@ public: { string symbol; + symbol.printf("%s_%d", name, majorVersion); + module->findSymbol(symbol, ptr); + if (ptr) + return; + symbol.printf("%s_%d_%d", name, majorVersion, minorVersion); module->findSymbol(symbol, ptr); if (ptr) @@ -157,14 +173,25 @@ public: RWLock lock; }; -namespace { - GlobalPtr<UnicodeUtil::ICUModules> icuModules; -} +static GlobalPtr<UnicodeUtil::ICUModules> icuModules; static const char* const COLL_30_VERSION = "41.128.4.4"; // ICU 3.0 collator version +static void formatFilename(PathName& filename, const char* templateName, + int majorVersion, int minorVersion) +{ + string s; + if (majorVersion >= ICU_NEW_VERSION_MEANING) + s.printf("%d", majorVersion); + else + s.printf("%d%d", majorVersion, minorVersion); + + filename.printf(templateName, s.c_str()); +} + + static void getVersions(const string& configInfo, ObjectsArray<string>& versions) { charset cs; @@ -758,17 +785,17 @@ UnicodeUtil::ICU* UnicodeUtil::loadICU(const Firebird::string& icuVersion, const Firebird::string& configInfo) { #if defined(WIN_NT) - const char* const inTemplate = "icuin%d%d.dll"; - const char* const ucTemplate = "icuuc%d%d.dll"; + const char* const inTemplate = "icuin%s.dll"; + const char* const ucTemplate = "icuuc%s.dll"; #elif defined(DARWIN) const char* const inTemplate = "/Library/Frameworks/Firebird.framework/Versions/A/Libraries/libicui18n.dylib"; const char* const ucTemplate = "/Library/Frameworks/Firebird.framework/versions/A/Libraries/libicuuc.dylib"; #elif defined(HPUX) - const char* const inTemplate = "libicui18n.sl.%d%d"; - const char* const ucTemplate = "libicuuc.sl.%d%d"; + const char* const inTemplate = "libicui18n.sl.%s"; + const char* const ucTemplate = "libicuuc.sl.%s"; #else - const char* const inTemplate = "libicui18n.so.%d%d"; - const char* const ucTemplate = "libicuuc.so.%d%d"; + const char* const inTemplate = "libicui18n.so.%s"; + const char* const ucTemplate = "libicuuc.so.%s"; #endif ObjectsArray<string> versions; @@ -776,24 +803,28 @@ UnicodeUtil::ICU* UnicodeUtil::loadICU(const Firebird::string& icuVersion, string version = icuVersion.isEmpty() ? versions[0] : icuVersion; if (version == "default") - { - version.printf("%d.%d", U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM); - } + version = DEFAULT_ICU_VERSION; for (ObjectsArray<string>::const_iterator i(versions.begin()); i != versions.end(); ++i) { int majorVersion, minorVersion; + int n = sscanf((*i == "default" ? version : *i).c_str(), "%d.%d", + &majorVersion, &minorVersion); - if (*i == "default") - { - majorVersion = U_ICU_VERSION_MAJOR_NUM; - minorVersion = U_ICU_VERSION_MINOR_NUM; - } - else if (sscanf(i->c_str(), "%d.%d", &majorVersion, &minorVersion) != 2) + if (n == 1) + minorVersion = 0; + else if (n != 2) continue; string configVersion; - configVersion.printf("%d.%d", majorVersion, minorVersion); + + if (majorVersion >= ICU_NEW_VERSION_MEANING) + { + minorVersion = 0; + configVersion.printf("%d", majorVersion); + } + else + configVersion.printf("%d.%d", majorVersion, minorVersion); if (version != configVersion) continue; @@ -805,7 +836,7 @@ UnicodeUtil::ICU* UnicodeUtil::loadICU(const Firebird::string& icuVersion, return icu; PathName filename; - filename.printf(ucTemplate, majorVersion, minorVersion); + formatFilename(filename, ucTemplate, majorVersion, minorVersion); icu = FB_NEW(*getDefaultMemoryPool()) ICU(majorVersion, minorVersion); @@ -822,7 +853,7 @@ UnicodeUtil::ICU* UnicodeUtil::loadICU(const Firebird::string& icuVersion, continue; } - filename.printf(inTemplate, majorVersion, minorVersion); + formatFilename(filename, inTemplate, majorVersion, minorVersion); icu->inModule = ModuleLoader::loadModule(filename); if (!icu->inModule) -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
