2009-05-15 Veerapuram Varadhan <vvaradhan@novell.com>
authorVeerapuram Varadhan <v.varadhan@gmail.com>
Fri, 15 May 2009 10:47:55 +0000 (10:47 -0000)
committerVeerapuram Varadhan <v.varadhan@gmail.com>
Fri, 15 May 2009 10:47:55 +0000 (10:47 -0000)
** Fixes #424908
* OracleParameter.cs:  Make sure size and sizeSet are properly
updated whenever value changes.

svn path=/trunk/mcs/; revision=134191

mcs/class/System.Data.OracleClient/System.Data.OracleClient/ChangeLog
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs

index 29b2b04e94f3aa8ff00454396e63fc5ad83c819f..ef35fe739a797fa673a8406a173786f868d1aa60 100644 (file)
@@ -1,3 +1,9 @@
+2009-05-15  Veerapuram Varadhan  <vvaradhan@novell.com>
+
+       ** Fixes #424908
+       * OracleParameter.cs:  Make sure size and sizeSet are properly 
+       updated whenever value changes.
+       
 2009-03-29  Veerapuram Varadhan  <vvaradhan@novell.com>
 
        * Fixes #480377
index 03a59ae320e5c6d74b4d51108b4d3fa933387dfa..a078d1cda2de4d15e4ae5666fddd82bb3482d92d 100644 (file)
@@ -123,9 +123,13 @@ namespace System.Data.OracleClient
                {
                        this.name = name;
                        this.value = value;
+                       if (value != null) {
+                               this.sizeSet = true;
+                               this.size = InferSize (value);
+                       }
                        srcColumn = string.Empty;
                        SourceVersion = DataRowVersion.Current;
-                       InferOracleType (value);
+                       InferOracleType (value);                        
                }
 
                public OracleParameter (string name, OracleType oracleType)
@@ -150,6 +154,7 @@ namespace System.Data.OracleClient
                        if (size < 0)
                                throw new ArgumentException("Size must be not be negative.");
                        this.size = size;
+                       this.sizeSet = true;
                        this.value = value;
                        SourceColumnNullMapping = sourceColumnNullMapping;
                        OracleType = oracleType;
@@ -165,6 +170,7 @@ namespace System.Data.OracleClient
                        if (size < 0)
                                throw new ArgumentException("Size must be not be negative.");
                        this.size = size;
+                       this.sizeSet = true;
                        this.value = value;
                        this.isNullable = isNullable;
                        this.precision = precision;
@@ -353,6 +359,10 @@ namespace System.Data.OracleClient
                                this.value = value;
                                if (!oracleTypeSet)
                                        InferOracleType (value);
+                               if (value != null) {
+                                       this.size = InferSize ();
+                                       this.sizeSet = true;
+                               }
                        }
                }
 
@@ -865,6 +875,10 @@ namespace System.Data.OracleClient
 
                private void InferOracleType (object value)
                {
+                       // Should we throw an exception here?
+                       if (value is null)
+                               return;
+                       
                        Type type = value.GetType ();
                        string exception = String.Format ("The parameter data type of {0} is invalid.", type.FullName);
                        switch (type.FullName) {