diff options
author | Robert Adams | 2013-09-24 13:41:44 -0700 |
---|---|---|
committer | Robert Adams | 2013-09-28 07:33:55 -0700 |
commit | aea5d3a84212a236fe1a766131b8e3513f3705a8 (patch) | |
tree | bf433ef9106c2de99e5a6d90a048c6c38e107670 /OpenSim/Data | |
parent | varregion: go back to using Constants.RegionSize so as not to break (diff) | |
download | opensim-SC_OLD-aea5d3a84212a236fe1a766131b8e3513f3705a8.zip opensim-SC_OLD-aea5d3a84212a236fe1a766131b8e3513f3705a8.tar.gz opensim-SC_OLD-aea5d3a84212a236fe1a766131b8e3513f3705a8.tar.bz2 opensim-SC_OLD-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.cs | 2 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLSimulationData.cs | 7 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteSimulationData.cs | 14 |
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 | ||