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

Reply via email to