diff options
Diffstat (limited to 'OpenSim/Data/MySQL/MySQLDataStore.cs')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLDataStore.cs | 184 |
1 files changed, 92 insertions, 92 deletions
diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs index ac0d382..3c39a5e 100644 --- a/OpenSim/Data/MySQL/MySQLDataStore.cs +++ b/OpenSim/Data/MySQL/MySQLDataStore.cs | |||
@@ -50,12 +50,12 @@ namespace OpenSim.Data.MySQL | |||
50 | private const string m_terrainSelect = "select * from terrain limit 1"; | 50 | private const string m_terrainSelect = "select * from terrain limit 1"; |
51 | private const string m_landSelect = "select * from land"; | 51 | private const string m_landSelect = "select * from land"; |
52 | private const string m_landAccessListSelect = "select * from landaccesslist"; | 52 | private const string m_landAccessListSelect = "select * from landaccesslist"; |
53 | 53 | ||
54 | 54 | ||
55 | /// <summary> | 55 | /// <summary> |
56 | /// We're only using this to version the table! | 56 | /// We're only using this to version the table! |
57 | /// </summary> | 57 | /// </summary> |
58 | 58 | ||
59 | 59 | ||
60 | private DataSet m_dataSet; | 60 | private DataSet m_dataSet; |
61 | private MySqlDataAdapter m_primDataAdapter; | 61 | private MySqlDataAdapter m_primDataAdapter; |
@@ -65,16 +65,16 @@ namespace OpenSim.Data.MySQL | |||
65 | private MySqlDataAdapter m_terrainDataAdapter; | 65 | private MySqlDataAdapter m_terrainDataAdapter; |
66 | private MySqlDataAdapter m_landDataAdapter; | 66 | private MySqlDataAdapter m_landDataAdapter; |
67 | private MySqlDataAdapter m_landAccessListDataAdapter; | 67 | private MySqlDataAdapter m_landAccessListDataAdapter; |
68 | 68 | ||
69 | private DataTable m_primTable; | 69 | private DataTable m_primTable; |
70 | private DataTable m_shapeTable; | 70 | private DataTable m_shapeTable; |
71 | private DataTable m_itemsTable; | 71 | private DataTable m_itemsTable; |
72 | private DataTable m_terrainTable; | 72 | private DataTable m_terrainTable; |
73 | private DataTable m_landTable; | 73 | private DataTable m_landTable; |
74 | private DataTable m_landAccessListTable; | 74 | private DataTable m_landAccessListTable; |
75 | 75 | ||
76 | // Temporary attribute while this is experimental | 76 | // Temporary attribute while this is experimental |
77 | private bool persistPrimInventories; | 77 | private bool persistPrimInventories; |
78 | 78 | ||
79 | /*********************************************************************** | 79 | /*********************************************************************** |
80 | * | 80 | * |
@@ -98,9 +98,9 @@ namespace OpenSim.Data.MySQL | |||
98 | 98 | ||
99 | MySqlCommand shapeSelectCmd = new MySqlCommand(m_shapeSelect, m_connection); | 99 | MySqlCommand shapeSelectCmd = new MySqlCommand(m_shapeSelect, m_connection); |
100 | m_shapeDataAdapter = new MySqlDataAdapter(shapeSelectCmd); | 100 | m_shapeDataAdapter = new MySqlDataAdapter(shapeSelectCmd); |
101 | 101 | ||
102 | MySqlCommand itemsSelectCmd = new MySqlCommand(m_itemsSelect, m_connection); | 102 | MySqlCommand itemsSelectCmd = new MySqlCommand(m_itemsSelect, m_connection); |
103 | m_itemsDataAdapter = new MySqlDataAdapter(itemsSelectCmd); | 103 | m_itemsDataAdapter = new MySqlDataAdapter(itemsSelectCmd); |
104 | 104 | ||
105 | MySqlCommand terrainSelectCmd = new MySqlCommand(m_terrainSelect, m_connection); | 105 | MySqlCommand terrainSelectCmd = new MySqlCommand(m_terrainSelect, m_connection); |
106 | m_terrainDataAdapter = new MySqlDataAdapter(terrainSelectCmd); | 106 | m_terrainDataAdapter = new MySqlDataAdapter(terrainSelectCmd); |
@@ -111,7 +111,7 @@ namespace OpenSim.Data.MySQL | |||
111 | MySqlCommand landAccessListSelectCmd = new MySqlCommand(m_landAccessListSelect, m_connection); | 111 | MySqlCommand landAccessListSelectCmd = new MySqlCommand(m_landAccessListSelect, m_connection); |
112 | m_landAccessListDataAdapter = new MySqlDataAdapter(landAccessListSelectCmd); | 112 | m_landAccessListDataAdapter = new MySqlDataAdapter(landAccessListSelectCmd); |
113 | 113 | ||
114 | 114 | ||
115 | TestTables(m_connection); | 115 | TestTables(m_connection); |
116 | 116 | ||
117 | lock (m_dataSet) | 117 | lock (m_dataSet) |
@@ -125,13 +125,13 @@ namespace OpenSim.Data.MySQL | |||
125 | m_dataSet.Tables.Add(m_shapeTable); | 125 | m_dataSet.Tables.Add(m_shapeTable); |
126 | SetupShapeCommands(m_shapeDataAdapter, m_connection); | 126 | SetupShapeCommands(m_shapeDataAdapter, m_connection); |
127 | m_shapeDataAdapter.Fill(m_shapeTable); | 127 | m_shapeDataAdapter.Fill(m_shapeTable); |
128 | 128 | ||
129 | if (persistPrimInventories) | 129 | if (persistPrimInventories) |
130 | { | 130 | { |
131 | m_itemsTable = createItemsTable(); | 131 | m_itemsTable = createItemsTable(); |
132 | m_dataSet.Tables.Add(m_itemsTable); | 132 | m_dataSet.Tables.Add(m_itemsTable); |
133 | SetupItemsCommands(m_itemsDataAdapter, m_connection); | 133 | SetupItemsCommands(m_itemsDataAdapter, m_connection); |
134 | m_itemsDataAdapter.Fill(m_itemsTable); | 134 | m_itemsDataAdapter.Fill(m_itemsTable); |
135 | } | 135 | } |
136 | 136 | ||
137 | m_terrainTable = createTerrainTable(); | 137 | m_terrainTable = createTerrainTable(); |
@@ -195,7 +195,7 @@ namespace OpenSim.Data.MySQL | |||
195 | 195 | ||
196 | UpgradeLandTable(tableList["land"], dbconn); | 196 | UpgradeLandTable(tableList["land"], dbconn); |
197 | //database.Close(); | 197 | //database.Close(); |
198 | 198 | ||
199 | } | 199 | } |
200 | 200 | ||
201 | /// <summary> | 201 | /// <summary> |
@@ -290,12 +290,12 @@ namespace OpenSim.Data.MySQL | |||
290 | { | 290 | { |
291 | shapeRow.Delete(); | 291 | shapeRow.Delete(); |
292 | } | 292 | } |
293 | 293 | ||
294 | if (persistPrimInventories) | 294 | if (persistPrimInventories) |
295 | { | 295 | { |
296 | RemoveItems(uuid); | 296 | RemoveItems(uuid); |
297 | } | 297 | } |
298 | 298 | ||
299 | // Remove prim row | 299 | // Remove prim row |
300 | row.Delete(); | 300 | row.Delete(); |
301 | } | 301 | } |
@@ -309,18 +309,18 @@ namespace OpenSim.Data.MySQL | |||
309 | /// </summary> | 309 | /// </summary> |
310 | private void RemoveItems(LLUUID uuid) | 310 | private void RemoveItems(LLUUID uuid) |
311 | { | 311 | { |
312 | String sql = String.Format("primID = '{0}'", uuid); | 312 | String sql = String.Format("primID = '{0}'", uuid); |
313 | DataRow[] itemRows = m_itemsTable.Select(sql); | 313 | DataRow[] itemRows = m_itemsTable.Select(sql); |
314 | 314 | ||
315 | foreach (DataRow itemRow in itemRows) | 315 | foreach (DataRow itemRow in itemRows) |
316 | { | 316 | { |
317 | itemRow.Delete(); | 317 | itemRow.Delete(); |
318 | } | 318 | } |
319 | } | 319 | } |
320 | 320 | ||
321 | /// <summary> | 321 | /// <summary> |
322 | /// Load persisted objects from region storage. | 322 | /// Load persisted objects from region storage. |
323 | /// </summary> | 323 | /// </summary> |
324 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) | 324 | public List<SceneObjectGroup> LoadObjects(LLUUID regionUUID) |
325 | { | 325 | { |
326 | Dictionary<LLUUID, SceneObjectGroup> createdObjects = new Dictionary<LLUUID, SceneObjectGroup>(); | 326 | Dictionary<LLUUID, SceneObjectGroup> createdObjects = new Dictionary<LLUUID, SceneObjectGroup>(); |
@@ -341,17 +341,17 @@ namespace OpenSim.Data.MySQL | |||
341 | 341 | ||
342 | foreach (DataRow primRow in primsForRegion) | 342 | foreach (DataRow primRow in primsForRegion) |
343 | { | 343 | { |
344 | try | 344 | try |
345 | { | 345 | { |
346 | string uuid = (string) primRow["UUID"]; | 346 | string uuid = (string) primRow["UUID"]; |
347 | string objID = (string) primRow["SceneGroupID"]; | 347 | string objID = (string) primRow["SceneGroupID"]; |
348 | 348 | ||
349 | SceneObjectPart prim = buildPrim(primRow); | 349 | SceneObjectPart prim = buildPrim(primRow); |
350 | 350 | ||
351 | if (uuid == objID) //is new SceneObjectGroup ? | 351 | if (uuid == objID) //is new SceneObjectGroup ? |
352 | { | 352 | { |
353 | SceneObjectGroup group = new SceneObjectGroup(); | 353 | SceneObjectGroup group = new SceneObjectGroup(); |
354 | 354 | ||
355 | DataRow shapeRow = shapes.Rows.Find(Util.ToRawUuidString(prim.UUID)); | 355 | DataRow shapeRow = shapes.Rows.Find(Util.ToRawUuidString(prim.UUID)); |
356 | if (shapeRow != null) | 356 | if (shapeRow != null) |
357 | { | 357 | { |
@@ -384,11 +384,11 @@ namespace OpenSim.Data.MySQL | |||
384 | } | 384 | } |
385 | createdObjects[new LLUUID(objID)].AddPart(prim); | 385 | createdObjects[new LLUUID(objID)].AddPart(prim); |
386 | } | 386 | } |
387 | 387 | ||
388 | if (persistPrimInventories) | 388 | if (persistPrimInventories) |
389 | { | 389 | { |
390 | LoadItems(prim); | 390 | LoadItems(prim); |
391 | } | 391 | } |
392 | } | 392 | } |
393 | catch (Exception e) | 393 | catch (Exception e) |
394 | { | 394 | { |
@@ -403,7 +403,7 @@ namespace OpenSim.Data.MySQL | |||
403 | } | 403 | } |
404 | return retvals; | 404 | return retvals; |
405 | } | 405 | } |
406 | 406 | ||
407 | /// <summary> | 407 | /// <summary> |
408 | /// Load in a prim's persisted inventory. | 408 | /// Load in a prim's persisted inventory. |
409 | /// </summary> | 409 | /// </summary> |
@@ -411,31 +411,31 @@ namespace OpenSim.Data.MySQL | |||
411 | private void LoadItems(SceneObjectPart prim) | 411 | private void LoadItems(SceneObjectPart prim) |
412 | { | 412 | { |
413 | //m_log.InfoFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); | 413 | //m_log.InfoFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); |
414 | 414 | ||
415 | DataTable dbItems = m_itemsTable; | 415 | DataTable dbItems = m_itemsTable; |
416 | 416 | ||
417 | String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); | 417 | String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); |
418 | DataRow[] dbItemRows = dbItems.Select(sql); | 418 | DataRow[] dbItemRows = dbItems.Select(sql); |
419 | 419 | ||
420 | IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); | 420 | IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); |
421 | 421 | ||
422 | foreach (DataRow row in dbItemRows) | 422 | foreach (DataRow row in dbItemRows) |
423 | { | 423 | { |
424 | TaskInventoryItem item = buildItem(row); | 424 | TaskInventoryItem item = buildItem(row); |
425 | inventory.Add(item); | 425 | inventory.Add(item); |
426 | 426 | ||
427 | //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); | 427 | //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); |
428 | } | 428 | } |
429 | 429 | ||
430 | prim.RestoreInventoryItems(inventory); | 430 | prim.RestoreInventoryItems(inventory); |
431 | 431 | ||
432 | // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in | 432 | // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in |
433 | // every item). This data should really be stored in the prim table itself. | 433 | // every item). This data should really be stored in the prim table itself. |
434 | if (dbItemRows.Length > 0) | 434 | if (dbItemRows.Length > 0) |
435 | { | 435 | { |
436 | prim.FolderID = inventory[0].ParentID; | 436 | prim.FolderID = inventory[0].ParentID; |
437 | } | 437 | } |
438 | } | 438 | } |
439 | 439 | ||
440 | public void StoreTerrain(double[,] ter, LLUUID regionID) | 440 | public void StoreTerrain(double[,] ter, LLUUID regionID) |
441 | { | 441 | { |
@@ -474,8 +474,8 @@ namespace OpenSim.Data.MySQL | |||
474 | { | 474 | { |
475 | m_connection.Open(); | 475 | m_connection.Open(); |
476 | } | 476 | } |
477 | 477 | ||
478 | lock (m_dataSet) | 478 | lock (m_dataSet) |
479 | { | 479 | { |
480 | using (MySqlDataReader row = cmd.ExecuteReader()) | 480 | using (MySqlDataReader row = cmd.ExecuteReader()) |
481 | { | 481 | { |
@@ -498,7 +498,7 @@ namespace OpenSim.Data.MySQL | |||
498 | m_log.Info("[REGION DB]: No terrain found for region"); | 498 | m_log.Info("[REGION DB]: No terrain found for region"); |
499 | return null; | 499 | return null; |
500 | } | 500 | } |
501 | 501 | ||
502 | m_log.Info("[REGION DB]: Loaded terrain revision r" + rev.ToString()); | 502 | m_log.Info("[REGION DB]: Loaded terrain revision r" + rev.ToString()); |
503 | } | 503 | } |
504 | } | 504 | } |
@@ -558,7 +558,7 @@ namespace OpenSim.Data.MySQL | |||
558 | fillLandAccessRow(newAccessRow, entry, parcel.landData.globalID); | 558 | fillLandAccessRow(newAccessRow, entry, parcel.landData.globalID); |
559 | landaccesslist.Rows.Add(newAccessRow); | 559 | landaccesslist.Rows.Add(newAccessRow); |
560 | } | 560 | } |
561 | 561 | ||
562 | Commit(); | 562 | Commit(); |
563 | } | 563 | } |
564 | } | 564 | } |
@@ -624,7 +624,7 @@ namespace OpenSim.Data.MySQL | |||
624 | /*********************************************************************** | 624 | /*********************************************************************** |
625 | * | 625 | * |
626 | * Database Definition Functions | 626 | * Database Definition Functions |
627 | * | 627 | * |
628 | * This should be db agnostic as we define them in ADO.NET terms | 628 | * This should be db agnostic as we define them in ADO.NET terms |
629 | * | 629 | * |
630 | **********************************************************************/ | 630 | **********************************************************************/ |
@@ -803,7 +803,7 @@ namespace OpenSim.Data.MySQL | |||
803 | 803 | ||
804 | return shapes; | 804 | return shapes; |
805 | } | 805 | } |
806 | 806 | ||
807 | private static DataTable createItemsTable() | 807 | private static DataTable createItemsTable() |
808 | { | 808 | { |
809 | DataTable items = new DataTable("primitems"); | 809 | DataTable items = new DataTable("primitems"); |
@@ -812,8 +812,8 @@ namespace OpenSim.Data.MySQL | |||
812 | createCol(items, "primID", typeof (String)); | 812 | createCol(items, "primID", typeof (String)); |
813 | createCol(items, "assetID", typeof (String)); | 813 | createCol(items, "assetID", typeof (String)); |
814 | createCol(items, "parentFolderID", typeof (String)); | 814 | createCol(items, "parentFolderID", typeof (String)); |
815 | 815 | ||
816 | createCol(items, "invType", typeof (Int32)); | 816 | createCol(items, "invType", typeof (Int32)); |
817 | createCol(items, "assetType", typeof (Int32)); | 817 | createCol(items, "assetType", typeof (Int32)); |
818 | 818 | ||
819 | createCol(items, "name", typeof (String)); | 819 | createCol(items, "name", typeof (String)); |
@@ -834,10 +834,10 @@ namespace OpenSim.Data.MySQL | |||
834 | items.PrimaryKey = new DataColumn[] {items.Columns["itemID"]}; | 834 | items.PrimaryKey = new DataColumn[] {items.Columns["itemID"]}; |
835 | 835 | ||
836 | return items; | 836 | return items; |
837 | } | 837 | } |
838 | 838 | ||
839 | /*********************************************************************** | 839 | /*********************************************************************** |
840 | * | 840 | * |
841 | * Convert between ADO.NET <=> OpenSim Objects | 841 | * Convert between ADO.NET <=> OpenSim Objects |
842 | * | 842 | * |
843 | * These should be database independant | 843 | * These should be database independant |
@@ -932,8 +932,8 @@ namespace OpenSim.Data.MySQL | |||
932 | } | 932 | } |
933 | return prim; | 933 | return prim; |
934 | } | 934 | } |
935 | 935 | ||
936 | 936 | ||
937 | /// <summary> | 937 | /// <summary> |
938 | /// Build a prim inventory item from the persisted data. | 938 | /// Build a prim inventory item from the persisted data. |
939 | /// </summary> | 939 | /// </summary> |
@@ -942,15 +942,15 @@ namespace OpenSim.Data.MySQL | |||
942 | private static TaskInventoryItem buildItem(DataRow row) | 942 | private static TaskInventoryItem buildItem(DataRow row) |
943 | { | 943 | { |
944 | TaskInventoryItem taskItem = new TaskInventoryItem(); | 944 | TaskInventoryItem taskItem = new TaskInventoryItem(); |
945 | 945 | ||
946 | taskItem.ItemID = new LLUUID((String)row["itemID"]); | 946 | taskItem.ItemID = new LLUUID((String)row["itemID"]); |
947 | taskItem.ParentPartID = new LLUUID((String)row["primID"]); | 947 | taskItem.ParentPartID = new LLUUID((String)row["primID"]); |
948 | taskItem.AssetID = new LLUUID((String)row["assetID"]); | 948 | taskItem.AssetID = new LLUUID((String)row["assetID"]); |
949 | taskItem.ParentID = new LLUUID((String)row["parentFolderID"]); | 949 | taskItem.ParentID = new LLUUID((String)row["parentFolderID"]); |
950 | 950 | ||
951 | taskItem.InvType = Convert.ToInt32(row["invType"]); | 951 | taskItem.InvType = Convert.ToInt32(row["invType"]); |
952 | taskItem.Type = Convert.ToInt32(row["assetType"]); | 952 | taskItem.Type = Convert.ToInt32(row["assetType"]); |
953 | 953 | ||
954 | taskItem.Name = (String)row["name"]; | 954 | taskItem.Name = (String)row["name"]; |
955 | taskItem.Description = (String)row["description"]; | 955 | taskItem.Description = (String)row["description"]; |
956 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); | 956 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); |
@@ -958,15 +958,15 @@ namespace OpenSim.Data.MySQL | |||
958 | taskItem.OwnerID = new LLUUID((String)row["ownerID"]); | 958 | taskItem.OwnerID = new LLUUID((String)row["ownerID"]); |
959 | taskItem.LastOwnerID = new LLUUID((String)row["lastOwnerID"]); | 959 | taskItem.LastOwnerID = new LLUUID((String)row["lastOwnerID"]); |
960 | taskItem.GroupID = new LLUUID((String)row["groupID"]); | 960 | taskItem.GroupID = new LLUUID((String)row["groupID"]); |
961 | 961 | ||
962 | taskItem.NextOwnerMask = Convert.ToUInt32(row["nextPermissions"]); | 962 | taskItem.NextOwnerMask = Convert.ToUInt32(row["nextPermissions"]); |
963 | taskItem.OwnerMask = Convert.ToUInt32(row["currentPermissions"]); | 963 | taskItem.OwnerMask = Convert.ToUInt32(row["currentPermissions"]); |
964 | taskItem.BaseMask = Convert.ToUInt32(row["basePermissions"]); | 964 | taskItem.BaseMask = Convert.ToUInt32(row["basePermissions"]); |
965 | taskItem.EveryoneMask = Convert.ToUInt32(row["everyonePermissions"]); | 965 | taskItem.EveryoneMask = Convert.ToUInt32(row["everyonePermissions"]); |
966 | taskItem.GroupMask = Convert.ToUInt32(row["groupPermissions"]); | 966 | taskItem.GroupMask = Convert.ToUInt32(row["groupPermissions"]); |
967 | 967 | ||
968 | return taskItem; | 968 | return taskItem; |
969 | } | 969 | } |
970 | 970 | ||
971 | private static LandData buildLandData(DataRow row) | 971 | private static LandData buildLandData(DataRow row) |
972 | { | 972 | { |
@@ -1117,17 +1117,17 @@ namespace OpenSim.Data.MySQL | |||
1117 | } | 1117 | } |
1118 | } | 1118 | } |
1119 | } | 1119 | } |
1120 | 1120 | ||
1121 | private static void fillItemRow(DataRow row, TaskInventoryItem taskItem) | 1121 | private static void fillItemRow(DataRow row, TaskInventoryItem taskItem) |
1122 | { | 1122 | { |
1123 | row["itemID"] = taskItem.ItemID; | 1123 | row["itemID"] = taskItem.ItemID; |
1124 | row["primID"] = taskItem.ParentPartID; | 1124 | row["primID"] = taskItem.ParentPartID; |
1125 | row["assetID"] = taskItem.AssetID; | 1125 | row["assetID"] = taskItem.AssetID; |
1126 | row["parentFolderID"] = taskItem.ParentID; | 1126 | row["parentFolderID"] = taskItem.ParentID; |
1127 | 1127 | ||
1128 | row["invType"] = taskItem.InvType; | 1128 | row["invType"] = taskItem.InvType; |
1129 | row["assetType"] = taskItem.Type; | 1129 | row["assetType"] = taskItem.Type; |
1130 | 1130 | ||
1131 | row["name"] = taskItem.Name; | 1131 | row["name"] = taskItem.Name; |
1132 | row["description"] = taskItem.Description; | 1132 | row["description"] = taskItem.Description; |
1133 | row["creationDate"] = taskItem.CreationDate; | 1133 | row["creationDate"] = taskItem.CreationDate; |
@@ -1140,7 +1140,7 @@ namespace OpenSim.Data.MySQL | |||
1140 | row["basePermissions"] = taskItem.BaseMask; | 1140 | row["basePermissions"] = taskItem.BaseMask; |
1141 | row["everyonePermissions"] = taskItem.EveryoneMask; | 1141 | row["everyonePermissions"] = taskItem.EveryoneMask; |
1142 | row["groupPermissions"] = taskItem.GroupMask; | 1142 | row["groupPermissions"] = taskItem.GroupMask; |
1143 | } | 1143 | } |
1144 | 1144 | ||
1145 | private static void fillLandRow(DataRow row, LandData land, LLUUID regionUUID) | 1145 | private static void fillLandRow(DataRow row, LandData land, LLUUID regionUUID) |
1146 | { | 1146 | { |
@@ -1322,39 +1322,39 @@ namespace OpenSim.Data.MySQL | |||
1322 | else | 1322 | else |
1323 | { | 1323 | { |
1324 | fillShapeRow(shapeRow, prim); | 1324 | fillShapeRow(shapeRow, prim); |
1325 | } | 1325 | } |
1326 | } | 1326 | } |
1327 | 1327 | ||
1328 | // see IRegionDatastore | 1328 | // see IRegionDatastore |
1329 | public void StorePrimInventory(LLUUID primID, ICollection<TaskInventoryItem> items) | 1329 | public void StorePrimInventory(LLUUID primID, ICollection<TaskInventoryItem> items) |
1330 | { | 1330 | { |
1331 | if (!persistPrimInventories) | 1331 | if (!persistPrimInventories) |
1332 | return; | 1332 | return; |
1333 | 1333 | ||
1334 | m_log.InfoFormat("[REGION DB]: Persisting Prim Inventory with prim ID {0}", primID); | 1334 | m_log.InfoFormat("[REGION DB]: Persisting Prim Inventory with prim ID {0}", primID); |
1335 | 1335 | ||
1336 | // For now, we're just going to crudely remove all the previous inventory items | 1336 | // For now, we're just going to crudely remove all the previous inventory items |
1337 | // no matter whether they have changed or not, and replace them with the current set. | 1337 | // no matter whether they have changed or not, and replace them with the current set. |
1338 | lock (m_dataSet) | 1338 | lock (m_dataSet) |
1339 | { | 1339 | { |
1340 | RemoveItems(primID); | 1340 | RemoveItems(primID); |
1341 | 1341 | ||
1342 | // repalce with current inventory details | 1342 | // repalce with current inventory details |
1343 | foreach (TaskInventoryItem newItem in items) | 1343 | foreach (TaskInventoryItem newItem in items) |
1344 | { | 1344 | { |
1345 | // m_log.InfoFormat( | 1345 | // m_log.InfoFormat( |
1346 | // "[REGION DB]: " + | 1346 | // "[REGION DB]: " + |
1347 | // "Adding item {0}, {1} to prim ID {2}", | 1347 | // "Adding item {0}, {1} to prim ID {2}", |
1348 | // newItem.Name, newItem.ItemID, newItem.ParentPartID); | 1348 | // newItem.Name, newItem.ItemID, newItem.ParentPartID); |
1349 | 1349 | ||
1350 | DataRow newItemRow = m_itemsTable.NewRow(); | 1350 | DataRow newItemRow = m_itemsTable.NewRow(); |
1351 | fillItemRow(newItemRow, newItem); | 1351 | fillItemRow(newItemRow, newItem); |
1352 | m_itemsTable.Rows.Add(newItemRow); | 1352 | m_itemsTable.Rows.Add(newItemRow); |
1353 | } | 1353 | } |
1354 | } | 1354 | } |
1355 | 1355 | ||
1356 | Commit(); | 1356 | Commit(); |
1357 | } | 1357 | } |
1358 | 1358 | ||
1359 | /*********************************************************************** | 1359 | /*********************************************************************** |
1360 | * | 1360 | * |
@@ -1447,9 +1447,9 @@ namespace OpenSim.Data.MySQL | |||
1447 | } | 1447 | } |
1448 | sql += subsql; | 1448 | sql += subsql; |
1449 | sql += ")"; | 1449 | sql += ")"; |
1450 | 1450 | ||
1451 | //m_log.InfoFormat("[DATASTORE]: defineTable() sql {0}", sql); | 1451 | //m_log.InfoFormat("[DATASTORE]: defineTable() sql {0}", sql); |
1452 | 1452 | ||
1453 | return sql; | 1453 | return sql; |
1454 | } | 1454 | } |
1455 | 1455 | ||
@@ -1466,7 +1466,7 @@ namespace OpenSim.Data.MySQL | |||
1466 | /// This is a convenience function that collapses 5 repetitive | 1466 | /// This is a convenience function that collapses 5 repetitive |
1467 | /// lines for defining MySqlParameters to 2 parameters: | 1467 | /// lines for defining MySqlParameters to 2 parameters: |
1468 | /// column name and database type. | 1468 | /// column name and database type. |
1469 | /// | 1469 | /// |
1470 | /// It assumes certain conventions like ?param as the param | 1470 | /// It assumes certain conventions like ?param as the param |
1471 | /// name to replace in parametrized queries, and that source | 1471 | /// name to replace in parametrized queries, and that source |
1472 | /// version is always current version, both of which are fine | 1472 | /// version is always current version, both of which are fine |
@@ -1498,7 +1498,7 @@ namespace OpenSim.Data.MySQL | |||
1498 | delete.Connection = conn; | 1498 | delete.Connection = conn; |
1499 | da.DeleteCommand = delete; | 1499 | da.DeleteCommand = delete; |
1500 | } | 1500 | } |
1501 | 1501 | ||
1502 | private void SetupItemsCommands(MySqlDataAdapter da, MySqlConnection conn) | 1502 | private void SetupItemsCommands(MySqlDataAdapter da, MySqlConnection conn) |
1503 | { | 1503 | { |
1504 | da.InsertCommand = createInsertCommand("primitems", m_itemsTable); | 1504 | da.InsertCommand = createInsertCommand("primitems", m_itemsTable); |
@@ -1511,7 +1511,7 @@ namespace OpenSim.Data.MySQL | |||
1511 | delete.Parameters.Add(createMySqlParameter("itemID", typeof (String))); | 1511 | delete.Parameters.Add(createMySqlParameter("itemID", typeof (String))); |
1512 | delete.Connection = conn; | 1512 | delete.Connection = conn; |
1513 | da.DeleteCommand = delete; | 1513 | da.DeleteCommand = delete; |
1514 | } | 1514 | } |
1515 | 1515 | ||
1516 | private void SetupTerrainCommands(MySqlDataAdapter da, MySqlConnection conn) | 1516 | private void SetupTerrainCommands(MySqlDataAdapter da, MySqlConnection conn) |
1517 | { | 1517 | { |
@@ -1597,7 +1597,7 @@ namespace OpenSim.Data.MySQL | |||
1597 | { | 1597 | { |
1598 | m_log.WarnFormat("[REGION DB]: Shapes Table Already Exists: {0}", e); | 1598 | m_log.WarnFormat("[REGION DB]: Shapes Table Already Exists: {0}", e); |
1599 | } | 1599 | } |
1600 | 1600 | ||
1601 | try | 1601 | try |
1602 | { | 1602 | { |
1603 | icmd.ExecuteNonQuery(); | 1603 | icmd.ExecuteNonQuery(); |
@@ -1605,7 +1605,7 @@ namespace OpenSim.Data.MySQL | |||
1605 | catch (MySqlException e) | 1605 | catch (MySqlException e) |
1606 | { | 1606 | { |
1607 | m_log.WarnFormat("[REGION DB]: Items Table Already Exists: {0}", e); | 1607 | m_log.WarnFormat("[REGION DB]: Items Table Already Exists: {0}", e); |
1608 | } | 1608 | } |
1609 | 1609 | ||
1610 | try | 1610 | try |
1611 | { | 1611 | { |
@@ -1643,7 +1643,7 @@ namespace OpenSim.Data.MySQL | |||
1643 | MySqlCommand shapeSelectCmd = new MySqlCommand(m_shapeSelect, conn); | 1643 | MySqlCommand shapeSelectCmd = new MySqlCommand(m_shapeSelect, conn); |
1644 | MySqlDataAdapter sDa = new MySqlDataAdapter(shapeSelectCmd); | 1644 | MySqlDataAdapter sDa = new MySqlDataAdapter(shapeSelectCmd); |
1645 | MySqlCommand itemsSelectCmd = new MySqlCommand(m_itemsSelect, conn); | 1645 | MySqlCommand itemsSelectCmd = new MySqlCommand(m_itemsSelect, conn); |
1646 | MySqlDataAdapter iDa = new MySqlDataAdapter(itemsSelectCmd); | 1646 | MySqlDataAdapter iDa = new MySqlDataAdapter(itemsSelectCmd); |
1647 | MySqlCommand terrainSelectCmd = new MySqlCommand(m_terrainSelect, conn); | 1647 | MySqlCommand terrainSelectCmd = new MySqlCommand(m_terrainSelect, conn); |
1648 | MySqlDataAdapter tDa = new MySqlDataAdapter(terrainSelectCmd); | 1648 | MySqlDataAdapter tDa = new MySqlDataAdapter(terrainSelectCmd); |
1649 | MySqlCommand landSelectCmd = new MySqlCommand(m_landSelect, conn); | 1649 | MySqlCommand landSelectCmd = new MySqlCommand(m_landSelect, conn); |
@@ -1656,10 +1656,10 @@ namespace OpenSim.Data.MySQL | |||
1656 | { | 1656 | { |
1657 | pDa.Fill(tmpDS, "prims"); | 1657 | pDa.Fill(tmpDS, "prims"); |
1658 | sDa.Fill(tmpDS, "primshapes"); | 1658 | sDa.Fill(tmpDS, "primshapes"); |
1659 | 1659 | ||
1660 | if (persistPrimInventories) | 1660 | if (persistPrimInventories) |
1661 | iDa.Fill(tmpDS, "primitems"); | 1661 | iDa.Fill(tmpDS, "primitems"); |
1662 | 1662 | ||
1663 | tDa.Fill(tmpDS, "terrain"); | 1663 | tDa.Fill(tmpDS, "terrain"); |
1664 | lDa.Fill(tmpDS, "land"); | 1664 | lDa.Fill(tmpDS, "land"); |
1665 | lalDa.Fill(tmpDS, "landaccesslist"); | 1665 | lalDa.Fill(tmpDS, "landaccesslist"); |
@@ -1672,10 +1672,10 @@ namespace OpenSim.Data.MySQL | |||
1672 | 1672 | ||
1673 | pDa.Fill(tmpDS, "prims"); | 1673 | pDa.Fill(tmpDS, "prims"); |
1674 | sDa.Fill(tmpDS, "primshapes"); | 1674 | sDa.Fill(tmpDS, "primshapes"); |
1675 | 1675 | ||
1676 | if (persistPrimInventories) | 1676 | if (persistPrimInventories) |
1677 | iDa.Fill(tmpDS, "primitems"); | 1677 | iDa.Fill(tmpDS, "primitems"); |
1678 | 1678 | ||
1679 | tDa.Fill(tmpDS, "terrain"); | 1679 | tDa.Fill(tmpDS, "terrain"); |
1680 | lDa.Fill(tmpDS, "land"); | 1680 | lDa.Fill(tmpDS, "land"); |
1681 | lalDa.Fill(tmpDS, "landaccesslist"); | 1681 | lalDa.Fill(tmpDS, "landaccesslist"); |
@@ -1688,7 +1688,7 @@ namespace OpenSim.Data.MySQL | |||
1688 | return false; | 1688 | return false; |
1689 | } | 1689 | } |
1690 | } | 1690 | } |
1691 | 1691 | ||
1692 | foreach (DataColumn col in createShapeTable().Columns) | 1692 | foreach (DataColumn col in createShapeTable().Columns) |
1693 | { | 1693 | { |
1694 | if (!tmpDS.Tables["primshapes"].Columns.Contains(col.ColumnName)) | 1694 | if (!tmpDS.Tables["primshapes"].Columns.Contains(col.ColumnName)) |
@@ -1697,9 +1697,9 @@ namespace OpenSim.Data.MySQL | |||
1697 | return false; | 1697 | return false; |
1698 | } | 1698 | } |
1699 | } | 1699 | } |
1700 | 1700 | ||
1701 | // XXX primitems should probably go here eventually | 1701 | // XXX primitems should probably go here eventually |
1702 | 1702 | ||
1703 | foreach (DataColumn col in createTerrainTable().Columns) | 1703 | foreach (DataColumn col in createTerrainTable().Columns) |
1704 | { | 1704 | { |
1705 | if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName)) | 1705 | if (!tmpDS.Tables["terrain"].Columns.Contains(col.ColumnName)) |
@@ -1708,7 +1708,7 @@ namespace OpenSim.Data.MySQL | |||
1708 | return false; | 1708 | return false; |
1709 | } | 1709 | } |
1710 | } | 1710 | } |
1711 | 1711 | ||
1712 | foreach (DataColumn col in createLandTable().Columns) | 1712 | foreach (DataColumn col in createLandTable().Columns) |
1713 | { | 1713 | { |
1714 | if (!tmpDS.Tables["land"].Columns.Contains(col.ColumnName)) | 1714 | if (!tmpDS.Tables["land"].Columns.Contains(col.ColumnName)) |
@@ -1717,7 +1717,7 @@ namespace OpenSim.Data.MySQL | |||
1717 | return false; | 1717 | return false; |
1718 | } | 1718 | } |
1719 | } | 1719 | } |
1720 | 1720 | ||
1721 | foreach (DataColumn col in createLandAccessListTable().Columns) | 1721 | foreach (DataColumn col in createLandAccessListTable().Columns) |
1722 | { | 1722 | { |
1723 | if (!tmpDS.Tables["landaccesslist"].Columns.Contains(col.ColumnName)) | 1723 | if (!tmpDS.Tables["landaccesslist"].Columns.Contains(col.ColumnName)) |
@@ -1726,7 +1726,7 @@ namespace OpenSim.Data.MySQL | |||
1726 | return false; | 1726 | return false; |
1727 | } | 1727 | } |
1728 | } | 1728 | } |
1729 | 1729 | ||
1730 | return true; | 1730 | return true; |
1731 | } | 1731 | } |
1732 | 1732 | ||
@@ -1783,7 +1783,7 @@ namespace OpenSim.Data.MySQL | |||
1783 | else if (type == typeof (Int64)) | 1783 | else if (type == typeof (Int64)) |
1784 | { | 1784 | { |
1785 | return "bigint"; | 1785 | return "bigint"; |
1786 | } | 1786 | } |
1787 | else if (type == typeof (Double)) | 1787 | else if (type == typeof (Double)) |
1788 | { | 1788 | { |
1789 | return "float"; | 1789 | return "float"; |