diff options
Diffstat (limited to 'OpenSim/Data/MySQL')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLAssetData.cs | 6 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | 7 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLSimulationData.cs | 162 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLUserAccountData.cs | 46 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLXAssetData.cs | 2 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/Resources/RegionStore.migrations | 2 |
6 files changed, 162 insertions, 63 deletions
diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs index 73de64b..20df234 100644 --- a/OpenSim/Data/MySQL/MySQLAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLAssetData.cs | |||
@@ -155,7 +155,7 @@ namespace OpenSim.Data.MySQL | |||
155 | /// </summary> | 155 | /// </summary> |
156 | /// <param name="asset">Asset UUID to create</param> | 156 | /// <param name="asset">Asset UUID to create</param> |
157 | /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks> | 157 | /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks> |
158 | override public void StoreAsset(AssetBase asset) | 158 | override public bool StoreAsset(AssetBase asset) |
159 | { | 159 | { |
160 | lock (m_dbLock) | 160 | lock (m_dbLock) |
161 | { | 161 | { |
@@ -201,12 +201,14 @@ namespace OpenSim.Data.MySQL | |||
201 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); | 201 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); |
202 | cmd.Parameters.AddWithValue("?data", asset.Data); | 202 | cmd.Parameters.AddWithValue("?data", asset.Data); |
203 | cmd.ExecuteNonQuery(); | 203 | cmd.ExecuteNonQuery(); |
204 | return true; | ||
204 | } | 205 | } |
205 | } | 206 | } |
206 | catch (Exception e) | 207 | catch (Exception e) |
207 | { | 208 | { |
208 | m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}", | 209 | m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}", |
209 | asset.FullID, asset.Name, e.Message); | 210 | asset.FullID, asset.Name, e.Message); |
211 | return false; | ||
210 | } | 212 | } |
211 | } | 213 | } |
212 | } | 214 | } |
@@ -370,4 +372,4 @@ namespace OpenSim.Data.MySQL | |||
370 | 372 | ||
371 | #endregion | 373 | #endregion |
372 | } | 374 | } |
373 | } \ No newline at end of file | 375 | } |
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index da8e958..86367a1 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs | |||
@@ -175,6 +175,11 @@ namespace OpenSim.Data.MySQL | |||
175 | int v = Convert.ToInt32(reader[name]); | 175 | int v = Convert.ToInt32(reader[name]); |
176 | m_Fields[name].SetValue(row, v); | 176 | m_Fields[name].SetValue(row, v); |
177 | } | 177 | } |
178 | else if (m_Fields[name].FieldType == typeof(uint)) | ||
179 | { | ||
180 | uint v = Convert.ToUInt32(reader[name]); | ||
181 | m_Fields[name].SetValue(row, v); | ||
182 | } | ||
178 | else | 183 | else |
179 | { | 184 | { |
180 | m_Fields[name].SetValue(row, reader[name]); | 185 | m_Fields[name].SetValue(row, reader[name]); |
@@ -296,4 +301,4 @@ namespace OpenSim.Data.MySQL | |||
296 | } | 301 | } |
297 | } | 302 | } |
298 | } | 303 | } |
299 | } \ No newline at end of file | 304 | } |
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs index 1a2e113..faf749f 100644 --- a/OpenSim/Data/MySQL/MySQLSimulationData.cs +++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs | |||
@@ -66,7 +66,7 @@ namespace OpenSim.Data.MySQL | |||
66 | Initialise(connectionString); | 66 | Initialise(connectionString); |
67 | } | 67 | } |
68 | 68 | ||
69 | public void Initialise(string connectionString) | 69 | public virtual void Initialise(string connectionString) |
70 | { | 70 | { |
71 | m_connectionString = connectionString; | 71 | m_connectionString = connectionString; |
72 | 72 | ||
@@ -113,7 +113,7 @@ namespace OpenSim.Data.MySQL | |||
113 | 113 | ||
114 | public void Dispose() {} | 114 | public void Dispose() {} |
115 | 115 | ||
116 | public void StoreObject(SceneObjectGroup obj, UUID regionUUID) | 116 | public virtual void StoreObject(SceneObjectGroup obj, UUID regionUUID) |
117 | { | 117 | { |
118 | uint flags = obj.RootPart.GetEffectiveObjectFlags(); | 118 | uint flags = obj.RootPart.GetEffectiveObjectFlags(); |
119 | 119 | ||
@@ -135,7 +135,7 @@ namespace OpenSim.Data.MySQL | |||
135 | foreach (SceneObjectPart prim in obj.Parts) | 135 | foreach (SceneObjectPart prim in obj.Parts) |
136 | { | 136 | { |
137 | cmd.Parameters.Clear(); | 137 | cmd.Parameters.Clear(); |
138 | 138 | ||
139 | cmd.CommandText = "replace into prims (" + | 139 | cmd.CommandText = "replace into prims (" + |
140 | "UUID, CreationDate, " + | 140 | "UUID, CreationDate, " + |
141 | "Name, Text, Description, " + | 141 | "Name, Text, Description, " + |
@@ -171,7 +171,10 @@ namespace OpenSim.Data.MySQL | |||
171 | "ParticleSystem, ClickAction, Material, " + | 171 | "ParticleSystem, ClickAction, Material, " + |
172 | "CollisionSound, CollisionSoundVolume, " + | 172 | "CollisionSound, CollisionSoundVolume, " + |
173 | "PassTouches, " + | 173 | "PassTouches, " + |
174 | "LinkNumber, MediaURL) values (" + "?UUID, " + | 174 | "PassCollisions, " + |
175 | "LinkNumber, MediaURL, KeyframeMotion, " + | ||
176 | "PhysicsShapeType, Density, GravityModifier, " + | ||
177 | "Friction, Restitution) values (" + "?UUID, " + | ||
175 | "?CreationDate, ?Name, ?Text, " + | 178 | "?CreationDate, ?Name, ?Text, " + |
176 | "?Description, ?SitName, ?TouchName, " + | 179 | "?Description, ?SitName, ?TouchName, " + |
177 | "?ObjectFlags, ?OwnerMask, ?NextOwnerMask, " + | 180 | "?ObjectFlags, ?OwnerMask, ?NextOwnerMask, " + |
@@ -202,14 +205,17 @@ namespace OpenSim.Data.MySQL | |||
202 | "?SaleType, ?ColorR, ?ColorG, " + | 205 | "?SaleType, ?ColorR, ?ColorG, " + |
203 | "?ColorB, ?ColorA, ?ParticleSystem, " + | 206 | "?ColorB, ?ColorA, ?ParticleSystem, " + |
204 | "?ClickAction, ?Material, ?CollisionSound, " + | 207 | "?ClickAction, ?Material, ?CollisionSound, " + |
205 | "?CollisionSoundVolume, ?PassTouches, ?LinkNumber, ?MediaURL)"; | 208 | "?CollisionSoundVolume, ?PassTouches, ?PassCollisions, " + |
206 | 209 | "?LinkNumber, ?MediaURL, ?KeyframeMotion, " + | |
210 | "?PhysicsShapeType, ?Density, ?GravityModifier, " + | ||
211 | "?Friction, ?Restitution)"; | ||
212 | |||
207 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); | 213 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); |
208 | 214 | ||
209 | ExecuteNonQuery(cmd); | 215 | ExecuteNonQuery(cmd); |
210 | 216 | ||
211 | cmd.Parameters.Clear(); | 217 | cmd.Parameters.Clear(); |
212 | 218 | ||
213 | cmd.CommandText = "replace into primshapes (" + | 219 | cmd.CommandText = "replace into primshapes (" + |
214 | "UUID, Shape, ScaleX, ScaleY, " + | 220 | "UUID, Shape, ScaleX, ScaleY, " + |
215 | "ScaleZ, PCode, PathBegin, PathEnd, " + | 221 | "ScaleZ, PCode, PathBegin, PathEnd, " + |
@@ -231,9 +237,9 @@ namespace OpenSim.Data.MySQL | |||
231 | "?ProfileEnd, ?ProfileCurve, " + | 237 | "?ProfileEnd, ?ProfileCurve, " + |
232 | "?ProfileHollow, ?Texture, ?ExtraParams, " + | 238 | "?ProfileHollow, ?Texture, ?ExtraParams, " + |
233 | "?State, ?Media)"; | 239 | "?State, ?Media)"; |
234 | 240 | ||
235 | FillShapeCommand(cmd, prim); | 241 | FillShapeCommand(cmd, prim); |
236 | 242 | ||
237 | ExecuteNonQuery(cmd); | 243 | ExecuteNonQuery(cmd); |
238 | } | 244 | } |
239 | } | 245 | } |
@@ -241,7 +247,7 @@ namespace OpenSim.Data.MySQL | |||
241 | } | 247 | } |
242 | } | 248 | } |
243 | 249 | ||
244 | public void RemoveObject(UUID obj, UUID regionUUID) | 250 | public virtual void RemoveObject(UUID obj, UUID regionUUID) |
245 | { | 251 | { |
246 | // m_log.DebugFormat("[REGION DB]: Deleting scene object {0} from {1} in database", obj, regionUUID); | 252 | // m_log.DebugFormat("[REGION DB]: Deleting scene object {0} from {1} in database", obj, regionUUID); |
247 | 253 | ||
@@ -390,7 +396,7 @@ namespace OpenSim.Data.MySQL | |||
390 | } | 396 | } |
391 | } | 397 | } |
392 | 398 | ||
393 | public List<SceneObjectGroup> LoadObjects(UUID regionID) | 399 | public virtual List<SceneObjectGroup> LoadObjects(UUID regionID) |
394 | { | 400 | { |
395 | const int ROWS_PER_QUERY = 5000; | 401 | const int ROWS_PER_QUERY = 5000; |
396 | 402 | ||
@@ -446,7 +452,11 @@ namespace OpenSim.Data.MySQL | |||
446 | foreach (SceneObjectPart prim in prims.Values) | 452 | foreach (SceneObjectPart prim in prims.Values) |
447 | { | 453 | { |
448 | if (prim.ParentUUID == UUID.Zero) | 454 | if (prim.ParentUUID == UUID.Zero) |
455 | { | ||
449 | objects[prim.UUID] = new SceneObjectGroup(prim); | 456 | objects[prim.UUID] = new SceneObjectGroup(prim); |
457 | if (prim.KeyframeMotion != null) | ||
458 | prim.KeyframeMotion.UpdateSceneObject(objects[prim.UUID]); | ||
459 | } | ||
450 | } | 460 | } |
451 | 461 | ||
452 | // Add all of the children objects to the SOGs | 462 | // Add all of the children objects to the SOGs |
@@ -559,36 +569,51 @@ namespace OpenSim.Data.MySQL | |||
559 | } | 569 | } |
560 | } | 570 | } |
561 | 571 | ||
562 | public void StoreTerrain(double[,] ter, UUID regionID) | 572 | public virtual void StoreTerrain(double[,] ter, UUID regionID) |
563 | { | 573 | { |
564 | m_log.Info("[REGION DB]: Storing terrain"); | 574 | Util.FireAndForget(delegate(object x) |
565 | |||
566 | lock (m_dbLock) | ||
567 | { | 575 | { |
568 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 576 | double[,] oldTerrain = LoadTerrain(regionID); |
569 | { | ||
570 | dbcon.Open(); | ||
571 | 577 | ||
572 | using (MySqlCommand cmd = dbcon.CreateCommand()) | 578 | m_log.Info("[REGION DB]: Storing terrain"); |
579 | |||
580 | lock (m_dbLock) | ||
581 | { | ||
582 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
573 | { | 583 | { |
574 | cmd.CommandText = "delete from terrain where RegionUUID = ?RegionUUID"; | 584 | dbcon.Open(); |
575 | cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString()); | ||
576 | 585 | ||
577 | ExecuteNonQuery(cmd); | 586 | using (MySqlCommand cmd = dbcon.CreateCommand()) |
587 | { | ||
588 | cmd.CommandText = "delete from terrain where RegionUUID = ?RegionUUID"; | ||
589 | cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString()); | ||
578 | 590 | ||
579 | cmd.CommandText = "insert into terrain (RegionUUID, " + | 591 | using (MySqlCommand cmd2 = dbcon.CreateCommand()) |
580 | "Revision, Heightfield) values (?RegionUUID, " + | 592 | { |
581 | "1, ?Heightfield)"; | 593 | try |
594 | { | ||
595 | cmd2.CommandText = "insert into terrain (RegionUUID, " + | ||
596 | "Revision, Heightfield) values (?RegionUUID, " + | ||
597 | "1, ?Heightfield)"; | ||
582 | 598 | ||
583 | cmd.Parameters.AddWithValue("Heightfield", SerializeTerrain(ter)); | 599 | cmd2.Parameters.AddWithValue("RegionUUID", regionID.ToString()); |
600 | cmd2.Parameters.AddWithValue("Heightfield", SerializeTerrain(ter, oldTerrain)); | ||
584 | 601 | ||
585 | ExecuteNonQuery(cmd); | 602 | ExecuteNonQuery(cmd); |
603 | ExecuteNonQuery(cmd2); | ||
604 | } | ||
605 | catch (Exception e) | ||
606 | { | ||
607 | m_log.ErrorFormat(e.ToString()); | ||
608 | } | ||
609 | } | ||
610 | } | ||
586 | } | 611 | } |
587 | } | 612 | } |
588 | } | 613 | }); |
589 | } | 614 | } |
590 | 615 | ||
591 | public double[,] LoadTerrain(UUID regionID) | 616 | public virtual double[,] LoadTerrain(UUID regionID) |
592 | { | 617 | { |
593 | double[,] terrain = null; | 618 | double[,] terrain = null; |
594 | 619 | ||
@@ -638,7 +663,7 @@ namespace OpenSim.Data.MySQL | |||
638 | return terrain; | 663 | return terrain; |
639 | } | 664 | } |
640 | 665 | ||
641 | public void RemoveLandObject(UUID globalID) | 666 | public virtual void RemoveLandObject(UUID globalID) |
642 | { | 667 | { |
643 | lock (m_dbLock) | 668 | lock (m_dbLock) |
644 | { | 669 | { |
@@ -657,7 +682,7 @@ namespace OpenSim.Data.MySQL | |||
657 | } | 682 | } |
658 | } | 683 | } |
659 | 684 | ||
660 | public void StoreLandObject(ILandObject parcel) | 685 | public virtual void StoreLandObject(ILandObject parcel) |
661 | { | 686 | { |
662 | lock (m_dbLock) | 687 | lock (m_dbLock) |
663 | { | 688 | { |
@@ -714,7 +739,7 @@ namespace OpenSim.Data.MySQL | |||
714 | } | 739 | } |
715 | } | 740 | } |
716 | 741 | ||
717 | public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) | 742 | public virtual RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) |
718 | { | 743 | { |
719 | RegionLightShareData nWP = new RegionLightShareData(); | 744 | RegionLightShareData nWP = new RegionLightShareData(); |
720 | nWP.OnSave += StoreRegionWindlightSettings; | 745 | nWP.OnSave += StoreRegionWindlightSettings; |
@@ -736,7 +761,7 @@ namespace OpenSim.Data.MySQL | |||
736 | { | 761 | { |
737 | //No result, so store our default windlight profile and return it | 762 | //No result, so store our default windlight profile and return it |
738 | nWP.regionID = regionUUID; | 763 | nWP.regionID = regionUUID; |
739 | StoreRegionWindlightSettings(nWP); | 764 | // StoreRegionWindlightSettings(nWP); |
740 | return nWP; | 765 | return nWP; |
741 | } | 766 | } |
742 | else | 767 | else |
@@ -811,7 +836,7 @@ namespace OpenSim.Data.MySQL | |||
811 | return nWP; | 836 | return nWP; |
812 | } | 837 | } |
813 | 838 | ||
814 | public RegionSettings LoadRegionSettings(UUID regionUUID) | 839 | public virtual RegionSettings LoadRegionSettings(UUID regionUUID) |
815 | { | 840 | { |
816 | RegionSettings rs = null; | 841 | RegionSettings rs = null; |
817 | 842 | ||
@@ -851,7 +876,7 @@ namespace OpenSim.Data.MySQL | |||
851 | return rs; | 876 | return rs; |
852 | } | 877 | } |
853 | 878 | ||
854 | public void StoreRegionWindlightSettings(RegionLightShareData wl) | 879 | public virtual void StoreRegionWindlightSettings(RegionLightShareData wl) |
855 | { | 880 | { |
856 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 881 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
857 | { | 882 | { |
@@ -954,7 +979,7 @@ namespace OpenSim.Data.MySQL | |||
954 | } | 979 | } |
955 | } | 980 | } |
956 | 981 | ||
957 | public void RemoveRegionWindlightSettings(UUID regionID) | 982 | public virtual void RemoveRegionWindlightSettings(UUID regionID) |
958 | { | 983 | { |
959 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 984 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
960 | { | 985 | { |
@@ -1031,7 +1056,7 @@ namespace OpenSim.Data.MySQL | |||
1031 | } | 1056 | } |
1032 | #endregion | 1057 | #endregion |
1033 | 1058 | ||
1034 | public void StoreRegionSettings(RegionSettings rs) | 1059 | public virtual void StoreRegionSettings(RegionSettings rs) |
1035 | { | 1060 | { |
1036 | lock (m_dbLock) | 1061 | lock (m_dbLock) |
1037 | { | 1062 | { |
@@ -1058,7 +1083,7 @@ namespace OpenSim.Data.MySQL | |||
1058 | "use_estate_sun, fixed_sun, sun_position, " + | 1083 | "use_estate_sun, fixed_sun, sun_position, " + |
1059 | "covenant, covenant_datetime, Sandbox, sunvectorx, sunvectory, " + | 1084 | "covenant, covenant_datetime, Sandbox, sunvectorx, sunvectory, " + |
1060 | "sunvectorz, loaded_creation_datetime, " + | 1085 | "sunvectorz, loaded_creation_datetime, " + |
1061 | "loaded_creation_id, map_tile_ID, " + | 1086 | "loaded_creation_id, map_tile_ID, block_search, casino, " + |
1062 | "TelehubObject, parcel_tile_ID) " + | 1087 | "TelehubObject, parcel_tile_ID) " + |
1063 | "values (?RegionUUID, ?BlockTerraform, " + | 1088 | "values (?RegionUUID, ?BlockTerraform, " + |
1064 | "?BlockFly, ?AllowDamage, ?RestrictPushing, " + | 1089 | "?BlockFly, ?AllowDamage, ?RestrictPushing, " + |
@@ -1075,7 +1100,8 @@ namespace OpenSim.Data.MySQL | |||
1075 | "?SunPosition, ?Covenant, ?CovenantChangedDateTime, ?Sandbox, " + | 1100 | "?SunPosition, ?Covenant, ?CovenantChangedDateTime, ?Sandbox, " + |
1076 | "?SunVectorX, ?SunVectorY, ?SunVectorZ, " + | 1101 | "?SunVectorX, ?SunVectorY, ?SunVectorZ, " + |
1077 | "?LoadedCreationDateTime, ?LoadedCreationID, " + | 1102 | "?LoadedCreationDateTime, ?LoadedCreationID, " + |
1078 | "?TerrainImageID, ?TelehubObject, ?ParcelImageID) "; | 1103 | "?TerrainImageID, ?block_search, ?casino, " + |
1104 | "?TelehubObject, ?ParcelImageID)"; | ||
1079 | 1105 | ||
1080 | FillRegionSettingsCommand(cmd, rs); | 1106 | FillRegionSettingsCommand(cmd, rs); |
1081 | 1107 | ||
@@ -1086,7 +1112,7 @@ namespace OpenSim.Data.MySQL | |||
1086 | SaveSpawnPoints(rs); | 1112 | SaveSpawnPoints(rs); |
1087 | } | 1113 | } |
1088 | 1114 | ||
1089 | public List<LandData> LoadLandObjects(UUID regionUUID) | 1115 | public virtual List<LandData> LoadLandObjects(UUID regionUUID) |
1090 | { | 1116 | { |
1091 | List<LandData> landData = new List<LandData>(); | 1117 | List<LandData> landData = new List<LandData>(); |
1092 | 1118 | ||
@@ -1268,11 +1294,31 @@ namespace OpenSim.Data.MySQL | |||
1268 | prim.CollisionSoundVolume = (float)(double)row["CollisionSoundVolume"]; | 1294 | prim.CollisionSoundVolume = (float)(double)row["CollisionSoundVolume"]; |
1269 | 1295 | ||
1270 | prim.PassTouches = ((sbyte)row["PassTouches"] != 0); | 1296 | prim.PassTouches = ((sbyte)row["PassTouches"] != 0); |
1297 | prim.PassCollisions = ((sbyte)row["PassCollisions"] != 0); | ||
1271 | prim.LinkNum = (int)row["LinkNumber"]; | 1298 | prim.LinkNum = (int)row["LinkNumber"]; |
1272 | 1299 | ||
1273 | if (!(row["MediaURL"] is System.DBNull)) | 1300 | if (!(row["MediaURL"] is System.DBNull)) |
1274 | prim.MediaUrl = (string)row["MediaURL"]; | 1301 | prim.MediaUrl = (string)row["MediaURL"]; |
1275 | 1302 | ||
1303 | if (!(row["KeyframeMotion"] is DBNull)) | ||
1304 | { | ||
1305 | Byte[] data = (byte[])row["KeyframeMotion"]; | ||
1306 | if (data.Length > 0) | ||
1307 | prim.KeyframeMotion = KeyframeMotion.FromData(null, data); | ||
1308 | else | ||
1309 | prim.KeyframeMotion = null; | ||
1310 | } | ||
1311 | else | ||
1312 | { | ||
1313 | prim.KeyframeMotion = null; | ||
1314 | } | ||
1315 | |||
1316 | prim.PhysicsShapeType = (byte)Convert.ToInt32(row["PhysicsShapeType"].ToString()); | ||
1317 | prim.Density = (float)(double)row["Density"]; | ||
1318 | prim.GravityModifier = (float)(double)row["GravityModifier"]; | ||
1319 | prim.Friction = (float)(double)row["Friction"]; | ||
1320 | prim.Bounciness = (float)(double)row["Restitution"]; | ||
1321 | |||
1276 | return prim; | 1322 | return prim; |
1277 | } | 1323 | } |
1278 | 1324 | ||
@@ -1366,6 +1412,9 @@ namespace OpenSim.Data.MySQL | |||
1366 | newSettings.ParcelImageID = DBGuid.FromDB(row["parcel_tile_ID"]); | 1412 | newSettings.ParcelImageID = DBGuid.FromDB(row["parcel_tile_ID"]); |
1367 | newSettings.TelehubObject = DBGuid.FromDB(row["TelehubObject"]); | 1413 | newSettings.TelehubObject = DBGuid.FromDB(row["TelehubObject"]); |
1368 | 1414 | ||
1415 | newSettings.GodBlockSearch = Convert.ToBoolean(row["block_search"]); | ||
1416 | newSettings.Casino = Convert.ToBoolean(row["casino"]); | ||
1417 | |||
1369 | return newSettings; | 1418 | return newSettings; |
1370 | } | 1419 | } |
1371 | 1420 | ||
@@ -1463,7 +1512,7 @@ namespace OpenSim.Data.MySQL | |||
1463 | /// </summary> | 1512 | /// </summary> |
1464 | /// <param name="val"></param> | 1513 | /// <param name="val"></param> |
1465 | /// <returns></returns> | 1514 | /// <returns></returns> |
1466 | private static Array SerializeTerrain(double[,] val) | 1515 | private static Array SerializeTerrain(double[,] val, double[,] oldTerrain) |
1467 | { | 1516 | { |
1468 | MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double)); | 1517 | MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) *sizeof (double)); |
1469 | BinaryWriter bw = new BinaryWriter(str); | 1518 | BinaryWriter bw = new BinaryWriter(str); |
@@ -1472,7 +1521,11 @@ namespace OpenSim.Data.MySQL | |||
1472 | for (int x = 0; x < (int)Constants.RegionSize; x++) | 1521 | for (int x = 0; x < (int)Constants.RegionSize; x++) |
1473 | for (int y = 0; y < (int)Constants.RegionSize; y++) | 1522 | for (int y = 0; y < (int)Constants.RegionSize; y++) |
1474 | { | 1523 | { |
1475 | double height = val[x, y]; | 1524 | double height = 20.0; |
1525 | if (oldTerrain != null) | ||
1526 | height = oldTerrain[x, y]; | ||
1527 | if (!double.IsNaN(val[x, y])) | ||
1528 | height = val[x, y]; | ||
1476 | if (height == 0.0) | 1529 | if (height == 0.0) |
1477 | height = double.Epsilon; | 1530 | height = double.Epsilon; |
1478 | 1531 | ||
@@ -1616,8 +1669,24 @@ namespace OpenSim.Data.MySQL | |||
1616 | else | 1669 | else |
1617 | cmd.Parameters.AddWithValue("PassTouches", 0); | 1670 | cmd.Parameters.AddWithValue("PassTouches", 0); |
1618 | 1671 | ||
1672 | if (prim.PassCollisions) | ||
1673 | cmd.Parameters.AddWithValue("PassCollisions", 1); | ||
1674 | else | ||
1675 | cmd.Parameters.AddWithValue("PassCollisions", 0); | ||
1676 | |||
1619 | cmd.Parameters.AddWithValue("LinkNumber", prim.LinkNum); | 1677 | cmd.Parameters.AddWithValue("LinkNumber", prim.LinkNum); |
1620 | cmd.Parameters.AddWithValue("MediaURL", prim.MediaUrl); | 1678 | cmd.Parameters.AddWithValue("MediaURL", prim.MediaUrl); |
1679 | |||
1680 | if (prim.KeyframeMotion != null) | ||
1681 | cmd.Parameters.AddWithValue("KeyframeMotion", prim.KeyframeMotion.Serialize()); | ||
1682 | else | ||
1683 | cmd.Parameters.AddWithValue("KeyframeMotion", new Byte[0]); | ||
1684 | |||
1685 | cmd.Parameters.AddWithValue("PhysicsShapeType", prim.PhysicsShapeType); | ||
1686 | cmd.Parameters.AddWithValue("Density", (double)prim.Density); | ||
1687 | cmd.Parameters.AddWithValue("GravityModifier", (double)prim.GravityModifier); | ||
1688 | cmd.Parameters.AddWithValue("Friction", (double)prim.Friction); | ||
1689 | cmd.Parameters.AddWithValue("Restitution", (double)prim.Bounciness); | ||
1621 | } | 1690 | } |
1622 | 1691 | ||
1623 | /// <summary> | 1692 | /// <summary> |
@@ -1696,6 +1765,9 @@ namespace OpenSim.Data.MySQL | |||
1696 | cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime); | 1765 | cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime); |
1697 | cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID); | 1766 | cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID); |
1698 | cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID); | 1767 | cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID); |
1768 | cmd.Parameters.AddWithValue("block_search", settings.GodBlockSearch); | ||
1769 | cmd.Parameters.AddWithValue("casino", settings.Casino); | ||
1770 | |||
1699 | cmd.Parameters.AddWithValue("ParcelImageID", settings.ParcelImageID); | 1771 | cmd.Parameters.AddWithValue("ParcelImageID", settings.ParcelImageID); |
1700 | cmd.Parameters.AddWithValue("TelehubObject", settings.TelehubObject); | 1772 | cmd.Parameters.AddWithValue("TelehubObject", settings.TelehubObject); |
1701 | } | 1773 | } |
@@ -1856,7 +1928,7 @@ namespace OpenSim.Data.MySQL | |||
1856 | cmd.Parameters.AddWithValue("Media", null == s.Media ? null : s.Media.ToXml()); | 1928 | cmd.Parameters.AddWithValue("Media", null == s.Media ? null : s.Media.ToXml()); |
1857 | } | 1929 | } |
1858 | 1930 | ||
1859 | public void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items) | 1931 | public virtual void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items) |
1860 | { | 1932 | { |
1861 | lock (m_dbLock) | 1933 | lock (m_dbLock) |
1862 | { | 1934 | { |
diff --git a/OpenSim/Data/MySQL/MySQLUserAccountData.cs b/OpenSim/Data/MySQL/MySQLUserAccountData.cs index e964295..4ff3175 100644 --- a/OpenSim/Data/MySQL/MySQLUserAccountData.cs +++ b/OpenSim/Data/MySQL/MySQLUserAccountData.cs | |||
@@ -46,17 +46,21 @@ namespace OpenSim.Data.MySQL | |||
46 | { | 46 | { |
47 | string[] words = query.Split(new char[] {' '}); | 47 | string[] words = query.Split(new char[] {' '}); |
48 | 48 | ||
49 | bool valid = false; | ||
50 | |||
49 | for (int i = 0 ; i < words.Length ; i++) | 51 | for (int i = 0 ; i < words.Length ; i++) |
50 | { | 52 | { |
51 | if (words[i].Length < 3) | 53 | if (words[i].Length > 2) |
52 | { | 54 | valid = true; |
53 | if (i != words.Length - 1) | 55 | // if (words[i].Length < 3) |
54 | Array.Copy(words, i + 1, words, i, words.Length - i - 1); | 56 | // { |
55 | Array.Resize(ref words, words.Length - 1); | 57 | // if (i != words.Length - 1) |
56 | } | 58 | // Array.Copy(words, i + 1, words, i, words.Length - i - 1); |
59 | // Array.Resize(ref words, words.Length - 1); | ||
60 | // } | ||
57 | } | 61 | } |
58 | 62 | ||
59 | if (words.Length == 0) | 63 | if ((!valid) || words.Length == 0) |
60 | return new UserAccountData[0]; | 64 | return new UserAccountData[0]; |
61 | 65 | ||
62 | if (words.Length > 2) | 66 | if (words.Length > 2) |
@@ -66,20 +70,36 @@ namespace OpenSim.Data.MySQL | |||
66 | { | 70 | { |
67 | if (words.Length == 1) | 71 | if (words.Length == 1) |
68 | { | 72 | { |
69 | cmd.CommandText = String.Format("select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?search or LastName like ?search)", m_Realm); | 73 | cmd.CommandText = String.Format("select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?search or LastName like ?search) and active=1", m_Realm); |
70 | cmd.Parameters.AddWithValue("?search", "%" + words[0] + "%"); | 74 | cmd.Parameters.AddWithValue("?search", words[0] + "%"); |
71 | cmd.Parameters.AddWithValue("?ScopeID", scopeID.ToString()); | 75 | cmd.Parameters.AddWithValue("?ScopeID", scopeID.ToString()); |
72 | } | 76 | } |
73 | else | 77 | else |
74 | { | 78 | { |
75 | cmd.CommandText = String.Format("select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?searchFirst or LastName like ?searchLast)", m_Realm); | 79 | cmd.CommandText = String.Format("select * from {0} where (ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (FirstName like ?searchFirst and LastName like ?searchLast) and active=1", m_Realm); |
76 | cmd.Parameters.AddWithValue("?searchFirst", "%" + words[0] + "%"); | 80 | cmd.Parameters.AddWithValue("?searchFirst", words[0] + "%"); |
77 | cmd.Parameters.AddWithValue("?searchLast", "%" + words[1] + "%"); | 81 | cmd.Parameters.AddWithValue("?searchLast", words[1] + "%"); |
78 | cmd.Parameters.AddWithValue("?ScopeID", scopeID.ToString()); | 82 | cmd.Parameters.AddWithValue("?ScopeID", scopeID.ToString()); |
79 | } | 83 | } |
80 | 84 | ||
81 | return DoQuery(cmd); | 85 | return DoQuery(cmd); |
82 | } | 86 | } |
83 | } | 87 | } |
88 | |||
89 | public UserAccountData[] GetUsersWhere(UUID scopeID, string where) | ||
90 | { | ||
91 | using (MySqlCommand cmd = new MySqlCommand()) | ||
92 | { | ||
93 | if (scopeID != UUID.Zero) | ||
94 | { | ||
95 | where = "(ScopeID=?ScopeID or ScopeID='00000000-0000-0000-0000-000000000000') and (" + where + ")"; | ||
96 | cmd.Parameters.AddWithValue("?ScopeID", scopeID.ToString()); | ||
97 | } | ||
98 | |||
99 | cmd.CommandText = String.Format("select * from {0} where " + where, m_Realm); | ||
100 | |||
101 | return DoQuery(cmd); | ||
102 | } | ||
103 | } | ||
84 | } | 104 | } |
85 | } \ No newline at end of file | 105 | } |
diff --git a/OpenSim/Data/MySQL/MySQLXAssetData.cs b/OpenSim/Data/MySQL/MySQLXAssetData.cs index e6ac22e..9a50373 100644 --- a/OpenSim/Data/MySQL/MySQLXAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLXAssetData.cs | |||
@@ -497,4 +497,4 @@ namespace OpenSim.Data.MySQL | |||
497 | 497 | ||
498 | #endregion | 498 | #endregion |
499 | } | 499 | } |
500 | } \ No newline at end of file | 500 | } |
diff --git a/OpenSim/Data/MySQL/Resources/RegionStore.migrations b/OpenSim/Data/MySQL/Resources/RegionStore.migrations index 4a925fb..db0d0ec 100644 --- a/OpenSim/Data/MySQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/MySQL/Resources/RegionStore.migrations | |||
@@ -717,7 +717,7 @@ ALTER TABLE regionsettings ADD COLUMN loaded_creation_datetime int unsigned NOT | |||
717 | 717 | ||
718 | COMMIT; | 718 | COMMIT; |
719 | 719 | ||
720 | :VERSION 32 | 720 | :VERSION 32 #--------------------- |
721 | 721 | ||
722 | BEGIN; | 722 | BEGIN; |
723 | CREATE TABLE `regionwindlight` ( | 723 | CREATE TABLE `regionwindlight` ( |