List:Commits« Previous MessageNext Message »
From:rburnett Date:April 14 2009 9:25pm
Subject:Connector/NET commit: r1559 - in branches/5.2: . MySql.Data/Provider/Source MySql.Data/Provider/Source/docs MySql.Data/Tests/Source
View as plain text  
Modified:
   branches/5.2/CHANGES
   branches/5.2/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs
   branches/5.2/MySql.Data/Provider/Source/NativeDriver.cs
   branches/5.2/MySql.Data/Provider/Source/docs/MySqlConnection.xml
   branches/5.2/MySql.Data/Tests/Source/CommandTests.cs
Log:
- added connection string option 'use affected rows'.  (bug #44194)      


Modified: branches/5.2/CHANGES
===================================================================
--- branches/5.2/CHANGES	2009-04-08 20:36:25 UTC (rev 1558)
+++ branches/5.2/CHANGES	2009-04-14 21:25:11 UTC (rev 1559)
@@ -30,6 +30,7 @@
 - fixed index and index column schema collections that would fail if you specified the
   any restrictions more specific than table name (bug #43991)      
 - removed a couple of unnecessary lines from NativeDriver.Open() (bug #44028)      
+- added connection string option 'use affected rows'.  (bug #44194)      
       
 Version 5.2.5 - 11/14/2008
 - fixed problem with package registration that kept the DDEX provider from working (bug #40726)

Modified: branches/5.2/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs
===================================================================
--- branches/5.2/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs	2009-04-08 20:36:25 UTC (rev 1558)
+++ branches/5.2/MySql.Data/Provider/Source/MySqlConnectionStringBuilder.cs	2009-04-14 21:25:11 UTC (rev 1559)
@@ -56,6 +56,7 @@
         bool clearing;
         bool interactiveSession;
         bool functionsReturnString;
+        bool useAffectedRows;
 
         static MySqlConnectionStringBuilder()
         {
@@ -98,6 +99,7 @@
             defaultValues.Add(Keyword.AllowUserVariables, false);
             defaultValues.Add(Keyword.InteractiveSession, false);
             defaultValues.Add(Keyword.FunctionsReturnString, false);
+            defaultValues.Add(Keyword.UseAffectedRows, false);
         }
 
         /// <summary>
@@ -723,6 +725,22 @@
             }
         }
 
+#if !CF && !MONO
+        [Category("Advanced")]
+        [DisplayName("Use Affected Rows")]
+        [Description("Should the returned affected row count reflect affected rows instead of found rows?")]
+        [DefaultValue(false)]
+#endif
+        public bool UseAffectedRows
+        {
+            get { return useAffectedRows; }
+            set
+            {
+                SetValue("Use Affected Rows", value);
+                useAffectedRows = value;
+            }
+        }
+
         #endregion
 
         #region Pooling Properties
@@ -1154,6 +1172,8 @@
                     return Keyword.InteractiveSession;
                 case "functions return string":
                     return Keyword.FunctionsReturnString;
+                case "use affected rows":
+                    return Keyword.UseAffectedRows;
             }
             throw new ArgumentException(Resources.KeywordNotSupported, key);
         }
@@ -1240,6 +1260,8 @@
                     return interactiveSession;
                 case Keyword.FunctionsReturnString:
                     return functionsReturnString;
+                case Keyword.UseAffectedRows:
+                    return useAffectedRows;
                 default:
                     return null; /* this will never happen */
             }
@@ -1348,6 +1370,8 @@
                     interactiveSession = ConvertToBool(value); break;
                 case Keyword.FunctionsReturnString:
                     functionsReturnString = ConvertToBool(value); break;
+                case Keyword.UseAffectedRows:
+                    useAffectedRows = ConvertToBool(value); break;
             }
         }
 
@@ -1529,6 +1553,7 @@
         TreatTinyAsBoolean,
         AllowUserVariables,
         InteractiveSession,
-        FunctionsReturnString
+        FunctionsReturnString,
+        UseAffectedRows
     }
 }

Modified: branches/5.2/MySql.Data/Provider/Source/NativeDriver.cs
===================================================================
--- branches/5.2/MySql.Data/Provider/Source/NativeDriver.cs	2009-04-08 20:36:25 UTC (rev 1558)
+++ branches/5.2/MySql.Data/Provider/Source/NativeDriver.cs	2009-04-14 21:25:11 UTC (rev 1559)
@@ -332,8 +332,12 @@
         /// </summary>
         private void SetConnectionFlags()
         {
-            ClientFlags flags = ClientFlags.FOUND_ROWS;
+            // allow load data local infile
+            ClientFlags flags = ClientFlags.LOCAL_FILES;
 
+            if (!Settings.UseAffectedRows)
+                flags |= ClientFlags.FOUND_ROWS;
+
             if (version.isAtLeast(4, 1, 1))
             {
                 flags |= ClientFlags.PROTOCOL_41;
@@ -363,9 +367,6 @@
             else
                 flags &= ~ClientFlags.LONG_PASSWORD;
 
-            // allow load data local infile
-            flags |= ClientFlags.LOCAL_FILES;
-
             // did the user request an interactive session?
             if (Settings.InteractiveSession)
                 flags |= ClientFlags.INTERACTIVE;

Modified: branches/5.2/MySql.Data/Provider/Source/docs/MySqlConnection.xml
===================================================================
--- branches/5.2/MySql.Data/Provider/Source/docs/MySqlConnection.xml	2009-04-08 20:36:25 UTC (rev 1558)
+++ branches/5.2/MySql.Data/Provider/Source/docs/MySqlConnection.xml	2009-04-14 21:25:11 UTC (rev 1559)
@@ -1086,6 +1086,15 @@
               Set this option to true to force the return value of SQL functions to be string.
             </td>
           </tr>
+          <tr>
+            <td>Use Affected Rows</td>
+            <td>false</td>
+            <td>
+              Set this option to true to cause the affected rows reported to reflect only the 
+              rows that are actually changed.  By default, the number of rows that are matched 
+              is returned.
+            </td>
+          </tr>
         </table>
       </div>
       <para>

Modified: branches/5.2/MySql.Data/Tests/Source/CommandTests.cs
===================================================================
--- branches/5.2/MySql.Data/Tests/Source/CommandTests.cs	2009-04-08 20:36:25 UTC (rev 1558)
+++ branches/5.2/MySql.Data/Tests/Source/CommandTests.cs	2009-04-14 21:25:11 UTC (rev 1559)
@@ -444,6 +444,28 @@
             {
             }
         }
+
+        /// <summary>
+        /// Bug #44194	ExecuteNonQuery for update commands does not match actual rows updated
+        /// </summary>
+        [Test]
+        public void UseAffectedRows()
+        {
+            execSQL("INSERT INTO Test VALUES (1, 'A')");
+            execSQL("INSERT INTO Test VALUES (2, 'B')");
+            execSQL("INSERT INTO Test VALUES (3, 'C')");
+
+            MySqlCommand cmd = new MySqlCommand("UPDATE Test SET name='C' WHERE id=3", conn);
+            Assert.AreEqual(1, cmd.ExecuteNonQuery());
+
+            string conn_str = GetConnectionString(true) + ";use affected rows=true";
+            using (MySqlConnection c = new MySqlConnection(conn_str))
+            {
+                c.Open();
+                cmd.Connection = c;
+                Assert.AreEqual(0, cmd.ExecuteNonQuery());
+            }
+        }
     }
 
 

Thread
Connector/NET commit: r1559 - in branches/5.2: . MySql.Data/Provider/Source MySql.Data/Provider/Source/docs MySql.Data/Tests/Sourcerburnett14 Apr