Commit graph

15 commits

Author SHA1 Message Date
Narayanan V
094ddf2266 Bug#45197 cp1250 character set with IBMDB2I generates 2027 error
Running a SELECT query over an IBMDB2I table with a cp1250 character set
was producing an error 2027 (ibmdb2i error 2027: Error converting single-byte
sort sequence to UCS-2).

The QMY_DESCRIBE_RANGE API was returning error 2027 to the storage engine
because the CCSID used for a cp1250 column (870) does not match the CCSID
used by the DB2 sort sequences associated with cp1250_* collations (1153).
This was because the storage engine relies on a set of system APIs to
determine which CCSID value most closely matches a particular MySQL
character set. However, in the case of cp1250, the system is returning
CCSID 870, which does not have a codepoint for the euro symbol, making it
an incorrect match.

This patch overrides the selection of a compatible CCSID to always return
1153 for cp1250.

storage/ibmdb2i/db2i_charsetSupport.cc:
  Bug#45197 cp1250 character set with IBMDB2I generates 2027 error
  
  override the selection of a compatible CCSID to
  always return 1153 for cp1250.
2009-06-01 12:52:10 +05:30
Narayanan V
858e118ab9 Bug#44811 Tests with utf8 charset fail with ibmdb2i on 64bit MySQL
wmemset was being used to fill the row buffers.
wmemset was intended  to  fill the buffer with
16-bit UCS2 pad values.  However,  the  64-bit
version of wmemset uses 32-bit wide characters
and thus filled the buffer incorrectly. In some
cases, the null  byte  map would be overwritten,
causing ctype_utf8.test and ibmdb2i_rir.test to
fail, giving the error message CPF5035.

This patch eliminates the use of wmemset to fill
the row buffer. wmemset has  been  replaced with
memset16, which always  fills  memory with 16-bit
values.

storage/ibmdb2i/db2i_conversion.cc:
  Bug#44811 Tests with utf8 charset fail with ibmdb2i on 64bit MySQL
  
  Eliminate the use of wmemset to fill
  the row buffer. Replace wmemset with
  memset16, which always  fills  memory
  with 16-bit values.
storage/ibmdb2i/db2i_misc.h:
  Bug#44811 Tests with utf8 charset fail with ibmdb2i on 64bit MySQL
  
  Eliminate the use of wmemset to fill
  the row buffer. Replace wmemset with
  memset16, which always  fills  memory
  with 16-bit values.
2009-05-29 15:01:00 +05:30
Narayanan V
02b90ed9c3 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.
2009-05-17 22:50:20 +05:30
Narayanan V
a8df3d3c90 Bug#44610 RCDFMT clause requested when creating DB2 table
In order to better support the usage of
IBMDB2I tables from within RPG programs,
the storage engine should ensure that the
RCDFMT name is consistent and predictable
for DB2 tables.

This patch appends a "RCDFMT <name>"
clause to the CREATE TABLE statement
that is passed to DB2.  <name> is
generated from the original name of
the table itself. This ensures a
consistent and deterministic mapping
from the original table.

For the sake of simplicity only
the alpha-numeric characters are
preserved when generating the new
name, and these are upper-cased;
other characters are replaced with
an underscore (_). Following DB2
system identifier rules, the name
always begins with an alpha-character
and has a maximum of ten characters.
If no usable characters are found in
the table name, the name X is used.

mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44610.result:
  Bug#44610 RCDFMT clause requested when creating DB2 table
  
  Result file for the test case.
mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44610.test:
  Bug#44610 RCDFMT clause requested when creating DB2 table
  
  Test case that confirms that the names that are being generated are valid.
storage/ibmdb2i/ha_ibmdb2i.cc:
  Bug#44610 RCDFMT clause requested when creating DB2 table
  
  This patch appends a "RCDFMT <name>"
  clause to the CREATE TABLE statement
  that is passed to DB2.  <name> is
  generated from the original name of
  the table itself. This ensures a
  consistent and deterministic mapping
  from the original table.
storage/ibmdb2i/ha_ibmdb2i.h:
  Bug#44610 RCDFMT clause requested when creating DB2 table
  
  This patch appends a "RCDFMT <name>"
  clause to the CREATE TABLE statement
  that is passed to DB2.  <name> is
  generated from the original name of
  the table itself. This ensures a
  consistent and deterministic mapping
  from the original table.
2009-05-17 21:55:23 +05:30
Narayanan V
fdce101978 Bug#44232 Error msg should be improved when collation not supported.
When a user selected an unsupported character set for an
IBMDB2I table, error 2501 or 2511 may have been returned,
giving the appearance of an internal programming error.

This patch consolidates these errors into a single descriptive
error message for the common case of an unsupported character
set.

The new error number is 2504 and indicates a user error.
The errors 2501 and 2511 remain to indicate cases of internal
programming errors.

storage/ibmdb2i/db2i_charsetSupport.cc:
  Bug#44232 Error msg should be improved when collation not supported.
          
  consolidate errors 2501 and 2511 into a single
  descriptive error message for the common case
  of an unsupported character set.
storage/ibmdb2i/db2i_conversion.cc:
  Bug#44232 Error msg should be improved when collation not supported.
          
  consolidate errors 2501 and 2511 into a single
  descriptive error message for the common case
  of an unsupported character set.
storage/ibmdb2i/db2i_errors.cc:
  Bug#44232 Error msg should be improved when collation not supported.
          
  consolidate errors 2501 and 2511 into a single
  descriptive error message for the common case
  of an unsupported character set.
storage/ibmdb2i/db2i_errors.h:
  Bug#44232 Error msg should be improved when collation not supported.
          
  consolidate errors 2501 and 2511 into a single
  descriptive error message for the common case
  of an unsupported character set.
2009-05-05 15:03:52 +05:30
Georgi Kodinov
9a50874dba merged 5.1-main to 5.1-bugteam 2009-04-30 16:42:38 +03:00
Narayanan V
70f53b1a65 Bug#44337 Select query using index merge fails with MCH3601
The storage engine was not correctly handling the case in 
which rnd_pos is executed for a handler without a preceding
rnd_next or index read operation. As a result, an unitialized
file handle was sometimes being passed to the QMY_READ API.

The fix clears the rrnAssocHandle at the beginning of each
read operation and then checks to see whether it has been
set to a valid handle value before attempting to use it
in rnd_pos. If rrnAssocHandle has not been set by a previous
read operation, rnd_pos instead falls back to the use of the
currently active handle.

storage/ibmdb2i/ha_ibmdb2i.cc:
  Bug#44337 Select query using index merge fails with MCH3601
  
  - clear the rrnAssocHandle at the beginning of each
    read operation 
  - checks to see whether it has been set to a valid
    handle value before attempting to use it in rnd_pos
2009-04-29 16:51:14 +05:30
Narayanan V
2187c60bf4 merging with mysql-5.1-bugteam 2009-04-13 17:05:40 +05:30
Narayanan V
097262a85b merging with mysql-5.1-bugteam tree 2009-04-13 16:51:24 +05:30
Narayanan V
f286444bd5 Bug#44025 Some schema names longer than 8 characters not supported by IBMDB2I
On IBM i 5.4, schemas with names that are longer 
than 8 characters and contain digits or an underscore
cannot contain IBMDB2I tables, even though this should
theoritically be possible if all alpha characters
are uppercase.

THe current patch fixes the IBMDB2I engine to
allow digits and the underscore(_) to be used in
schema names longer than 8 characters on IBM i 5.4.

storage/ibmdb2i/db2i_misc.h:
  The function which detected whether the
  operating system would treat a schema as an "ordinary identifier" (allowing 10 characters in the name instead of 8) did not cover all possible cases.Function was
  renamed and enhanced to detect all
  possible cases of "ordinary identifiers".
storage/ibmdb2i/ha_ibmdb2i.cc:
  use the renamed function to cover all
  possible cases of ordinary identifiers.
2009-04-10 13:18:07 +05:30
Narayanan V
63e2b7dd08 Bug#44022 CREATE TABLE sometimes fails silently for IBMDB2I engine
In some circumstances, when a table is created with
the IBMDB2I engine, the CREATE TABLE statement will
return successfully but the table will not exist.

The current patch addresses the above issue and causes
CREATE to fail and report and error to the user.

storage/ibmdb2i/ha_ibmdb2i.cc:
  Locally declared return code hid function-
  scoped declaration and went out of scope
  before being returned. Removed inner
  declaration.
2009-04-10 13:01:15 +05:30
Narayanan V
ee64a8d4f0 Bug#44020 Unicode Swedish collations not working with IBMDB2I
The utf8_swedish_ci and ucs2_swedish_ci
collations do not work with indexes on 
IBMDB2I tables.

The current patch adds the mapping for
ucs2_swedish collation and removes the 
ucs2_spanish2 mapping which is not
supported by any version of the operating
system.

storage/ibmdb2i/db2i_collationSupport.cc:
  Removed mapping for ucs2_spanish2 collation
  since it is not supported by any version of the operating system. Added mapping for ucs2_swedish
  collation which had been overlooked but is
  supported by the IBM i 6.1.
2009-04-10 11:56:54 +05:30
MySQL Build Team
d434e1269b Add new headers to noinst_HEADERS (ibmdb2i storage engine) 2009-04-01 22:18:49 +02:00
Timothy Smith
a5216560d0 Import the ibmdb2i-ga4-src snapshot from IBM 2009-03-09 15:20:14 -06:00
Timothy Smith
338aefcb38 Add the IBM DB2 for i storage engine.
Modify plugins.m4 configuration framework so that plugins which are
not built still get added to the source distribution during make dist.
This came up now because we can only build ibmdb2i on i5/OS, and we
can't bootstrap our source dist on that platform.  The solution is to
specify DIST_SUBDIRS containing all plugins, separate from SUBDIRS
which contains the plugins which are actually built.

This ibmdb2i code is from the ibmdb2i-ga3-src.zip file, with a patch
to plug.in to disable the plugin if the PASE environment isn't available.
2009-02-15 03:18:30 +01:00