diff --git a/OpenSim/Data/SQLiteNG/SQLiteAssetData.cs b/OpenSim/Data/SQLiteNG/SQLiteAssetData.cs
index a032670588..636bf8645b 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteAssetData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteAssetData.cs
@@ -30,7 +30,7 @@ using System.Data;
using System.Reflection;
using System.Collections.Generic;
using log4net;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using OpenMetaverse;
using OpenSim.Framework;
@@ -137,7 +137,7 @@ namespace OpenSim.Data.SQLite
cmd.Parameters.Add(new SqliteParameter(":Local", asset.Local));
cmd.Parameters.Add(new SqliteParameter(":Temporary", asset.Temporary));
cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data));
-
+
cmd.ExecuteNonQuery();
}
}
@@ -340,4 +340,4 @@ namespace OpenSim.Data.SQLite
#endregion
}
-}
\ No newline at end of file
+}
diff --git a/OpenSim/Data/SQLiteNG/SQLiteAuthenticationData.cs b/OpenSim/Data/SQLiteNG/SQLiteAuthenticationData.cs
index aa10734d50..086ac0a972 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteAuthenticationData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteAuthenticationData.cs
@@ -31,7 +31,7 @@ using System.Collections.Generic;
using System.Data;
using OpenMetaverse;
using OpenSim.Framework;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
@@ -56,13 +56,8 @@ namespace OpenSim.Data.SQLite
m_Connection = new SqliteConnection(connectionString);
m_Connection.Open();
- using (SqliteConnection dbcon = (SqliteConnection)((ICloneable)m_Connection).Clone())
- {
- dbcon.Open();
- Migration m = new Migration(dbcon, GetType().Assembly, "AuthStore");
- m.Update();
- dbcon.Close();
- }
+ Migration m = new Migration(m_Connection, GetType().Assembly, "AuthStore");
+ m.Update();
m_initialized = true;
}
@@ -113,7 +108,7 @@ namespace OpenSim.Data.SQLite
}
finally
{
- CloseCommand(cmd);
+ //CloseCommand(cmd);
}
return null;
@@ -156,14 +151,14 @@ namespace OpenSim.Data.SQLite
{
if (ExecuteNonQuery(cmd, m_Connection) < 1)
{
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return false;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return false;
}
}
@@ -184,19 +179,19 @@ namespace OpenSim.Data.SQLite
{
if (ExecuteNonQuery(cmd, m_Connection) < 1)
{
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return false;
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return false;
}
}
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return true;
}
diff --git a/OpenSim/Data/SQLiteNG/SQLiteAvatarData.cs b/OpenSim/Data/SQLiteNG/SQLiteAvatarData.cs
index b3f4a4c077..c093884db4 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteAvatarData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteAvatarData.cs
@@ -33,7 +33,7 @@ using System.Threading;
using log4net;
using OpenMetaverse;
using OpenSim.Framework;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
@@ -55,8 +55,8 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = new SqliteCommand();
cmd.CommandText = String.Format("delete from {0} where `PrincipalID` = :PrincipalID and `Name` = :Name", m_Realm);
- cmd.Parameters.Add(":PrincipalID", principalID.ToString());
- cmd.Parameters.Add(":Name", name);
+ cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString());
+ cmd.Parameters.AddWithValue(":Name", name);
try
{
@@ -67,7 +67,7 @@ namespace OpenSim.Data.SQLite
}
finally
{
- CloseCommand(cmd);
+ //CloseCommand(cmd);
}
}
}
diff --git a/OpenSim/Data/SQLiteNG/SQLiteEstateData.cs b/OpenSim/Data/SQLiteNG/SQLiteEstateData.cs
index bd6b776f80..9dd4a2e69b 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteEstateData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteEstateData.cs
@@ -30,7 +30,7 @@ using System.Collections.Generic;
using System.Data;
using System.Reflection;
using log4net;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
@@ -62,8 +62,8 @@ namespace OpenSim.Data.SQLite
Migration m = new Migration(m_connection, assem, "EstateStore");
m.Update();
- m_connection.Close();
- m_connection.Open();
+ //m_connection.Close();
+ // m_connection.Open();
Type t = typeof(EstateSettings);
m_Fields = t.GetFields(BindingFlags.NonPublic |
@@ -87,7 +87,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = sql;
- cmd.Parameters.Add(":RegionID", regionID.ToString());
+ cmd.Parameters.AddWithValue(":RegionID", regionID.ToString());
return DoLoad(cmd, regionID, create);
}
@@ -143,13 +143,13 @@ namespace OpenSim.Data.SQLite
if (m_FieldMap[name].GetValue(es) is bool)
{
if ((bool)m_FieldMap[name].GetValue(es))
- cmd.Parameters.Add(":"+name, "1");
+ cmd.Parameters.AddWithValue(":"+name, "1");
else
- cmd.Parameters.Add(":"+name, "0");
+ cmd.Parameters.AddWithValue(":"+name, "0");
}
else
{
- cmd.Parameters.Add(":"+name, m_FieldMap[name].GetValue(es).ToString());
+ cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString());
}
}
@@ -167,8 +167,8 @@ namespace OpenSim.Data.SQLite
r.Close();
cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)";
- cmd.Parameters.Add(":RegionID", regionID.ToString());
- cmd.Parameters.Add(":EstateID", es.EstateID.ToString());
+ cmd.Parameters.AddWithValue(":RegionID", regionID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString());
// This will throw on dupe key
try
@@ -211,13 +211,13 @@ namespace OpenSim.Data.SQLite
if (m_FieldMap[name].GetValue(es) is bool)
{
if ((bool)m_FieldMap[name].GetValue(es))
- cmd.Parameters.Add(":"+name, "1");
+ cmd.Parameters.AddWithValue(":"+name, "1");
else
- cmd.Parameters.Add(":"+name, "0");
+ cmd.Parameters.AddWithValue(":"+name, "0");
}
else
{
- cmd.Parameters.Add(":"+name, m_FieldMap[name].GetValue(es).ToString());
+ cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString());
}
}
@@ -236,7 +236,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = "select bannedUUID from estateban where EstateID = :EstateID";
- cmd.Parameters.Add(":EstateID", es.EstateID);
+ cmd.Parameters.AddWithValue(":EstateID", es.EstateID);
IDataReader r = cmd.ExecuteReader();
@@ -260,7 +260,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = "delete from estateban where EstateID = :EstateID";
- cmd.Parameters.Add(":EstateID", es.EstateID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString());
cmd.ExecuteNonQuery();
@@ -270,8 +270,8 @@ namespace OpenSim.Data.SQLite
foreach (EstateBan b in es.EstateBans)
{
- cmd.Parameters.Add(":EstateID", es.EstateID.ToString());
- cmd.Parameters.Add(":bannedUUID", b.BannedUserID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString());
+ cmd.Parameters.AddWithValue(":bannedUUID", b.BannedUserID.ToString());
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
@@ -283,7 +283,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = "delete from "+table+" where EstateID = :EstateID";
- cmd.Parameters.Add(":EstateID", EstateID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString());
cmd.ExecuteNonQuery();
@@ -293,8 +293,8 @@ namespace OpenSim.Data.SQLite
foreach (UUID uuid in data)
{
- cmd.Parameters.Add(":EstateID", EstateID.ToString());
- cmd.Parameters.Add(":uuid", uuid.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", EstateID.ToString());
+ cmd.Parameters.AddWithValue(":uuid", uuid.ToString());
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
@@ -308,7 +308,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = "select uuid from "+table+" where EstateID = :EstateID";
- cmd.Parameters.Add(":EstateID", EstateID);
+ cmd.Parameters.AddWithValue(":EstateID", EstateID);
IDataReader r = cmd.ExecuteReader();
@@ -333,7 +333,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = sql;
- cmd.Parameters.Add(":EstateID", estateID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", estateID.ToString());
return DoLoad(cmd, UUID.Zero, false);
}
@@ -347,7 +347,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = sql;
- cmd.Parameters.Add(":EstateName", search);
+ cmd.Parameters.AddWithValue(":EstateName", search);
IDataReader r = cmd.ExecuteReader();
@@ -365,8 +365,8 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand();
cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)";
- cmd.Parameters.Add(":RegionID", regionID.ToString());
- cmd.Parameters.Add(":EstateID", estateID.ToString());
+ cmd.Parameters.AddWithValue(":RegionID", regionID.ToString());
+ cmd.Parameters.AddWithValue(":EstateID", estateID.ToString());
if (cmd.ExecuteNonQuery() == 0)
return false;
diff --git a/OpenSim/Data/SQLiteNG/SQLiteFramework.cs b/OpenSim/Data/SQLiteNG/SQLiteFramework.cs
index 20b508515a..cf114d1a07 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteFramework.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteFramework.cs
@@ -31,7 +31,7 @@ using System.Collections.Generic;
using System.Data;
using OpenMetaverse;
using OpenSim.Framework;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
@@ -55,11 +55,14 @@ namespace OpenSim.Data.SQLite
{
lock (connection)
{
+/*
SqliteConnection newConnection =
(SqliteConnection)((ICloneable)connection).Clone();
newConnection.Open();
cmd.Connection = newConnection;
+*/
+ cmd.Connection = connection;
//Console.WriteLine("XXX " + cmd.CommandText);
return cmd.ExecuteNonQuery();
@@ -70,11 +73,12 @@ namespace OpenSim.Data.SQLite
{
lock (connection)
{
- SqliteConnection newConnection =
- (SqliteConnection)((ICloneable)connection).Clone();
- newConnection.Open();
+ //SqliteConnection newConnection =
+ // (SqliteConnection)((ICloneable)connection).Clone();
+ //newConnection.Open();
- cmd.Connection = newConnection;
+ //cmd.Connection = newConnection;
+ cmd.Connection = connection;
//Console.WriteLine("XXX " + cmd.CommandText);
return cmd.ExecuteReader();
diff --git a/OpenSim/Data/SQLiteNG/SQLiteFriendsData.cs b/OpenSim/Data/SQLiteNG/SQLiteFriendsData.cs
index 0b121826d6..b06853ce68 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteFriendsData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteFriendsData.cs
@@ -31,7 +31,7 @@ using System.Collections.Generic;
using System.Data;
using OpenMetaverse;
using OpenSim.Framework;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
@@ -47,7 +47,7 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = new SqliteCommand();
cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = :PrincipalID", m_Realm);
- cmd.Parameters.Add(":PrincipalID", userID.ToString());
+ cmd.Parameters.AddWithValue(":PrincipalID", userID.ToString());
return DoQuery(cmd);
@@ -58,8 +58,8 @@ namespace OpenSim.Data.SQLite
SqliteCommand cmd = new SqliteCommand();
cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm);
- cmd.Parameters.Add(":PrincipalID", principalID.ToString());
- cmd.Parameters.Add(":Friend", friend);
+ cmd.Parameters.AddWithValue(":PrincipalID", principalID.ToString());
+ cmd.Parameters.AddWithValue(":Friend", friend);
ExecuteNonQuery(cmd, cmd.Connection);
diff --git a/OpenSim/Data/SQLiteNG/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLiteNG/SQLiteGenericTableHandler.cs
index b39bb19fb7..3c70aeffc4 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteGenericTableHandler.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteGenericTableHandler.cs
@@ -30,7 +30,7 @@ using System.Collections.Generic;
using System.Data;
using System.Reflection;
using log4net;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
@@ -59,19 +59,21 @@ namespace OpenSim.Data.SQLite
if (!m_initialized)
{
m_Connection = new SqliteConnection(connectionString);
+ Console.WriteLine(string.Format("OPENING CONNECTION FOR {0} USING {1}", storeName, connectionString));
m_Connection.Open();
if (storeName != String.Empty)
{
Assembly assem = GetType().Assembly;
- SqliteConnection newConnection =
- (SqliteConnection)((ICloneable)m_Connection).Clone();
- newConnection.Open();
+ //SqliteConnection newConnection =
+ // (SqliteConnection)((ICloneable)m_Connection).Clone();
+ //newConnection.Open();
- Migration m = new Migration(newConnection, assem, storeName);
+ //Migration m = new Migration(newConnection, assem, storeName);
+ Migration m = new Migration(m_Connection, assem, storeName);
m.Update();
- newConnection.Close();
- newConnection.Dispose();
+ //newConnection.Close();
+ //newConnection.Dispose();
}
m_initialized = true;
@@ -197,7 +199,7 @@ namespace OpenSim.Data.SQLite
result.Add(row);
}
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return result.ToArray();
}
diff --git a/OpenSim/Data/SQLiteNG/SQLiteInventoryStore.cs b/OpenSim/Data/SQLiteNG/SQLiteInventoryStore.cs
index a5e051726e..ece2495c2b 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteInventoryStore.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteInventoryStore.cs
@@ -30,7 +30,7 @@ using System.Collections.Generic;
using System.Data;
using System.Reflection;
using log4net;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using OpenMetaverse;
using OpenSim.Framework;
@@ -98,11 +98,13 @@ namespace OpenSim.Data.SQLite
ds.Tables.Add(createInventoryFoldersTable());
invFoldersDa.Fill(ds.Tables["inventoryfolders"]);
setupFoldersCommands(invFoldersDa, conn);
+ CreateDataSetMapping(invFoldersDa, "inventoryfolders");
m_log.Info("[INVENTORY DB]: Populated Inventory Folders Definitions");
ds.Tables.Add(createInventoryItemsTable());
invItemsDa.Fill(ds.Tables["inventoryitems"]);
setupItemsCommands(invItemsDa, conn);
+ CreateDataSetMapping(invItemsDa, "inventoryitems");
m_log.Info("[INVENTORY DB]: Populated Inventory Items Definitions");
ds.AcceptChanges();
@@ -728,6 +730,15 @@ namespace OpenSim.Data.SQLite
*
**********************************************************************/
+ protected void CreateDataSetMapping(IDataAdapter da, string tableName)
+ {
+ ITableMapping dbMapping = da.TableMappings.Add(tableName, tableName);
+ foreach (DataColumn col in ds.Tables[tableName].Columns)
+ {
+ dbMapping.ColumnMappings.Add(col.ColumnName, col.ColumnName);
+ }
+ }
+
///
/// Create the "inventoryitems" table
///
diff --git a/OpenSim/Data/SQLiteNG/SQLiteRegionData.cs b/OpenSim/Data/SQLiteNG/SQLiteRegionData.cs
index d2ba9ae298..bad8adc425 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteRegionData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteRegionData.cs
@@ -32,7 +32,7 @@ using System.Drawing;
using System.IO;
using System.Reflection;
using log4net;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using OpenMetaverse;
using OpenSim.Framework;
using OpenSim.Region.Framework.Interfaces;
@@ -87,119 +87,139 @@ namespace OpenSim.Data.SQLite
/// the connection string
public void Initialise(string connectionString)
{
- m_connectionString = connectionString;
-
- ds = new DataSet();
-
- m_log.Info("[REGION DB]: Sqlite - connecting: " + connectionString);
- m_conn = new SqliteConnection(m_connectionString);
- m_conn.Open();
-
-
-
- SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn);
- primDa = new SqliteDataAdapter(primSelectCmd);
- // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa);
-
- SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, m_conn);
- shapeDa = new SqliteDataAdapter(shapeSelectCmd);
- // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa);
-
- SqliteCommand itemsSelectCmd = new SqliteCommand(itemsSelect, m_conn);
- itemsDa = new SqliteDataAdapter(itemsSelectCmd);
-
- SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, m_conn);
- terrainDa = new SqliteDataAdapter(terrainSelectCmd);
-
- SqliteCommand landSelectCmd = new SqliteCommand(landSelect, m_conn);
- landDa = new SqliteDataAdapter(landSelectCmd);
-
- SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn);
- landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd);
-
- SqliteCommand regionSettingsSelectCmd = new SqliteCommand(regionSettingsSelect, m_conn);
- regionSettingsDa = new SqliteDataAdapter(regionSettingsSelectCmd);
- // This actually does the roll forward assembly stuff
- Assembly assem = GetType().Assembly;
- Migration m = new Migration(m_conn, assem, "RegionStore");
- m.Update();
-
- lock (ds)
+ try
{
- ds.Tables.Add(createPrimTable());
- setupPrimCommands(primDa, m_conn);
- primDa.Fill(ds.Tables["prims"]);
+ m_connectionString = connectionString;
- ds.Tables.Add(createShapeTable());
- setupShapeCommands(shapeDa, m_conn);
+ ds = new DataSet("Region");
- ds.Tables.Add(createItemsTable());
- setupItemsCommands(itemsDa, m_conn);
- itemsDa.Fill(ds.Tables["primitems"]);
+ m_log.Info("[REGION DB]: Sqlite - connecting: " + connectionString);
+ m_conn = new SqliteConnection(m_connectionString);
+ m_conn.Open();
- ds.Tables.Add(createTerrainTable());
- setupTerrainCommands(terrainDa, m_conn);
+ SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn);
+ //SqliteCommand primSelectCmd = new SqliteCommand(primSelect, m_conn);
+ //primDa = new SqliteDataAdapter(primSelectCmd);
+ primDa = new SqliteDataAdapter(primSelect, m_connectionString);
+ // SqliteCommandBuilder primCb = new SqliteCommandBuilder(primDa);
- ds.Tables.Add(createLandTable());
- setupLandCommands(landDa, m_conn);
+ SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, m_conn);
+ shapeDa = new SqliteDataAdapter(shapeSelectCmd);
+ // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa);
- ds.Tables.Add(createLandAccessListTable());
- setupLandAccessCommands(landAccessListDa, m_conn);
+ SqliteCommand itemsSelectCmd = new SqliteCommand(itemsSelect, m_conn);
+ itemsDa = new SqliteDataAdapter(itemsSelectCmd);
- ds.Tables.Add(createRegionSettingsTable());
-
- setupRegionSettingsCommands(regionSettingsDa, m_conn);
+ SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, m_conn);
+ terrainDa = new SqliteDataAdapter(terrainSelectCmd);
- // WORKAROUND: This is a work around for sqlite on
- // windows, which gets really unhappy with blob columns
- // that have no sample data in them. At some point we
- // need to actually find a proper way to handle this.
- try
+ SqliteCommand landSelectCmd = new SqliteCommand(landSelect, m_conn);
+ landDa = new SqliteDataAdapter(landSelectCmd);
+
+ SqliteCommand landAccessListSelectCmd = new SqliteCommand(landAccessListSelect, m_conn);
+ landAccessListDa = new SqliteDataAdapter(landAccessListSelectCmd);
+
+ SqliteCommand regionSettingsSelectCmd = new SqliteCommand(regionSettingsSelect, m_conn);
+ regionSettingsDa = new SqliteDataAdapter(regionSettingsSelectCmd);
+ // This actually does the roll forward assembly stuff
+ Assembly assem = GetType().Assembly;
+ Migration m = new Migration(m_conn, assem, "RegionStore");
+ m.Update();
+
+ lock (ds)
{
- shapeDa.Fill(ds.Tables["primshapes"]);
- }
- catch (Exception)
- {
- m_log.Info("[REGION DB]: Caught fill error on primshapes table");
- }
+ //ds.Tables.Add(createPrimTable());
+ //setupPrimCommands(primDa, m_conn);
+ //primDa.Fill(ds.Tables["prims"]);
+ primDa.Fill(ds, "prims");
- try
- {
- terrainDa.Fill(ds.Tables["terrain"]);
- }
- catch (Exception)
- {
- m_log.Info("[REGION DB]: Caught fill error on terrain table");
- }
+ ds.Tables.Add(createShapeTable());
+ setupShapeCommands(shapeDa, m_conn);
- try
- {
- landDa.Fill(ds.Tables["land"]);
- }
- catch (Exception)
- {
- m_log.Info("[REGION DB]: Caught fill error on land table");
- }
+ ds.Tables.Add(createItemsTable());
+ setupItemsCommands(itemsDa, m_conn);
+ itemsDa.Fill(ds.Tables["primitems"]);
- try
- {
- landAccessListDa.Fill(ds.Tables["landaccesslist"]);
- }
- catch (Exception)
- {
- m_log.Info("[REGION DB]: Caught fill error on landaccesslist table");
- }
+ ds.Tables.Add(createTerrainTable());
+ setupTerrainCommands(terrainDa, m_conn);
- try
- {
- regionSettingsDa.Fill(ds.Tables["regionsettings"]);
+ ds.Tables.Add(createLandTable());
+ setupLandCommands(landDa, m_conn);
+
+ ds.Tables.Add(createLandAccessListTable());
+ setupLandAccessCommands(landAccessListDa, m_conn);
+
+ ds.Tables.Add(createRegionSettingsTable());
+
+ setupRegionSettingsCommands(regionSettingsDa, m_conn);
+
+ // WORKAROUND: This is a work around for sqlite on
+ // windows, which gets really unhappy with blob columns
+ // that have no sample data in them. At some point we
+ // need to actually find a proper way to handle this.
+ try
+ {
+ shapeDa.Fill(ds.Tables["primshapes"]);
+ }
+ catch (Exception)
+ {
+ m_log.Info("[REGION DB]: Caught fill error on primshapes table");
+ }
+
+ try
+ {
+ terrainDa.Fill(ds.Tables["terrain"]);
+ }
+ catch (Exception)
+ {
+ m_log.Info("[REGION DB]: Caught fill error on terrain table");
+ }
+
+ try
+ {
+ landDa.Fill(ds.Tables["land"]);
+ }
+ catch (Exception)
+ {
+ m_log.Info("[REGION DB]: Caught fill error on land table");
+ }
+
+ try
+ {
+ landAccessListDa.Fill(ds.Tables["landaccesslist"]);
+ }
+ catch (Exception)
+ {
+ m_log.Info("[REGION DB]: Caught fill error on landaccesslist table");
+ }
+
+ try
+ {
+ regionSettingsDa.Fill(ds.Tables["regionsettings"]);
+ }
+ catch (Exception)
+ {
+ m_log.Info("[REGION DB]: Caught fill error on regionsettings table");
+ }
+
+ // We have to create a data set mapping for every table, otherwise the IDataAdaptor.Update() will not populate rows with values!
+ // Not sure exactly why this is - this kind of thing was not necessary before - justincc 20100409
+ CreateDataSetMapping(primDa, "prims");
+ CreateDataSetMapping(shapeDa, "primshapes");
+ CreateDataSetMapping(itemsDa, "primitems");
+ CreateDataSetMapping(terrainDa, "terrain");
+ CreateDataSetMapping(landDa, "land");
+ CreateDataSetMapping(landAccessListDa, "landaccesslist");
+ CreateDataSetMapping(regionSettingsDa, "regionsettings");
}
- catch (Exception)
- {
- m_log.Info("[REGION DB]: Caught fill error on regionsettings table");
- }
- return;
}
+ catch (Exception e)
+ {
+ m_log.Error(e);
+ Environment.Exit(23);
+ }
+
+ return;
}
public void Dispose()
@@ -603,7 +623,7 @@ namespace OpenSim.Data.SQLite
}
}
}
- rev = (int) row["Revision"];
+ rev = Convert.ToInt32(row["Revision"]);
}
else
{
@@ -755,6 +775,7 @@ namespace OpenSim.Data.SQLite
///
public void Commit()
{
+ m_log.Debug("[SQLITE]: Starting commit");
lock (ds)
{
primDa.Update(ds, "prims");
@@ -769,18 +790,11 @@ namespace OpenSim.Data.SQLite
{
regionSettingsDa.Update(ds, "regionsettings");
}
- catch (SqliteExecutionException SqlEx)
+ catch (SqliteException SqlEx)
{
- if (SqlEx.Message.Contains("logic error"))
- {
- throw new Exception(
- "There was a SQL error or connection string configuration error when saving the region settings. This could be a bug, it could also happen if ConnectionString is defined in the [DatabaseService] section of StandaloneCommon.ini in the config_include folder. This could also happen if the config_include folder doesn't exist or if the OpenSim.ini [Architecture] section isn't set. If this is your first time running OpenSimulator, please restart the simulator and bug a developer to fix this!",
- SqlEx);
- }
- else
- {
- throw SqlEx;
- }
+ throw new Exception(
+ "There was a SQL error or connection string configuration error when saving the region settings. This could be a bug, it could also happen if ConnectionString is defined in the [DatabaseService] section of StandaloneCommon.ini in the config_include folder. This could also happen if the config_include folder doesn't exist or if the OpenSim.ini [Architecture] section isn't set. If this is your first time running OpenSimulator, please restart the simulator and bug a developer to fix this!",
+ SqlEx);
}
ds.AcceptChanges();
}
@@ -802,6 +816,15 @@ namespace OpenSim.Data.SQLite
*
**********************************************************************/
+ protected void CreateDataSetMapping(IDataAdapter da, string tableName)
+ {
+ ITableMapping dbMapping = da.TableMappings.Add(tableName, tableName);
+ foreach (DataColumn col in ds.Tables[tableName].Columns)
+ {
+ dbMapping.ColumnMappings.Add(col.ColumnName, col.ColumnName);
+ }
+ }
+
///
///
///
@@ -1964,6 +1987,7 @@ namespace OpenSim.Data.SQLite
sql += ") values (:";
sql += String.Join(", :", cols);
sql += ")";
+ m_log.DebugFormat("[SQLITE]: Created insert command {0}", sql);
SqliteCommand cmd = new SqliteCommand(sql);
// this provides the binding for all our parameters, so
@@ -2259,6 +2283,36 @@ namespace OpenSim.Data.SQLite
return DbType.String;
}
}
+
+ static void PrintDataSet(DataSet ds)
+ {
+ // Print out any name and extended properties.
+ Console.WriteLine("DataSet is named: {0}", ds.DataSetName);
+ foreach (System.Collections.DictionaryEntry de in ds.ExtendedProperties)
+ {
+ Console.WriteLine("Key = {0}, Value = {1}", de.Key, de.Value);
+ }
+ Console.WriteLine();
+ foreach (DataTable dt in ds.Tables)
+ {
+ Console.WriteLine("=> {0} Table:", dt.TableName);
+ // Print out the column names.
+ for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
+ {
+ Console.Write(dt.Columns[curCol].ColumnName + "\t");
+ }
+ Console.WriteLine("\n----------------------------------");
+ // Print the DataTable.
+ for (int curRow = 0; curRow < dt.Rows.Count; curRow++)
+ {
+ for (int curCol = 0; curCol < dt.Columns.Count; curCol++)
+ {
+ Console.Write(dt.Rows[curRow][curCol].ToString() + "\t");
+ }
+ Console.WriteLine();
+ }
+ }
+ }
}
}
diff --git a/OpenSim/Data/SQLiteNG/SQLiteUserAccountData.cs b/OpenSim/Data/SQLiteNG/SQLiteUserAccountData.cs
index 67cf7165b1..893f105604 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteUserAccountData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteUserAccountData.cs
@@ -31,7 +31,7 @@ using System.Collections.Generic;
using System.Data;
using OpenMetaverse;
using OpenSim.Framework;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
@@ -66,7 +66,7 @@ namespace OpenSim.Data.SQLite
if (words.Length == 1)
{
- cmd.CommandText = String.Format("select * from {0} where (ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')",
+ cmd.CommandText = String.Format("select * from {0} where ScopeID='{1}' or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like '{2}%' or LastName like '{2}%')",
m_Realm, scopeID.ToString(), words[0]);
}
else
diff --git a/OpenSim/Data/SQLiteNG/SQLiteUtils.cs b/OpenSim/Data/SQLiteNG/SQLiteUtils.cs
index 4a835ce52f..07c6b69a3b 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteUtils.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteUtils.cs
@@ -27,7 +27,7 @@
using System;
using System.Data;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
namespace OpenSim.Data.SQLite
{
diff --git a/OpenSim/Data/SQLiteNG/SQLiteXInventoryData.cs b/OpenSim/Data/SQLiteNG/SQLiteXInventoryData.cs
index a66e0c6fe0..be1d0412fd 100644
--- a/OpenSim/Data/SQLiteNG/SQLiteXInventoryData.cs
+++ b/OpenSim/Data/SQLiteNG/SQLiteXInventoryData.cs
@@ -29,7 +29,7 @@ using System;
using System.Data;
using System.Reflection;
using System.Collections.Generic;
-using Mono.Data.SqliteClient;
+using Mono.Data.Sqlite;
using log4net;
using OpenMetaverse;
using OpenSim.Framework;
@@ -147,7 +147,7 @@ namespace OpenSim.Data.SQLite
}
reader.Close();
- CloseCommand(cmd);
+ //CloseCommand(cmd);
return perms;
}
diff --git a/OpenSim/Data/SQLiteNG/Tests/SQLiteAssetTest.cs b/OpenSim/Data/SQLiteNG/Tests/SQLiteAssetTest.cs
deleted file mode 100644
index 0c2f5dfefc..0000000000
--- a/OpenSim/Data/SQLiteNG/Tests/SQLiteAssetTest.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteAssetTest : BasicAssetTest
- {
- public string file;
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
- db = new SQLiteAssetData();
- db.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- db.Dispose();
- File.Delete(file);
- }
- }
-}
diff --git a/OpenSim/Data/SQLiteNG/Tests/SQLiteEstateTest.cs b/OpenSim/Data/SQLiteNG/Tests/SQLiteEstateTest.cs
deleted file mode 100644
index 30f66414a9..0000000000
--- a/OpenSim/Data/SQLiteNG/Tests/SQLiteEstateTest.cs
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteEstateTest : BasicEstateTest
- {
- public string file = "regiontest.db";
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
- db = new SQLiteEstateStore();
- db.Initialise(connect);
- regionDb = new SQLiteRegionData();
- regionDb.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- regionDb.Dispose();
- }
- }
-}
diff --git a/OpenSim/Data/SQLiteNG/Tests/SQLiteInventoryTest.cs b/OpenSim/Data/SQLiteNG/Tests/SQLiteInventoryTest.cs
deleted file mode 100644
index 98458a30ec..0000000000
--- a/OpenSim/Data/SQLiteNG/Tests/SQLiteInventoryTest.cs
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteInventoryTest : BasicInventoryTest
- {
- public string file;
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
-
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
-
- db = new SQLiteInventoryStore();
- db.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- db.Dispose();
- File.Delete(file);
- }
- }
-}
diff --git a/OpenSim/Data/SQLiteNG/Tests/SQLiteRegionTest.cs b/OpenSim/Data/SQLiteNG/Tests/SQLiteRegionTest.cs
deleted file mode 100644
index abb97cfa4f..0000000000
--- a/OpenSim/Data/SQLiteNG/Tests/SQLiteRegionTest.cs
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) Contributors, http://opensimulator.org/
- * See CONTRIBUTORS.TXT for a full list of copyright holders.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * * Neither the name of the OpenSimulator Project nor the
- * names of its contributors may be used to endorse or promote products
- * derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using System.IO;
-using NUnit.Framework;
-using OpenSim.Data.Tests;
-using OpenSim.Tests.Common;
-
-namespace OpenSim.Data.SQLite.Tests
-{
- [TestFixture, DatabaseTest]
- public class SQLiteRegionTest : BasicRegionTest
- {
- public string file = "regiontest.db";
- public string connect;
-
- [TestFixtureSetUp]
- public void Init()
- {
- // SQLite doesn't work on power or z linux
- if (Directory.Exists("/proc/ppc64") || Directory.Exists("/proc/dasd"))
- {
- Assert.Ignore();
- }
-
- SuperInit();
- file = Path.GetTempFileName() + ".db";
- connect = "URI=file:" + file + ",version=3";
- db = new SQLiteRegionData();
- db.Initialise(connect);
- }
-
- [TestFixtureTearDown]
- public void Cleanup()
- {
- db.Dispose();
- File.Delete(file);
- }
- }
-}
diff --git a/prebuild.xml b/prebuild.xml
index d6b6361182..406d57eaae 100644
--- a/prebuild.xml
+++ b/prebuild.xml
@@ -2231,7 +2231,6 @@
-
@@ -2239,7 +2238,7 @@
-
+