diff options
author | John Hurliman | 2009-10-04 13:57:51 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-04 13:57:51 -0700 |
commit | 29a4614529bbda02b9c690d2d1812be1d1e7bbae (patch) | |
tree | 89725829b37d502158a114c862a56a075b005b1b /OpenSim/Data/MySQL/MySQLGridData.cs | |
parent | Guarding a line that is sometimes throwing a null pointer exception. (diff) | |
download | opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.zip opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.gz opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.bz2 opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.xz |
* MySQL data tests now pass by fixing a bad fix for a bad cast on the asset Local member in MySQLAssetData
* First pass at applying the using(){} pattern to IDisposable objects. Always use the using pattern on IDisposable objects whenever possible, do not manually call .Close() or .Dispose() unless there is no other way to write the code. This pass mostly covers OpenSim.Data.MySQL, and should have no functional change (tests still pass)
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLGridData.cs | 171 |
1 files changed, 84 insertions, 87 deletions
diff --git a/OpenSim/Data/MySQL/MySQLGridData.cs b/OpenSim/Data/MySQL/MySQLGridData.cs index 1ec2609..38cb3b7 100644 --- a/OpenSim/Data/MySQL/MySQLGridData.cs +++ b/OpenSim/Data/MySQL/MySQLGridData.cs | |||
@@ -197,29 +197,27 @@ namespace OpenSim.Data.MySQL | |||
197 | param["?xmax"] = xmax.ToString(); | 197 | param["?xmax"] = xmax.ToString(); |
198 | param["?ymax"] = ymax.ToString(); | 198 | param["?ymax"] = ymax.ToString(); |
199 | 199 | ||
200 | IDbCommand result = | 200 | using (IDbCommand result = dbm.Manager.Query( |
201 | dbm.Manager.Query( | ||
202 | "SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", | 201 | "SELECT * FROM regions WHERE locX >= ?xmin AND locX <= ?xmax AND locY >= ?ymin AND locY <= ?ymax", |
203 | param); | 202 | param)) |
204 | IDataReader reader = result.ExecuteReader(); | 203 | { |
204 | using (IDataReader reader = result.ExecuteReader()) | ||
205 | { | ||
206 | RegionProfileData row; | ||
205 | 207 | ||
206 | RegionProfileData row; | 208 | List<RegionProfileData> rows = new List<RegionProfileData>(); |
207 | 209 | ||
208 | List<RegionProfileData> rows = new List<RegionProfileData>(); | 210 | while ((row = dbm.Manager.readSimRow(reader)) != null) |
211 | rows.Add(row); | ||
209 | 212 | ||
210 | while ((row = dbm.Manager.readSimRow(reader)) != null) | 213 | return rows.ToArray(); |
211 | { | 214 | } |
212 | rows.Add(row); | ||
213 | } | 215 | } |
214 | reader.Close(); | ||
215 | result.Dispose(); | ||
216 | |||
217 | return rows.ToArray(); | ||
218 | } | 216 | } |
219 | catch (Exception e) | 217 | catch (Exception e) |
220 | { | 218 | { |
221 | dbm.Manager.Reconnect(); | 219 | dbm.Manager.Reconnect(); |
222 | m_log.Error(e.ToString()); | 220 | m_log.Error(e.Message, e); |
223 | return null; | 221 | return null; |
224 | } | 222 | } |
225 | finally | 223 | finally |
@@ -243,29 +241,27 @@ namespace OpenSim.Data.MySQL | |||
243 | Dictionary<string, object> param = new Dictionary<string, object>(); | 241 | Dictionary<string, object> param = new Dictionary<string, object>(); |
244 | param["?name"] = namePrefix + "%"; | 242 | param["?name"] = namePrefix + "%"; |
245 | 243 | ||
246 | IDbCommand result = | 244 | using (IDbCommand result = dbm.Manager.Query( |
247 | dbm.Manager.Query( | 245 | "SELECT * FROM regions WHERE regionName LIKE ?name", |
248 | "SELECT * FROM regions WHERE regionName LIKE ?name", | 246 | param)) |
249 | param); | 247 | { |
250 | IDataReader reader = result.ExecuteReader(); | 248 | using (IDataReader reader = result.ExecuteReader()) |
249 | { | ||
250 | RegionProfileData row; | ||
251 | 251 | ||
252 | RegionProfileData row; | 252 | List<RegionProfileData> rows = new List<RegionProfileData>(); |
253 | 253 | ||
254 | List<RegionProfileData> rows = new List<RegionProfileData>(); | 254 | while (rows.Count < maxNum && (row = dbm.Manager.readSimRow(reader)) != null) |
255 | rows.Add(row); | ||
255 | 256 | ||
256 | while (rows.Count < maxNum && (row = dbm.Manager.readSimRow(reader)) != null) | 257 | return rows; |
257 | { | 258 | } |
258 | rows.Add(row); | ||
259 | } | 259 | } |
260 | reader.Close(); | ||
261 | result.Dispose(); | ||
262 | |||
263 | return rows; | ||
264 | } | 260 | } |
265 | catch (Exception e) | 261 | catch (Exception e) |
266 | { | 262 | { |
267 | dbm.Manager.Reconnect(); | 263 | dbm.Manager.Reconnect(); |
268 | m_log.Error(e.ToString()); | 264 | m_log.Error(e.Message, e); |
269 | return null; | 265 | return null; |
270 | } | 266 | } |
271 | finally | 267 | finally |
@@ -286,21 +282,21 @@ namespace OpenSim.Data.MySQL | |||
286 | try | 282 | try |
287 | { | 283 | { |
288 | Dictionary<string, object> param = new Dictionary<string, object>(); | 284 | Dictionary<string, object> param = new Dictionary<string, object>(); |
289 | param["?handle"] = handle.ToString(); | 285 | param["?handle"] = handle.ToString(); |
290 | |||
291 | IDbCommand result = dbm.Manager.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param); | ||
292 | IDataReader reader = result.ExecuteReader(); | ||
293 | 286 | ||
294 | RegionProfileData row = dbm.Manager.readSimRow(reader); | 287 | using (IDbCommand result = dbm.Manager.Query("SELECT * FROM regions WHERE regionHandle = ?handle", param)) |
295 | reader.Close(); | 288 | { |
296 | result.Dispose(); | 289 | using (IDataReader reader = result.ExecuteReader()) |
297 | 290 | { | |
298 | return row; | 291 | RegionProfileData row = dbm.Manager.readSimRow(reader); |
292 | return row; | ||
293 | } | ||
299 | } | 294 | } |
295 | } | ||
300 | catch (Exception e) | 296 | catch (Exception e) |
301 | { | 297 | { |
302 | dbm.Manager.Reconnect(); | 298 | dbm.Manager.Reconnect(); |
303 | m_log.Error(e.ToString()); | 299 | m_log.Error(e.Message, e); |
304 | return null; | 300 | return null; |
305 | } | 301 | } |
306 | finally | 302 | finally |
@@ -321,23 +317,24 @@ namespace OpenSim.Data.MySQL | |||
321 | try | 317 | try |
322 | { | 318 | { |
323 | Dictionary<string, object> param = new Dictionary<string, object>(); | 319 | Dictionary<string, object> param = new Dictionary<string, object>(); |
324 | param["?uuid"] = uuid.ToString(); | 320 | param["?uuid"] = uuid.ToString(); |
325 | 321 | ||
326 | IDbCommand result = dbm.Manager.Query("SELECT * FROM regions WHERE uuid = ?uuid", param); | 322 | using (IDbCommand result = dbm.Manager.Query("SELECT * FROM regions WHERE uuid = ?uuid", param)) |
327 | IDataReader reader = result.ExecuteReader(); | 323 | { |
328 | 324 | using (IDataReader reader = result.ExecuteReader()) | |
329 | RegionProfileData row = dbm.Manager.readSimRow(reader); | 325 | { |
330 | reader.Close(); | 326 | RegionProfileData row = dbm.Manager.readSimRow(reader); |
331 | result.Dispose(); | 327 | return row; |
332 | 328 | } | |
333 | return row; | ||
334 | } | 329 | } |
330 | } | ||
335 | catch (Exception e) | 331 | catch (Exception e) |
336 | { | 332 | { |
337 | dbm.Manager.Reconnect(); | 333 | dbm.Manager.Reconnect(); |
338 | m_log.Error(e.ToString()); | 334 | m_log.Error(e.Message, e); |
339 | return null; | 335 | return null; |
340 | } finally | 336 | } |
337 | finally | ||
341 | { | 338 | { |
342 | dbm.Release(); | 339 | dbm.Release(); |
343 | } | 340 | } |
@@ -359,22 +356,21 @@ namespace OpenSim.Data.MySQL | |||
359 | // Add % because this is a like query. | 356 | // Add % because this is a like query. |
360 | param["?regionName"] = regionName + "%"; | 357 | param["?regionName"] = regionName + "%"; |
361 | // Order by statement will return shorter matches first. Only returns one record or no record. | 358 | // Order by statement will return shorter matches first. Only returns one record or no record. |
362 | IDbCommand result = | 359 | using (IDbCommand result = dbm.Manager.Query( |
363 | dbm.Manager.Query( | 360 | "SELECT * FROM regions WHERE regionName like ?regionName order by LENGTH(regionName) asc LIMIT 1", |
364 | "SELECT * FROM regions WHERE regionName like ?regionName order by LENGTH(regionName) asc LIMIT 1", | 361 | param)) |
365 | param); | 362 | { |
366 | IDataReader reader = result.ExecuteReader(); | 363 | using (IDataReader reader = result.ExecuteReader()) |
367 | 364 | { | |
368 | RegionProfileData row = dbm.Manager.readSimRow(reader); | 365 | RegionProfileData row = dbm.Manager.readSimRow(reader); |
369 | reader.Close(); | 366 | return row; |
370 | result.Dispose(); | 367 | } |
371 | 368 | } | |
372 | return row; | ||
373 | } | 369 | } |
374 | catch (Exception e) | 370 | catch (Exception e) |
375 | { | 371 | { |
376 | dbm.Manager.Reconnect(); | 372 | dbm.Manager.Reconnect(); |
377 | m_log.Error(e.ToString()); | 373 | m_log.Error(e.Message, e); |
378 | return null; | 374 | return null; |
379 | } | 375 | } |
380 | finally | 376 | finally |
@@ -382,6 +378,7 @@ namespace OpenSim.Data.MySQL | |||
382 | dbm.Release(); | 378 | dbm.Release(); |
383 | } | 379 | } |
384 | } | 380 | } |
381 | |||
385 | m_log.Error("[GRID DB]: Searched for a Region Name shorter then 3 characters"); | 382 | m_log.Error("[GRID DB]: Searched for a Region Name shorter then 3 characters"); |
386 | return null; | 383 | return null; |
387 | } | 384 | } |
@@ -394,12 +391,12 @@ namespace OpenSim.Data.MySQL | |||
394 | override public DataResponse StoreProfile(RegionProfileData profile) | 391 | override public DataResponse StoreProfile(RegionProfileData profile) |
395 | { | 392 | { |
396 | MySQLSuperManager dbm = GetLockedConnection(); | 393 | MySQLSuperManager dbm = GetLockedConnection(); |
397 | try { | 394 | try |
395 | { | ||
398 | if (dbm.Manager.insertRegion(profile)) | 396 | if (dbm.Manager.insertRegion(profile)) |
399 | { | ||
400 | return DataResponse.RESPONSE_OK; | 397 | return DataResponse.RESPONSE_OK; |
401 | } | 398 | else |
402 | return DataResponse.RESPONSE_ERROR; | 399 | return DataResponse.RESPONSE_ERROR; |
403 | } | 400 | } |
404 | finally | 401 | finally |
405 | { | 402 | { |
@@ -417,14 +414,14 @@ namespace OpenSim.Data.MySQL | |||
417 | { | 414 | { |
418 | MySQLSuperManager dbm = GetLockedConnection(); | 415 | MySQLSuperManager dbm = GetLockedConnection(); |
419 | 416 | ||
420 | 417 | try | |
421 | try { | 418 | { |
422 | if (dbm.Manager.deleteRegion(uuid)) | 419 | if (dbm.Manager.deleteRegion(uuid)) |
423 | { | ||
424 | return DataResponse.RESPONSE_OK; | 420 | return DataResponse.RESPONSE_OK; |
425 | } | 421 | else |
426 | return DataResponse.RESPONSE_ERROR; | 422 | return DataResponse.RESPONSE_ERROR; |
427 | } finally | 423 | } |
424 | finally | ||
428 | { | 425 | { |
429 | dbm.Release(); | 426 | dbm.Release(); |
430 | } | 427 | } |
@@ -482,26 +479,26 @@ namespace OpenSim.Data.MySQL | |||
482 | try | 479 | try |
483 | { | 480 | { |
484 | Dictionary<string, object> param = new Dictionary<string, object>(); | 481 | Dictionary<string, object> param = new Dictionary<string, object>(); |
485 | param["?x"] = x.ToString(); | 482 | param["?x"] = x.ToString(); |
486 | param["?y"] = y.ToString(); | 483 | param["?y"] = y.ToString(); |
487 | IDbCommand result = | 484 | using (IDbCommand result = dbm.Manager.Query( |
488 | dbm.Manager.Query( | 485 | "SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", |
489 | "SELECT * FROM reservations WHERE resXMin <= ?x AND resXMax >= ?x AND resYMin <= ?y AND resYMax >= ?y", | 486 | param)) |
490 | param); | 487 | { |
491 | IDataReader reader = result.ExecuteReader(); | 488 | using (IDataReader reader = result.ExecuteReader()) |
492 | 489 | { | |
493 | ReservationData row = dbm.Manager.readReservationRow(reader); | 490 | ReservationData row = dbm.Manager.readReservationRow(reader); |
494 | reader.Close(); | 491 | return row; |
495 | result.Dispose(); | 492 | } |
496 | 493 | } | |
497 | return row; | ||
498 | } | 494 | } |
499 | catch (Exception e) | 495 | catch (Exception e) |
500 | { | 496 | { |
501 | dbm.Manager.Reconnect(); | 497 | dbm.Manager.Reconnect(); |
502 | m_log.Error(e.ToString()); | 498 | m_log.Error(e.Message, e); |
503 | return null; | 499 | return null; |
504 | } finally | 500 | } |
501 | finally | ||
505 | { | 502 | { |
506 | dbm.Release(); | 503 | dbm.Release(); |
507 | } | 504 | } |