Sqlite: Map GUIDBLOB to System.Guid. Fixes #5577.
authorRolf Bjarne Kvinge <rolf@xamarin.com>
Tue, 19 Jun 2012 14:11:10 +0000 (16:11 +0200)
committerRolf Bjarne Kvinge <rolf@xamarin.com>
Tue, 19 Jun 2012 14:12:34 +0000 (16:12 +0200)
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteConvert.cs
mcs/class/Mono.Data.Sqlite/Test/SqliteDataReaderTest.cs

index 575c2ea04baaaf7942e9f7d7ddc03051e3df2dcc..a0eb84536c999c97c68fb5ebd31aaae4a886f46f 100644 (file)
@@ -689,6 +689,7 @@ namespace Mono.Data.Sqlite
       new SQLiteTypeNames("GENERAL", DbType.Binary),\r
       new SQLiteTypeNames("OLEOBJECT", DbType.Binary),\r
       new SQLiteTypeNames("GUID", DbType.Guid),\r
+      new SQLiteTypeNames("GUIDBLOB", DbType.Guid),\r
       new SQLiteTypeNames("UNIQUEIDENTIFIER", DbType.Guid),\r
       new SQLiteTypeNames("MEMO", DbType.String),\r
       new SQLiteTypeNames("NOTE", DbType.String),\r
index f14d5e08a6c0089bede4ccad7f43b9ae8f4d4c22..c55b6489a1464984df3eb9df933c751b28a039b1 100644 (file)
@@ -177,29 +177,35 @@ namespace MonoTests.Mono.Data.Sqlite
                }
 
                [Test]
-               public void TestDateTimeType ()
+               public void TestDataTypes ()
                {
                        _conn.ConnectionString = _connectionString;
                        using (_conn) {
                                _conn.Open();
                                
                                using (var cm = _conn.CreateCommand ()) {
-                                       cm.CommandText = "DROP TABLE TEST; CREATE TABLE TEST (F2 DATETIME); INSERT INTO TEST (F2) VALUES (:F2)";
+                                       cm.CommandText = "DROP TABLE TEST; CREATE TABLE TEST (F2 DATETIME, F3 guidblob NOT NULL); INSERT INTO TEST (F2, F3) VALUES (:F2, :F3)";
 
                                        var dp2 = cm.CreateParameter ();
                                        dp2.ParameterName = ":F2";
                                        dp2.Value = DateTime.Now;
                                        cm.Parameters.Add (dp2);
+                                       var dp3 = cm.CreateParameter ();
+                                       dp3.ParameterName = ":F3";
+                                       dp3.Value = new byte [] { 3, 14, 15 };
+                                       cm.Parameters.Add (dp3);
                                        
                                        cm.ExecuteNonQuery ();
                                }
                                
                                using (var cm = _conn.CreateCommand ()) {
-                                       cm.CommandText = "SELECT F2 FROM TEST";
+                                       cm.CommandText = "SELECT * FROM TEST";
                                        using (var dr = cm.ExecuteReader ()) {
                                                dr.Read ();
                                                
-                                               Assert.AreEqual ("System.DateTime", dr.GetFieldType (dr.GetOrdinal ("F2")).ToString ());
+                                               Assert.AreEqual ("System.DateTime", dr.GetFieldType (dr.GetOrdinal ("F2")).ToString (), "F2");
+                                               Assert.AreEqual ("guidblob", dr.GetDataTypeName (dr.GetOrdinal ("F3")), "F3");
+                                               Assert.AreEqual ("System.Guid", dr.GetFieldType (dr.GetOrdinal ("F3")).ToString (), "F3-#2");
                                        }
                                }
                        }