diff options
Diffstat (limited to 'OpenSim/Data/MySQL/MySQLAssetData.cs')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLAssetData.cs | 180 |
1 files changed, 92 insertions, 88 deletions
diff --git a/OpenSim/Data/MySQL/MySQLAssetData.cs b/OpenSim/Data/MySQL/MySQLAssetData.cs index a743479..73de64b 100644 --- a/OpenSim/Data/MySQL/MySQLAssetData.cs +++ b/OpenSim/Data/MySQL/MySQLAssetData.cs | |||
@@ -163,52 +163,51 @@ namespace OpenSim.Data.MySQL | |||
163 | { | 163 | { |
164 | dbcon.Open(); | 164 | dbcon.Open(); |
165 | 165 | ||
166 | MySqlCommand cmd = | 166 | using (MySqlCommand cmd = |
167 | new MySqlCommand( | 167 | new MySqlCommand( |
168 | "replace INTO assets(id, name, description, assetType, local, temporary, create_time, access_time, asset_flags, CreatorID, data)" + | 168 | "replace INTO assets(id, name, description, assetType, local, temporary, create_time, access_time, asset_flags, CreatorID, data)" + |
169 | "VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?asset_flags, ?CreatorID, ?data)", | 169 | "VALUES(?id, ?name, ?description, ?assetType, ?local, ?temporary, ?create_time, ?access_time, ?asset_flags, ?CreatorID, ?data)", |
170 | dbcon); | 170 | dbcon)) |
171 | |||
172 | string assetName = asset.Name; | ||
173 | if (asset.Name.Length > 64) | ||
174 | { | ||
175 | assetName = asset.Name.Substring(0, 64); | ||
176 | m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on add"); | ||
177 | } | ||
178 | |||
179 | string assetDescription = asset.Description; | ||
180 | if (asset.Description.Length > 64) | ||
181 | { | ||
182 | assetDescription = asset.Description.Substring(0, 64); | ||
183 | m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on add"); | ||
184 | } | ||
185 | |||
186 | // need to ensure we dispose | ||
187 | try | ||
188 | { | 171 | { |
189 | using (cmd) | 172 | string assetName = asset.Name; |
173 | if (asset.Name.Length > 64) | ||
190 | { | 174 | { |
191 | // create unix epoch time | 175 | assetName = asset.Name.Substring(0, 64); |
192 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); | 176 | m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on add"); |
193 | cmd.Parameters.AddWithValue("?id", asset.ID); | 177 | } |
194 | cmd.Parameters.AddWithValue("?name", assetName); | 178 | |
195 | cmd.Parameters.AddWithValue("?description", assetDescription); | 179 | string assetDescription = asset.Description; |
196 | cmd.Parameters.AddWithValue("?assetType", asset.Type); | 180 | if (asset.Description.Length > 64) |
197 | cmd.Parameters.AddWithValue("?local", asset.Local); | 181 | { |
198 | cmd.Parameters.AddWithValue("?temporary", asset.Temporary); | 182 | assetDescription = asset.Description.Substring(0, 64); |
199 | cmd.Parameters.AddWithValue("?create_time", now); | 183 | m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on add"); |
200 | cmd.Parameters.AddWithValue("?access_time", now); | 184 | } |
201 | cmd.Parameters.AddWithValue("?CreatorID", asset.Metadata.CreatorID); | 185 | |
202 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); | 186 | try |
203 | cmd.Parameters.AddWithValue("?data", asset.Data); | 187 | { |
204 | cmd.ExecuteNonQuery(); | 188 | using (cmd) |
205 | cmd.Dispose(); | 189 | { |
190 | // create unix epoch time | ||
191 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); | ||
192 | cmd.Parameters.AddWithValue("?id", asset.ID); | ||
193 | cmd.Parameters.AddWithValue("?name", assetName); | ||
194 | cmd.Parameters.AddWithValue("?description", assetDescription); | ||
195 | cmd.Parameters.AddWithValue("?assetType", asset.Type); | ||
196 | cmd.Parameters.AddWithValue("?local", asset.Local); | ||
197 | cmd.Parameters.AddWithValue("?temporary", asset.Temporary); | ||
198 | cmd.Parameters.AddWithValue("?create_time", now); | ||
199 | cmd.Parameters.AddWithValue("?access_time", now); | ||
200 | cmd.Parameters.AddWithValue("?CreatorID", asset.Metadata.CreatorID); | ||
201 | cmd.Parameters.AddWithValue("?asset_flags", (int)asset.Flags); | ||
202 | cmd.Parameters.AddWithValue("?data", asset.Data); | ||
203 | cmd.ExecuteNonQuery(); | ||
204 | } | ||
205 | } | ||
206 | catch (Exception e) | ||
207 | { | ||
208 | m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}", | ||
209 | asset.FullID, asset.Name, e.Message); | ||
206 | } | 210 | } |
207 | } | ||
208 | catch (Exception e) | ||
209 | { | ||
210 | m_log.ErrorFormat("[ASSET DB]: MySQL failure creating asset {0} with name \"{1}\". Error: {2}", | ||
211 | asset.FullID, asset.Name, e.Message); | ||
212 | } | 211 | } |
213 | } | 212 | } |
214 | } | 213 | } |
@@ -221,33 +220,31 @@ namespace OpenSim.Data.MySQL | |||
221 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 220 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
222 | { | 221 | { |
223 | dbcon.Open(); | 222 | dbcon.Open(); |
224 | MySqlCommand cmd = | ||
225 | new MySqlCommand("update assets set access_time=?access_time where id=?id", | ||
226 | dbcon); | ||
227 | 223 | ||
228 | // need to ensure we dispose | 224 | using (MySqlCommand cmd |
229 | try | 225 | = new MySqlCommand("update assets set access_time=?access_time where id=?id", dbcon)) |
230 | { | 226 | { |
231 | using (cmd) | 227 | try |
232 | { | 228 | { |
233 | // create unix epoch time | 229 | using (cmd) |
234 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); | 230 | { |
235 | cmd.Parameters.AddWithValue("?id", asset.ID); | 231 | // create unix epoch time |
236 | cmd.Parameters.AddWithValue("?access_time", now); | 232 | int now = (int)Utils.DateTimeToUnixTime(DateTime.UtcNow); |
237 | cmd.ExecuteNonQuery(); | 233 | cmd.Parameters.AddWithValue("?id", asset.ID); |
238 | cmd.Dispose(); | 234 | cmd.Parameters.AddWithValue("?access_time", now); |
235 | cmd.ExecuteNonQuery(); | ||
236 | } | ||
237 | } | ||
238 | catch (Exception e) | ||
239 | { | ||
240 | m_log.ErrorFormat( | ||
241 | "[ASSETS DB]: " + | ||
242 | "MySql failure updating access_time for asset {0} with name {1}" + Environment.NewLine + e.ToString() | ||
243 | + Environment.NewLine + "Attempting reconnection", asset.FullID, asset.Name); | ||
239 | } | 244 | } |
240 | } | ||
241 | catch (Exception e) | ||
242 | { | ||
243 | m_log.ErrorFormat( | ||
244 | "[ASSETS DB]: " + | ||
245 | "MySql failure updating access_time for asset {0} with name {1}" + Environment.NewLine + e.ToString() | ||
246 | + Environment.NewLine + "Attempting reconnection", asset.FullID, asset.Name); | ||
247 | } | 245 | } |
248 | } | 246 | } |
249 | } | 247 | } |
250 | |||
251 | } | 248 | } |
252 | 249 | ||
253 | /// <summary> | 250 | /// <summary> |
@@ -310,35 +307,41 @@ namespace OpenSim.Data.MySQL | |||
310 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 307 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
311 | { | 308 | { |
312 | dbcon.Open(); | 309 | dbcon.Open(); |
313 | MySqlCommand cmd = new MySqlCommand("SELECT name,description,assetType,temporary,id,asset_flags,CreatorID FROM assets LIMIT ?start, ?count", dbcon); | ||
314 | cmd.Parameters.AddWithValue("?start", start); | ||
315 | cmd.Parameters.AddWithValue("?count", count); | ||
316 | 310 | ||
317 | try | 311 | using (MySqlCommand cmd |
312 | = new MySqlCommand( | ||
313 | "SELECT name,description,assetType,temporary,id,asset_flags,CreatorID FROM assets LIMIT ?start, ?count", | ||
314 | dbcon)) | ||
318 | { | 315 | { |
319 | using (MySqlDataReader dbReader = cmd.ExecuteReader()) | 316 | cmd.Parameters.AddWithValue("?start", start); |
317 | cmd.Parameters.AddWithValue("?count", count); | ||
318 | |||
319 | try | ||
320 | { | 320 | { |
321 | while (dbReader.Read()) | 321 | using (MySqlDataReader dbReader = cmd.ExecuteReader()) |
322 | { | 322 | { |
323 | AssetMetadata metadata = new AssetMetadata(); | 323 | while (dbReader.Read()) |
324 | metadata.Name = (string)dbReader["name"]; | 324 | { |
325 | metadata.Description = (string)dbReader["description"]; | 325 | AssetMetadata metadata = new AssetMetadata(); |
326 | metadata.Type = (sbyte)dbReader["assetType"]; | 326 | metadata.Name = (string)dbReader["name"]; |
327 | metadata.Temporary = Convert.ToBoolean(dbReader["temporary"]); // Not sure if this is correct. | 327 | metadata.Description = (string)dbReader["description"]; |
328 | metadata.Flags = (AssetFlags)Convert.ToInt32(dbReader["asset_flags"]); | 328 | metadata.Type = (sbyte)dbReader["assetType"]; |
329 | metadata.FullID = DBGuid.FromDB(dbReader["id"]); | 329 | metadata.Temporary = Convert.ToBoolean(dbReader["temporary"]); // Not sure if this is correct. |
330 | metadata.CreatorID = dbReader["CreatorID"].ToString(); | 330 | metadata.Flags = (AssetFlags)Convert.ToInt32(dbReader["asset_flags"]); |
331 | 331 | metadata.FullID = DBGuid.FromDB(dbReader["id"]); | |
332 | // Current SHA1s are not stored/computed. | 332 | metadata.CreatorID = dbReader["CreatorID"].ToString(); |
333 | metadata.SHA1 = new byte[] { }; | 333 | |
334 | 334 | // Current SHA1s are not stored/computed. | |
335 | retList.Add(metadata); | 335 | metadata.SHA1 = new byte[] { }; |
336 | |||
337 | retList.Add(metadata); | ||
338 | } | ||
336 | } | 339 | } |
337 | } | 340 | } |
338 | } | 341 | catch (Exception e) |
339 | catch (Exception e) | 342 | { |
340 | { | 343 | m_log.Error("[ASSETS DB]: MySql failure fetching asset set" + Environment.NewLine + e.ToString()); |
341 | m_log.Error("[ASSETS DB]: MySql failure fetching asset set" + Environment.NewLine + e.ToString()); | 344 | } |
342 | } | 345 | } |
343 | } | 346 | } |
344 | } | 347 | } |
@@ -353,11 +356,12 @@ namespace OpenSim.Data.MySQL | |||
353 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) | 356 | using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) |
354 | { | 357 | { |
355 | dbcon.Open(); | 358 | dbcon.Open(); |
356 | MySqlCommand cmd = new MySqlCommand("delete from assets where id=?id", dbcon); | ||
357 | cmd.Parameters.AddWithValue("?id", id); | ||
358 | cmd.ExecuteNonQuery(); | ||
359 | 359 | ||
360 | cmd.Dispose(); | 360 | using (MySqlCommand cmd = new MySqlCommand("delete from assets where id=?id", dbcon)) |
361 | { | ||
362 | cmd.Parameters.AddWithValue("?id", id); | ||
363 | cmd.ExecuteNonQuery(); | ||
364 | } | ||
361 | } | 365 | } |
362 | } | 366 | } |
363 | 367 | ||
@@ -366,4 +370,4 @@ namespace OpenSim.Data.MySQL | |||
366 | 370 | ||
367 | #endregion | 371 | #endregion |
368 | } | 372 | } |
369 | } | 373 | } \ No newline at end of file |