On Wed, Dec 12, 2007 at 05:11:43PM -0800, Ed Reed wrote:
I've found a glaring problem with the latest ODBC connector. Data
types have been changed and data is no longer being read correctly.
That's not quite correct -- data types are now actually being read
correctly. They were wrong before, even if it was what you expected.
I'm running MySQL 5.1.16 on Netware. My apps are VB6 and VBA using
ADO. The following query produces different data types depending on
the version of the ODBC driver.
SELECT ConCat(21000,'-','a')
In 3.51.19 it is a VarChar and in 3.51.22 it's a VarBinary. Concat is
supposed to return a string. In C a byte array may be fine but in VB a
string should be a VarChar.
Is this a bug or is there a server or OBDC setting that can be changed
to make sure that it always returns a VarChar
CONCAT() derives its return types from its arguments. The key part from
the CONCAT() documentation is:
If all arguments are non-binary strings, the result is a non-binary
string. If the arguments include any binary strings, the result is a
binary string. A numeric argument is converted to its equivalent binary
string form; if you want to avoid that, you can use an explicit type
cast, as in this example:
SELECT CONCAT(CAST(int_col AS CHAR), char_col);
That earlier releases of the driver would return a non-binary string in
your case was a bug.
That a numeric argument is converted to a binary string is an
unfortunate server feature. I hope it will get fixed in a future
server release, but I'm not sure when that will be, and it will almost
certainly not be in the 5.1 series.
Jim
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]