diff options
Diffstat (limited to 'OpenSim/Data')
29 files changed, 557 insertions, 219 deletions
diff --git a/OpenSim/Data/AssetDataBase.cs b/OpenSim/Data/AssetDataBase.cs index 1bb432c..9593a25 100644 --- a/OpenSim/Data/AssetDataBase.cs +++ b/OpenSim/Data/AssetDataBase.cs | |||
@@ -37,7 +37,7 @@ namespace OpenSim.Data | |||
37 | public abstract class AssetDataBase : IAssetDataPlugin | 37 | public abstract class AssetDataBase : IAssetDataPlugin |
38 | { | 38 | { |
39 | public abstract AssetBase GetAsset(UUID uuid); | 39 | public abstract AssetBase GetAsset(UUID uuid); |
40 | public abstract void StoreAsset(AssetBase asset); | 40 | public abstract bool StoreAsset(AssetBase asset); |
41 | public abstract bool[] AssetsExist(UUID[] uuids); | 41 | public abstract bool[] AssetsExist(UUID[] uuids); |
42 | 42 | ||
43 | public abstract List<AssetMetadata> FetchAssetMetadataSet(int start, int count); | 43 | public abstract List<AssetMetadata> FetchAssetMetadataSet(int start, int count); |
diff --git a/OpenSim/Data/IAssetData.cs b/OpenSim/Data/IAssetData.cs index a41e310..febab5d 100644 --- a/OpenSim/Data/IAssetData.cs +++ b/OpenSim/Data/IAssetData.cs | |||
@@ -34,7 +34,7 @@ namespace OpenSim.Data | |||
34 | public interface IAssetDataPlugin : IPlugin | 34 | public interface IAssetDataPlugin : IPlugin |
35 | { | 35 | { |
36 | AssetBase GetAsset(UUID uuid); | 36 | AssetBase GetAsset(UUID uuid); |
37 | void StoreAsset(AssetBase asset); | 37 | bool StoreAsset(AssetBase asset); |
38 | bool[] AssetsExist(UUID[] uuids); | 38 | bool[] AssetsExist(UUID[] uuids); |
39 | List<AssetMetadata> FetchAssetMetadataSet(int start, int count); | 39 | List<AssetMetadata> FetchAssetMetadataSet(int start, int count); |
40 | void Initialise(string connect); | 40 | void Initialise(string connect); |
diff --git a/OpenSim/Data/IProfilesData.cs b/OpenSim/Data/IProfilesData.cs index 7fb075d..a4a32a9 100644 --- a/OpenSim/Data/IProfilesData.cs +++ b/OpenSim/Data/IProfilesData.cs | |||
@@ -48,7 +48,7 @@ namespace OpenSim.Data | |||
48 | bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result); | 48 | bool UpdateAvatarProperties(ref UserProfileProperties props, ref string result); |
49 | bool UpdateAvatarInterests(UserProfileProperties up, ref string result); | 49 | bool UpdateAvatarInterests(UserProfileProperties up, ref string result); |
50 | bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result); | 50 | bool GetClassifiedInfo(ref UserClassifiedAdd ad, ref string result); |
51 | bool UpdateUserPreferences(ref UserPreferences pref, ref string result); | 51 | bool UpdateUserPreferences(ref UserPreferences pref, ref string result); |
52 | bool GetUserPreferences(ref UserPreferences pref, ref string result); | 52 | bool GetUserPreferences(ref UserPreferences pref, ref string result); |
53 | bool GetUserAppData(ref UserAppData props, ref string result); | 53 | bool GetUserAppData(ref UserAppData props, ref string result); |
54 | bool SetUserAppData(UserAppData props, ref string result); | 54 | bool SetUserAppData(UserAppData props, ref string result); |
diff --git a/OpenSim/Data/IUserAccountData.cs b/OpenSim/Data/IUserAccountData.cs index 906ba6c..bc7eda7 100644 --- a/OpenSim/Data/IUserAccountData.cs +++ b/OpenSim/Data/IUserAccountData.cs | |||
@@ -50,5 +50,6 @@ namespace OpenSim.Data | |||
50 | bool Store(UserAccountData data); | 50 | bool Store(UserAccountData data); |
51 | bool Delete(string field, string val); | 51 | bool Delete(string field, string val); |
52 | UserAccountData[] GetUsers(UUID scopeID, string query); | 52 | UserAccountData[] GetUsers(UUID scopeID, string query); |
53 | UserAccountData[] GetUsersWhere(UUID scopeID, string where); | ||
53 | } | 54 | } |
54 | } | 55 | } |
diff --git a/OpenSim/Data/MySQL/MySQLAgentPreferencesData.cs b/OpenSim/Data/MySQL/MySQLAgentPreferencesData.cs index ed0ab98..17f1374 100644 --- a/OpenSim/Data/MySQL/MySQLAgentPreferencesData.cs +++ b/OpenSim/Data/MySQL/MySQLAgentPreferencesData.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs index 5d8da17..1488e1a 100644 --- a/OpenSim/Data/MySQL/MySQLAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLAssetData.cs | |||
@@ -154,63 +154,59 @@ namespace OpenSim.Data.MySQL | |||
154 | /// </summary> | 154 | /// </summary> |
155 | /// <param name="asset">Asset UUID to create</param> | 155 | /// <param name="asset">Asset UUID to create</param> |
156 | /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks> | 156 | /// <remarks>On failure : Throw an exception and attempt to reconnect to database</remarks> |
157 | override public void StoreAsset(AssetBase asset) | 157 | override public bool StoreAsset(AssetBase asset) |
158 | { | 158 | { |
159 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 159 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
160 | { | 160 | { |
161 | dbcon.Open(); | 161 | dbcon.Open(); |
162 | 162 | ||
163 | string assetName = asset.Name; | ||
164 | if (asset.Name.Length > AssetBase.MAX_ASSET_NAME) | ||
165 | { | ||
166 | assetName = asset.Name.Substring(0, AssetBase.MAX_ASSET_NAME); | ||
167 | m_log.WarnFormat( | ||
168 | "[ASSET DB]: Name '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
169 | asset.Name, asset.ID, asset.Name.Length, assetName.Length); | ||
170 | } | ||
171 | |||
172 | string assetDescription = asset.Description; | ||
173 | if (asset.Description.Length > AssetBase.MAX_ASSET_DESC) | ||
174 | { | ||
175 | assetDescription = asset.Description.Substring(0, AssetBase.MAX_ASSET_DESC); | ||
176 | m_log.WarnFormat( | ||
177 | "[ASSET DB]: Description '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
178 | asset.Description, asset.ID, asset.Description.Length, assetDescription.Length); | ||
179 | } | ||
180 | |||
163 | using (MySqlCommand cmd = | 181 | using (MySqlCommand cmd = |
164 | new MySqlCommand( | 182 | new MySqlCommand( |
165 | "replace INTO assets(id, name, description, assetType, local, temporary, create_time, access_time, asset_flags, CreatorID, data)" + | 183 | "replace INTO assets(id, name, description, assetType, local, temporary, create_time, access_time, asset_flags, CreatorID, data)" + |
166 | "VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?asset_flags, ?CreatorID, ?data)", | 184 | "VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?asset_flags, ?CreatorID, ?data)", |
167 | dbcon)) | 185 | dbcon)) |
168 | { | 186 | { |
169 | string assetName = asset.Name; | ||
170 | if (asset.Name.Length > AssetBase.MAX_ASSET_NAME) | ||
171 | { | ||
172 | assetName = asset.Name.Substring(0, AssetBase.MAX_ASSET_NAME); | ||
173 | m_log.WarnFormat( | ||
174 | "[ASSET DB]: Name '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
175 | asset.Name, asset.ID, asset.Name.Length, assetName.Length); | ||
176 | } | ||
177 | |||
178 | string assetDescription = asset.Description; | ||
179 | if (asset.Description.Length > AssetBase.MAX_ASSET_DESC) | ||
180 | { | ||
181 | assetDescription = asset.Description.Substring(0, AssetBase.MAX_ASSET_DESC); | ||
182 | m_log.WarnFormat( | ||
183 | "[ASSET DB]: Description '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
184 | asset.Description, asset.ID, asset.Description.Length, assetDescription.Length); | ||
185 | } | ||
186 | |||
187 | try | 187 | try |
188 | { | 188 | { |
189 | using (cmd) | 189 | // create unix epoch time |
190 | { | 190 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); |
191 | // create unix epoch time | 191 | cmd.Parameters.AddWithValue("?id", asset.ID); |
192 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); | 192 | cmd.Parameters.AddWithValue("?name", assetName); |
193 | cmd.Parameters.AddWithValue("?id", asset.ID); | 193 | cmd.Parameters.AddWithValue("?description", assetDescription); |
194 | cmd.Parameters.AddWithValue("?name", assetName); | 194 | cmd.Parameters.AddWithValue("?assetType", asset.Type); |
195 | cmd.Parameters.AddWithValue("?description", assetDescription); | 195 | cmd.Parameters.AddWithValue("?local", asset.Local); |
196 | cmd.Parameters.AddWithValue("?assetType", asset.Type); | 196 | cmd.Parameters.AddWithValue("?temporary", asset.Temporary); |
197 | cmd.Parameters.AddWithValue("?local", asset.Local); | 197 | cmd.Parameters.AddWithValue("?create_time", now); |
198 | cmd.Parameters.AddWithValue("?temporary", asset.Temporary); | 198 | cmd.Parameters.AddWithValue("?access_time", now); |
199 | cmd.Parameters.AddWithValue("?create_time", now); | 199 | cmd.Parameters.AddWithValue("?CreatorID", asset.Metadata.CreatorID); |
200 | cmd.Parameters.AddWithValue("?access_time", now); | 200 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); |
201 | cmd.Parameters.AddWithValue("?CreatorID", asset.Metadata.CreatorID); | 201 | cmd.Parameters.AddWithValue("?data", asset.Data); |
202 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); | 202 | cmd.ExecuteNonQuery(); |
203 | cmd.Parameters.AddWithValue("?data", asset.Data); | 203 | return true; |
204 | cmd.ExecuteNonQuery(); | ||
205 | } | ||
206 | } | 204 | } |
207 | catch (Exception e) | 205 | catch (Exception e) |
208 | { | 206 | { |
209 | m_log.Error( | 207 | m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}", |
210 | string.Format( | 208 | asset.FullID, asset.Name, e.Message); |
211 | "[ASSET DB]: MySQL failure creating asset {0} with name {1}. Exception ", | 209 | return false; |
212 | asset.FullID, asset.Name) | ||
213 | , e); | ||
214 | } | 210 | } |
215 | } | 211 | } |
216 | } | 212 | } |
@@ -227,21 +223,18 @@ namespace OpenSim.Data.MySQL | |||
227 | { | 223 | { |
228 | try | 224 | try |
229 | { | 225 | { |
230 | using (cmd) | 226 | // create unix epoch time |
231 | { | 227 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); |
232 | // create unix epoch time | 228 | cmd.Parameters.AddWithValue("?id", asset.ID); |
233 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); | 229 | cmd.Parameters.AddWithValue("?access_time", now); |
234 | cmd.Parameters.AddWithValue("?id", asset.ID); | 230 | cmd.ExecuteNonQuery(); |
235 | cmd.Parameters.AddWithValue("?access_time", now); | ||
236 | cmd.ExecuteNonQuery(); | ||
237 | } | ||
238 | } | 231 | } |
239 | catch (Exception e) | 232 | catch (Exception e) |
240 | { | 233 | { |
241 | m_log.Error( | 234 | m_log.Error( |
242 | string.Format( | 235 | string.Format( |
243 | "[ASSETS DB]: Failure updating access_time for asset {0} with name {1}. Exception ", | 236 | "[ASSETS DB]: Failure updating access_time for asset {0} with name {1}. Exception ", |
244 | asset.FullID, asset.Name), | 237 | asset.FullID, asset.Name), |
245 | e); | 238 | e); |
246 | } | 239 | } |
247 | } | 240 | } |
@@ -364,4 +357,4 @@ namespace OpenSim.Data.MySQL | |||
364 | 357 | ||
365 | #endregion | 358 | #endregion |
366 | } | 359 | } |
367 | } \ No newline at end of file | 360 | } |
diff --git a/OpenSim/Data/MySQL/MySQLFramework.cs b/OpenSim/Data/MySQL/MySQLFramework.cs index 5820a90..34791cf 100644 --- a/OpenSim/Data/MySQL/MySQLFramework.cs +++ b/OpenSim/Data/MySQL/MySQLFramework.cs | |||
@@ -45,27 +45,45 @@ namespace OpenSim.Data.MySQL | |||
45 | System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | 45 | System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); |
46 | 46 | ||
47 | protected string m_connectionString; | 47 | protected string m_connectionString; |
48 | protected object m_dbLock = new object(); | ||
48 | 49 | ||
49 | protected MySqlFramework(string connectionString) | 50 | protected MySqlFramework(string connectionString) |
50 | { | 51 | { |
51 | m_connectionString = connectionString; | 52 | m_connectionString = connectionString; |
52 | } | 53 | } |
53 | 54 | ||
55 | ////////////////////////////////////////////////////////////// | ||
56 | // | ||
57 | // All non queries are funneled through one connection | ||
58 | // to increase performance a little | ||
59 | // | ||
54 | protected int ExecuteNonQuery(MySqlCommand cmd) | 60 | protected int ExecuteNonQuery(MySqlCommand cmd) |
55 | { | 61 | { |
56 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 62 | lock (m_dbLock) |
57 | { | 63 | { |
58 | dbcon.Open(); | 64 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
59 | cmd.Connection = dbcon; | ||
60 | |||
61 | try | ||
62 | { | ||
63 | return cmd.ExecuteNonQuery(); | ||
64 | } | ||
65 | catch (Exception e) | ||
66 | { | 65 | { |
67 | m_log.Error(e.Message, e); | 66 | try |
68 | return 0; | 67 | { |
68 | dbcon.Open(); | ||
69 | cmd.Connection = dbcon; | ||
70 | |||
71 | try | ||
72 | { | ||
73 | return cmd.ExecuteNonQuery(); | ||
74 | } | ||
75 | catch (Exception e) | ||
76 | { | ||
77 | m_log.Error(e.Message, e); | ||
78 | m_log.Error(Environment.StackTrace.ToString()); | ||
79 | return 0; | ||
80 | } | ||
81 | } | ||
82 | catch (Exception e) | ||
83 | { | ||
84 | m_log.Error(e.Message, e); | ||
85 | return 0; | ||
86 | } | ||
69 | } | 87 | } |
70 | } | 88 | } |
71 | } | 89 | } |
diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 35fa89f..dc657c8 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]); |
@@ -362,4 +367,4 @@ namespace OpenSim.Data.MySQL | |||
362 | } | 367 | } |
363 | 368 | ||
364 | } | 369 | } |
365 | } \ No newline at end of file | 370 | } |
diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs index 2ad7590..3dc049b 100644 --- a/OpenSim/Data/MySQL/MySQLRegionData.cs +++ b/OpenSim/Data/MySQL/MySQLRegionData.cs | |||
@@ -82,6 +82,7 @@ namespace OpenSim.Data.MySQL | |||
82 | 82 | ||
83 | public RegionData Get(int posX, int posY, UUID scopeID) | 83 | public RegionData Get(int posX, int posY, UUID scopeID) |
84 | { | 84 | { |
85 | /* fixed size regions | ||
85 | string command = "select * from `"+m_Realm+"` where locX = ?posX and locY = ?posY"; | 86 | string command = "select * from `"+m_Realm+"` where locX = ?posX and locY = ?posY"; |
86 | if (scopeID != UUID.Zero) | 87 | if (scopeID != UUID.Zero) |
87 | command += " and ScopeID = ?scopeID"; | 88 | command += " and ScopeID = ?scopeID"; |
@@ -98,6 +99,45 @@ namespace OpenSim.Data.MySQL | |||
98 | 99 | ||
99 | return ret[0]; | 100 | return ret[0]; |
100 | } | 101 | } |
102 | */ | ||
103 | // extend database search for maximum region size area | ||
104 | string command = "select * from `" + m_Realm + "` where locX between ?startX and ?endX and locY between ?startY and ?endY"; | ||
105 | if (scopeID != UUID.Zero) | ||
106 | command += " and ScopeID = ?scopeID"; | ||
107 | |||
108 | int startX = posX - (int)Constants.MaximumRegionSize; | ||
109 | int startY = posY - (int)Constants.MaximumRegionSize; | ||
110 | int endX = posX; | ||
111 | int endY = posY; | ||
112 | |||
113 | List<RegionData> ret; | ||
114 | using (MySqlCommand cmd = new MySqlCommand(command)) | ||
115 | { | ||
116 | cmd.Parameters.AddWithValue("?startX", startX.ToString()); | ||
117 | cmd.Parameters.AddWithValue("?startY", startY.ToString()); | ||
118 | cmd.Parameters.AddWithValue("?endX", endX.ToString()); | ||
119 | cmd.Parameters.AddWithValue("?endY", endY.ToString()); | ||
120 | cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); | ||
121 | |||
122 | ret = RunCommand(cmd); | ||
123 | } | ||
124 | |||
125 | if (ret.Count == 0) | ||
126 | return null; | ||
127 | |||
128 | // find the first that contains pos | ||
129 | RegionData rg = null; | ||
130 | foreach (RegionData r in ret) | ||
131 | { | ||
132 | if (posX >= r.posX && posX < r.posX + r.sizeX | ||
133 | && posY >= r.posY && posY < r.posY + r.sizeY) | ||
134 | { | ||
135 | rg = r; | ||
136 | break; | ||
137 | } | ||
138 | } | ||
139 | |||
140 | return rg; | ||
101 | } | 141 | } |
102 | 142 | ||
103 | public RegionData Get(UUID regionID, UUID scopeID) | 143 | public RegionData Get(UUID regionID, UUID scopeID) |
@@ -121,6 +161,7 @@ namespace OpenSim.Data.MySQL | |||
121 | 161 | ||
122 | public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID) | 162 | public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID) |
123 | { | 163 | { |
164 | /* fix size regions | ||
124 | string command = "select * from `"+m_Realm+"` where locX between ?startX and ?endX and locY between ?startY and ?endY"; | 165 | string command = "select * from `"+m_Realm+"` where locX between ?startX and ?endX and locY between ?startY and ?endY"; |
125 | if (scopeID != UUID.Zero) | 166 | if (scopeID != UUID.Zero) |
126 | command += " and ScopeID = ?scopeID"; | 167 | command += " and ScopeID = ?scopeID"; |
@@ -135,6 +176,38 @@ namespace OpenSim.Data.MySQL | |||
135 | 176 | ||
136 | return RunCommand(cmd); | 177 | return RunCommand(cmd); |
137 | } | 178 | } |
179 | */ | ||
180 | string command = "select * from `" + m_Realm + "` where locX between ?startX and ?endX and locY between ?startY and ?endY"; | ||
181 | if (scopeID != UUID.Zero) | ||
182 | command += " and ScopeID = ?scopeID"; | ||
183 | |||
184 | int qstartX = startX - (int)Constants.MaximumRegionSize; | ||
185 | int qstartY = startY - (int)Constants.MaximumRegionSize; | ||
186 | |||
187 | List<RegionData> dbret; | ||
188 | using (MySqlCommand cmd = new MySqlCommand(command)) | ||
189 | { | ||
190 | cmd.Parameters.AddWithValue("?startX", qstartX.ToString()); | ||
191 | cmd.Parameters.AddWithValue("?startY", qstartY.ToString()); | ||
192 | cmd.Parameters.AddWithValue("?endX", endX.ToString()); | ||
193 | cmd.Parameters.AddWithValue("?endY", endY.ToString()); | ||
194 | cmd.Parameters.AddWithValue("?scopeID", scopeID.ToString()); | ||
195 | |||
196 | dbret = RunCommand(cmd); | ||
197 | } | ||
198 | |||
199 | List<RegionData> ret = new List<RegionData>(); | ||
200 | |||
201 | if (dbret.Count == 0) | ||
202 | return ret; | ||
203 | |||
204 | foreach (RegionData r in dbret) | ||
205 | { | ||
206 | if (r.posX + r.sizeX > startX && r.posX <= endX | ||
207 | && r.posY + r.sizeX > startY && r.posY <= endY) | ||
208 | ret.Add(r); | ||
209 | } | ||
210 | return ret; | ||
138 | } | 211 | } |
139 | 212 | ||
140 | public List<RegionData> RunCommand(MySqlCommand cmd) | 213 | public List<RegionData> RunCommand(MySqlCommand cmd) |
diff --git a/OpenSim/Data/MySQL/MySQLSimulationData.cs b/OpenSim/Data/MySQL/MySQLSimulationData.cs index bb0ab75..46364a5 100644 --- a/OpenSim/Data/MySQL/MySQLSimulationData.cs +++ b/OpenSim/Data/MySQL/MySQLSimulationData.cs | |||
@@ -76,7 +76,7 @@ namespace OpenSim.Data.MySQL | |||
76 | Initialise(connectionString); | 76 | Initialise(connectionString); |
77 | } | 77 | } |
78 | 78 | ||
79 | public void Initialise(string connectionString) | 79 | public virtual void Initialise(string connectionString) |
80 | { | 80 | { |
81 | m_connectionString = connectionString; | 81 | m_connectionString = connectionString; |
82 | 82 | ||
@@ -123,7 +123,7 @@ namespace OpenSim.Data.MySQL | |||
123 | 123 | ||
124 | public void Dispose() {} | 124 | public void Dispose() {} |
125 | 125 | ||
126 | public void StoreObject(SceneObjectGroup obj, UUID regionUUID) | 126 | public virtual void StoreObject(SceneObjectGroup obj, UUID regionUUID) |
127 | { | 127 | { |
128 | uint flags = obj.RootPart.GetEffectiveObjectFlags(); | 128 | uint flags = obj.RootPart.GetEffectiveObjectFlags(); |
129 | 129 | ||
@@ -183,10 +183,12 @@ namespace OpenSim.Data.MySQL | |||
183 | "ParticleSystem, ClickAction, Material, " + | 183 | "ParticleSystem, ClickAction, Material, " + |
184 | "CollisionSound, CollisionSoundVolume, " + | 184 | "CollisionSound, CollisionSoundVolume, " + |
185 | "PassTouches, " + | 185 | "PassTouches, " + |
186 | "LinkNumber, MediaURL, AttachedPosX, " + | 186 | "PassCollisions, " + |
187 | "AttachedPosY, AttachedPosZ, KeyframeMotion, " + | 187 | "LinkNumber, MediaURL, KeyframeMotion, AttachedPosX, " + |
188 | "AttachedPosY, AttachedPosZ, " + | ||
188 | "PhysicsShapeType, Density, GravityModifier, " + | 189 | "PhysicsShapeType, Density, GravityModifier, " + |
189 | "Friction, Restitution, DynAttrs " + | 190 | "Friction, Restitution, Vehicle, DynAttrs, " + |
191 | "RotationAxisLocks" + | ||
190 | ") values (" + "?UUID, " + | 192 | ") values (" + "?UUID, " + |
191 | "?CreationDate, ?Name, ?Text, " + | 193 | "?CreationDate, ?Name, ?Text, " + |
192 | "?Description, ?SitName, ?TouchName, " + | 194 | "?Description, ?SitName, ?TouchName, " + |
@@ -218,11 +220,12 @@ namespace OpenSim.Data.MySQL | |||
218 | "?SaleType, ?ColorR, ?ColorG, " + | 220 | "?SaleType, ?ColorR, ?ColorG, " + |
219 | "?ColorB, ?ColorA, ?ParticleSystem, " + | 221 | "?ColorB, ?ColorA, ?ParticleSystem, " + |
220 | "?ClickAction, ?Material, ?CollisionSound, " + | 222 | "?ClickAction, ?Material, ?CollisionSound, " + |
221 | "?CollisionSoundVolume, ?PassTouches, " + | 223 | "?CollisionSoundVolume, ?PassTouches, ?PassCollisions, " + |
222 | "?LinkNumber, ?MediaURL, ?AttachedPosX, " + | 224 | "?LinkNumber, ?MediaURL, ?KeyframeMotion, ?AttachedPosX, " + |
223 | "?AttachedPosY, ?AttachedPosZ, ?KeyframeMotion, " + | 225 | "?AttachedPosY, ?AttachedPosZ, " + |
224 | "?PhysicsShapeType, ?Density, ?GravityModifier, " + | 226 | "?PhysicsShapeType, ?Density, ?GravityModifier, " + |
225 | "?Friction, ?Restitution, ?DynAttrs)"; | 227 | "?Friction, ?Restitution, ?Vehicle, ?DynAttrs," + |
228 | "?RotationAxisLocks)"; | ||
226 | 229 | ||
227 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); | 230 | FillPrimCommand(cmd, prim, obj.UUID, regionUUID); |
228 | 231 | ||
@@ -262,7 +265,7 @@ namespace OpenSim.Data.MySQL | |||
262 | } | 265 | } |
263 | } | 266 | } |
264 | 267 | ||
265 | public void RemoveObject(UUID obj, UUID regionUUID) | 268 | public virtual void RemoveObject(UUID obj, UUID regionUUID) |
266 | { | 269 | { |
267 | // m_log.DebugFormat("[REGION DB]: Deleting scene object {0} from {1} in database", obj, regionUUID); | 270 | // m_log.DebugFormat("[REGION DB]: Deleting scene object {0} from {1} in database", obj, regionUUID); |
268 | 271 | ||
@@ -317,7 +320,8 @@ namespace OpenSim.Data.MySQL | |||
317 | /// <param name="uuid">the Item UUID</param> | 320 | /// <param name="uuid">the Item UUID</param> |
318 | private void RemoveItems(UUID uuid) | 321 | private void RemoveItems(UUID uuid) |
319 | { | 322 | { |
320 | lock (m_dbLock) | 323 | // locked by caller |
324 | // lock (m_dbLock) | ||
321 | { | 325 | { |
322 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 326 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
323 | { | 327 | { |
@@ -411,7 +415,7 @@ namespace OpenSim.Data.MySQL | |||
411 | } | 415 | } |
412 | } | 416 | } |
413 | 417 | ||
414 | public List<SceneObjectGroup> LoadObjects(UUID regionID) | 418 | public virtual List<SceneObjectGroup> LoadObjects(UUID regionID) |
415 | { | 419 | { |
416 | const int ROWS_PER_QUERY = 5000; | 420 | const int ROWS_PER_QUERY = 5000; |
417 | 421 | ||
@@ -590,40 +594,53 @@ namespace OpenSim.Data.MySQL | |||
590 | 594 | ||
591 | public void StoreTerrain(TerrainData terrData, UUID regionID) | 595 | public void StoreTerrain(TerrainData terrData, UUID regionID) |
592 | { | 596 | { |
593 | lock (m_dbLock) | 597 | Util.FireAndForget(delegate(object x) |
594 | { | 598 | { |
595 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 599 | m_log.Info("[REGION DB]: Storing terrain"); |
596 | { | ||
597 | dbcon.Open(); | ||
598 | 600 | ||
599 | using (MySqlCommand cmd = dbcon.CreateCommand()) | 601 | lock (m_dbLock) |
602 | { | ||
603 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
600 | { | 604 | { |
601 | cmd.CommandText = "delete from terrain where RegionUUID = ?RegionUUID"; | 605 | dbcon.Open(); |
602 | cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString()); | ||
603 | |||
604 | ExecuteNonQuery(cmd); | ||
605 | 606 | ||
606 | int terrainDBRevision; | 607 | using (MySqlCommand cmd = dbcon.CreateCommand()) |
607 | Array terrainDBblob; | 608 | { |
608 | terrData.GetDatabaseBlob(out terrainDBRevision, out terrainDBblob); | 609 | cmd.CommandText = "delete from terrain where RegionUUID = ?RegionUUID"; |
610 | cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString()); | ||
609 | 611 | ||
610 | m_log.InfoFormat("{0} Storing terrain. X={1}, Y={2}, rev={3}", | 612 | using (MySqlCommand cmd2 = dbcon.CreateCommand()) |
611 | LogHeader, terrData.SizeX, terrData.SizeY, terrainDBRevision); | 613 | { |
614 | try | ||
615 | { | ||
616 | cmd2.CommandText = "insert into terrain (RegionUUID, " + | ||
617 | "Revision, Heightfield) values (?RegionUUID, " + | ||
618 | "?Revision, ?Heightfield)"; | ||
612 | 619 | ||
613 | cmd.CommandText = "insert into terrain (RegionUUID, Revision, Heightfield)" | 620 | int terrainDBRevision; |
614 | + "values (?RegionUUID, ?Revision, ?Heightfield)"; | 621 | Array terrainDBblob; |
622 | terrData.GetDatabaseBlob(out terrainDBRevision, out terrainDBblob); | ||
615 | 623 | ||
616 | cmd.Parameters.AddWithValue("Revision", terrainDBRevision); | 624 | cmd2.Parameters.AddWithValue("RegionUUID", regionID.ToString()); |
617 | cmd.Parameters.AddWithValue("Heightfield", terrainDBblob); | 625 | cmd2.Parameters.AddWithValue("Revision", terrainDBRevision); |
626 | cmd2.Parameters.AddWithValue("Heightfield", terrainDBblob); | ||
618 | 627 | ||
619 | ExecuteNonQuery(cmd); | 628 | ExecuteNonQuery(cmd); |
629 | ExecuteNonQuery(cmd2); | ||
630 | } | ||
631 | catch (Exception e) | ||
632 | { | ||
633 | m_log.ErrorFormat(e.ToString()); | ||
634 | } | ||
635 | } | ||
636 | } | ||
620 | } | 637 | } |
621 | } | 638 | } |
622 | } | 639 | }); |
623 | } | 640 | } |
624 | 641 | ||
625 | // Legacy region loading | 642 | // Legacy region loading |
626 | public double[,] LoadTerrain(UUID regionID) | 643 | public virtual double[,] LoadTerrain(UUID regionID) |
627 | { | 644 | { |
628 | double[,] ret = null; | 645 | double[,] ret = null; |
629 | TerrainData terrData = LoadTerrain(regionID, (int)Constants.RegionSize, (int)Constants.RegionSize, (int)Constants.RegionHeight); | 646 | TerrainData terrData = LoadTerrain(regionID, (int)Constants.RegionSize, (int)Constants.RegionSize, (int)Constants.RegionHeight); |
@@ -655,8 +672,11 @@ namespace OpenSim.Data.MySQL | |||
655 | while (reader.Read()) | 672 | while (reader.Read()) |
656 | { | 673 | { |
657 | int rev = Convert.ToInt32(reader["Revision"]); | 674 | int rev = Convert.ToInt32(reader["Revision"]); |
658 | byte[] blob = (byte[])reader["Heightfield"]; | 675 | if ((reader["Heightfield"] != DBNull.Value)) |
659 | terrData = TerrainData.CreateFromDatabaseBlobFactory(pSizeX, pSizeY, pSizeZ, rev, blob); | 676 | { |
677 | byte[] blob = (byte[])reader["Heightfield"]; | ||
678 | terrData = TerrainData.CreateFromDatabaseBlobFactory(pSizeX, pSizeY, pSizeZ, rev, blob); | ||
679 | } | ||
660 | } | 680 | } |
661 | } | 681 | } |
662 | } | 682 | } |
@@ -666,7 +686,7 @@ namespace OpenSim.Data.MySQL | |||
666 | return terrData; | 686 | return terrData; |
667 | } | 687 | } |
668 | 688 | ||
669 | public void RemoveLandObject(UUID globalID) | 689 | public virtual void RemoveLandObject(UUID globalID) |
670 | { | 690 | { |
671 | lock (m_dbLock) | 691 | lock (m_dbLock) |
672 | { | 692 | { |
@@ -685,7 +705,7 @@ namespace OpenSim.Data.MySQL | |||
685 | } | 705 | } |
686 | } | 706 | } |
687 | 707 | ||
688 | public void StoreLandObject(ILandObject parcel) | 708 | public virtual void StoreLandObject(ILandObject parcel) |
689 | { | 709 | { |
690 | lock (m_dbLock) | 710 | lock (m_dbLock) |
691 | { | 711 | { |
@@ -705,7 +725,8 @@ namespace OpenSim.Data.MySQL | |||
705 | "UserLocationX, UserLocationY, UserLocationZ, " + | 725 | "UserLocationX, UserLocationY, UserLocationZ, " + |
706 | "UserLookAtX, UserLookAtY, UserLookAtZ, " + | 726 | "UserLookAtX, UserLookAtY, UserLookAtZ, " + |
707 | "AuthbuyerID, OtherCleanTime, Dwell, MediaType, MediaDescription, " + | 727 | "AuthbuyerID, OtherCleanTime, Dwell, MediaType, MediaDescription, " + |
708 | "MediaSize, MediaLoop, ObscureMusic, ObscureMedia) values (" + | 728 | "MediaSize, MediaLoop, ObscureMusic, ObscureMedia, " + |
729 | "SeeAVs, AnyAVSounds, GroupAVSounds) values (" + | ||
709 | "?UUID, ?RegionUUID, " + | 730 | "?UUID, ?RegionUUID, " + |
710 | "?LocalLandID, ?Bitmap, ?Name, ?Description, " + | 731 | "?LocalLandID, ?Bitmap, ?Name, ?Description, " + |
711 | "?OwnerUUID, ?IsGroupOwned, ?Area, ?AuctionID, " + | 732 | "?OwnerUUID, ?IsGroupOwned, ?Area, ?AuctionID, " + |
@@ -716,7 +737,8 @@ namespace OpenSim.Data.MySQL | |||
716 | "?UserLocationX, ?UserLocationY, ?UserLocationZ, " + | 737 | "?UserLocationX, ?UserLocationY, ?UserLocationZ, " + |
717 | "?UserLookAtX, ?UserLookAtY, ?UserLookAtZ, " + | 738 | "?UserLookAtX, ?UserLookAtY, ?UserLookAtZ, " + |
718 | "?AuthbuyerID, ?OtherCleanTime, ?Dwell, ?MediaType, ?MediaDescription, "+ | 739 | "?AuthbuyerID, ?OtherCleanTime, ?Dwell, ?MediaType, ?MediaDescription, "+ |
719 | "CONCAT(?MediaWidth, ',', ?MediaHeight), ?MediaLoop, ?ObscureMusic, ?ObscureMedia)"; | 740 | "CONCAT(?MediaWidth, ',', ?MediaHeight), ?MediaLoop, ?ObscureMusic, ?ObscureMedia, " + |
741 | "?SeeAVs, ?AnyAVSounds, ?GroupAVSounds)"; | ||
720 | 742 | ||
721 | FillLandCommand(cmd, parcel.LandData, parcel.RegionUUID); | 743 | FillLandCommand(cmd, parcel.LandData, parcel.RegionUUID); |
722 | 744 | ||
@@ -742,7 +764,7 @@ namespace OpenSim.Data.MySQL | |||
742 | } | 764 | } |
743 | } | 765 | } |
744 | 766 | ||
745 | public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) | 767 | public virtual RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) |
746 | { | 768 | { |
747 | RegionLightShareData nWP = new RegionLightShareData(); | 769 | RegionLightShareData nWP = new RegionLightShareData(); |
748 | nWP.OnSave += StoreRegionWindlightSettings; | 770 | nWP.OnSave += StoreRegionWindlightSettings; |
@@ -840,7 +862,7 @@ namespace OpenSim.Data.MySQL | |||
840 | return nWP; | 862 | return nWP; |
841 | } | 863 | } |
842 | 864 | ||
843 | public RegionSettings LoadRegionSettings(UUID regionUUID) | 865 | public virtual RegionSettings LoadRegionSettings(UUID regionUUID) |
844 | { | 866 | { |
845 | RegionSettings rs = null; | 867 | RegionSettings rs = null; |
846 | 868 | ||
@@ -880,7 +902,7 @@ namespace OpenSim.Data.MySQL | |||
880 | return rs; | 902 | return rs; |
881 | } | 903 | } |
882 | 904 | ||
883 | public void StoreRegionWindlightSettings(RegionLightShareData wl) | 905 | public virtual void StoreRegionWindlightSettings(RegionLightShareData wl) |
884 | { | 906 | { |
885 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 907 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
886 | { | 908 | { |
@@ -983,7 +1005,7 @@ namespace OpenSim.Data.MySQL | |||
983 | } | 1005 | } |
984 | } | 1006 | } |
985 | 1007 | ||
986 | public void RemoveRegionWindlightSettings(UUID regionID) | 1008 | public virtual void RemoveRegionWindlightSettings(UUID regionID) |
987 | { | 1009 | { |
988 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 1010 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
989 | { | 1011 | { |
@@ -1060,7 +1082,7 @@ namespace OpenSim.Data.MySQL | |||
1060 | } | 1082 | } |
1061 | #endregion | 1083 | #endregion |
1062 | 1084 | ||
1063 | public void StoreRegionSettings(RegionSettings rs) | 1085 | public virtual void StoreRegionSettings(RegionSettings rs) |
1064 | { | 1086 | { |
1065 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 1087 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
1066 | { | 1088 | { |
@@ -1069,52 +1091,51 @@ namespace OpenSim.Data.MySQL | |||
1069 | using (MySqlCommand cmd = dbcon.CreateCommand()) | 1091 | using (MySqlCommand cmd = dbcon.CreateCommand()) |
1070 | { | 1092 | { |
1071 | cmd.CommandText = "replace into regionsettings (regionUUID, " + | 1093 | cmd.CommandText = "replace into regionsettings (regionUUID, " + |
1072 | "block_terraform, block_fly, allow_damage, " + | 1094 | "block_terraform, block_fly, allow_damage, " + |
1073 | "restrict_pushing, allow_land_resell, " + | 1095 | "restrict_pushing, allow_land_resell, " + |
1074 | "allow_land_join_divide, block_show_in_search, " + | 1096 | "allow_land_join_divide, block_show_in_search, " + |
1075 | "agent_limit, object_bonus, maturity, " + | 1097 | "agent_limit, object_bonus, maturity, " + |
1076 | "disable_scripts, disable_collisions, " + | 1098 | "disable_scripts, disable_collisions, " + |
1077 | "disable_physics, terrain_texture_1, " + | 1099 | "disable_physics, terrain_texture_1, " + |
1078 | "terrain_texture_2, terrain_texture_3, " + | 1100 | "terrain_texture_2, terrain_texture_3, " + |
1079 | "terrain_texture_4, elevation_1_nw, " + | 1101 | "terrain_texture_4, elevation_1_nw, " + |
1080 | "elevation_2_nw, elevation_1_ne, " + | 1102 | "elevation_2_nw, elevation_1_ne, " + |
1081 | "elevation_2_ne, elevation_1_se, " + | 1103 | "elevation_2_ne, elevation_1_se, " + |
1082 | "elevation_2_se, elevation_1_sw, " + | 1104 | "elevation_2_se, elevation_1_sw, " + |
1083 | "elevation_2_sw, water_height, " + | 1105 | "elevation_2_sw, water_height, " + |
1084 | "terrain_raise_limit, terrain_lower_limit, " + | 1106 | "terrain_raise_limit, terrain_lower_limit, " + |
1085 | "use_estate_sun, fixed_sun, sun_position, " + | 1107 | "use_estate_sun, fixed_sun, sun_position, " + |
1086 | "covenant, covenant_datetime, Sandbox, sunvectorx, sunvectory, " + | 1108 | "covenant, covenant_datetime, Sandbox, sunvectorx, sunvectory, " + |
1087 | "sunvectorz, loaded_creation_datetime, " + | 1109 | "sunvectorz, loaded_creation_datetime, " + |
1088 | "loaded_creation_id, map_tile_ID, " + | 1110 | "loaded_creation_id, map_tile_ID, block_search, casino, " + |
1089 | "TelehubObject, parcel_tile_ID) " + | 1111 | "TelehubObject, parcel_tile_ID) " + |
1090 | "values (?RegionUUID, ?BlockTerraform, " + | 1112 | "values (?RegionUUID, ?BlockTerraform, " + |
1091 | "?BlockFly, ?AllowDamage, ?RestrictPushing, " + | 1113 | "?BlockFly, ?AllowDamage, ?RestrictPushing, " + |
1092 | "?AllowLandResell, ?AllowLandJoinDivide, " + | 1114 | "?AllowLandResell, ?AllowLandJoinDivide, " + |
1093 | "?BlockShowInSearch, ?AgentLimit, ?ObjectBonus, " + | 1115 | "?BlockShowInSearch, ?AgentLimit, ?ObjectBonus, " + |
1094 | "?Maturity, ?DisableScripts, ?DisableCollisions, " + | 1116 | "?Maturity, ?DisableScripts, ?DisableCollisions, " + |
1095 | "?DisablePhysics, ?TerrainTexture1, " + | 1117 | "?DisablePhysics, ?TerrainTexture1, " + |
1096 | "?TerrainTexture2, ?TerrainTexture3, " + | 1118 | "?TerrainTexture2, ?TerrainTexture3, " + |
1097 | "?TerrainTexture4, ?Elevation1NW, ?Elevation2NW, " + | 1119 | "?TerrainTexture4, ?Elevation1NW, ?Elevation2NW, " + |
1098 | "?Elevation1NE, ?Elevation2NE, ?Elevation1SE, " + | 1120 | "?Elevation1NE, ?Elevation2NE, ?Elevation1SE, " + |
1099 | "?Elevation2SE, ?Elevation1SW, ?Elevation2SW, " + | 1121 | "?Elevation2SE, ?Elevation1SW, ?Elevation2SW, " + |
1100 | "?WaterHeight, ?TerrainRaiseLimit, " + | 1122 | "?WaterHeight, ?TerrainRaiseLimit, " + |
1101 | "?TerrainLowerLimit, ?UseEstateSun, ?FixedSun, " + | 1123 | "?TerrainLowerLimit, ?UseEstateSun, ?FixedSun, " + |
1102 | "?SunPosition, ?Covenant, ?CovenantChangedDateTime, ?Sandbox, " + | 1124 | "?SunPosition, ?Covenant, ?CovenantChangedDateTime, ?Sandbox, " + |
1103 | "?SunVectorX, ?SunVectorY, ?SunVectorZ, " + | 1125 | "?SunVectorX, ?SunVectorY, ?SunVectorZ, " + |
1104 | "?LoadedCreationDateTime, ?LoadedCreationID, " + | 1126 | "?LoadedCreationDateTime, ?LoadedCreationID, " + |
1105 | "?TerrainImageID, " + | 1127 | "?TerrainImageID, ?block_search, ?casino, " + |
1106 | "?TelehubObject, ?ParcelImageID)"; | 1128 | "?TelehubObject, ?ParcelImageID)"; |
1107 | 1129 | ||
1108 | FillRegionSettingsCommand(cmd, rs); | 1130 | FillRegionSettingsCommand(cmd, rs); |
1109 | |||
1110 | ExecuteNonQuery(cmd); | 1131 | ExecuteNonQuery(cmd); |
1111 | } | 1132 | } |
1112 | } | ||
1113 | 1133 | ||
1114 | SaveSpawnPoints(rs); | 1134 | SaveSpawnPoints(rs); |
1135 | } | ||
1115 | } | 1136 | } |
1116 | 1137 | ||
1117 | public List<LandData> LoadLandObjects(UUID regionUUID) | 1138 | public virtual List<LandData> LoadLandObjects(UUID regionUUID) |
1118 | { | 1139 | { |
1119 | List<LandData> landData = new List<LandData>(); | 1140 | List<LandData> landData = new List<LandData>(); |
1120 | 1141 | ||
@@ -1296,6 +1317,7 @@ namespace OpenSim.Data.MySQL | |||
1296 | prim.CollisionSoundVolume = (float)(double)row["CollisionSoundVolume"]; | 1317 | prim.CollisionSoundVolume = (float)(double)row["CollisionSoundVolume"]; |
1297 | 1318 | ||
1298 | prim.PassTouches = ((sbyte)row["PassTouches"] != 0); | 1319 | prim.PassTouches = ((sbyte)row["PassTouches"] != 0); |
1320 | prim.PassCollisions = ((sbyte)row["PassCollisions"] != 0); | ||
1299 | prim.LinkNum = (int)row["LinkNumber"]; | 1321 | prim.LinkNum = (int)row["LinkNumber"]; |
1300 | 1322 | ||
1301 | if (!(row["MediaURL"] is System.DBNull)) | 1323 | if (!(row["MediaURL"] is System.DBNull)) |
@@ -1333,7 +1355,17 @@ namespace OpenSim.Data.MySQL | |||
1333 | prim.GravityModifier = (float)(double)row["GravityModifier"]; | 1355 | prim.GravityModifier = (float)(double)row["GravityModifier"]; |
1334 | prim.Friction = (float)(double)row["Friction"]; | 1356 | prim.Friction = (float)(double)row["Friction"]; |
1335 | prim.Restitution = (float)(double)row["Restitution"]; | 1357 | prim.Restitution = (float)(double)row["Restitution"]; |
1336 | 1358 | prim.RotationAxisLocks = (byte)Convert.ToInt32(row["RotationAxisLocks"].ToString()); | |
1359 | |||
1360 | SOPVehicle vehicle = null; | ||
1361 | |||
1362 | if (row["Vehicle"].ToString() != String.Empty) | ||
1363 | { | ||
1364 | vehicle = SOPVehicle.FromXml2(row["Vehicle"].ToString()); | ||
1365 | if (vehicle != null) | ||
1366 | prim.VehicleParams = vehicle; | ||
1367 | } | ||
1368 | |||
1337 | return prim; | 1369 | return prim; |
1338 | } | 1370 | } |
1339 | 1371 | ||
@@ -1344,32 +1376,40 @@ namespace OpenSim.Data.MySQL | |||
1344 | /// <returns></returns> | 1376 | /// <returns></returns> |
1345 | private static TaskInventoryItem BuildItem(IDataReader row) | 1377 | private static TaskInventoryItem BuildItem(IDataReader row) |
1346 | { | 1378 | { |
1347 | TaskInventoryItem taskItem = new TaskInventoryItem(); | 1379 | try |
1348 | 1380 | { | |
1349 | taskItem.ItemID = DBGuid.FromDB(row["itemID"]); | 1381 | TaskInventoryItem taskItem = new TaskInventoryItem(); |
1350 | taskItem.ParentPartID = DBGuid.FromDB(row["primID"]); | 1382 | |
1351 | taskItem.AssetID = DBGuid.FromDB(row["assetID"]); | 1383 | taskItem.ItemID = DBGuid.FromDB(row["itemID"]); |
1352 | taskItem.ParentID = DBGuid.FromDB(row["parentFolderID"]); | 1384 | taskItem.ParentPartID = DBGuid.FromDB(row["primID"]); |
1353 | 1385 | taskItem.AssetID = DBGuid.FromDB(row["assetID"]); | |
1354 | taskItem.InvType = Convert.ToInt32(row["invType"]); | 1386 | taskItem.ParentID = DBGuid.FromDB(row["parentFolderID"]); |
1355 | taskItem.Type = Convert.ToInt32(row["assetType"]); | 1387 | |
1356 | 1388 | taskItem.InvType = Convert.ToInt32(row["invType"]); | |
1357 | taskItem.Name = (String)row["name"]; | 1389 | taskItem.Type = Convert.ToInt32(row["assetType"]); |
1358 | taskItem.Description = (String)row["description"]; | 1390 | |
1359 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); | 1391 | taskItem.Name = (String)row["name"]; |
1360 | taskItem.CreatorIdentification = (String)row["creatorID"]; | 1392 | taskItem.Description = (String)row["description"]; |
1361 | taskItem.OwnerID = DBGuid.FromDB(row["ownerID"]); | 1393 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); |
1362 | taskItem.LastOwnerID = DBGuid.FromDB(row["lastOwnerID"]); | 1394 | taskItem.CreatorIdentification = (String)row["creatorID"]; |
1363 | taskItem.GroupID = DBGuid.FromDB(row["groupID"]); | 1395 | taskItem.OwnerID = DBGuid.FromDB(row["ownerID"]); |
1364 | 1396 | taskItem.LastOwnerID = DBGuid.FromDB(row["lastOwnerID"]); | |
1365 | taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]); | 1397 | taskItem.GroupID = DBGuid.FromDB(row["groupID"]); |
1366 | taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]); | 1398 | |
1367 | taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]); | 1399 | taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]); |
1368 | taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]); | 1400 | taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]); |
1369 | taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]); | 1401 | taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]); |
1370 | taskItem.Flags = Convert.ToUInt32(row["flags"]); | 1402 | taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]); |
1371 | 1403 | taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]); | |
1372 | return taskItem; | 1404 | taskItem.Flags = Convert.ToUInt32(row["flags"]); |
1405 | |||
1406 | return taskItem; | ||
1407 | } | ||
1408 | catch | ||
1409 | { | ||
1410 | m_log.ErrorFormat("[MYSQL DB]: Error reading task inventory: itemID was {0}, primID was {1}", row["itemID"].ToString(), row["primID"].ToString()); | ||
1411 | throw; | ||
1412 | } | ||
1373 | } | 1413 | } |
1374 | 1414 | ||
1375 | private static RegionSettings BuildRegionSettings(IDataReader row) | 1415 | private static RegionSettings BuildRegionSettings(IDataReader row) |
@@ -1427,6 +1467,9 @@ namespace OpenSim.Data.MySQL | |||
1427 | newSettings.ParcelImageID = DBGuid.FromDB(row["parcel_tile_ID"]); | 1467 | newSettings.ParcelImageID = DBGuid.FromDB(row["parcel_tile_ID"]); |
1428 | newSettings.TelehubObject = DBGuid.FromDB(row["TelehubObject"]); | 1468 | newSettings.TelehubObject = DBGuid.FromDB(row["TelehubObject"]); |
1429 | 1469 | ||
1470 | newSettings.GodBlockSearch = Convert.ToBoolean(row["block_search"]); | ||
1471 | newSettings.Casino = Convert.ToBoolean(row["casino"]); | ||
1472 | |||
1430 | return newSettings; | 1473 | return newSettings; |
1431 | } | 1474 | } |
1432 | 1475 | ||
@@ -1503,6 +1546,13 @@ namespace OpenSim.Data.MySQL | |||
1503 | 1546 | ||
1504 | newData.ParcelAccessList = new List<LandAccessEntry>(); | 1547 | newData.ParcelAccessList = new List<LandAccessEntry>(); |
1505 | 1548 | ||
1549 | if (!(row["SeeAVs"] is System.DBNull)) | ||
1550 | newData.SeeAVs = Convert.ToInt32(row["SeeAVs"]) != 0 ? true : false; | ||
1551 | if (!(row["AnyAVSounds"] is System.DBNull)) | ||
1552 | newData.AnyAVSounds = Convert.ToInt32(row["AnyAVSounds"]) != 0 ? true : false; | ||
1553 | if (!(row["GroupAVSounds"] is System.DBNull)) | ||
1554 | newData.GroupAVSounds = Convert.ToInt32(row["GroupAVSounds"]) != 0 ? true : false; | ||
1555 | |||
1506 | return newData; | 1556 | return newData; |
1507 | } | 1557 | } |
1508 | 1558 | ||
@@ -1654,6 +1704,11 @@ namespace OpenSim.Data.MySQL | |||
1654 | else | 1704 | else |
1655 | cmd.Parameters.AddWithValue("PassTouches", 0); | 1705 | cmd.Parameters.AddWithValue("PassTouches", 0); |
1656 | 1706 | ||
1707 | if (prim.PassCollisions) | ||
1708 | cmd.Parameters.AddWithValue("PassCollisions", 1); | ||
1709 | else | ||
1710 | cmd.Parameters.AddWithValue("PassCollisions", 0); | ||
1711 | |||
1657 | cmd.Parameters.AddWithValue("LinkNumber", prim.LinkNum); | 1712 | cmd.Parameters.AddWithValue("LinkNumber", prim.LinkNum); |
1658 | cmd.Parameters.AddWithValue("MediaURL", prim.MediaUrl); | 1713 | cmd.Parameters.AddWithValue("MediaURL", prim.MediaUrl); |
1659 | if (prim.AttachedPos != null) | 1714 | if (prim.AttachedPos != null) |
@@ -1668,6 +1723,11 @@ namespace OpenSim.Data.MySQL | |||
1668 | else | 1723 | else |
1669 | cmd.Parameters.AddWithValue("KeyframeMotion", new Byte[0]); | 1724 | cmd.Parameters.AddWithValue("KeyframeMotion", new Byte[0]); |
1670 | 1725 | ||
1726 | if (prim.VehicleParams != null) | ||
1727 | cmd.Parameters.AddWithValue("Vehicle", prim.VehicleParams.ToXml2()); | ||
1728 | else | ||
1729 | cmd.Parameters.AddWithValue("Vehicle", String.Empty); | ||
1730 | |||
1671 | if (prim.DynAttrs.CountNamespaces > 0) | 1731 | if (prim.DynAttrs.CountNamespaces > 0) |
1672 | cmd.Parameters.AddWithValue("DynAttrs", prim.DynAttrs.ToXml()); | 1732 | cmd.Parameters.AddWithValue("DynAttrs", prim.DynAttrs.ToXml()); |
1673 | else | 1733 | else |
@@ -1678,6 +1738,7 @@ namespace OpenSim.Data.MySQL | |||
1678 | cmd.Parameters.AddWithValue("GravityModifier", (double)prim.GravityModifier); | 1738 | cmd.Parameters.AddWithValue("GravityModifier", (double)prim.GravityModifier); |
1679 | cmd.Parameters.AddWithValue("Friction", (double)prim.Friction); | 1739 | cmd.Parameters.AddWithValue("Friction", (double)prim.Friction); |
1680 | cmd.Parameters.AddWithValue("Restitution", (double)prim.Restitution); | 1740 | cmd.Parameters.AddWithValue("Restitution", (double)prim.Restitution); |
1741 | cmd.Parameters.AddWithValue("RotationAxisLocks", prim.RotationAxisLocks); | ||
1681 | } | 1742 | } |
1682 | 1743 | ||
1683 | /// <summary> | 1744 | /// <summary> |
@@ -1756,6 +1817,8 @@ namespace OpenSim.Data.MySQL | |||
1756 | cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime); | 1817 | cmd.Parameters.AddWithValue("LoadedCreationDateTime", settings.LoadedCreationDateTime); |
1757 | cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID); | 1818 | cmd.Parameters.AddWithValue("LoadedCreationID", settings.LoadedCreationID); |
1758 | cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID); | 1819 | cmd.Parameters.AddWithValue("TerrainImageID", settings.TerrainImageID); |
1820 | cmd.Parameters.AddWithValue("block_search", settings.GodBlockSearch); | ||
1821 | cmd.Parameters.AddWithValue("casino", settings.Casino); | ||
1759 | 1822 | ||
1760 | cmd.Parameters.AddWithValue("ParcelImageID", settings.ParcelImageID); | 1823 | cmd.Parameters.AddWithValue("ParcelImageID", settings.ParcelImageID); |
1761 | cmd.Parameters.AddWithValue("TelehubObject", settings.TelehubObject); | 1824 | cmd.Parameters.AddWithValue("TelehubObject", settings.TelehubObject); |
@@ -1813,6 +1876,10 @@ namespace OpenSim.Data.MySQL | |||
1813 | cmd.Parameters.AddWithValue("MediaLoop", land.MediaLoop); | 1876 | cmd.Parameters.AddWithValue("MediaLoop", land.MediaLoop); |
1814 | cmd.Parameters.AddWithValue("ObscureMusic", land.ObscureMusic); | 1877 | cmd.Parameters.AddWithValue("ObscureMusic", land.ObscureMusic); |
1815 | cmd.Parameters.AddWithValue("ObscureMedia", land.ObscureMedia); | 1878 | cmd.Parameters.AddWithValue("ObscureMedia", land.ObscureMedia); |
1879 | cmd.Parameters.AddWithValue("SeeAVs", land.SeeAVs ? 1 : 0); | ||
1880 | cmd.Parameters.AddWithValue("AnyAVSounds", land.AnyAVSounds ? 1 : 0); | ||
1881 | cmd.Parameters.AddWithValue("GroupAVSounds", land.GroupAVSounds ? 1 : 0); | ||
1882 | |||
1816 | } | 1883 | } |
1817 | 1884 | ||
1818 | /// <summary> | 1885 | /// <summary> |
@@ -1919,7 +1986,7 @@ namespace OpenSim.Data.MySQL | |||
1919 | cmd.Parameters.AddWithValue("Media", null == s.Media ? null : s.Media.ToXml()); | 1986 | cmd.Parameters.AddWithValue("Media", null == s.Media ? null : s.Media.ToXml()); |
1920 | } | 1987 | } |
1921 | 1988 | ||
1922 | public void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items) | 1989 | public virtual void StorePrimInventory(UUID primID, ICollection<TaskInventoryItem> items) |
1923 | { | 1990 | { |
1924 | lock (m_dbLock) | 1991 | lock (m_dbLock) |
1925 | { | 1992 | { |
@@ -1963,6 +2030,37 @@ namespace OpenSim.Data.MySQL | |||
1963 | } | 2030 | } |
1964 | } | 2031 | } |
1965 | 2032 | ||
2033 | public UUID[] GetObjectIDs(UUID regionID) | ||
2034 | { | ||
2035 | List<UUID> uuids = new List<UUID>(); | ||
2036 | |||
2037 | lock (m_dbLock) | ||
2038 | { | ||
2039 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | ||
2040 | { | ||
2041 | dbcon.Open(); | ||
2042 | |||
2043 | using (MySqlCommand cmd = dbcon.CreateCommand()) | ||
2044 | { | ||
2045 | cmd.CommandText = "select UUID from prims where RegionUUID = ?RegionUUID and SceneGroupID = UUID"; | ||
2046 | cmd.Parameters.AddWithValue("RegionUUID", regionID.ToString()); | ||
2047 | |||
2048 | using (IDataReader reader = ExecuteReader(cmd)) | ||
2049 | { | ||
2050 | while (reader.Read()) | ||
2051 | { | ||
2052 | UUID id = new UUID(reader["UUID"].ToString()); | ||
2053 | |||
2054 | uuids.Add(id); | ||
2055 | } | ||
2056 | } | ||
2057 | } | ||
2058 | } | ||
2059 | } | ||
2060 | |||
2061 | return uuids.ToArray(); | ||
2062 | } | ||
2063 | |||
1966 | private void LoadSpawnPoints(RegionSettings rs) | 2064 | private void LoadSpawnPoints(RegionSettings rs) |
1967 | { | 2065 | { |
1968 | rs.ClearSpawnPoints(); | 2066 | rs.ClearSpawnPoints(); |
diff --git a/OpenSim/Data/MySQL/MySQLUserAccountData.cs b/OpenSim/Data/MySQL/MySQLUserAccountData.cs index e964295..59cfe70 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,13 +70,13 @@ 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()); |
@@ -81,5 +85,21 @@ namespace OpenSim.Data.MySQL | |||
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/MySQLUserProfilesData.cs b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs index b35595d..295e131 100644 --- a/OpenSim/Data/MySQL/MySQLUserProfilesData.cs +++ b/OpenSim/Data/MySQL/MySQLUserProfilesData.cs | |||
@@ -631,6 +631,8 @@ namespace OpenSim.Data.MySQL | |||
631 | { | 631 | { |
632 | if(reader.HasRows) | 632 | if(reader.HasRows) |
633 | { | 633 | { |
634 | m_log.DebugFormat("[PROFILES_DATA]" + | ||
635 | ": Getting data for {0}.", props.UserId); | ||
634 | reader.Read(); | 636 | reader.Read(); |
635 | props.WebUrl = (string)reader["profileURL"]; | 637 | props.WebUrl = (string)reader["profileURL"]; |
636 | UUID.TryParse((string)reader["profileImage"], out props.ImageId); | 638 | UUID.TryParse((string)reader["profileImage"], out props.ImageId); |
@@ -646,6 +648,9 @@ namespace OpenSim.Data.MySQL | |||
646 | } | 648 | } |
647 | else | 649 | else |
648 | { | 650 | { |
651 | m_log.DebugFormat("[PROFILES_DATA]" + | ||
652 | ": No data for {0}", props.UserId); | ||
653 | |||
649 | props.WebUrl = string.Empty; | 654 | props.WebUrl = string.Empty; |
650 | props.ImageId = UUID.Zero; | 655 | props.ImageId = UUID.Zero; |
651 | props.AboutText = string.Empty; | 656 | props.AboutText = string.Empty; |
@@ -894,13 +899,13 @@ namespace OpenSim.Data.MySQL | |||
894 | public bool GetUserPreferences(ref UserPreferences pref, ref string result) | 899 | public bool GetUserPreferences(ref UserPreferences pref, ref string result) |
895 | { | 900 | { |
896 | string query = string.Empty; | 901 | string query = string.Empty; |
897 | 902 | ||
898 | query += "SELECT imviaemail,visible,email FROM "; | 903 | query += "SELECT imviaemail,visible,email FROM "; |
899 | query += "usersettings WHERE "; | 904 | query += "usersettings WHERE "; |
900 | query += "useruuid = ?Id"; | 905 | query += "useruuid = ?Id"; |
901 | 906 | ||
902 | OSDArray data = new OSDArray(); | 907 | OSDArray data = new OSDArray(); |
903 | 908 | ||
904 | try | 909 | try |
905 | { | 910 | { |
906 | using (MySqlConnection dbcon = new MySqlConnection(ConnectionString)) | 911 | using (MySqlConnection dbcon = new MySqlConnection(ConnectionString)) |
@@ -909,10 +914,9 @@ namespace OpenSim.Data.MySQL | |||
909 | using (MySqlCommand cmd = new MySqlCommand(query, dbcon)) | 914 | using (MySqlCommand cmd = new MySqlCommand(query, dbcon)) |
910 | { | 915 | { |
911 | cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString()); | 916 | cmd.Parameters.AddWithValue("?Id", pref.UserId.ToString()); |
912 | |||
913 | using (MySqlDataReader reader = cmd.ExecuteReader()) | 917 | using (MySqlDataReader reader = cmd.ExecuteReader()) |
914 | { | 918 | { |
915 | if(reader.HasRows) | 919 | if (reader.HasRows) |
916 | { | 920 | { |
917 | reader.Read(); | 921 | reader.Read(); |
918 | bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail); | 922 | bool.TryParse((string)reader["imviaemail"], out pref.IMViaEmail); |
@@ -923,13 +927,13 @@ namespace OpenSim.Data.MySQL | |||
923 | { | 927 | { |
924 | dbcon.Close(); | 928 | dbcon.Close(); |
925 | dbcon.Open(); | 929 | dbcon.Open(); |
926 | 930 | ||
927 | query = "INSERT INTO usersettings VALUES "; | 931 | query = "INSERT INTO usersettings VALUES "; |
928 | query += "(?uuid,'false','false', ?Email)"; | 932 | query += "(?uuid,'false','false', ?Email)"; |
929 | 933 | ||
930 | using (MySqlCommand put = new MySqlCommand(query, dbcon)) | 934 | using (MySqlCommand put = new MySqlCommand(query, dbcon)) |
931 | { | 935 | { |
932 | 936 | ||
933 | put.Parameters.AddWithValue("?Email", pref.EMail); | 937 | put.Parameters.AddWithValue("?Email", pref.EMail); |
934 | put.Parameters.AddWithValue("?uuid", pref.UserId.ToString()); | 938 | put.Parameters.AddWithValue("?uuid", pref.UserId.ToString()); |
935 | 939 | ||
@@ -949,9 +953,9 @@ namespace OpenSim.Data.MySQL | |||
949 | } | 953 | } |
950 | return true; | 954 | return true; |
951 | } | 955 | } |
952 | 956 | ||
953 | public bool UpdateUserPreferences(ref UserPreferences pref, ref string result) | 957 | public bool UpdateUserPreferences(ref UserPreferences pref, ref string result) |
954 | { | 958 | { |
955 | string query = string.Empty; | 959 | string query = string.Empty; |
956 | 960 | ||
957 | query += "UPDATE usersettings SET "; | 961 | query += "UPDATE usersettings SET "; |
@@ -959,7 +963,7 @@ namespace OpenSim.Data.MySQL | |||
959 | query += "visible=?Visible, "; | 963 | query += "visible=?Visible, "; |
960 | query += "email=?EMail "; | 964 | query += "email=?EMail "; |
961 | query += "WHERE useruuid=?uuid"; | 965 | query += "WHERE useruuid=?uuid"; |
962 | 966 | ||
963 | try | 967 | try |
964 | { | 968 | { |
965 | using (MySqlConnection dbcon = new MySqlConnection(ConnectionString)) | 969 | using (MySqlConnection dbcon = new MySqlConnection(ConnectionString)) |
diff --git a/OpenSim/Data/MySQL/MySQLXAssetData.cs b/OpenSim/Data/MySQL/MySQLXAssetData.cs index af7e876..68e1a5a 100644 --- a/OpenSim/Data/MySQL/MySQLXAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLXAssetData.cs | |||
@@ -500,4 +500,4 @@ namespace OpenSim.Data.MySQL | |||
500 | 500 | ||
501 | #endregion | 501 | #endregion |
502 | } | 502 | } |
503 | } \ No newline at end of file | 503 | } |
diff --git a/OpenSim/Data/MySQL/Resources/RegionStore.migrations b/OpenSim/Data/MySQL/Resources/RegionStore.migrations index ac31380..a3d4b5d 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` ( |
@@ -948,3 +948,25 @@ ALTER TABLE land CHANGE COLUMN LandFlags LandFlags int unsigned default null; | |||
948 | 948 | ||
949 | COMMIT; | 949 | COMMIT; |
950 | 950 | ||
951 | :VERSION 51 #---- avination fields | ||
952 | |||
953 | BEGIN; | ||
954 | |||
955 | ALTER TABLE `prims` ADD COLUMN `PassCollisions` tinyint(4) NOT NULL default '0'; | ||
956 | ALTER TABLE `prims` ADD COLUMN `Vehicle` TEXT default NULL; | ||
957 | ALTER TABLE `regionsettings` ADD COLUMN `block_search` tinyint(4) NOT NULL default '0'; | ||
958 | ALTER TABLE `regionsettings` ADD COLUMN `casino` tinyint(4) NOT NULL default '0'; | ||
959 | ALTER TABLE `land` ADD COLUMN `SeeAVs` tinyint(4) NOT NULL default '1'; | ||
960 | ALTER TABLE `land` ADD COLUMN `AnyAVSounds` tinyint(4) NOT NULL default '1'; | ||
961 | ALTER TABLE `land` ADD COLUMN `GroupAVSounds` tinyint(4) NOT NULL default '1'; | ||
962 | |||
963 | COMMIT; | ||
964 | |||
965 | :VERSION 52 #---- STATUS ROTATION axis locks | ||
966 | |||
967 | BEGIN; | ||
968 | |||
969 | ALTER TABLE `prims` ADD COLUMN `RotationAxisLocks` tinyint(4) NOT NULL default '0'; | ||
970 | |||
971 | COMMIT; | ||
972 | |||
diff --git a/OpenSim/Data/MySQL/Resources/UserAccount.migrations b/OpenSim/Data/MySQL/Resources/UserAccount.migrations index 84011e6..71f1cc4 100644 --- a/OpenSim/Data/MySQL/Resources/UserAccount.migrations +++ b/OpenSim/Data/MySQL/Resources/UserAccount.migrations | |||
@@ -44,4 +44,11 @@ ALTER TABLE UserAccounts ADD COLUMN UserTitle varchar(64) NOT NULL DEFAULT ''; | |||
44 | 44 | ||
45 | COMMIT; | 45 | COMMIT; |
46 | 46 | ||
47 | :VERSION 5 # ------------------------- | ||
48 | |||
49 | BEGIN; | ||
50 | |||
51 | ALTER TABLE `UserAccounts` ADD `active` INT NOT NULL DEFAULT '1'; | ||
52 | |||
53 | COMMIT; | ||
47 | 54 | ||
diff --git a/OpenSim/Data/Null/NullRegionData.cs b/OpenSim/Data/Null/NullRegionData.cs index d28cd99..595db2f 100644 --- a/OpenSim/Data/Null/NullRegionData.cs +++ b/OpenSim/Data/Null/NullRegionData.cs | |||
@@ -134,21 +134,22 @@ namespace OpenSim.Data.Null | |||
134 | if (m_useStaticInstance && Instance != this) | 134 | if (m_useStaticInstance && Instance != this) |
135 | return Instance.Get(posX, posY, scopeID); | 135 | return Instance.Get(posX, posY, scopeID); |
136 | 136 | ||
137 | List<RegionData> ret = new List<RegionData>(); | 137 | RegionData ret = null; |
138 | 138 | ||
139 | lock (m_regionData) | 139 | lock (m_regionData) |
140 | { | 140 | { |
141 | foreach (RegionData r in m_regionData.Values) | 141 | foreach (RegionData r in m_regionData.Values) |
142 | { | 142 | { |
143 | if (r.posX == posX && r.posY == posY) | 143 | if (posX >= r.posX && posX < r.posX + r.sizeX |
144 | ret.Add(r); | 144 | && posY >= r.posY && posY < r.posY + r.sizeY) |
145 | { | ||
146 | ret = r; | ||
147 | break; | ||
148 | } | ||
145 | } | 149 | } |
146 | } | 150 | } |
147 | 151 | ||
148 | if (ret.Count > 0) | 152 | return ret; |
149 | return ret[0]; | ||
150 | |||
151 | return null; | ||
152 | } | 153 | } |
153 | 154 | ||
154 | public RegionData Get(UUID regionID, UUID scopeID) | 155 | public RegionData Get(UUID regionID, UUID scopeID) |
@@ -176,8 +177,9 @@ namespace OpenSim.Data.Null | |||
176 | { | 177 | { |
177 | foreach (RegionData r in m_regionData.Values) | 178 | foreach (RegionData r in m_regionData.Values) |
178 | { | 179 | { |
179 | if (r.posX >= startX && r.posX <= endX && r.posY >= startY && r.posY <= endY) | 180 | if (r.posX + r.sizeX > startX && r.posX <= endX |
180 | ret.Add(r); | 181 | && r.posY + r.sizeX > startY && r.posY <= endY) |
182 | ret.Add(r); | ||
181 | } | 183 | } |
182 | } | 184 | } |
183 | 185 | ||
diff --git a/OpenSim/Data/Null/NullSimulationData.cs b/OpenSim/Data/Null/NullSimulationData.cs index deeaced..339e7f4 100644 --- a/OpenSim/Data/Null/NullSimulationData.cs +++ b/OpenSim/Data/Null/NullSimulationData.cs | |||
@@ -184,6 +184,11 @@ namespace OpenSim.Data.Null | |||
184 | { | 184 | { |
185 | } | 185 | } |
186 | 186 | ||
187 | public UUID[] GetObjectIDs(UUID regionID) | ||
188 | { | ||
189 | return new UUID[0]; | ||
190 | } | ||
191 | |||
187 | public void SaveExtra(UUID regionID, string name, string value) | 192 | public void SaveExtra(UUID regionID, string name, string value) |
188 | { | 193 | { |
189 | } | 194 | } |
diff --git a/OpenSim/Data/Null/NullUserAccountData.cs b/OpenSim/Data/Null/NullUserAccountData.cs index ec54dba..241616b 100644 --- a/OpenSim/Data/Null/NullUserAccountData.cs +++ b/OpenSim/Data/Null/NullUserAccountData.cs | |||
@@ -193,5 +193,10 @@ namespace OpenSim.Data.Null | |||
193 | 193 | ||
194 | return false; | 194 | return false; |
195 | } | 195 | } |
196 | |||
197 | public UserAccountData[] GetUsersWhere(UUID scopeID, string where) | ||
198 | { | ||
199 | return null; | ||
200 | } | ||
196 | } | 201 | } |
197 | } | 202 | } |
diff --git a/OpenSim/Data/PGSQL/PGSQLAssetData.cs b/OpenSim/Data/PGSQL/PGSQLAssetData.cs index 5d8b0a2..81adb03 100644 --- a/OpenSim/Data/PGSQL/PGSQLAssetData.cs +++ b/OpenSim/Data/PGSQL/PGSQLAssetData.cs | |||
@@ -149,7 +149,7 @@ namespace OpenSim.Data.PGSQL | |||
149 | /// Create asset in m_database | 149 | /// Create asset in m_database |
150 | /// </summary> | 150 | /// </summary> |
151 | /// <param name="asset">the asset</param> | 151 | /// <param name="asset">the asset</param> |
152 | override public void StoreAsset(AssetBase asset) | 152 | override public bool StoreAsset(AssetBase asset) |
153 | { | 153 | { |
154 | 154 | ||
155 | string sql = | 155 | string sql = |
@@ -208,6 +208,7 @@ namespace OpenSim.Data.PGSQL | |||
208 | m_log.Error("[ASSET DB]: Error storing item :" + e.Message + " sql "+sql); | 208 | m_log.Error("[ASSET DB]: Error storing item :" + e.Message + " sql "+sql); |
209 | } | 209 | } |
210 | } | 210 | } |
211 | return true; | ||
211 | } | 212 | } |
212 | 213 | ||
213 | 214 | ||
diff --git a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index 77d87d4..a006c58 100644 --- a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs | |||
@@ -2227,6 +2227,11 @@ namespace OpenSim.Data.PGSQL | |||
2227 | } | 2227 | } |
2228 | } | 2228 | } |
2229 | 2229 | ||
2230 | public UUID[] GetObjectIDs(UUID regionID) | ||
2231 | { | ||
2232 | return new UUID[0]; | ||
2233 | } | ||
2234 | |||
2230 | public void SaveExtra(UUID regionID, string name, string value) | 2235 | public void SaveExtra(UUID regionID, string name, string value) |
2231 | { | 2236 | { |
2232 | } | 2237 | } |
diff --git a/OpenSim/Data/PGSQL/PGSQLUserAccountData.cs b/OpenSim/Data/PGSQL/PGSQLUserAccountData.cs index 0a68b23..a2b5a2a 100644 --- a/OpenSim/Data/PGSQL/PGSQLUserAccountData.cs +++ b/OpenSim/Data/PGSQL/PGSQLUserAccountData.cs | |||
@@ -325,5 +325,10 @@ namespace OpenSim.Data.PGSQL | |||
325 | return DoQuery(cmd); | 325 | return DoQuery(cmd); |
326 | } | 326 | } |
327 | } | 327 | } |
328 | |||
329 | public UserAccountData[] GetUsersWhere(UUID scopeID, string where) | ||
330 | { | ||
331 | return null; | ||
332 | } | ||
328 | } | 333 | } |
329 | } | 334 | } |
diff --git a/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations b/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations index a6bd8ca..c1580b2 100644 --- a/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations +++ b/OpenSim/Data/PGSQL/Resources/UserProfiles.migrations | |||
@@ -152,4 +152,4 @@ BEGIN; | |||
152 | 152 | ||
153 | ALTER TABLE usersettings ALTER COLUMN imviaemail SET DATA TYPE boolean USING CASE WHEN false THEN false ELSE true END; | 153 | ALTER TABLE usersettings ALTER COLUMN imviaemail SET DATA TYPE boolean USING CASE WHEN false THEN false ELSE true END; |
154 | 154 | ||
155 | COMMIT; \ No newline at end of file | 155 | COMMIT; |
diff --git a/OpenSim/Data/SQLite/Resources/RegionStore.migrations b/OpenSim/Data/SQLite/Resources/RegionStore.migrations index 901068f..f66be34 100644 --- a/OpenSim/Data/SQLite/Resources/RegionStore.migrations +++ b/OpenSim/Data/SQLite/Resources/RegionStore.migrations | |||
@@ -612,3 +612,25 @@ ALTER TABLE primshapes ADD COLUMN LastAttachPoint int not null default '0'; | |||
612 | 612 | ||
613 | COMMIT; | 613 | COMMIT; |
614 | 614 | ||
615 | :VERSION 31 #---- avination fields plus a few others | ||
616 | |||
617 | BEGIN; | ||
618 | |||
619 | ALTER TABLE `prims` ADD COLUMN `PassTouches` BOOLEAN NOT NULL DEFAULT FALSE; | ||
620 | ALTER TABLE `prims` ADD COLUMN `PassCollisions`BOOLEAN NOT NULL DEFAULT FALSE; | ||
621 | ALTER TABLE `prims` ADD COLUMN `Vehicle` TEXT default NULL; | ||
622 | ALTER TABLE `regionsettings` ADD COLUMN `block_search` BOOLEAN NOT NULL DEFAULT FALSE;; | ||
623 | ALTER TABLE `regionsettings` ADD COLUMN `casino` BOOLEAN NOT NULL DEFAULT FALSE;; | ||
624 | ALTER TABLE `land` ADD COLUMN `SeeAVs` BOOLEAN NOT NULL DEFAULT TRUE; | ||
625 | ALTER TABLE `land` ADD COLUMN `AnyAVSounds` BOOLEAN NOT NULL DEFAULT TRUE; | ||
626 | ALTER TABLE `land` ADD COLUMN `GroupAVSounds` BOOLEAN NOT NULL DEFAULT TRUE; | ||
627 | |||
628 | COMMIT; | ||
629 | |||
630 | :VERSION 32 #---- Rotation axis locks | ||
631 | |||
632 | BEGIN; | ||
633 | |||
634 | ALTER TABLE prims ADD COLUMN `RotationAxisLocks` tinyint(4) NOT NULL default '0'; | ||
635 | |||
636 | COMMIT; | ||
diff --git a/OpenSim/Data/SQLite/Resources/UserAccount.migrations b/OpenSim/Data/SQLite/Resources/UserAccount.migrations index 854fe69..f37a222 100644 --- a/OpenSim/Data/SQLite/Resources/UserAccount.migrations +++ b/OpenSim/Data/SQLite/Resources/UserAccount.migrations | |||
@@ -25,3 +25,11 @@ BEGIN TRANSACTION; | |||
25 | INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT `UUID` AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID, username AS FirstName, surname AS LastName, '' as Email, '' AS ServiceURLs, created as Created FROM users; | 25 | INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT `UUID` AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID, username AS FirstName, surname AS LastName, '' as Email, '' AS ServiceURLs, created as Created FROM users; |
26 | 26 | ||
27 | COMMIT; | 27 | COMMIT; |
28 | |||
29 | :VERSION 3 # ------------------------- | ||
30 | |||
31 | BEGIN; | ||
32 | |||
33 | ALTER TABLE `UserAccounts` ADD `active` BOOLEAN NOT NULL DEFAULT TRUE; | ||
34 | |||
35 | COMMIT; \ No newline at end of file | ||
diff --git a/OpenSim/Data/SQLite/Resources/UserProfiles.migrations b/OpenSim/Data/SQLite/Resources/UserProfiles.migrations index 86434e8..207dde0 100644 --- a/OpenSim/Data/SQLite/Resources/UserProfiles.migrations +++ b/OpenSim/Data/SQLite/Resources/UserProfiles.migrations | |||
@@ -99,4 +99,4 @@ CREATE TABLE IF NOT EXISTS usersettings ( | |||
99 | email varchar(254) NOT NULL, | 99 | email varchar(254) NOT NULL, |
100 | PRIMARY KEY (useruuid) | 100 | PRIMARY KEY (useruuid) |
101 | ) | 101 | ) |
102 | commit; \ No newline at end of file | 102 | commit; |
diff --git a/OpenSim/Data/SQLite/SQLiteAssetData.cs b/OpenSim/Data/SQLite/SQLiteAssetData.cs index f0dda64..9c2bd2e 100644 --- a/OpenSim/Data/SQLite/SQLiteAssetData.cs +++ b/OpenSim/Data/SQLite/SQLiteAssetData.cs | |||
@@ -131,7 +131,7 @@ namespace OpenSim.Data.SQLite | |||
131 | /// Create an asset | 131 | /// Create an asset |
132 | /// </summary> | 132 | /// </summary> |
133 | /// <param name="asset">Asset Base</param> | 133 | /// <param name="asset">Asset Base</param> |
134 | override public void StoreAsset(AssetBase asset) | 134 | override public bool StoreAsset(AssetBase asset) |
135 | { | 135 | { |
136 | string assetName = asset.Name; | 136 | string assetName = asset.Name; |
137 | if (asset.Name.Length > AssetBase.MAX_ASSET_NAME) | 137 | if (asset.Name.Length > AssetBase.MAX_ASSET_NAME) |
@@ -171,6 +171,7 @@ namespace OpenSim.Data.SQLite | |||
171 | cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); | 171 | cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); |
172 | 172 | ||
173 | cmd.ExecuteNonQuery(); | 173 | cmd.ExecuteNonQuery(); |
174 | return true; | ||
174 | } | 175 | } |
175 | } | 176 | } |
176 | } | 177 | } |
@@ -191,6 +192,7 @@ namespace OpenSim.Data.SQLite | |||
191 | cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); | 192 | cmd.Parameters.Add(new SqliteParameter(":Data", asset.Data)); |
192 | 193 | ||
193 | cmd.ExecuteNonQuery(); | 194 | cmd.ExecuteNonQuery(); |
195 | return true; | ||
194 | } | 196 | } |
195 | } | 197 | } |
196 | } | 198 | } |
diff --git a/OpenSim/Data/SQLite/SQLiteSimulationData.cs b/OpenSim/Data/SQLite/SQLiteSimulationData.cs index 6ed3d40..d7b3bbe 100644 --- a/OpenSim/Data/SQLite/SQLiteSimulationData.cs +++ b/OpenSim/Data/SQLite/SQLiteSimulationData.cs | |||
@@ -1246,6 +1246,7 @@ namespace OpenSim.Data.SQLite | |||
1246 | createCol(prims, "Restitution", typeof(Double)); | 1246 | createCol(prims, "Restitution", typeof(Double)); |
1247 | 1247 | ||
1248 | createCol(prims, "KeyframeMotion", typeof(Byte[])); | 1248 | createCol(prims, "KeyframeMotion", typeof(Byte[])); |
1249 | |||
1249 | // Add in contraints | 1250 | // Add in contraints |
1250 | prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] }; | 1251 | prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] }; |
1251 | 1252 | ||
@@ -1760,7 +1761,18 @@ namespace OpenSim.Data.SQLite | |||
1760 | { | 1761 | { |
1761 | prim.KeyframeMotion = null; | 1762 | prim.KeyframeMotion = null; |
1762 | } | 1763 | } |
1763 | 1764 | ||
1765 | prim.PassCollisions = Convert.ToBoolean(row["PassCollisions"]); | ||
1766 | prim.PassTouches = Convert.ToBoolean(row["PassTouches"]); | ||
1767 | prim.RotationAxisLocks = Convert.ToByte(row["RotationAxisLocks"]); | ||
1768 | |||
1769 | SOPVehicle vehicle = null; | ||
1770 | if (!(row["Vehicle"] is DBNull) && row["Vehicle"].ToString() != String.Empty) | ||
1771 | { | ||
1772 | vehicle = SOPVehicle.FromXml2(row["Vehicle"].ToString()); | ||
1773 | if (vehicle != null) | ||
1774 | prim.VehicleParams = vehicle; | ||
1775 | } | ||
1764 | return prim; | 1776 | return prim; |
1765 | } | 1777 | } |
1766 | 1778 | ||
@@ -1845,6 +1857,10 @@ namespace OpenSim.Data.SQLite | |||
1845 | newData.MediaLoop = Convert.ToBoolean(row["MediaLoop"]); | 1857 | newData.MediaLoop = Convert.ToBoolean(row["MediaLoop"]); |
1846 | newData.ObscureMedia = Convert.ToBoolean(row["ObscureMedia"]); | 1858 | newData.ObscureMedia = Convert.ToBoolean(row["ObscureMedia"]); |
1847 | newData.ObscureMusic = Convert.ToBoolean(row["ObscureMusic"]); | 1859 | newData.ObscureMusic = Convert.ToBoolean(row["ObscureMusic"]); |
1860 | newData.SeeAVs = Convert.ToBoolean(row["SeeAVs"]); | ||
1861 | newData.AnyAVSounds = Convert.ToBoolean(row["AnyAVSounds"]); | ||
1862 | newData.GroupAVSounds = Convert.ToBoolean(row["GroupAVSounds"]); | ||
1863 | |||
1848 | try | 1864 | try |
1849 | { | 1865 | { |
1850 | newData.UserLocation = | 1866 | newData.UserLocation = |
@@ -1918,7 +1934,8 @@ namespace OpenSim.Data.SQLite | |||
1918 | newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]); | 1934 | newSettings.TerrainImageID = new UUID((String)row["map_tile_ID"]); |
1919 | newSettings.TelehubObject = new UUID((String)row["TelehubObject"]); | 1935 | newSettings.TelehubObject = new UUID((String)row["TelehubObject"]); |
1920 | newSettings.ParcelImageID = new UUID((String)row["parcel_tile_ID"]); | 1936 | newSettings.ParcelImageID = new UUID((String)row["parcel_tile_ID"]); |
1921 | 1937 | newSettings.GodBlockSearch = Convert.ToBoolean(row["block_search"]); | |
1938 | newSettings.Casino = Convert.ToBoolean(row["casino"]); | ||
1922 | return newSettings; | 1939 | return newSettings; |
1923 | } | 1940 | } |
1924 | 1941 | ||
@@ -2013,6 +2030,7 @@ namespace OpenSim.Data.SQLite | |||
2013 | return entry; | 2030 | return entry; |
2014 | } | 2031 | } |
2015 | 2032 | ||
2033 | |||
2016 | /// <summary> | 2034 | /// <summary> |
2017 | /// | 2035 | /// |
2018 | /// </summary> | 2036 | /// </summary> |
@@ -2137,7 +2155,6 @@ namespace OpenSim.Data.SQLite | |||
2137 | // click action | 2155 | // click action |
2138 | row["ClickAction"] = prim.ClickAction; | 2156 | row["ClickAction"] = prim.ClickAction; |
2139 | 2157 | ||
2140 | row["SalePrice"] = prim.SalePrice; | ||
2141 | row["Material"] = prim.Material; | 2158 | row["Material"] = prim.Material; |
2142 | 2159 | ||
2143 | row["CollisionSound"] = prim.CollisionSound.ToString(); | 2160 | row["CollisionSound"] = prim.CollisionSound.ToString(); |
@@ -2168,8 +2185,16 @@ namespace OpenSim.Data.SQLite | |||
2168 | row["KeyframeMotion"] = prim.KeyframeMotion.Serialize(); | 2185 | row["KeyframeMotion"] = prim.KeyframeMotion.Serialize(); |
2169 | else | 2186 | else |
2170 | row["KeyframeMotion"] = new Byte[0]; | 2187 | row["KeyframeMotion"] = new Byte[0]; |
2171 | 2188 | ||
2172 | 2189 | row["PassTouches"] = prim.PassTouches; | |
2190 | row["PassCollisions"] = prim.PassCollisions; | ||
2191 | row["RotationAxisLocks"] = prim.RotationAxisLocks; | ||
2192 | |||
2193 | if (prim.VehicleParams != null) | ||
2194 | row["Vehicle"] = prim.VehicleParams.ToXml2(); | ||
2195 | else | ||
2196 | row["Vehicle"] = String.Empty; | ||
2197 | |||
2173 | } | 2198 | } |
2174 | 2199 | ||
2175 | /// <summary> | 2200 | /// <summary> |
@@ -2253,6 +2278,10 @@ namespace OpenSim.Data.SQLite | |||
2253 | row["MediaLoop"] = land.MediaLoop; | 2278 | row["MediaLoop"] = land.MediaLoop; |
2254 | row["ObscureMusic"] = land.ObscureMusic; | 2279 | row["ObscureMusic"] = land.ObscureMusic; |
2255 | row["ObscureMedia"] = land.ObscureMedia; | 2280 | row["ObscureMedia"] = land.ObscureMedia; |
2281 | row["SeeAVs"] = land.SeeAVs; | ||
2282 | row["AnyAVSounds"] = land.AnyAVSounds; | ||
2283 | row["GroupAVSounds"] = land.GroupAVSounds; | ||
2284 | |||
2256 | } | 2285 | } |
2257 | 2286 | ||
2258 | /// <summary> | 2287 | /// <summary> |
@@ -2311,6 +2340,8 @@ namespace OpenSim.Data.SQLite | |||
2311 | row["map_tile_ID"] = settings.TerrainImageID.ToString(); | 2340 | row["map_tile_ID"] = settings.TerrainImageID.ToString(); |
2312 | row["TelehubObject"] = settings.TelehubObject.ToString(); | 2341 | row["TelehubObject"] = settings.TelehubObject.ToString(); |
2313 | row["parcel_tile_ID"] = settings.ParcelImageID.ToString(); | 2342 | row["parcel_tile_ID"] = settings.ParcelImageID.ToString(); |
2343 | row["block_search"] = settings.GodBlockSearch; | ||
2344 | row["casino"] = settings.Casino; | ||
2314 | } | 2345 | } |
2315 | 2346 | ||
2316 | /// <summary> | 2347 | /// <summary> |
@@ -2944,6 +2975,11 @@ namespace OpenSim.Data.SQLite | |||
2944 | } | 2975 | } |
2945 | } | 2976 | } |
2946 | 2977 | ||
2978 | public UUID[] GetObjectIDs(UUID regionID) | ||
2979 | { | ||
2980 | return new UUID[0]; | ||
2981 | } | ||
2982 | |||
2947 | public void SaveExtra(UUID regionID, string name, string value) | 2983 | public void SaveExtra(UUID regionID, string name, string value) |
2948 | { | 2984 | { |
2949 | } | 2985 | } |
diff --git a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs index f98d376..91d62ce 100644 --- a/OpenSim/Data/SQLite/SQLiteUserAccountData.cs +++ b/OpenSim/Data/SQLite/SQLiteUserAccountData.cs | |||
@@ -82,5 +82,10 @@ namespace OpenSim.Data.SQLite | |||
82 | return DoQuery(cmd); | 82 | return DoQuery(cmd); |
83 | } | 83 | } |
84 | } | 84 | } |
85 | |||
86 | public UserAccountData[] GetUsersWhere(UUID scopeID, string where) | ||
87 | { | ||
88 | return null; | ||
89 | } | ||
85 | } | 90 | } |
86 | } | 91 | } |
diff --git a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs index cd3e8b6..2dfdba3 100644 --- a/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs +++ b/OpenSim/Data/SQLite/SQLiteUserProfilesData.cs | |||
@@ -741,6 +741,7 @@ namespace OpenSim.Data.SQLite | |||
741 | return true; | 741 | return true; |
742 | } | 742 | } |
743 | 743 | ||
744 | |||
744 | public bool UpdateUserPreferences(ref UserPreferences pref, ref string result) | 745 | public bool UpdateUserPreferences(ref UserPreferences pref, ref string result) |
745 | { | 746 | { |
746 | string query = string.Empty; | 747 | string query = string.Empty; |