#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#44856 | Narayanan V | 17 May |