List:Commits« Previous MessageNext Message »
From:Narayanan V Date:May 17 2009 5:20pm
Subject:bzr commit into mysql-5.1-bugteam branch (v.narayanan:2881) Bug#44856
View as plain text  
#At file:///export/home/log/Narayanan/mysql_checkouts_bazaar/5.1_main_repository/mysql-5.1-bugteam-44856/ based on revid:v.narayanan@stripped

 2881 Narayanan V	2009-05-17
      Bug#44856 IBMDB2I gives misleading 2504 error
      
      Occasionally, if both the partition_pruning
      and partition_range tests are run sequentially
      against the IBMDB2I engine, the partition_range
      test will fail.
      
      Compiler padding on a 64-bit build allowed
      garbage data in the hash key used for
      caching open iconv descriptors. As a
      result, cached descriptors were not found,
      and multiple duplicate iconv descriptors
      were opened for a single character set.
      Eventually, the maximum number of open
      iconv descriptors was reached, and further
      iconv_open() calls would fail, leading the
      storage engine to report incorrectly that
      the character set was not supported.
      
      This patch widens the 16-bit members of the
      hash key to 32 bits to eliminate compiler
      padding. The entire length of the hash key
      is now initialized correctly on both 32-bit
      and 64-bit builds.
     @ storage/ibmdb2i/db2i_charsetSupport.cc
        Bug#44856 IBMDB2I gives misleading 2504 error
        
        widen the 16-bit members of the
        hash key to 32 bits to eliminate
        compiler padding.

    modified:
      storage/ibmdb2i/db2i_charsetSupport.cc
=== modified file 'storage/ibmdb2i/db2i_charsetSupport.cc'
--- a/storage/ibmdb2i/db2i_charsetSupport.cc	2009-05-05 09:33:52 +0000
+++ b/storage/ibmdb2i/db2i_charsetSupport.cc	2009-05-17 17:20:20 +0000
@@ -129,8 +129,8 @@ struct IconvMap
 {
   struct HashKey
   {
-    uint16 direction; // This is a uint16 instead of a uchar to avoid garbage data in the key from compiler padding
-    uint16 db2CCSID;
+    uint32 direction; // These are uint32s to avoid garbage data in the key from compiler padding
+    uint32 db2CCSID;
     const CHARSET_INFO* myCharset;
   } hashKey;
   iconv_t iconvDesc;


Attachment: [text/bzr-bundle] bzr/v.narayanan@sun.com-20090517172020-777h7wm5yti8a8f0.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (v.narayanan:2881) Bug#44856Narayanan V17 May