Author: varadhan Date: 2008-02-20 06:02:56 -0500 (Wed, 20 Feb 2008) New Revision: 96233
Modified: trunk/mcs/class/System.Data/System.Data.Odbc/ChangeLog trunk/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs Log: Modified: trunk/mcs/class/System.Data/System.Data.Odbc/ChangeLog =================================================================== --- trunk/mcs/class/System.Data/System.Data.Odbc/ChangeLog 2008-02-20 10:45:51 UTC (rev 96232) +++ trunk/mcs/class/System.Data/System.Data.Odbc/ChangeLog 2008-02-20 11:02:56 UTC (rev 96233) @@ -1,3 +1,9 @@ +2008-02-20 Veerapuram Varadhan <[EMAIL PROTECTED]> + + * OdbcDataReader.cs: (GetValue): Handle cases when certain + ODBC drivers return unexpected results. Fixes #326740. Patch + provided by Mark Junker <[EMAIL PROTECTED]>. + 2008-01-16 Veerapuram Varadhan <[EMAIL PROTECTED]> * OdbcCommandBuilder.cs: Implemented 2.0 APIs and code Modified: trunk/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs =================================================================== --- trunk/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs 2008-02-20 10:45:51 UTC (rev 96232) +++ trunk/mcs/class/System.Data/System.Data.Odbc/OdbcDataReader.cs 2008-02-20 11:02:56 UTC (rev 96233) @@ -682,7 +682,10 @@ ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize); if (ret == OdbcReturn.Error) break; - if (ret != OdbcReturn.NoData && outsize!=-1) { + // Fix for strance ODBC drivers (like psqlODBC) + if (ret == OdbcReturn.Success && outsize==-1) + ret = OdbcReturn.NoData; + if (ret != OdbcReturn.NoData && outsize > 0) { if (outsize < bufsize) sb.Append (System.Text.Encoding.Unicode.GetString(buffer,0,outsize)); else @@ -700,7 +703,10 @@ ret = libodbc.SQLGetData (hstmt, ColIndex, col.SqlCType, buffer, bufsize, ref outsize); if (ret == OdbcReturn.Error) break; - if (ret != OdbcReturn.NoData && outsize!=-1) { + // Fix for strance ODBC drivers (like psqlODBC) + if (ret == OdbcReturn.Success && outsize==-1) + ret = OdbcReturn.NoData; + if (ret != OdbcReturn.NoData && outsize > 0) { if (outsize < bufsize) sb1.Append (System.Text.Encoding.Default.GetString(buffer,0,outsize)); else _______________________________________________ Mono-patches maillist - Mono-patches@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-patches