2009-05-16 Veerapuram Varadhan <vvaradhan@novell.com>
authorVeerapuram Varadhan <v.varadhan@gmail.com>
Sat, 16 May 2009 01:15:31 +0000 (01:15 -0000)
committerVeerapuram Varadhan <v.varadhan@gmail.com>
Sat, 16 May 2009 01:15:31 +0000 (01:15 -0000)
** Fixes #382589
* Tds.cs (ServerTdsVersion): New property to access ServerVersion.

* Tds70.cs (WriteParameterInfo): Treat Decimal types as Numeric
types from SQL Server 2000.

* TdsVersion.cs: Add SQL Server 2008 version.

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

mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/ChangeLog
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/Tds70.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds.Protocol/TdsVersion.cs

index cae4d80f87cf092e9da3da47cd8522256201c59a..01fd8696c0b3b5858f1d86031c5a342718271ac5 100644 (file)
@@ -1,3 +1,13 @@
+2009-05-16  Veerapuram Varadhan  <vvaradhan@novell.com>
+
+       ** Fixes #382589
+       * Tds.cs (ServerTdsVersion): New property to access ServerVersion.
+       
+       * Tds70.cs (WriteParameterInfo): Treat Decimal types as Numeric 
+       types from SQL Server 2000.
+       
+       * TdsVersion.cs: Add SQL Server 2008 version.
+       
 2009-05-02  Veerapuram Varadhan  <vvaradhan@novell.com>
 
        ** Fixes #462947 - Patch by Gert Driesen
index a19fab45af6f1ade4c5538efe658402e1fc1ebc5..df1a648c1d743e72dbfbf7571a06adc6942abf27 100644 (file)
@@ -201,6 +201,20 @@ namespace Mono.Data.Tds.Protocol
                public byte[] Collation {
                        get {return collation; }
                }
+
+               public TdsVersion ServerTdsVersion {
+                       get { 
+                               switch (databaseMajorVersion) {
+                               case 4: return TdsVersion.tds42;
+                               case 5: return TdsVersion.tds50;
+                               case 7: return TdsVersion.tds70;
+                               case 8: return TdsVersion.tds80;
+                               case 9: return TdsVersion.tds90;
+                               case 10: return TdsVersion.tds100;
+                               default: return tdsVersion; // return client's version
+                               }
+                       }
+               }
                
                private void SkipRow ()
                {
index b92825495eb6a56acb7ed9ccd2413285b52d8627..580d17bef3e2255b71b9836da8e792dc878ec57e 100644 (file)
@@ -489,6 +489,10 @@ namespace Mono.Data.Tds.Protocol
                        if (TdsVersion > TdsVersion.tds81 && partLenType) {
                                Comm.Append ((byte)origColType);
                                Comm.Append ((short)-1);
+                       } else if (ServerTdsVersion > TdsVersion.tds70 
+                                  && origColType == TdsColumnType.Decimal) {
+                               param.TypeName = "numeric";
+                               Comm.Append ((byte)TdsColumnType.Numeric);
                        } else {
                                Comm.Append ((byte)colType);
                        }
index 6884da5c322929a0fb6e4681325e2a9c01d4dfe0..fde656b2abcbc9228a1a7e3f4992a4d7ce05bae8 100644 (file)
 namespace Mono.Data.Tds.Protocol {
        public enum TdsVersion
        {
-                tds42 = 42, // used by older Sybase and Microsoft SQL (< 7.0) servers
-                tds50 = 50, // used by Sybase
-                tds70 = 70, // used by Microsoft SQL server 7.0/2000
-                tds80 = 80,    // used by Microsoft SQL server 2000
-                               tds81 = 81,     // used by Microsoft SQL server 2000 SP1
-                               tds90 = 90      // used by Microsoft SQL server 2005
+               tds42 = 42,     // used by older Sybase and Microsoft SQL (< 7.0) servers
+               tds50 = 50,     // used by Sybase
+               tds70 = 70,     // used by Microsoft SQL server 7.0/2000
+               tds80 = 80,     // used by Microsoft SQL server 2000
+               tds81 = 81,     // used by Microsoft SQL server 2000 SP1
+               tds90 = 90,     // used by Microsoft SQL server 2005
+               tds100 = 100    // used by Microsoft SQL server 2008
        }
 }