aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data
diff options
context:
space:
mode:
authorRobert Adams2013-09-24 13:41:44 -0700
committerRobert Adams2013-09-28 07:33:55 -0700
commitaea5d3a84212a236fe1a766131b8e3513f3705a8 (patch)
treebf433ef9106c2de99e5a6d90a048c6c38e107670 /OpenSim/Data
parentvarregion: go back to using Constants.RegionSize so as not to break (diff)
downloadopensim-SC-aea5d3a84212a236fe1a766131b8e3513f3705a8.zip
opensim-SC-aea5d3a84212a236fe1a766131b8e3513f3705a8.tar.gz
opensim-SC-aea5d3a84212a236fe1a766131b8e3513f3705a8.tar.bz2
opensim-SC-aea5d3a84212a236fe1a766131b8e3513f3705a8.tar.xz
Remove time based terrain storage in SQLite so revision number can be used
to denote terrain format revision. Add terrain DB format revision codes to ISimulationDataStore.cs. Setup so legacy compatible terrain storage and fetch is possible while allowing future format extensions.
Diffstat (limited to 'OpenSim/Data')
-rw-r--r--OpenSim/Data/MSSQL/MSSQLSimulationData.cs2
-rw-r--r--OpenSim/Data/MySQL/MySQLSimulationData.cs7
-rw-r--r--OpenSim/Data/SQLite/SQLiteSimulationData.cs14
3 files changed, 7 insertions, 16 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
index f41f60c..8adddc9 100644
--- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
+++ b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs
@@ -576,7 +576,7 @@ ELSE
576 /// <param name="regionID">regionID.</param> 576 /// <param name="regionID">regionID.</param>
577 public void StoreTerrain(double[,] terrain, UUID regionID) 577 public void StoreTerrain(double[,] terrain, UUID regionID)
578 { 578 {
579 int revision = Util.UnixTimeSinceEpoch(); 579 int revision = (int)DBTerrainRevision.Legacy256;
580 580
581 //Delete old terrain map 581 //Delete old terrain map
582 string sql = "delete from terrain where RegionUUID=@RegionUUID"; 582 string sql = "delete from terrain where RegionUUID=@RegionUUID";
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs
index b03a904..5751dc8 100644
--- a/OpenSim/Data/MySQL/MySQLSimulationData.cs
+++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs
@@ -575,6 +575,7 @@ namespace OpenSim.Data.MySQL
575 public void StoreTerrain(double[,] ter, UUID regionID) 575 public void StoreTerrain(double[,] ter, UUID regionID)
576 { 576 {
577 m_log.Info("[REGION DB]: Storing terrain"); 577 m_log.Info("[REGION DB]: Storing terrain");
578 int revision = (int)DBTerrainRevision.Legacy256;
578 579
579 lock (m_dbLock) 580 lock (m_dbLock)
580 { 581 {
@@ -589,10 +590,10 @@ namespace OpenSim.Data.MySQL
589 590
590 ExecuteNonQuery(cmd); 591 ExecuteNonQuery(cmd);
591 592
592 cmd.CommandText = "insert into terrain (RegionUUID, " + 593 cmd.CommandText = "insert into terrain (RegionUUID, Revision, Heightfield)"
593 "Revision, Heightfield) values (?RegionUUID, " + 594 + "values (?RegionUUID, ?Revision, ?Heightfield)";
594 "1, ?Heightfield)";
595 595
596 cmd.Parameters.AddWithValue("Revision", revision);
596 cmd.Parameters.AddWithValue("Heightfield", SerializeTerrain(ter)); 597 cmd.Parameters.AddWithValue("Heightfield", SerializeTerrain(ter));
597 598
598 ExecuteNonQuery(cmd); 599 ExecuteNonQuery(cmd);
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
index d938b6b..b70af6b 100644
--- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs
+++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs
@@ -828,22 +828,12 @@ namespace OpenSim.Data.SQLite
828 { 828 {
829 lock (ds) 829 lock (ds)
830 { 830 {
831 int revision = Util.UnixTimeSinceEpoch(); 831 int revision = (int)DBTerrainRevision.Legacy256;
832
833 // This is added to get rid of the infinitely growing
834 // terrain databases which negatively impact on SQLite
835 // over time. Before reenabling this feature there
836 // needs to be a limitter put on the number of
837 // revisions in the database, as this old
838 // implementation is a DOS attack waiting to happen.
839 832
840 using ( 833 using (
841 SqliteCommand cmd = 834 SqliteCommand cmd = new SqliteCommand("delete from terrain where RegionUUID=:RegionUUID", m_conn))
842 new SqliteCommand("delete from terrain where RegionUUID=:RegionUUID and Revision <= :Revision",
843 m_conn))
844 { 835 {
845 cmd.Parameters.Add(new SqliteParameter(":RegionUUID", regionID.ToString())); 836 cmd.Parameters.Add(new SqliteParameter(":RegionUUID", regionID.ToString()));
846 cmd.Parameters.Add(new SqliteParameter(":Revision", revision));
847 cmd.ExecuteNonQuery(); 837 cmd.ExecuteNonQuery();
848 } 838 }
849 839