aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/MySQL/MySQLGridData.cs
diff options
context:
space:
mode:
authorJohn Hurliman2009-10-04 13:57:51 -0700
committerJohn Hurliman2009-10-04 13:57:51 -0700
commit29a4614529bbda02b9c690d2d1812be1d1e7bbae (patch)
tree89725829b37d502158a114c862a56a075b005b1b /OpenSim/Data/MySQL/MySQLGridData.cs
parentGuarding a line that is sometimes throwing a null pointer exception. (diff)
downloadopensim-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.cs171
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 }