diff options
author | Melanie | 2011-06-09 02:05:04 +0100 |
---|---|---|
committer | Melanie | 2011-06-09 02:05:04 +0100 |
commit | 326c46ba70cea70ddfe4aef9a6b73edff63e126a (patch) | |
tree | 5e76347b0d77f58717d8e5e4f3b8787ff01a18d7 /OpenSim/Data | |
parent | Make the last otem in a list created with llCSV2List findable (diff) | |
parent | Consistency fix on the last commit. (diff) | |
download | opensim-SC-326c46ba70cea70ddfe4aef9a6b73edff63e126a.zip opensim-SC-326c46ba70cea70ddfe4aef9a6b73edff63e126a.tar.gz opensim-SC-326c46ba70cea70ddfe4aef9a6b73edff63e126a.tar.bz2 opensim-SC-326c46ba70cea70ddfe4aef9a6b73edff63e126a.tar.xz |
Merge branch 'master' into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Data')
-rw-r--r-- | OpenSim/Data/IFriendsData.cs | 4 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLEstateData.cs | 203 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLFriendsData.cs | 10 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs | 24 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLMigration.cs | 32 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLRegionData.cs | 1 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLSimulationData.cs | 513 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/MSSQLXInventoryData.cs | 32 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/Resources/Avatar.migrations | 24 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/Resources/GridUserStore.migrations | 46 | ||||
-rw-r--r-- | OpenSim/Data/MSSQL/Resources/RegionStore.migrations | 2 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/MySQLFriendsData.cs | 14 | ||||
-rw-r--r-- | OpenSim/Data/MySQL/Resources/FriendsStore.migrations | 7 | ||||
-rw-r--r-- | OpenSim/Data/Null/NullFriendsData.cs | 18 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteFriendsData.cs | 12 | ||||
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs | 2 |
16 files changed, 889 insertions, 55 deletions
diff --git a/OpenSim/Data/IFriendsData.cs b/OpenSim/Data/IFriendsData.cs index 1f1a031..3fdf87b 100644 --- a/OpenSim/Data/IFriendsData.cs +++ b/OpenSim/Data/IFriendsData.cs | |||
@@ -34,7 +34,7 @@ namespace OpenSim.Data | |||
34 | { | 34 | { |
35 | public class FriendsData | 35 | public class FriendsData |
36 | { | 36 | { |
37 | public UUID PrincipalID; | 37 | public string PrincipalID; |
38 | public string Friend; | 38 | public string Friend; |
39 | public Dictionary<string, string> Data; | 39 | public Dictionary<string, string> Data; |
40 | } | 40 | } |
@@ -46,6 +46,8 @@ namespace OpenSim.Data | |||
46 | { | 46 | { |
47 | bool Store(FriendsData data); | 47 | bool Store(FriendsData data); |
48 | bool Delete(UUID ownerID, string friend); | 48 | bool Delete(UUID ownerID, string friend); |
49 | bool Delete(string ownerID, string friend); | ||
49 | FriendsData[] GetFriends(UUID principalID); | 50 | FriendsData[] GetFriends(UUID principalID); |
51 | FriendsData[] GetFriends(string principalID); | ||
50 | } | 52 | } |
51 | } | 53 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index d10ebe4..9c54e77 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs | |||
@@ -41,7 +41,7 @@ namespace OpenSim.Data.MSSQL | |||
41 | { | 41 | { |
42 | private const string _migrationStore = "EstateStore"; | 42 | private const string _migrationStore = "EstateStore"; |
43 | 43 | ||
44 | private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 45 | ||
46 | private MSSQLManager _Database; | 46 | private MSSQLManager _Database; |
47 | private string m_connectionString; | 47 | private string m_connectionString; |
@@ -72,7 +72,12 @@ namespace OpenSim.Data.MSSQL | |||
72 | } | 72 | } |
73 | 73 | ||
74 | //Migration settings | 74 | //Migration settings |
75 | _Database.CheckMigration(_migrationStore); | 75 | using (SqlConnection conn = new SqlConnection(m_connectionString)) |
76 | { | ||
77 | conn.Open(); | ||
78 | Migration m = new Migration(conn, GetType().Assembly, "EstateStore"); | ||
79 | m.Update(); | ||
80 | } | ||
76 | 81 | ||
77 | //Interesting way to get parameters! Maybe implement that also with other types | 82 | //Interesting way to get parameters! Maybe implement that also with other types |
78 | Type t = typeof(EstateSettings); | 83 | Type t = typeof(EstateSettings); |
@@ -112,19 +117,19 @@ namespace OpenSim.Data.MSSQL | |||
112 | { | 117 | { |
113 | FieldInfo f = _FieldMap[name]; | 118 | FieldInfo f = _FieldMap[name]; |
114 | object v = reader[name]; | 119 | object v = reader[name]; |
115 | if (f.FieldType == typeof(bool) ) | 120 | if (f.FieldType == typeof(bool)) |
116 | { | 121 | { |
117 | f.SetValue(es, Convert.ToInt32(v) != 0); | 122 | f.SetValue(es, Convert.ToInt32(v) != 0); |
118 | } | 123 | } |
119 | else if (f.FieldType == typeof(UUID) ) | 124 | else if (f.FieldType == typeof(UUID)) |
120 | { | 125 | { |
121 | f.SetValue(es, new UUID((Guid)v)); // uuid); | 126 | f.SetValue(es, new UUID((Guid)v)); // uuid); |
122 | } | 127 | } |
123 | else if (f.FieldType == typeof(string)) | 128 | else if (f.FieldType == typeof(string)) |
124 | { | 129 | { |
125 | f.SetValue(es, v.ToString()); | 130 | f.SetValue(es, v.ToString()); |
126 | } | 131 | } |
127 | else if (f.FieldType == typeof(UInt32)) | 132 | else if (f.FieldType == typeof(UInt32)) |
128 | { | 133 | { |
129 | f.SetValue(es, Convert.ToUInt32(v)); | 134 | f.SetValue(es, Convert.ToUInt32(v)); |
130 | } | 135 | } |
@@ -186,7 +191,7 @@ namespace OpenSim.Data.MSSQL | |||
186 | } | 191 | } |
187 | catch (Exception e) | 192 | catch (Exception e) |
188 | { | 193 | { |
189 | _Log.DebugFormat("[ESTATE DB]: Error inserting regionID and EstateID in estate_map: {0}", e); | 194 | m_log.DebugFormat("[ESTATE DB]: Error inserting regionID and EstateID in estate_map: {0}", e); |
190 | } | 195 | } |
191 | } | 196 | } |
192 | 197 | ||
@@ -310,12 +315,12 @@ namespace OpenSim.Data.MSSQL | |||
310 | conn.Open(); | 315 | conn.Open(); |
311 | using (SqlCommand cmd = conn.CreateCommand()) | 316 | using (SqlCommand cmd = conn.CreateCommand()) |
312 | { | 317 | { |
313 | cmd.CommandText = "delete from estateban where EstateID = @EstateID"; | 318 | cmd.CommandText = "delete from estateban where EstateID = @EstateID"; |
314 | cmd.Parameters.AddWithValue("@EstateID", (int)es.EstateID); | 319 | cmd.Parameters.AddWithValue("@EstateID", (int)es.EstateID); |
315 | cmd.ExecuteNonQuery(); | 320 | cmd.ExecuteNonQuery(); |
316 | 321 | ||
317 | //Insert after | 322 | //Insert after |
318 | cmd.CommandText = "insert into estateban (EstateID, bannedUUID) values ( @EstateID, @bannedUUID )"; | 323 | cmd.CommandText = "insert into estateban (EstateID, bannedUUID,bannedIp, bannedIpHostMask, bannedNameMask) values ( @EstateID, @bannedUUID, '','','' )"; |
319 | cmd.Parameters.AddWithValue("@bannedUUID", Guid.Empty); | 324 | cmd.Parameters.AddWithValue("@bannedUUID", Guid.Empty); |
320 | foreach (EstateBan b in es.EstateBans) | 325 | foreach (EstateBan b in es.EstateBans) |
321 | { | 326 | { |
@@ -350,43 +355,195 @@ namespace OpenSim.Data.MSSQL | |||
350 | 355 | ||
351 | public EstateSettings LoadEstateSettings(int estateID) | 356 | public EstateSettings LoadEstateSettings(int estateID) |
352 | { | 357 | { |
353 | // TODO: Implementation! | 358 | EstateSettings es = new EstateSettings(); |
354 | return new EstateSettings(); | 359 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_settings where EstateID = @EstateID"; |
360 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
361 | { | ||
362 | conn.Open(); | ||
363 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
364 | { | ||
365 | cmd.Parameters.AddWithValue("@EstateID", (int)estateID); | ||
366 | using (SqlDataReader reader = cmd.ExecuteReader()) | ||
367 | { | ||
368 | if (reader.Read()) | ||
369 | { | ||
370 | foreach (string name in FieldList) | ||
371 | { | ||
372 | FieldInfo f = _FieldMap[name]; | ||
373 | object v = reader[name]; | ||
374 | if (f.FieldType == typeof(bool)) | ||
375 | { | ||
376 | f.SetValue(es, Convert.ToInt32(v) != 0); | ||
377 | } | ||
378 | else if (f.FieldType == typeof(UUID)) | ||
379 | { | ||
380 | f.SetValue(es, new UUID((Guid)v)); // uuid); | ||
381 | } | ||
382 | else if (f.FieldType == typeof(string)) | ||
383 | { | ||
384 | f.SetValue(es, v.ToString()); | ||
385 | } | ||
386 | else if (f.FieldType == typeof(UInt32)) | ||
387 | { | ||
388 | f.SetValue(es, Convert.ToUInt32(v)); | ||
389 | } | ||
390 | else if (f.FieldType == typeof(Single)) | ||
391 | { | ||
392 | f.SetValue(es, Convert.ToSingle(v)); | ||
393 | } | ||
394 | else | ||
395 | f.SetValue(es, v); | ||
396 | } | ||
397 | } | ||
398 | |||
399 | } | ||
400 | } | ||
401 | } | ||
402 | LoadBanList(es); | ||
403 | |||
404 | es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); | ||
405 | es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); | ||
406 | es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); | ||
407 | |||
408 | //Set event | ||
409 | es.OnSave += StoreEstateSettings; | ||
410 | return es; | ||
411 | |||
355 | } | 412 | } |
356 | 413 | ||
357 | public List<EstateSettings> LoadEstateSettingsAll() | 414 | public List<EstateSettings> LoadEstateSettingsAll() |
358 | { | 415 | { |
359 | // TODO: Implementation! | 416 | List<EstateSettings> allEstateSettings = new List<EstateSettings>(); |
360 | return new List<EstateSettings>(); | 417 | |
418 | List<int> allEstateIds = GetEstatesAll(); | ||
419 | |||
420 | foreach (int estateId in allEstateIds) | ||
421 | allEstateSettings.Add(LoadEstateSettings(estateId)); | ||
422 | |||
423 | return allEstateSettings; | ||
361 | } | 424 | } |
362 | 425 | ||
363 | public List<int> GetEstates(string search) | 426 | public List<int> GetEstates(string search) |
364 | { | 427 | { |
365 | // TODO: Implementation! | 428 | List<int> result = new List<int>(); |
366 | return new List<int>(); | 429 | string sql = "select estateID from estate_settings where EstateName = @EstateName"; |
430 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
431 | { | ||
432 | conn.Open(); | ||
433 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
434 | { | ||
435 | cmd.Parameters.AddWithValue("@EstateName", search); | ||
436 | |||
437 | using (IDataReader reader = cmd.ExecuteReader()) | ||
438 | { | ||
439 | while (reader.Read()) | ||
440 | { | ||
441 | result.Add(Convert.ToInt32(reader["EstateID"])); | ||
442 | } | ||
443 | reader.Close(); | ||
444 | } | ||
445 | } | ||
446 | } | ||
447 | |||
448 | return result; | ||
367 | } | 449 | } |
368 | 450 | ||
369 | public List<int> GetEstatesAll() | 451 | public List<int> GetEstatesAll() |
370 | { | 452 | { |
371 | // TODO: Implementation! | 453 | List<int> result = new List<int>(); |
372 | return new List<int>(); | 454 | string sql = "select estateID from estate_settings"; |
455 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
456 | { | ||
457 | conn.Open(); | ||
458 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
459 | { | ||
460 | using (IDataReader reader = cmd.ExecuteReader()) | ||
461 | { | ||
462 | while (reader.Read()) | ||
463 | { | ||
464 | result.Add(Convert.ToInt32(reader["EstateID"])); | ||
465 | } | ||
466 | reader.Close(); | ||
467 | } | ||
468 | } | ||
469 | } | ||
470 | |||
471 | return result; | ||
373 | } | 472 | } |
374 | 473 | ||
375 | public List<int> GetEstatesByOwner(UUID ownerID) | 474 | public List<int> GetEstatesByOwner(UUID ownerID) |
376 | { | 475 | { |
377 | return new List<int>(); | 476 | List<int> result = new List<int>(); |
477 | string sql = "select estateID from estate_settings where EstateOwner = @EstateOwner"; | ||
478 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
479 | { | ||
480 | conn.Open(); | ||
481 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
482 | { | ||
483 | cmd.Parameters.AddWithValue("@EstateOwner", ownerID); | ||
484 | |||
485 | using (IDataReader reader = cmd.ExecuteReader()) | ||
486 | { | ||
487 | while (reader.Read()) | ||
488 | { | ||
489 | result.Add(Convert.ToInt32(reader["EstateID"])); | ||
490 | } | ||
491 | reader.Close(); | ||
492 | } | ||
493 | } | ||
494 | } | ||
495 | |||
496 | return result; | ||
378 | } | 497 | } |
379 | 498 | ||
380 | public bool LinkRegion(UUID regionID, int estateID) | 499 | public bool LinkRegion(UUID regionID, int estateID) |
381 | { | 500 | { |
382 | // TODO: Implementation! | 501 | string sql = "insert into estate_map values (@RegionID, @EstateID)"; |
502 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
503 | { | ||
504 | conn.Open(); | ||
505 | try | ||
506 | { | ||
507 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
508 | { | ||
509 | cmd.Parameters.AddWithValue("@RegionID", regionID); | ||
510 | cmd.Parameters.AddWithValue("@EstateID", estateID); | ||
511 | |||
512 | int ret = cmd.ExecuteNonQuery(); | ||
513 | return (ret != 0); | ||
514 | } | ||
515 | } | ||
516 | catch (Exception ex) | ||
517 | { | ||
518 | m_log.Error("[REGION DB]: LinkRegion failed: " + ex.Message); | ||
519 | } | ||
520 | } | ||
383 | return false; | 521 | return false; |
384 | } | 522 | } |
385 | 523 | ||
386 | public List<UUID> GetRegions(int estateID) | 524 | public List<UUID> GetRegions(int estateID) |
387 | { | 525 | { |
388 | // TODO: Implementation! | 526 | List<UUID> result = new List<UUID>(); |
389 | return new List<UUID>(); | 527 | string sql = "select RegionID from estate_map where EstateID = @EstateID"; |
528 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
529 | { | ||
530 | conn.Open(); | ||
531 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
532 | { | ||
533 | cmd.Parameters.AddWithValue("@EstateID", estateID); | ||
534 | |||
535 | using (IDataReader reader = cmd.ExecuteReader()) | ||
536 | { | ||
537 | while (reader.Read()) | ||
538 | { | ||
539 | result.Add(DBGuid.FromDB(reader["RegionID"])); | ||
540 | } | ||
541 | reader.Close(); | ||
542 | } | ||
543 | } | ||
544 | } | ||
545 | |||
546 | return result; | ||
390 | } | 547 | } |
391 | 548 | ||
392 | public bool DeleteEstate(int estateID) | 549 | public bool DeleteEstate(int estateID) |
diff --git a/OpenSim/Data/MSSQL/MSSQLFriendsData.cs b/OpenSim/Data/MSSQL/MSSQLFriendsData.cs index af4fd9b..09dde5e 100644 --- a/OpenSim/Data/MSSQL/MSSQLFriendsData.cs +++ b/OpenSim/Data/MSSQL/MSSQLFriendsData.cs | |||
@@ -52,6 +52,11 @@ namespace OpenSim.Data.MSSQL | |||
52 | 52 | ||
53 | public bool Delete(UUID principalID, string friend) | 53 | public bool Delete(UUID principalID, string friend) |
54 | { | 54 | { |
55 | return Delete(principalID.ToString(), friend); | ||
56 | } | ||
57 | |||
58 | public bool Delete(string principalID, string friend) | ||
59 | { | ||
55 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 60 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) |
56 | using (SqlCommand cmd = new SqlCommand()) | 61 | using (SqlCommand cmd = new SqlCommand()) |
57 | { | 62 | { |
@@ -68,6 +73,11 @@ namespace OpenSim.Data.MSSQL | |||
68 | 73 | ||
69 | public FriendsData[] GetFriends(UUID principalID) | 74 | public FriendsData[] GetFriends(UUID principalID) |
70 | { | 75 | { |
76 | return GetFriends(principalID.ToString()); | ||
77 | } | ||
78 | |||
79 | public FriendsData[] GetFriends(string principalID) | ||
80 | { | ||
71 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 81 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) |
72 | using (SqlCommand cmd = new SqlCommand()) | 82 | using (SqlCommand cmd = new SqlCommand()) |
73 | { | 83 | { |
diff --git a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs index 6e695ce..8f471c4 100644 --- a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs +++ b/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs | |||
@@ -168,14 +168,13 @@ namespace OpenSim.Data.MSSQL | |||
168 | 168 | ||
169 | protected T[] DoQuery(SqlCommand cmd) | 169 | protected T[] DoQuery(SqlCommand cmd) |
170 | { | 170 | { |
171 | List<T> result = new List<T>(); | ||
171 | using (SqlDataReader reader = cmd.ExecuteReader()) | 172 | using (SqlDataReader reader = cmd.ExecuteReader()) |
172 | { | 173 | { |
173 | if (reader == null) | 174 | if (reader == null) |
174 | return new T[0]; | 175 | return new T[0]; |
175 | 176 | ||
176 | CheckColumnNames(reader); | 177 | CheckColumnNames(reader); |
177 | |||
178 | List<T> result = new List<T>(); | ||
179 | 178 | ||
180 | while (reader.Read()) | 179 | while (reader.Read()) |
181 | { | 180 | { |
@@ -262,6 +261,15 @@ namespace OpenSim.Data.MSSQL | |||
262 | { | 261 | { |
263 | names.Add(fi.Name); | 262 | names.Add(fi.Name); |
264 | values.Add("@" + fi.Name); | 263 | values.Add("@" + fi.Name); |
264 | // Temporarily return more information about what field is unexpectedly null for | ||
265 | // http://opensimulator.org/mantis/view.php?id=5403. This might be due to a bug in the | ||
266 | // InventoryTransferModule or we may be required to substitute a DBNull here. | ||
267 | if (fi.GetValue(row) == null) | ||
268 | throw new NullReferenceException( | ||
269 | string.Format( | ||
270 | "[MSSQL GENERIC TABLE HANDLER]: Trying to store field {0} for {1} which is unexpectedly null", | ||
271 | fi.Name, row)); | ||
272 | |||
265 | if (constraintFields.Count > 0 && constraintFields.Contains(fi.Name)) | 273 | if (constraintFields.Count > 0 && constraintFields.Contains(fi.Name)) |
266 | { | 274 | { |
267 | constraints.Add(new KeyValuePair<string, string>(fi.Name, fi.GetValue(row).ToString())); | 275 | constraints.Add(new KeyValuePair<string, string>(fi.Name, fi.GetValue(row).ToString())); |
@@ -358,12 +366,18 @@ namespace OpenSim.Data.MSSQL | |||
358 | 366 | ||
359 | string where = String.Join(" AND ", terms.ToArray()); | 367 | string where = String.Join(" AND ", terms.ToArray()); |
360 | 368 | ||
361 | string query = String.Format("DELETE * FROM {0} WHERE {1}", m_Realm, where); | 369 | string query = String.Format("DELETE FROM {0} WHERE {1}", m_Realm, where); |
362 | 370 | ||
363 | cmd.Connection = conn; | 371 | cmd.Connection = conn; |
364 | cmd.CommandText = query; | 372 | cmd.CommandText = query; |
365 | conn.Open(); | 373 | conn.Open(); |
366 | return cmd.ExecuteNonQuery() > 0; | 374 | |
375 | if (cmd.ExecuteNonQuery() > 0) | ||
376 | { | ||
377 | //m_log.Warn("[MSSQLGenericTable]: " + deleteCommand); | ||
378 | return true; | ||
379 | } | ||
380 | return false; | ||
367 | } | 381 | } |
368 | } | 382 | } |
369 | } | 383 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLMigration.cs b/OpenSim/Data/MSSQL/MSSQLMigration.cs index cd395b8..1aa96c7 100644 --- a/OpenSim/Data/MSSQL/MSSQLMigration.cs +++ b/OpenSim/Data/MSSQL/MSSQLMigration.cs | |||
@@ -29,16 +29,19 @@ using System; | |||
29 | using System.Data; | 29 | using System.Data; |
30 | using System.Data.Common; | 30 | using System.Data.Common; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using System.Data.SqlClient; | ||
32 | 33 | ||
33 | namespace OpenSim.Data.MSSQL | 34 | namespace OpenSim.Data.MSSQL |
34 | { | 35 | { |
35 | public class MSSQLMigration : Migration | 36 | public class MSSQLMigration : Migration |
36 | { | 37 | { |
37 | public MSSQLMigration(DbConnection conn, Assembly assem, string type) : base(conn, assem, type) | 38 | public MSSQLMigration(DbConnection conn, Assembly assem, string type) |
39 | : base(conn, assem, type) | ||
38 | { | 40 | { |
39 | } | 41 | } |
40 | 42 | ||
41 | public MSSQLMigration(DbConnection conn, Assembly assem, string subtype, string type) : base(conn, assem, subtype, type) | 43 | public MSSQLMigration(DbConnection conn, Assembly assem, string subtype, string type) |
44 | : base(conn, assem, subtype, type) | ||
42 | { | 45 | { |
43 | } | 46 | } |
44 | 47 | ||
@@ -67,5 +70,30 @@ namespace OpenSim.Data.MSSQL | |||
67 | } | 70 | } |
68 | return version; | 71 | return version; |
69 | } | 72 | } |
73 | |||
74 | protected override void ExecuteScript(DbConnection conn, string[] script) | ||
75 | { | ||
76 | if (!(conn is SqlConnection)) | ||
77 | { | ||
78 | base.ExecuteScript(conn, script); | ||
79 | return; | ||
80 | } | ||
81 | |||
82 | foreach (string sql in script) | ||
83 | { | ||
84 | try | ||
85 | { | ||
86 | using (SqlCommand cmd = new SqlCommand(sql, (SqlConnection)conn)) | ||
87 | { | ||
88 | cmd.ExecuteNonQuery(); | ||
89 | } | ||
90 | } | ||
91 | catch (Exception ex) | ||
92 | { | ||
93 | throw new Exception(sql); | ||
94 | |||
95 | } | ||
96 | } | ||
97 | } | ||
70 | } | 98 | } |
71 | } | 99 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/MSSQL/MSSQLRegionData.cs index cdf8ec0..3ae87c3 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/MSSQL/MSSQLRegionData.cs | |||
@@ -70,6 +70,7 @@ namespace OpenSim.Data.MSSQL | |||
70 | string sql = "select * from ["+m_Realm+"] where regionName like @regionName"; | 70 | string sql = "select * from ["+m_Realm+"] where regionName like @regionName"; |
71 | if (scopeID != UUID.Zero) | 71 | if (scopeID != UUID.Zero) |
72 | sql += " and ScopeID = @scopeID"; | 72 | sql += " and ScopeID = @scopeID"; |
73 | sql += " order by regionName"; | ||
73 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 74 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) |
74 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 75 | using (SqlCommand cmd = new SqlCommand(sql, conn)) |
75 | { | 76 | { |
diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs index 5155e56..78f80e1 100644 --- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs +++ b/OpenSim/Data/MSSQL/MSSQLSimulationData.cs | |||
@@ -55,6 +55,10 @@ namespace OpenSim.Data.MSSQL | |||
55 | /// </summary> | 55 | /// </summary> |
56 | private MSSQLManager _Database; | 56 | private MSSQLManager _Database; |
57 | private string m_connectionString; | 57 | private string m_connectionString; |
58 | protected virtual Assembly Assembly | ||
59 | { | ||
60 | get { return GetType().Assembly; } | ||
61 | } | ||
58 | 62 | ||
59 | public MSSQLSimulationData() | 63 | public MSSQLSimulationData() |
60 | { | 64 | { |
@@ -74,9 +78,28 @@ namespace OpenSim.Data.MSSQL | |||
74 | m_connectionString = connectionString; | 78 | m_connectionString = connectionString; |
75 | _Database = new MSSQLManager(connectionString); | 79 | _Database = new MSSQLManager(connectionString); |
76 | 80 | ||
81 | using (SqlConnection conn = new SqlConnection(connectionString)) | ||
82 | { | ||
83 | conn.Open(); | ||
84 | //New Migration settings | ||
85 | Migration m = new Migration(conn, Assembly, "RegionStore"); | ||
86 | m.Update(); | ||
77 | 87 | ||
78 | //Migration settings | 88 | // Clean dropped attachments |
79 | _Database.CheckMigration(_migrationStore); | 89 | // |
90 | try | ||
91 | { | ||
92 | using (SqlCommand cmd = conn.CreateCommand()) | ||
93 | { | ||
94 | cmd.CommandText = "delete from prims where prims.UUID in (select UUID from primshapes where PCode = 9 and State <> 0); delete from primshapes where PCode = 9 and State <> 0"; | ||
95 | cmd.ExecuteNonQuery(); | ||
96 | } | ||
97 | } | ||
98 | catch (Exception ex) | ||
99 | { | ||
100 | _Log.Error("[REGION DB]: Error cleaning up dropped attachments: " + ex.Message); | ||
101 | } | ||
102 | } | ||
80 | } | 103 | } |
81 | 104 | ||
82 | /// <summary> | 105 | /// <summary> |
@@ -214,7 +237,7 @@ namespace OpenSim.Data.MSSQL | |||
214 | { | 237 | { |
215 | command.Parameters.Clear(); | 238 | command.Parameters.Clear(); |
216 | command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID)); | 239 | command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID)); |
217 | 240 | ||
218 | List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); | 241 | List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); |
219 | 242 | ||
220 | using (SqlDataReader reader = command.ExecuteReader()) | 243 | using (SqlDataReader reader = command.ExecuteReader()) |
@@ -241,6 +264,14 @@ namespace OpenSim.Data.MSSQL | |||
241 | /// <param name="regionUUID"></param> | 264 | /// <param name="regionUUID"></param> |
242 | public void StoreObject(SceneObjectGroup obj, UUID regionUUID) | 265 | public void StoreObject(SceneObjectGroup obj, UUID regionUUID) |
243 | { | 266 | { |
267 | uint flags = obj.RootPart.GetEffectiveObjectFlags(); | ||
268 | // Eligibility check | ||
269 | // | ||
270 | if ((flags & (uint)PrimFlags.Temporary) != 0) | ||
271 | return; | ||
272 | if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0) | ||
273 | return; | ||
274 | |||
244 | _Log.DebugFormat("[MSSQL]: Adding/Changing SceneObjectGroup: {0} to region: {1}, object has {2} prims.", obj.UUID, regionUUID, obj.Parts.Length); | 275 | _Log.DebugFormat("[MSSQL]: Adding/Changing SceneObjectGroup: {0} to region: {1}, object has {2} prims.", obj.UUID, regionUUID, obj.Parts.Length); |
245 | 276 | ||
246 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 277 | using (SqlConnection conn = new SqlConnection(m_connectionString)) |
@@ -700,16 +731,470 @@ VALUES | |||
700 | } | 731 | } |
701 | public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) | 732 | public RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID) |
702 | { | 733 | { |
703 | //This connector doesn't support the windlight module yet | 734 | RegionLightShareData nWP = new RegionLightShareData(); |
704 | //Return default LL windlight settings | 735 | nWP.OnSave += StoreRegionWindlightSettings; |
705 | return new RegionLightShareData(); | 736 | string sql = "select * from [regionwindlight] where region_id = @regionID"; |
737 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
738 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
739 | { | ||
740 | cmd.Parameters.Add(_Database.CreateParameter("@regionID", regionUUID)); | ||
741 | conn.Open(); | ||
742 | using (SqlDataReader result = cmd.ExecuteReader()) | ||
743 | { | ||
744 | if (!result.Read()) | ||
745 | { | ||
746 | //No result, so store our default windlight profile and return it | ||
747 | nWP.regionID = regionUUID; | ||
748 | StoreRegionWindlightSettings(nWP); | ||
749 | return nWP; | ||
750 | } | ||
751 | else | ||
752 | { | ||
753 | nWP.regionID = DBGuid.FromDB(result["region_id"]); | ||
754 | nWP.waterColor.X = Convert.ToSingle(result["water_color_r"]); | ||
755 | nWP.waterColor.Y = Convert.ToSingle(result["water_color_g"]); | ||
756 | nWP.waterColor.Z = Convert.ToSingle(result["water_color_b"]); | ||
757 | nWP.waterFogDensityExponent = Convert.ToSingle(result["water_fog_density_exponent"]); | ||
758 | nWP.underwaterFogModifier = Convert.ToSingle(result["underwater_fog_modifier"]); | ||
759 | nWP.reflectionWaveletScale.X = Convert.ToSingle(result["reflection_wavelet_scale_1"]); | ||
760 | nWP.reflectionWaveletScale.Y = Convert.ToSingle(result["reflection_wavelet_scale_2"]); | ||
761 | nWP.reflectionWaveletScale.Z = Convert.ToSingle(result["reflection_wavelet_scale_3"]); | ||
762 | nWP.fresnelScale = Convert.ToSingle(result["fresnel_scale"]); | ||
763 | nWP.fresnelOffset = Convert.ToSingle(result["fresnel_offset"]); | ||
764 | nWP.refractScaleAbove = Convert.ToSingle(result["refract_scale_above"]); | ||
765 | nWP.refractScaleBelow = Convert.ToSingle(result["refract_scale_below"]); | ||
766 | nWP.blurMultiplier = Convert.ToSingle(result["blur_multiplier"]); | ||
767 | nWP.bigWaveDirection.X = Convert.ToSingle(result["big_wave_direction_x"]); | ||
768 | nWP.bigWaveDirection.Y = Convert.ToSingle(result["big_wave_direction_y"]); | ||
769 | nWP.littleWaveDirection.X = Convert.ToSingle(result["little_wave_direction_x"]); | ||
770 | nWP.littleWaveDirection.Y = Convert.ToSingle(result["little_wave_direction_y"]); | ||
771 | UUID.TryParse(result["normal_map_texture"].ToString(), out nWP.normalMapTexture); | ||
772 | nWP.horizon.X = Convert.ToSingle(result["horizon_r"]); | ||
773 | nWP.horizon.Y = Convert.ToSingle(result["horizon_g"]); | ||
774 | nWP.horizon.Z = Convert.ToSingle(result["horizon_b"]); | ||
775 | nWP.horizon.W = Convert.ToSingle(result["horizon_i"]); | ||
776 | nWP.hazeHorizon = Convert.ToSingle(result["haze_horizon"]); | ||
777 | nWP.blueDensity.X = Convert.ToSingle(result["blue_density_r"]); | ||
778 | nWP.blueDensity.Y = Convert.ToSingle(result["blue_density_g"]); | ||
779 | nWP.blueDensity.Z = Convert.ToSingle(result["blue_density_b"]); | ||
780 | nWP.blueDensity.W = Convert.ToSingle(result["blue_density_i"]); | ||
781 | nWP.hazeDensity = Convert.ToSingle(result["haze_density"]); | ||
782 | nWP.densityMultiplier = Convert.ToSingle(result["density_multiplier"]); | ||
783 | nWP.distanceMultiplier = Convert.ToSingle(result["distance_multiplier"]); | ||
784 | nWP.maxAltitude = Convert.ToUInt16(result["max_altitude"]); | ||
785 | nWP.sunMoonColor.X = Convert.ToSingle(result["sun_moon_color_r"]); | ||
786 | nWP.sunMoonColor.Y = Convert.ToSingle(result["sun_moon_color_g"]); | ||
787 | nWP.sunMoonColor.Z = Convert.ToSingle(result["sun_moon_color_b"]); | ||
788 | nWP.sunMoonColor.W = Convert.ToSingle(result["sun_moon_color_i"]); | ||
789 | nWP.sunMoonPosition = Convert.ToSingle(result["sun_moon_position"]); | ||
790 | nWP.ambient.X = Convert.ToSingle(result["ambient_r"]); | ||
791 | nWP.ambient.Y = Convert.ToSingle(result["ambient_g"]); | ||
792 | nWP.ambient.Z = Convert.ToSingle(result["ambient_b"]); | ||
793 | nWP.ambient.W = Convert.ToSingle(result["ambient_i"]); | ||
794 | nWP.eastAngle = Convert.ToSingle(result["east_angle"]); | ||
795 | nWP.sunGlowFocus = Convert.ToSingle(result["sun_glow_focus"]); | ||
796 | nWP.sunGlowSize = Convert.ToSingle(result["sun_glow_size"]); | ||
797 | nWP.sceneGamma = Convert.ToSingle(result["scene_gamma"]); | ||
798 | nWP.starBrightness = Convert.ToSingle(result["star_brightness"]); | ||
799 | nWP.cloudColor.X = Convert.ToSingle(result["cloud_color_r"]); | ||
800 | nWP.cloudColor.Y = Convert.ToSingle(result["cloud_color_g"]); | ||
801 | nWP.cloudColor.Z = Convert.ToSingle(result["cloud_color_b"]); | ||
802 | nWP.cloudColor.W = Convert.ToSingle(result["cloud_color_i"]); | ||
803 | nWP.cloudXYDensity.X = Convert.ToSingle(result["cloud_x"]); | ||
804 | nWP.cloudXYDensity.Y = Convert.ToSingle(result["cloud_y"]); | ||
805 | nWP.cloudXYDensity.Z = Convert.ToSingle(result["cloud_density"]); | ||
806 | nWP.cloudCoverage = Convert.ToSingle(result["cloud_coverage"]); | ||
807 | nWP.cloudScale = Convert.ToSingle(result["cloud_scale"]); | ||
808 | nWP.cloudDetailXYDensity.X = Convert.ToSingle(result["cloud_detail_x"]); | ||
809 | nWP.cloudDetailXYDensity.Y = Convert.ToSingle(result["cloud_detail_y"]); | ||
810 | nWP.cloudDetailXYDensity.Z = Convert.ToSingle(result["cloud_detail_density"]); | ||
811 | nWP.cloudScrollX = Convert.ToSingle(result["cloud_scroll_x"]); | ||
812 | nWP.cloudScrollXLock = Convert.ToBoolean(result["cloud_scroll_x_lock"]); | ||
813 | nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]); | ||
814 | nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]); | ||
815 | nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]); | ||
816 | nWP.valid = true; | ||
817 | } | ||
818 | } | ||
819 | } | ||
820 | return nWP; | ||
706 | } | 821 | } |
822 | |||
707 | public void RemoveRegionWindlightSettings(UUID regionID) | 823 | public void RemoveRegionWindlightSettings(UUID regionID) |
708 | { | 824 | { |
825 | string sql = "delete from [regionwindlight] where region_id = @region_id"; | ||
826 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
827 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
828 | { | ||
829 | conn.Open(); | ||
830 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionID)); | ||
831 | cmd.ExecuteNonQuery(); | ||
832 | } | ||
709 | } | 833 | } |
834 | |||
710 | public void StoreRegionWindlightSettings(RegionLightShareData wl) | 835 | public void StoreRegionWindlightSettings(RegionLightShareData wl) |
711 | { | 836 | { |
712 | //This connector doesn't support the windlight module yet | 837 | string sql = "select count (region_id) from regionwindlight where region_id = @region_id"; |
838 | bool exists = false; | ||
839 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
840 | { | ||
841 | conn.Open(); | ||
842 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
843 | { | ||
844 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", wl.regionID)); | ||
845 | exists = (int)cmd.ExecuteScalar() > 0; | ||
846 | } | ||
847 | } | ||
848 | if (exists) | ||
849 | { | ||
850 | RemoveRegionWindlightSettings(wl.regionID); | ||
851 | } | ||
852 | |||
853 | // sql insert | ||
854 | sql = @"INSERT INTO [regionwindlight] | ||
855 | ([region_id] | ||
856 | ,[water_color_r] | ||
857 | ,[water_color_g] | ||
858 | ,[water_color_b] | ||
859 | ,[water_fog_density_exponent] | ||
860 | ,[underwater_fog_modifier] | ||
861 | ,[reflection_wavelet_scale_1] | ||
862 | ,[reflection_wavelet_scale_2] | ||
863 | ,[reflection_wavelet_scale_3] | ||
864 | ,[fresnel_scale] | ||
865 | ,[fresnel_offset] | ||
866 | ,[refract_scale_above] | ||
867 | ,[refract_scale_below] | ||
868 | ,[blur_multiplier] | ||
869 | ,[big_wave_direction_x] | ||
870 | ,[big_wave_direction_y] | ||
871 | ,[little_wave_direction_x] | ||
872 | ,[little_wave_direction_y] | ||
873 | ,[normal_map_texture] | ||
874 | ,[horizon_r] | ||
875 | ,[horizon_g] | ||
876 | ,[horizon_b] | ||
877 | ,[horizon_i] | ||
878 | ,[haze_horizon] | ||
879 | ,[blue_density_r] | ||
880 | ,[blue_density_g] | ||
881 | ,[blue_density_b] | ||
882 | ,[blue_density_i] | ||
883 | ,[haze_density] | ||
884 | ,[density_multiplier] | ||
885 | ,[distance_multiplier] | ||
886 | ,[max_altitude] | ||
887 | ,[sun_moon_color_r] | ||
888 | ,[sun_moon_color_g] | ||
889 | ,[sun_moon_color_b] | ||
890 | ,[sun_moon_color_i] | ||
891 | ,[sun_moon_position] | ||
892 | ,[ambient_r] | ||
893 | ,[ambient_g] | ||
894 | ,[ambient_b] | ||
895 | ,[ambient_i] | ||
896 | ,[east_angle] | ||
897 | ,[sun_glow_focus] | ||
898 | ,[sun_glow_size] | ||
899 | ,[scene_gamma] | ||
900 | ,[star_brightness] | ||
901 | ,[cloud_color_r] | ||
902 | ,[cloud_color_g] | ||
903 | ,[cloud_color_b] | ||
904 | ,[cloud_color_i] | ||
905 | ,[cloud_x] | ||
906 | ,[cloud_y] | ||
907 | ,[cloud_density] | ||
908 | ,[cloud_coverage] | ||
909 | ,[cloud_scale] | ||
910 | ,[cloud_detail_x] | ||
911 | ,[cloud_detail_y] | ||
912 | ,[cloud_detail_density] | ||
913 | ,[cloud_scroll_x] | ||
914 | ,[cloud_scroll_x_lock] | ||
915 | ,[cloud_scroll_y] | ||
916 | ,[cloud_scroll_y_lock] | ||
917 | ,[draw_classic_clouds]) | ||
918 | VALUES | ||
919 | (@region_id | ||
920 | ,@water_color_r | ||
921 | ,@water_color_g | ||
922 | ,@water_color_b | ||
923 | ,@water_fog_density_exponent | ||
924 | ,@underwater_fog_modifier | ||
925 | ,@reflection_wavelet_scale_1 | ||
926 | ,@reflection_wavelet_scale_2 | ||
927 | ,@reflection_wavelet_scale_3 | ||
928 | ,@fresnel_scale | ||
929 | ,@fresnel_offset | ||
930 | ,@refract_scale_above | ||
931 | ,@refract_scale_below | ||
932 | ,@blur_multiplier | ||
933 | ,@big_wave_direction_x | ||
934 | ,@big_wave_direction_y | ||
935 | ,@little_wave_direction_x | ||
936 | ,@little_wave_direction_y | ||
937 | ,@normal_map_texture | ||
938 | ,@horizon_r | ||
939 | ,@horizon_g | ||
940 | ,@horizon_b | ||
941 | ,@horizon_i | ||
942 | ,@haze_horizon | ||
943 | ,@blue_density_r | ||
944 | ,@blue_density_g | ||
945 | ,@blue_density_b | ||
946 | ,@blue_density_i | ||
947 | ,@haze_density | ||
948 | ,@density_multiplier | ||
949 | ,@distance_multiplier | ||
950 | ,@max_altitude | ||
951 | ,@sun_moon_color_r | ||
952 | ,@sun_moon_color_g | ||
953 | ,@sun_moon_color_b | ||
954 | ,@sun_moon_color_i | ||
955 | ,@sun_moon_position | ||
956 | ,@ambient_r | ||
957 | ,@ambient_g | ||
958 | ,@ambient_b | ||
959 | ,@ambient_i | ||
960 | ,@east_angle | ||
961 | ,@sun_glow_focus | ||
962 | ,@sun_glow_size | ||
963 | ,@scene_gamma | ||
964 | ,@star_brightness | ||
965 | ,@cloud_color_r | ||
966 | ,@cloud_color_g | ||
967 | ,@cloud_color_b | ||
968 | ,@cloud_color_i | ||
969 | ,@cloud_x | ||
970 | ,@cloud_y | ||
971 | ,@cloud_density | ||
972 | ,@cloud_coverage | ||
973 | ,@cloud_scale | ||
974 | ,@cloud_detail_x | ||
975 | ,@cloud_detail_y | ||
976 | ,@cloud_detail_density | ||
977 | ,@cloud_scroll_x | ||
978 | ,@cloud_scroll_x_lock | ||
979 | ,@cloud_scroll_y | ||
980 | ,@cloud_scroll_y_lock | ||
981 | ,@draw_classic_clouds)"; | ||
982 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
983 | { | ||
984 | conn.Open(); | ||
985 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
986 | { | ||
987 | cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID)); | ||
988 | cmd.Parameters.Add(_Database.CreateParameter("water_color_r", wl.waterColor.X)); | ||
989 | cmd.Parameters.Add(_Database.CreateParameter("water_color_g", wl.waterColor.Y)); | ||
990 | cmd.Parameters.Add(_Database.CreateParameter("water_color_b", wl.waterColor.Z)); | ||
991 | cmd.Parameters.Add(_Database.CreateParameter("water_fog_density_exponent", wl.waterFogDensityExponent)); | ||
992 | cmd.Parameters.Add(_Database.CreateParameter("underwater_fog_modifier", wl.underwaterFogModifier)); | ||
993 | cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_1", wl.reflectionWaveletScale.X)); | ||
994 | cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_2", wl.reflectionWaveletScale.Y)); | ||
995 | cmd.Parameters.Add(_Database.CreateParameter("reflection_wavelet_scale_3", wl.reflectionWaveletScale.Z)); | ||
996 | cmd.Parameters.Add(_Database.CreateParameter("fresnel_scale", wl.fresnelScale)); | ||
997 | cmd.Parameters.Add(_Database.CreateParameter("fresnel_offset", wl.fresnelOffset)); | ||
998 | cmd.Parameters.Add(_Database.CreateParameter("refract_scale_above", wl.refractScaleAbove)); | ||
999 | cmd.Parameters.Add(_Database.CreateParameter("refract_scale_below", wl.refractScaleBelow)); | ||
1000 | cmd.Parameters.Add(_Database.CreateParameter("blur_multiplier", wl.blurMultiplier)); | ||
1001 | cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_x", wl.bigWaveDirection.X)); | ||
1002 | cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_y", wl.bigWaveDirection.Y)); | ||
1003 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_x", wl.littleWaveDirection.X)); | ||
1004 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_y", wl.littleWaveDirection.Y)); | ||
1005 | cmd.Parameters.Add(_Database.CreateParameter("normal_map_texture", wl.normalMapTexture)); | ||
1006 | cmd.Parameters.Add(_Database.CreateParameter("horizon_r", wl.horizon.X)); | ||
1007 | cmd.Parameters.Add(_Database.CreateParameter("horizon_g", wl.horizon.Y)); | ||
1008 | cmd.Parameters.Add(_Database.CreateParameter("horizon_b", wl.horizon.Z)); | ||
1009 | cmd.Parameters.Add(_Database.CreateParameter("horizon_i", wl.horizon.W)); | ||
1010 | cmd.Parameters.Add(_Database.CreateParameter("haze_horizon", wl.hazeHorizon)); | ||
1011 | cmd.Parameters.Add(_Database.CreateParameter("blue_density_r", wl.blueDensity.X)); | ||
1012 | cmd.Parameters.Add(_Database.CreateParameter("blue_density_g", wl.blueDensity.Y)); | ||
1013 | cmd.Parameters.Add(_Database.CreateParameter("blue_density_b", wl.blueDensity.Z)); | ||
1014 | cmd.Parameters.Add(_Database.CreateParameter("blue_density_i", wl.blueDensity.W)); | ||
1015 | cmd.Parameters.Add(_Database.CreateParameter("haze_density", wl.hazeDensity)); | ||
1016 | cmd.Parameters.Add(_Database.CreateParameter("density_multiplier", wl.densityMultiplier)); | ||
1017 | cmd.Parameters.Add(_Database.CreateParameter("distance_multiplier", wl.distanceMultiplier)); | ||
1018 | cmd.Parameters.Add(_Database.CreateParameter("max_altitude", wl.maxAltitude)); | ||
1019 | cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_r", wl.sunMoonColor.X)); | ||
1020 | cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_g", wl.sunMoonColor.Y)); | ||
1021 | cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_b", wl.sunMoonColor.Z)); | ||
1022 | cmd.Parameters.Add(_Database.CreateParameter("sun_moon_color_i", wl.sunMoonColor.W)); | ||
1023 | cmd.Parameters.Add(_Database.CreateParameter("sun_moon_position", wl.sunMoonPosition)); | ||
1024 | cmd.Parameters.Add(_Database.CreateParameter("ambient_r", wl.ambient.X)); | ||
1025 | cmd.Parameters.Add(_Database.CreateParameter("ambient_g", wl.ambient.Y)); | ||
1026 | cmd.Parameters.Add(_Database.CreateParameter("ambient_b", wl.ambient.Z)); | ||
1027 | cmd.Parameters.Add(_Database.CreateParameter("ambient_i", wl.ambient.W)); | ||
1028 | cmd.Parameters.Add(_Database.CreateParameter("east_angle", wl.eastAngle)); | ||
1029 | cmd.Parameters.Add(_Database.CreateParameter("sun_glow_focus", wl.sunGlowFocus)); | ||
1030 | cmd.Parameters.Add(_Database.CreateParameter("sun_glow_size", wl.sunGlowSize)); | ||
1031 | cmd.Parameters.Add(_Database.CreateParameter("scene_gamma", wl.sceneGamma)); | ||
1032 | cmd.Parameters.Add(_Database.CreateParameter("star_brightness", wl.starBrightness)); | ||
1033 | cmd.Parameters.Add(_Database.CreateParameter("cloud_color_r", wl.cloudColor.X)); | ||
1034 | cmd.Parameters.Add(_Database.CreateParameter("cloud_color_g", wl.cloudColor.Y)); | ||
1035 | cmd.Parameters.Add(_Database.CreateParameter("cloud_color_b", wl.cloudColor.Z)); | ||
1036 | cmd.Parameters.Add(_Database.CreateParameter("cloud_color_i", wl.cloudColor.W)); | ||
1037 | cmd.Parameters.Add(_Database.CreateParameter("cloud_x", wl.cloudXYDensity.X)); | ||
1038 | cmd.Parameters.Add(_Database.CreateParameter("cloud_y", wl.cloudXYDensity.Y)); | ||
1039 | cmd.Parameters.Add(_Database.CreateParameter("cloud_density", wl.cloudXYDensity.Z)); | ||
1040 | cmd.Parameters.Add(_Database.CreateParameter("cloud_coverage", wl.cloudCoverage)); | ||
1041 | cmd.Parameters.Add(_Database.CreateParameter("cloud_scale", wl.cloudScale)); | ||
1042 | cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_x", wl.cloudDetailXYDensity.X)); | ||
1043 | cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_y", wl.cloudDetailXYDensity.Y)); | ||
1044 | cmd.Parameters.Add(_Database.CreateParameter("cloud_detail_density", wl.cloudDetailXYDensity.Z)); | ||
1045 | cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_x", wl.cloudScrollX)); | ||
1046 | cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_x_lock", wl.cloudScrollXLock)); | ||
1047 | cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_y", wl.cloudScrollY)); | ||
1048 | cmd.Parameters.Add(_Database.CreateParameter("cloud_scroll_y_lock", wl.cloudScrollYLock)); | ||
1049 | cmd.Parameters.Add(_Database.CreateParameter("draw_classic_clouds", wl.drawClassicClouds)); | ||
1050 | |||
1051 | cmd.ExecuteNonQuery(); | ||
1052 | } | ||
1053 | } | ||
1054 | #region update | ||
1055 | // } | ||
1056 | // else | ||
1057 | // { | ||
1058 | // // sql update | ||
1059 | // sql = @"UPDATE [OpenSim].[dbo].[regionwindlight] | ||
1060 | // SET [region_id] = @region_id | ||
1061 | // ,[water_color_r] = @water_color_r | ||
1062 | // ,[water_color_g] = @water_color_g | ||
1063 | // ,[water_color_b] = @water_color_b | ||
1064 | // ,[water_fog_density_exponent] = @water_fog_density_exponent | ||
1065 | // ,[underwater_fog_modifier] = @underwater_fog_modifier | ||
1066 | // ,[reflection_wavelet_scale_1] = @reflection_wavelet_scale_1 | ||
1067 | // ,[reflection_wavelet_scale_2] = @reflection_wavelet_scale_2 | ||
1068 | // ,[reflection_wavelet_scale_3] = @reflection_wavelet_scale_3 | ||
1069 | // ,[fresnel_scale] = @fresnel_scale | ||
1070 | // ,[fresnel_offset] = @fresnel_offset | ||
1071 | // ,[refract_scale_above] = @refract_scale_above | ||
1072 | // ,[refract_scale_below] = @refract_scale_below | ||
1073 | // ,[blur_multiplier] = @blur_multiplier | ||
1074 | // ,[big_wave_direction_x] = @big_wave_direction_x | ||
1075 | // ,[big_wave_direction_y] = @big_wave_direction_y | ||
1076 | // ,[little_wave_direction_x] = @little_wave_direction_x | ||
1077 | // ,[little_wave_direction_y] = @little_wave_direction_y | ||
1078 | // ,[normal_map_texture] = @normal_map_texture | ||
1079 | // ,[horizon_r] = @horizon_r | ||
1080 | // ,[horizon_g] = @horizon_g | ||
1081 | // ,[horizon_b] = @horizon_b | ||
1082 | // ,[horizon_i] = @horizon_i | ||
1083 | // ,[haze_horizon] = @haze_horizon | ||
1084 | // ,[blue_density_r] = @blue_density_r | ||
1085 | // ,[blue_density_g] = @blue_density_g | ||
1086 | // ,[blue_density_b] = @blue_density_b | ||
1087 | // ,[blue_density_i] = @blue_density_i | ||
1088 | // ,[haze_density] = @haze_density | ||
1089 | // ,[density_multiplier] = @density_multiplier | ||
1090 | // ,[distance_multiplier] = @distance_multiplier | ||
1091 | // ,[max_altitude] = @max_altitude | ||
1092 | // ,[sun_moon_color_r] = @sun_moon_color_r | ||
1093 | // ,[sun_moon_color_g] = @sun_moon_color_g | ||
1094 | // ,[sun_moon_color_b] = @sun_moon_color_b | ||
1095 | // ,[sun_moon_color_i] = @sun_moon_color_i | ||
1096 | // ,[sun_moon_position] = @sun_moon_position | ||
1097 | // ,[ambient_r] = @ambient_r | ||
1098 | // ,[ambient_g] = @ambient_g | ||
1099 | // ,[ambient_b] = @ambient_b | ||
1100 | // ,[ambient_i] = @ambient_i | ||
1101 | // ,[east_angle] = @east_angle | ||
1102 | // ,[sun_glow_focus] = @sun_glow_focus | ||
1103 | // ,[sun_glow_size] = @sun_glow_size | ||
1104 | // ,[scene_gamma] = @scene_gamma | ||
1105 | // ,[star_brightness] = @star_brightness | ||
1106 | // ,[cloud_color_r] = @cloud_color_r | ||
1107 | // ,[cloud_color_g] = @cloud_color_g | ||
1108 | // ,[cloud_color_b] = @cloud_color_b | ||
1109 | // ,[cloud_color_i] = @cloud_color_i | ||
1110 | // ,[cloud_x] = @cloud_x | ||
1111 | // ,[cloud_y] = @cloud_y | ||
1112 | // ,[cloud_density] = @cloud_density | ||
1113 | // ,[cloud_coverage] = @cloud_coverage | ||
1114 | // ,[cloud_scale] = @cloud_scale | ||
1115 | // ,[cloud_detail_x] = @cloud_detail_x | ||
1116 | // ,[cloud_detail_y] = @cloud_detail_y | ||
1117 | // ,[cloud_detail_density] = @cloud_detail_density | ||
1118 | // ,[cloud_scroll_x] = @cloud_scroll_x | ||
1119 | // ,[cloud_scroll_x_lock] = @cloud_scroll_x_lock | ||
1120 | // ,[cloud_scroll_y] = @cloud_scroll_y | ||
1121 | // ,[cloud_scroll_y_lock] = @cloud_scroll_y_lock | ||
1122 | // ,[draw_classic_clouds] = @draw_classic_clouds | ||
1123 | // WHERE region_id = @region_id"; | ||
1124 | // using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
1125 | // { | ||
1126 | // conn.Open(); | ||
1127 | // using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
1128 | // { | ||
1129 | // cmd.Parameters.AddWithValue("region_id", wl.regionID); | ||
1130 | // cmd.Parameters.AddWithValue("water_color_r", wl.waterColor.X); | ||
1131 | // cmd.Parameters.AddWithValue("water_color_g", wl.waterColor.Y); | ||
1132 | // cmd.Parameters.AddWithValue("water_color_b", wl.waterColor.Z); | ||
1133 | // cmd.Parameters.AddWithValue("water_fog_density_exponent", wl.waterFogDensityExponent); | ||
1134 | // cmd.Parameters.AddWithValue("underwater_fog_modifier", wl.underwaterFogModifier); | ||
1135 | // cmd.Parameters.AddWithValue("reflection_wavelet_scale_1", wl.reflectionWaveletScale.X); | ||
1136 | // cmd.Parameters.AddWithValue("reflection_wavelet_scale_2", wl.reflectionWaveletScale.Y); | ||
1137 | // cmd.Parameters.AddWithValue("reflection_wavelet_scale_3", wl.reflectionWaveletScale.Z); | ||
1138 | // cmd.Parameters.AddWithValue("fresnel_scale", wl.fresnelScale); | ||
1139 | // cmd.Parameters.AddWithValue("fresnel_offset", wl.fresnelOffset); | ||
1140 | // cmd.Parameters.AddWithValue("refract_scale_above", wl.refractScaleAbove); | ||
1141 | // cmd.Parameters.AddWithValue("refract_scale_below", wl.refractScaleBelow); | ||
1142 | // cmd.Parameters.AddWithValue("blur_multiplier", wl.blurMultiplier); | ||
1143 | // cmd.Parameters.AddWithValue("big_wave_direction_x", wl.bigWaveDirection.X); | ||
1144 | // cmd.Parameters.AddWithValue("big_wave_direction_y", wl.bigWaveDirection.Y); | ||
1145 | // cmd.Parameters.AddWithValue("little_wave_direction_x", wl.littleWaveDirection.X); | ||
1146 | // cmd.Parameters.AddWithValue("little_wave_direction_y", wl.littleWaveDirection.Y); | ||
1147 | // cmd.Parameters.AddWithValue("normal_map_texture", wl.normalMapTexture); | ||
1148 | // cmd.Parameters.AddWithValue("horizon_r", wl.horizon.X); | ||
1149 | // cmd.Parameters.AddWithValue("horizon_g", wl.horizon.Y); | ||
1150 | // cmd.Parameters.AddWithValue("horizon_b", wl.horizon.Z); | ||
1151 | // cmd.Parameters.AddWithValue("horizon_i", wl.horizon.W); | ||
1152 | // cmd.Parameters.AddWithValue("haze_horizon", wl.hazeHorizon); | ||
1153 | // cmd.Parameters.AddWithValue("blue_density_r", wl.blueDensity.X); | ||
1154 | // cmd.Parameters.AddWithValue("blue_density_g", wl.blueDensity.Y); | ||
1155 | // cmd.Parameters.AddWithValue("blue_density_b", wl.blueDensity.Z); | ||
1156 | // cmd.Parameters.AddWithValue("blue_density_i", wl.blueDensity.W); | ||
1157 | // cmd.Parameters.AddWithValue("haze_density", wl.hazeDensity); | ||
1158 | // cmd.Parameters.AddWithValue("density_multiplier", wl.densityMultiplier); | ||
1159 | // cmd.Parameters.AddWithValue("distance_multiplier", wl.distanceMultiplier); | ||
1160 | // cmd.Parameters.AddWithValue("max_altitude", wl.maxAltitude); | ||
1161 | // cmd.Parameters.AddWithValue("sun_moon_color_r", wl.sunMoonColor.X); | ||
1162 | // cmd.Parameters.AddWithValue("sun_moon_color_g", wl.sunMoonColor.Y); | ||
1163 | // cmd.Parameters.AddWithValue("sun_moon_color_b", wl.sunMoonColor.Z); | ||
1164 | // cmd.Parameters.AddWithValue("sun_moon_color_i", wl.sunMoonColor.W); | ||
1165 | // cmd.Parameters.AddWithValue("sun_moon_position", wl.sunMoonPosition); | ||
1166 | // cmd.Parameters.AddWithValue("ambient_r", wl.ambient.X); | ||
1167 | // cmd.Parameters.AddWithValue("ambient_g", wl.ambient.Y); | ||
1168 | // cmd.Parameters.AddWithValue("ambient_b", wl.ambient.Z); | ||
1169 | // cmd.Parameters.AddWithValue("ambient_i", wl.ambient.W); | ||
1170 | // cmd.Parameters.AddWithValue("east_angle", wl.eastAngle); | ||
1171 | // cmd.Parameters.AddWithValue("sun_glow_focus", wl.sunGlowFocus); | ||
1172 | // cmd.Parameters.AddWithValue("sun_glow_size", wl.sunGlowSize); | ||
1173 | // cmd.Parameters.AddWithValue("scene_gamma", wl.sceneGamma); | ||
1174 | // cmd.Parameters.AddWithValue("star_brightness", wl.starBrightness); | ||
1175 | // cmd.Parameters.AddWithValue("cloud_color_r", wl.cloudColor.X); | ||
1176 | // cmd.Parameters.AddWithValue("cloud_color_g", wl.cloudColor.Y); | ||
1177 | // cmd.Parameters.AddWithValue("cloud_color_b", wl.cloudColor.Z); | ||
1178 | // cmd.Parameters.AddWithValue("cloud_color_i", wl.cloudColor.W); | ||
1179 | // cmd.Parameters.AddWithValue("cloud_x", wl.cloudXYDensity.X); | ||
1180 | // cmd.Parameters.AddWithValue("cloud_y", wl.cloudXYDensity.Y); | ||
1181 | // cmd.Parameters.AddWithValue("cloud_density", wl.cloudXYDensity.Z); | ||
1182 | // cmd.Parameters.AddWithValue("cloud_coverage", wl.cloudCoverage); | ||
1183 | // cmd.Parameters.AddWithValue("cloud_scale", wl.cloudScale); | ||
1184 | // cmd.Parameters.AddWithValue("cloud_detail_x", wl.cloudDetailXYDensity.X); | ||
1185 | // cmd.Parameters.AddWithValue("cloud_detail_y", wl.cloudDetailXYDensity.Y); | ||
1186 | // cmd.Parameters.AddWithValue("cloud_detail_density", wl.cloudDetailXYDensity.Z); | ||
1187 | // cmd.Parameters.AddWithValue("cloud_scroll_x", wl.cloudScrollX); | ||
1188 | // cmd.Parameters.AddWithValue("cloud_scroll_x_lock", wl.cloudScrollXLock); | ||
1189 | // cmd.Parameters.AddWithValue("cloud_scroll_y", wl.cloudScrollY); | ||
1190 | // cmd.Parameters.AddWithValue("cloud_scroll_y_lock", wl.cloudScrollYLock); | ||
1191 | // cmd.Parameters.AddWithValue("draw_classic_clouds", wl.drawClassicClouds); | ||
1192 | |||
1193 | // cmd.ExecuteNonQuery(); | ||
1194 | // } | ||
1195 | // } | ||
1196 | // } | ||
1197 | #endregion | ||
713 | } | 1198 | } |
714 | /// <summary> | 1199 | /// <summary> |
715 | /// Loads the settings of a region. | 1200 | /// Loads the settings of a region. |
@@ -1136,7 +1621,7 @@ VALUES | |||
1136 | if (Convert.ToInt16(primRow["PassTouches"]) != 0) | 1621 | if (Convert.ToInt16(primRow["PassTouches"]) != 0) |
1137 | prim.PassTouches = true; | 1622 | prim.PassTouches = true; |
1138 | prim.LinkNum = Convert.ToInt32(primRow["LinkNumber"]); | 1623 | prim.LinkNum = Convert.ToInt32(primRow["LinkNumber"]); |
1139 | 1624 | ||
1140 | if (!(primRow["MediaURL"] is System.DBNull)) | 1625 | if (!(primRow["MediaURL"] is System.DBNull)) |
1141 | prim.MediaUrl = (string)primRow["MediaURL"]; | 1626 | prim.MediaUrl = (string)primRow["MediaURL"]; |
1142 | 1627 | ||
@@ -1192,11 +1677,11 @@ VALUES | |||
1192 | { | 1677 | { |
1193 | } | 1678 | } |
1194 | 1679 | ||
1195 | if (!(shapeRow["Media"] is System.DBNull) ) | 1680 | if (!(shapeRow["Media"] is System.DBNull)) |
1196 | { | 1681 | { |
1197 | baseShape.Media = PrimitiveBaseShape.MediaList.FromXml((string)shapeRow["Media"]); | 1682 | baseShape.Media = PrimitiveBaseShape.MediaList.FromXml((string)shapeRow["Media"]); |
1198 | } | 1683 | } |
1199 | 1684 | ||
1200 | 1685 | ||
1201 | return baseShape; | 1686 | return baseShape; |
1202 | } | 1687 | } |
@@ -1576,15 +2061,15 @@ VALUES | |||
1576 | parameters.Add(_Database.CreateParameter("ExtraParams", s.ExtraParams)); | 2061 | parameters.Add(_Database.CreateParameter("ExtraParams", s.ExtraParams)); |
1577 | parameters.Add(_Database.CreateParameter("State", s.State)); | 2062 | parameters.Add(_Database.CreateParameter("State", s.State)); |
1578 | 2063 | ||
1579 | if(null == s.Media ) | 2064 | if (null == s.Media) |
1580 | { | 2065 | { |
1581 | parameters.Add(_Database.CreateParameter("Media", DBNull.Value)); | 2066 | parameters.Add(_Database.CreateParameter("Media", DBNull.Value)); |
1582 | } | 2067 | } |
1583 | else | 2068 | else |
1584 | { | 2069 | { |
1585 | parameters.Add(_Database.CreateParameter("Media", s.Media.ToXml())); | 2070 | parameters.Add(_Database.CreateParameter("Media", s.Media.ToXml())); |
1586 | } | 2071 | } |
1587 | 2072 | ||
1588 | 2073 | ||
1589 | return parameters.ToArray(); | 2074 | return parameters.ToArray(); |
1590 | } | 2075 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs index dc35a2e..1f6994d 100644 --- a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs +++ b/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs | |||
@@ -66,11 +66,18 @@ namespace OpenSim.Data.MSSQL | |||
66 | 66 | ||
67 | public bool StoreFolder(XInventoryFolder folder) | 67 | public bool StoreFolder(XInventoryFolder folder) |
68 | { | 68 | { |
69 | if (folder.folderName.Length > 64) | ||
70 | folder.folderName = folder.folderName.Substring(0, 64); | ||
69 | return m_Folders.Store(folder); | 71 | return m_Folders.Store(folder); |
70 | } | 72 | } |
71 | 73 | ||
72 | public bool StoreItem(XInventoryItem item) | 74 | public bool StoreItem(XInventoryItem item) |
73 | { | 75 | { |
76 | if (item.inventoryName.Length > 64) | ||
77 | item.inventoryName = item.inventoryName.Substring(0, 64); | ||
78 | if (item.inventoryDescription.Length > 128) | ||
79 | item.inventoryDescription = item.inventoryDescription.Substring(0, 128); | ||
80 | |||
74 | return m_Items.Store(item); | 81 | return m_Items.Store(item); |
75 | } | 82 | } |
76 | 83 | ||
@@ -78,7 +85,6 @@ namespace OpenSim.Data.MSSQL | |||
78 | { | 85 | { |
79 | return m_Folders.Delete(field, val); | 86 | return m_Folders.Delete(field, val); |
80 | } | 87 | } |
81 | |||
82 | public bool DeleteFolders(string[] fields, string[] vals) | 88 | public bool DeleteFolders(string[] fields, string[] vals) |
83 | { | 89 | { |
84 | return m_Folders.Delete(fields, vals); | 90 | return m_Folders.Delete(fields, vals); |
@@ -88,12 +94,10 @@ namespace OpenSim.Data.MSSQL | |||
88 | { | 94 | { |
89 | return m_Items.Delete(field, val); | 95 | return m_Items.Delete(field, val); |
90 | } | 96 | } |
91 | |||
92 | public bool DeleteItems(string[] fields, string[] vals) | 97 | public bool DeleteItems(string[] fields, string[] vals) |
93 | { | 98 | { |
94 | return m_Items.Delete(fields, vals); | 99 | return m_Items.Delete(fields, vals); |
95 | } | 100 | } |
96 | |||
97 | public bool MoveItem(string id, string newParent) | 101 | public bool MoveItem(string id, string newParent) |
98 | { | 102 | { |
99 | return m_Items.MoveItem(id, newParent); | 103 | return m_Items.MoveItem(id, newParent); |
@@ -172,5 +176,27 @@ namespace OpenSim.Data.MSSQL | |||
172 | 176 | ||
173 | } | 177 | } |
174 | } | 178 | } |
179 | public override bool Store(XInventoryItem item) | ||
180 | { | ||
181 | if (!base.Store(item)) | ||
182 | return false; | ||
183 | string sql = "update inventoryfolders set version=version+1 where folderID = @folderID"; | ||
184 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
185 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
186 | { | ||
187 | conn.Open(); | ||
188 | |||
189 | cmd.Parameters.AddWithValue("@folderID", item.parentFolderID.ToString()); | ||
190 | try | ||
191 | { | ||
192 | cmd.ExecuteNonQuery(); | ||
193 | } | ||
194 | catch (Exception e) | ||
195 | { | ||
196 | return false; | ||
197 | } | ||
198 | } | ||
199 | return true; | ||
200 | } | ||
175 | } | 201 | } |
176 | } | 202 | } |
diff --git a/OpenSim/Data/MSSQL/Resources/Avatar.migrations b/OpenSim/Data/MSSQL/Resources/Avatar.migrations index 5364153..61f7b56 100644 --- a/OpenSim/Data/MSSQL/Resources/Avatar.migrations +++ b/OpenSim/Data/MSSQL/Resources/Avatar.migrations | |||
@@ -37,4 +37,28 @@ EXECUTE sp_rename N'dbo.Tmp_Avatars', N'Avatars', 'OBJECT' | |||
37 | 37 | ||
38 | COMMIT | 38 | COMMIT |
39 | 39 | ||
40 | :VERSION 3 | ||
41 | |||
42 | BEGIN TRANSACTION | ||
43 | |||
44 | CREATE TABLE dbo.Tmp_Avatars | ||
45 | ( | ||
46 | PrincipalID uniqueidentifier NOT NULL, | ||
47 | [Name] varchar(32) NOT NULL, | ||
48 | Value text NOT NULL DEFAULT '', | ||
49 | PRIMARY KEY CLUSTERED | ||
50 | ( | ||
51 | [PrincipalID] ASC, [Name] ASC | ||
52 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
53 | ) ON [PRIMARY] | ||
54 | TEXTIMAGE_ON [PRIMARY] | ||
55 | |||
56 | IF EXISTS(SELECT * FROM dbo.Avatars) | ||
57 | EXEC('INSERT INTO dbo.Tmp_Avatars (PrincipalID, Name, Value) | ||
58 | SELECT PrincipalID, CONVERT(text, Name), Value FROM dbo.Avatars WITH (HOLDLOCK TABLOCKX)') | ||
59 | |||
60 | DROP TABLE dbo.Avatars | ||
61 | |||
62 | EXECUTE sp_rename N'dbo.Tmp_Avatars', N'Avatars', 'OBJECT' | ||
63 | COMMIT | ||
40 | 64 | ||
diff --git a/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations b/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations index 7a7cecd..ecd3f4d 100644 --- a/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations +++ b/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations | |||
@@ -17,3 +17,49 @@ CREATE TABLE "GridUser" ( | |||
17 | ) | 17 | ) |
18 | 18 | ||
19 | COMMIT | 19 | COMMIT |
20 | |||
21 | :VERSION 2 # -------------------------- | ||
22 | |||
23 | BEGIN TRANSACTION | ||
24 | |||
25 | CREATE TABLE [GridUser_tmp] ( | ||
26 | [UserID] VARCHAR(255) NOT NULL, | ||
27 | [HomeRegionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
28 | [HomePosition] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
29 | [HomeLookAt] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
30 | [LastRegionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
31 | [LastPosition] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
32 | [LastLookAt] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
33 | [Online] CHAR(5) NOT NULL DEFAULT 'false', | ||
34 | [Login] CHAR(16) NOT NULL DEFAULT '0', | ||
35 | [Logout] CHAR(16) NOT NULL DEFAULT '0', | ||
36 | |||
37 | PRIMARY KEY CLUSTERED | ||
38 | ( | ||
39 | [UserID] ASC | ||
40 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
41 | ) ON [PRIMARY] | ||
42 | |||
43 | COMMIT | ||
44 | |||
45 | IF EXISTS(SELECT * FROM dbo.GridUser) | ||
46 | EXEC('INSERT INTO dbo.GridUser_tmp ([UserID] | ||
47 | ,[HomeRegionID] | ||
48 | ,[HomePosition] | ||
49 | ,[HomeLookAt] | ||
50 | ,[LastRegionID] | ||
51 | ,[LastPosition] | ||
52 | ,[LastLookAt] | ||
53 | ,[Online] | ||
54 | ,[Login] | ||
55 | ,[Logout]) | ||
56 | SELECT CONVERT(varchar(36), [HomeRegionID]), [HomePosition] ,[HomeLookAt] , CONVERT(varchar(36),[LastRegionID]) | ||
57 | ,[LastPosition] | ||
58 | ,[LastLookAt] | ||
59 | ,[Online] | ||
60 | ,[Login] | ||
61 | ,[Logout] FROM dbo.GridUser WITH (HOLDLOCK TABLOCKX)') | ||
62 | |||
63 | DROP TABLE dbo.GridUser | ||
64 | |||
65 | EXECUTE sp_rename N'dbo.GridUser_tmp', N'GridUser', 'OBJECT' \ No newline at end of file | ||
diff --git a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations b/OpenSim/Data/MSSQL/Resources/RegionStore.migrations index 340b63d..3995e6c 100644 --- a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/MSSQL/Resources/RegionStore.migrations | |||
@@ -1003,7 +1003,7 @@ CREATE TABLE "regionwindlight" ( | |||
1003 | PRIMARY KEY ("region_id") | 1003 | PRIMARY KEY ("region_id") |
1004 | ) | 1004 | ) |
1005 | 1005 | ||
1006 | COMMIT TRANSACTION | 1006 | COMMIT |
1007 | 1007 | ||
1008 | :VERSION 26 | 1008 | :VERSION 26 |
1009 | 1009 | ||
diff --git a/OpenSim/Data/MySQL/MySQLFriendsData.cs b/OpenSim/Data/MySQL/MySQLFriendsData.cs index 663fad6..130ba5e 100644 --- a/OpenSim/Data/MySQL/MySQLFriendsData.cs +++ b/OpenSim/Data/MySQL/MySQLFriendsData.cs | |||
@@ -44,6 +44,11 @@ namespace OpenSim.Data.MySQL | |||
44 | 44 | ||
45 | public bool Delete(UUID principalID, string friend) | 45 | public bool Delete(UUID principalID, string friend) |
46 | { | 46 | { |
47 | return Delete(principalID.ToString(), friend); | ||
48 | } | ||
49 | |||
50 | public bool Delete(string principalID, string friend) | ||
51 | { | ||
47 | MySqlCommand cmd = new MySqlCommand(); | 52 | MySqlCommand cmd = new MySqlCommand(); |
48 | 53 | ||
49 | cmd.CommandText = String.Format("delete from {0} where PrincipalID = ?PrincipalID and Friend = ?Friend", m_Realm); | 54 | cmd.CommandText = String.Format("delete from {0} where PrincipalID = ?PrincipalID and Friend = ?Friend", m_Realm); |
@@ -64,5 +69,14 @@ namespace OpenSim.Data.MySQL | |||
64 | 69 | ||
65 | return DoQuery(cmd); | 70 | return DoQuery(cmd); |
66 | } | 71 | } |
72 | |||
73 | public FriendsData[] GetFriends(string principalID) | ||
74 | { | ||
75 | MySqlCommand cmd = new MySqlCommand(); | ||
76 | |||
77 | cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID LIKE ?PrincipalID", m_Realm); | ||
78 | cmd.Parameters.AddWithValue("?PrincipalID", principalID.ToString() + '%'); | ||
79 | return DoQuery(cmd); | ||
80 | } | ||
67 | } | 81 | } |
68 | } | 82 | } |
diff --git a/OpenSim/Data/MySQL/Resources/FriendsStore.migrations b/OpenSim/Data/MySQL/Resources/FriendsStore.migrations index ce713bd..7848e49 100644 --- a/OpenSim/Data/MySQL/Resources/FriendsStore.migrations +++ b/OpenSim/Data/MySQL/Resources/FriendsStore.migrations | |||
@@ -21,5 +21,12 @@ INSERT INTO `Friends` SELECT `ownerID`, `friendID`, `friendPerms`, 0 FROM `userf | |||
21 | 21 | ||
22 | COMMIT; | 22 | COMMIT; |
23 | 23 | ||
24 | :VERSION 3 # ------------------------- | ||
24 | 25 | ||
26 | BEGIN; | ||
27 | |||
28 | ALTER TABLE `Friends` DROP PRIMARY KEY; | ||
29 | ALTER TABLE `Friends` ADD PRIMARY KEY(PrincipalID(36), Friend(36)); | ||
30 | ALTER TABLE `Friends` MODIFY COLUMN PrincipalID varchar(255) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'; | ||
25 | 31 | ||
32 | COMMIT; | ||
diff --git a/OpenSim/Data/Null/NullFriendsData.cs b/OpenSim/Data/Null/NullFriendsData.cs index e7f7fd3..d90788a 100644 --- a/OpenSim/Data/Null/NullFriendsData.cs +++ b/OpenSim/Data/Null/NullFriendsData.cs | |||
@@ -42,6 +42,11 @@ namespace OpenSim.Data.Null | |||
42 | { | 42 | { |
43 | } | 43 | } |
44 | 44 | ||
45 | public FriendsData[] GetFriends(UUID principalID) | ||
46 | { | ||
47 | return GetFriends(principalID.ToString()); | ||
48 | } | ||
49 | |||
45 | /// <summary> | 50 | /// <summary> |
46 | /// Tries to implement the Get [] semantics, but it cuts corners. | 51 | /// Tries to implement the Get [] semantics, but it cuts corners. |
47 | /// Specifically, it gets all friendships even if they weren't accepted yet. | 52 | /// Specifically, it gets all friendships even if they weren't accepted yet. |
@@ -49,11 +54,11 @@ namespace OpenSim.Data.Null | |||
49 | /// <param name="fields"></param> | 54 | /// <param name="fields"></param> |
50 | /// <param name="values"></param> | 55 | /// <param name="values"></param> |
51 | /// <returns></returns> | 56 | /// <returns></returns> |
52 | public FriendsData[] GetFriends(UUID userID) | 57 | public FriendsData[] GetFriends(string userID) |
53 | { | 58 | { |
54 | List<FriendsData> lst = m_Data.FindAll(delegate (FriendsData fdata) | 59 | List<FriendsData> lst = m_Data.FindAll(delegate (FriendsData fdata) |
55 | { | 60 | { |
56 | return fdata.PrincipalID == userID; | 61 | return fdata.PrincipalID == userID.ToString(); |
57 | }); | 62 | }); |
58 | 63 | ||
59 | if (lst != null) | 64 | if (lst != null) |
@@ -72,9 +77,14 @@ namespace OpenSim.Data.Null | |||
72 | return true; | 77 | return true; |
73 | } | 78 | } |
74 | 79 | ||
75 | public bool Delete(UUID userID, string friendID) | 80 | public bool Delete(UUID principalID, string friend) |
81 | { | ||
82 | return Delete(principalID.ToString(), friend); | ||
83 | } | ||
84 | |||
85 | public bool Delete(string userID, string friendID) | ||
76 | { | 86 | { |
77 | List<FriendsData> lst = m_Data.FindAll(delegate(FriendsData fdata) { return fdata.PrincipalID == userID; }); | 87 | List<FriendsData> lst = m_Data.FindAll(delegate(FriendsData fdata) { return fdata.PrincipalID == userID.ToString(); }); |
78 | if (lst != null) | 88 | if (lst != null) |
79 | { | 89 | { |
80 | FriendsData friend = lst.Find(delegate(FriendsData fdata) { return fdata.Friend == friendID; }); | 90 | FriendsData friend = lst.Find(delegate(FriendsData fdata) { return fdata.Friend == friendID; }); |
diff --git a/OpenSim/Data/SQLite/SQLiteFriendsData.cs b/OpenSim/Data/SQLite/SQLiteFriendsData.cs index 4bfd228..b14c348 100644 --- a/OpenSim/Data/SQLite/SQLiteFriendsData.cs +++ b/OpenSim/Data/SQLite/SQLiteFriendsData.cs | |||
@@ -46,7 +46,12 @@ namespace OpenSim.Data.SQLite | |||
46 | { | 46 | { |
47 | } | 47 | } |
48 | 48 | ||
49 | public FriendsData[] GetFriends(UUID userID) | 49 | public FriendsData[] GetFriends(UUID principalID) |
50 | { | ||
51 | return GetFriends(principalID.ToString()); | ||
52 | } | ||
53 | |||
54 | public FriendsData[] GetFriends(string userID) | ||
50 | { | 55 | { |
51 | SqliteCommand cmd = new SqliteCommand(); | 56 | SqliteCommand cmd = new SqliteCommand(); |
52 | 57 | ||
@@ -59,6 +64,11 @@ namespace OpenSim.Data.SQLite | |||
59 | 64 | ||
60 | public bool Delete(UUID principalID, string friend) | 65 | public bool Delete(UUID principalID, string friend) |
61 | { | 66 | { |
67 | return Delete(principalID.ToString(), friend); | ||
68 | } | ||
69 | |||
70 | public bool Delete(string principalID, string friend) | ||
71 | { | ||
62 | SqliteCommand cmd = new SqliteCommand(); | 72 | SqliteCommand cmd = new SqliteCommand(); |
63 | 73 | ||
64 | cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm); | 74 | cmd.CommandText = String.Format("delete from {0} where PrincipalID = :PrincipalID and Friend = :Friend", m_Realm); |
diff --git a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs index 3fb2d3f..0d7ae1f 100644 --- a/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs +++ b/OpenSim/Data/SQLite/SQLiteGenericTableHandler.cs | |||
@@ -280,7 +280,7 @@ namespace OpenSim.Data.SQLite | |||
280 | 280 | ||
281 | string where = String.Join(" and ", terms.ToArray()); | 281 | string where = String.Join(" and ", terms.ToArray()); |
282 | 282 | ||
283 | string query = String.Format("delete * from {0} where {1}", m_Realm, where); | 283 | string query = String.Format("delete from {0} where {1}", m_Realm, where); |
284 | 284 | ||
285 | cmd.CommandText = query; | 285 | cmd.CommandText = query; |
286 | 286 | ||