More reverts. Revert the MySQL database module. This caused more issues
than it solved by trying to use, and then exhausting, the connection pool0.6.1-post-fixes
parent
80520206fc
commit
5727146d61
|
@ -72,10 +72,73 @@ namespace OpenSim.Data.MySQL
|
||||||
cmd.CommandText = "delete from prims, primshapes using prims " +
|
cmd.CommandText = "delete from prims, primshapes using prims " +
|
||||||
"left join primshapes on prims.uuid = primshapes.uuid " +
|
"left join primshapes on prims.uuid = primshapes.uuid " +
|
||||||
"where PCode = 9 and State <> 0";
|
"where PCode = 9 and State <> 0";
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private IDataReader ExecuteReader(MySqlCommand c)
|
||||||
|
{
|
||||||
|
IDataReader r = null;
|
||||||
|
bool errorSeen = false;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
r = c.ExecuteReader();
|
||||||
|
}
|
||||||
|
catch (MySqlException)
|
||||||
|
{
|
||||||
|
System.Threading.Thread.Sleep(500);
|
||||||
|
|
||||||
m_Connection.Close();
|
m_Connection.Close();
|
||||||
|
m_Connection = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
||||||
|
m_Connection.Open();
|
||||||
|
c.Connection = m_Connection;
|
||||||
|
|
||||||
|
if (!errorSeen)
|
||||||
|
{
|
||||||
|
errorSeen = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ExecuteNonQuery(MySqlCommand c)
|
||||||
|
{
|
||||||
|
bool errorSeen = false;
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
c.ExecuteNonQuery();
|
||||||
|
}
|
||||||
|
catch (MySqlException)
|
||||||
|
{
|
||||||
|
System.Threading.Thread.Sleep(500);
|
||||||
|
|
||||||
|
m_Connection.Close();
|
||||||
|
m_Connection = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
||||||
|
m_Connection.Open();
|
||||||
|
c.Connection = m_Connection;
|
||||||
|
|
||||||
|
if (!errorSeen)
|
||||||
|
{
|
||||||
|
errorSeen = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose() {}
|
public void Dispose() {}
|
||||||
|
@ -91,10 +154,9 @@ namespace OpenSim.Data.MySQL
|
||||||
if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0)
|
if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
foreach (SceneObjectPart prim in obj.Children.Values)
|
foreach (SceneObjectPart prim in obj.Children.Values)
|
||||||
{
|
{
|
||||||
|
@ -169,7 +231,7 @@ namespace OpenSim.Data.MySQL
|
||||||
|
|
||||||
FillPrimCommand(cmd, prim, obj.UUID, regionUUID);
|
FillPrimCommand(cmd, prim, obj.UUID, regionUUID);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
|
|
||||||
cmd.Parameters.Clear();
|
cmd.Parameters.Clear();
|
||||||
|
|
||||||
|
@ -197,10 +259,10 @@ namespace OpenSim.Data.MySQL
|
||||||
|
|
||||||
FillShapeCommand(cmd, prim);
|
FillShapeCommand(cmd, prim);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
}
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveObject(UUID obj, UUID regionUUID)
|
public void RemoveObject(UUID obj, UUID regionUUID)
|
||||||
|
@ -213,10 +275,9 @@ namespace OpenSim.Data.MySQL
|
||||||
// cause the loss of a prim, but is cleaner.
|
// cause the loss of a prim, but is cleaner.
|
||||||
// It's also faster because it uses the primary key.
|
// It's also faster because it uses the primary key.
|
||||||
//
|
//
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "select UUID from prims where "+
|
cmd.CommandText = "select UUID from prims where "+
|
||||||
"SceneGroupID= ?UUID";
|
"SceneGroupID= ?UUID";
|
||||||
|
@ -225,7 +286,7 @@ namespace OpenSim.Data.MySQL
|
||||||
|
|
||||||
List<UUID> uuids = new List<UUID>();
|
List<UUID> uuids = new List<UUID>();
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -239,25 +300,18 @@ namespace OpenSim.Data.MySQL
|
||||||
reader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
foreach (UUID uuid in uuids)
|
||||||
|
RemoveItems(uuid);
|
||||||
|
|
||||||
cmd.CommandText = "delete from prims where SceneGroupID= ?UUID";
|
cmd.CommandText = "delete from prims where SceneGroupID= ?UUID";
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
|
|
||||||
cmd.CommandText = "delete from primshapes where UUID = ?UUID";
|
cmd.CommandText = "delete from primshapes where UUID = ?UUID";
|
||||||
|
|
||||||
foreach (UUID uuid in uuids)
|
ExecuteNonQuery(cmd);
|
||||||
{
|
|
||||||
cmd.Parameters.Clear();
|
|
||||||
cmd.Parameters.AddWithValue("UUID", Util.ToRawUuidString(uuid));
|
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
|
|
||||||
foreach (UUID uuid in uuids)
|
|
||||||
RemoveItems(uuid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -267,19 +321,18 @@ namespace OpenSim.Data.MySQL
|
||||||
/// <param name="uuid">the Item UUID</param>
|
/// <param name="uuid">the Item UUID</param>
|
||||||
private void RemoveItems(UUID uuid)
|
private void RemoveItems(UUID uuid)
|
||||||
{
|
{
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "delete from primitems where " +
|
cmd.CommandText = "delete from primitems where " +
|
||||||
"PrimID = ?PrimID";
|
"PrimID = ?PrimID";
|
||||||
|
|
||||||
cmd.Parameters.AddWithValue("PrimID", uuid.ToString());
|
cmd.Parameters.AddWithValue("PrimID", uuid.ToString());
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<SceneObjectGroup> LoadObjects(UUID regionUUID)
|
public List<SceneObjectGroup> LoadObjects(UUID regionUUID)
|
||||||
|
@ -289,10 +342,9 @@ namespace OpenSim.Data.MySQL
|
||||||
List<SceneObjectPart> prims = new List<SceneObjectPart>();
|
List<SceneObjectPart> prims = new List<SceneObjectPart>();
|
||||||
SceneObjectGroup grp = null;
|
SceneObjectGroup grp = null;
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "select *, " +
|
cmd.CommandText = "select *, " +
|
||||||
"case when prims.UUID = SceneGroupID " +
|
"case when prims.UUID = SceneGroupID " +
|
||||||
|
@ -304,7 +356,7 @@ namespace OpenSim.Data.MySQL
|
||||||
cmd.Parameters.AddWithValue("RegionUUID",
|
cmd.Parameters.AddWithValue("RegionUUID",
|
||||||
Util.ToRawUuidString(regionUUID));
|
Util.ToRawUuidString(regionUUID));
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -354,7 +406,7 @@ namespace OpenSim.Data.MySQL
|
||||||
if (grp != null)
|
if (grp != null)
|
||||||
objects.Add(grp);
|
objects.Add(grp);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
|
|
||||||
foreach (SceneObjectPart part in prims)
|
foreach (SceneObjectPart part in prims)
|
||||||
LoadItems(part);
|
LoadItems(part);
|
||||||
|
@ -370,17 +422,16 @@ namespace OpenSim.Data.MySQL
|
||||||
/// <param name="prim">The prim</param>
|
/// <param name="prim">The prim</param>
|
||||||
private void LoadItems(SceneObjectPart prim)
|
private void LoadItems(SceneObjectPart prim)
|
||||||
{
|
{
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "select * from primitems where "+
|
cmd.CommandText = "select * from primitems where "+
|
||||||
"PrimID = ?PrimID";
|
"PrimID = ?PrimID";
|
||||||
|
|
||||||
cmd.Parameters.AddWithValue("PrimID", prim.UUID.ToString());
|
cmd.Parameters.AddWithValue("PrimID", prim.UUID.ToString());
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
List<TaskInventoryItem> inventory =
|
List<TaskInventoryItem> inventory =
|
||||||
new List<TaskInventoryItem>();
|
new List<TaskInventoryItem>();
|
||||||
|
|
||||||
|
@ -401,25 +452,24 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
|
||||||
prim.Inventory.RestoreInventoryItems(inventory);
|
prim.Inventory.RestoreInventoryItems(inventory);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void StoreTerrain(double[,] ter, UUID regionID)
|
public void StoreTerrain(double[,] ter, UUID regionID)
|
||||||
{
|
{
|
||||||
m_log.Info("[REGION DB]: Storing terrain");
|
m_log.Info("[REGION DB]: Storing terrain");
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "delete from terrain where " +
|
cmd.CommandText = "delete from terrain where " +
|
||||||
"RegionUUID = ?RegionUUID";
|
"RegionUUID = ?RegionUUID";
|
||||||
cmd.Parameters.AddWithValue("RegionUUID",
|
cmd.Parameters.AddWithValue("RegionUUID",
|
||||||
Util.ToRawUuidString(regionID));
|
Util.ToRawUuidString(regionID));
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
|
|
||||||
cmd.CommandText = "insert into terrain (RegionUUID, " +
|
cmd.CommandText = "insert into terrain (RegionUUID, " +
|
||||||
"Revision, Heightfield) values (?RegionUUID, " +
|
"Revision, Heightfield) values (?RegionUUID, " +
|
||||||
|
@ -428,32 +478,32 @@ namespace OpenSim.Data.MySQL
|
||||||
cmd.Parameters.AddWithValue("Heightfield",
|
cmd.Parameters.AddWithValue("Heightfield",
|
||||||
SerializeTerrain(ter));
|
SerializeTerrain(ter));
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public double[,] LoadTerrain(UUID regionID)
|
public double[,] LoadTerrain(UUID regionID)
|
||||||
{
|
{
|
||||||
double[,] terrain = new double[256,256];
|
double[,] terrain = null;
|
||||||
terrain.Initialize();
|
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
|
||||||
c.Open();
|
|
||||||
|
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
|
lock (m_Connection)
|
||||||
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
cmd.CommandText = "select RegionUUID, Revision, Heightfield " +
|
cmd.CommandText = "select RegionUUID, Revision, Heightfield " +
|
||||||
"from terrain where RegionUUID = ?RegionUUID "+
|
"from terrain where RegionUUID = ?RegionUUID "+
|
||||||
"order by Revision desc limit 1";
|
"order by Revision desc limit 1";
|
||||||
cmd.Parameters.AddWithValue("RegionUUID", Util.ToRawUuidString(regionID));
|
cmd.Parameters.AddWithValue("RegionUUID", Util.ToRawUuidString(regionID));
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
while (reader.Read())
|
while (reader.Read())
|
||||||
{
|
{
|
||||||
|
terrain = new double[256,256];
|
||||||
|
terrain.Initialize();
|
||||||
|
|
||||||
MemoryStream mstr = new MemoryStream((byte[]) reader["Heightfield"]);
|
MemoryStream mstr = new MemoryStream((byte[]) reader["Heightfield"]);
|
||||||
int rev = 0;
|
int rev = 0;
|
||||||
|
|
||||||
|
@ -468,45 +518,38 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
m_log.InfoFormat("[REGION DB]: Loaded terrain " +
|
m_log.InfoFormat("[REGION DB]: Loaded terrain " +
|
||||||
"revision r{0}", rev);
|
"revision r{0}", rev);
|
||||||
|
|
||||||
reader.Close();
|
|
||||||
cmd.Dispose();
|
|
||||||
c.Close();
|
|
||||||
return terrain;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
finally
|
||||||
{
|
{
|
||||||
}
|
|
||||||
reader.Close();
|
reader.Close();
|
||||||
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RemoveLandObject(UUID globalID)
|
public void RemoveLandObject(UUID globalID)
|
||||||
{
|
{
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "delete from land where UUID = ?UUID";
|
cmd.CommandText = "delete from land where UUID = ?UUID";
|
||||||
|
|
||||||
cmd.Parameters.AddWithValue("UUID", Util.ToRawUuidString(globalID));
|
cmd.Parameters.AddWithValue("UUID", Util.ToRawUuidString(globalID));
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StoreLandObject(ILandObject parcel)
|
public void StoreLandObject(ILandObject parcel)
|
||||||
{
|
{
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "replace into land (UUID, RegionUUID, " +
|
cmd.CommandText = "replace into land (UUID, RegionUUID, " +
|
||||||
"LocalLandID, Bitmap, Name, Description, " +
|
"LocalLandID, Bitmap, Name, Description, " +
|
||||||
|
@ -531,12 +574,12 @@ namespace OpenSim.Data.MySQL
|
||||||
|
|
||||||
FillLandCommand(cmd, parcel.landData, parcel.regionUUID);
|
FillLandCommand(cmd, parcel.landData, parcel.regionUUID);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
|
|
||||||
cmd.CommandText = "delete from landaccesslist where " +
|
cmd.CommandText = "delete from landaccesslist where " +
|
||||||
"LandUUID = ?UUID";
|
"LandUUID = ?UUID";
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
|
|
||||||
cmd.Parameters.Clear();
|
cmd.Parameters.Clear();
|
||||||
cmd.CommandText = "insert into landaccesslist (LandUUID, " +
|
cmd.CommandText = "insert into landaccesslist (LandUUID, " +
|
||||||
|
@ -547,27 +590,26 @@ namespace OpenSim.Data.MySQL
|
||||||
parcel.landData.ParcelAccessList)
|
parcel.landData.ParcelAccessList)
|
||||||
{
|
{
|
||||||
FillLandAccessCommand(cmd, entry, parcel.landData.GlobalID);
|
FillLandAccessCommand(cmd, entry, parcel.landData.GlobalID);
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Parameters.Clear();
|
cmd.Parameters.Clear();
|
||||||
}
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public RegionSettings LoadRegionSettings(UUID regionUUID)
|
public RegionSettings LoadRegionSettings(UUID regionUUID)
|
||||||
{
|
{
|
||||||
RegionSettings rs = null;
|
RegionSettings rs = null;
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "select * from regionsettings where " +
|
cmd.CommandText = "select * from regionsettings where " +
|
||||||
"regionUUID = ?RegionUUID";
|
"regionUUID = ?RegionUUID";
|
||||||
cmd.Parameters.AddWithValue("regionUUID", regionUUID);
|
cmd.Parameters.AddWithValue("regionUUID", regionUUID);
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -590,17 +632,16 @@ namespace OpenSim.Data.MySQL
|
||||||
reader.Close();
|
reader.Close();
|
||||||
}
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
|
|
||||||
return rs;
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StoreRegionSettings(RegionSettings rs)
|
public void StoreRegionSettings(RegionSettings rs)
|
||||||
{
|
{
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "replace into regionsettings (regionUUID, " +
|
cmd.CommandText = "replace into regionsettings (regionUUID, " +
|
||||||
"block_terraform, block_fly, allow_damage, " +
|
"block_terraform, block_fly, allow_damage, " +
|
||||||
|
@ -635,19 +676,18 @@ namespace OpenSim.Data.MySQL
|
||||||
|
|
||||||
FillRegionSettingsCommand(cmd, rs);
|
FillRegionSettingsCommand(cmd, rs);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<LandData> LoadLandObjects(UUID regionUUID)
|
public List<LandData> LoadLandObjects(UUID regionUUID)
|
||||||
{
|
{
|
||||||
List<LandData> landData = new List<LandData>();
|
List<LandData> landData = new List<LandData>();
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
lock (m_Connection)
|
||||||
c.Open();
|
{
|
||||||
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
cmd.CommandText = "select * from land where " +
|
cmd.CommandText = "select * from land where " +
|
||||||
"RegionUUID = ?RegionUUID";
|
"RegionUUID = ?RegionUUID";
|
||||||
|
@ -655,7 +695,7 @@ namespace OpenSim.Data.MySQL
|
||||||
cmd.Parameters.AddWithValue("RegionUUID",
|
cmd.Parameters.AddWithValue("RegionUUID",
|
||||||
Util.ToRawUuidString(regionUUID));
|
Util.ToRawUuidString(regionUUID));
|
||||||
|
|
||||||
IDataReader reader = cmd.ExecuteReader();
|
IDataReader reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -680,7 +720,7 @@ namespace OpenSim.Data.MySQL
|
||||||
cmd.Parameters.AddWithValue("LandUUID",
|
cmd.Parameters.AddWithValue("LandUUID",
|
||||||
Util.ToRawUuidString(land.GlobalID));
|
Util.ToRawUuidString(land.GlobalID));
|
||||||
|
|
||||||
reader = cmd.ExecuteReader();
|
reader = ExecuteReader(cmd);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -695,7 +735,7 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
|
|
||||||
return landData;
|
return landData;
|
||||||
}
|
}
|
||||||
|
@ -1378,13 +1418,12 @@ byte[] textureEntry = (byte[]) row["Texture"];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items)
|
public void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items)
|
||||||
|
{
|
||||||
|
lock (m_Connection)
|
||||||
{
|
{
|
||||||
RemoveItems(primID);
|
RemoveItems(primID);
|
||||||
|
|
||||||
MySqlConnection c = (MySqlConnection) ((ICloneable)m_Connection).Clone();
|
MySqlCommand cmd = m_Connection.CreateCommand();
|
||||||
c.Open();
|
|
||||||
|
|
||||||
MySqlCommand cmd = c.CreateCommand();
|
|
||||||
|
|
||||||
if (items.Count == 0)
|
if (items.Count == 0)
|
||||||
return;
|
return;
|
||||||
|
@ -1411,10 +1450,10 @@ byte[] textureEntry = (byte[]) row["Texture"];
|
||||||
|
|
||||||
FillItemCommand(cmd, item);
|
FillItemCommand(cmd, item);
|
||||||
|
|
||||||
cmd.ExecuteNonQuery();
|
ExecuteNonQuery(cmd);
|
||||||
}
|
}
|
||||||
cmd.Dispose();
|
cmd.Dispose();
|
||||||
c.Close();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue