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]