diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/SQLite/SQLiteRegionData.cs | 116 |
1 files changed, 58 insertions, 58 deletions
diff --git a/OpenSim/Data/SQLite/SQLiteRegionData.cs b/OpenSim/Data/SQLite/SQLiteRegionData.cs index 1b577db..6a16a88 100644 --- a/OpenSim/Data/SQLite/SQLiteRegionData.cs +++ b/OpenSim/Data/SQLite/SQLiteRegionData.cs | |||
@@ -90,11 +90,11 @@ namespace OpenSim.Data.SQLite | |||
90 | 90 | ||
91 | SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, m_conn); | 91 | SqliteCommand shapeSelectCmd = new SqliteCommand(shapeSelect, m_conn); |
92 | shapeDa = new SqliteDataAdapter(shapeSelectCmd); | 92 | shapeDa = new SqliteDataAdapter(shapeSelectCmd); |
93 | // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); | 93 | // SqliteCommandBuilder shapeCb = new SqliteCommandBuilder(shapeDa); |
94 | 94 | ||
95 | SqliteCommand itemsSelectCmd = new SqliteCommand(itemsSelect, m_conn); | 95 | SqliteCommand itemsSelectCmd = new SqliteCommand(itemsSelect, m_conn); |
96 | itemsDa = new SqliteDataAdapter(itemsSelectCmd); | 96 | itemsDa = new SqliteDataAdapter(itemsSelectCmd); |
97 | 97 | ||
98 | SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, m_conn); | 98 | SqliteCommand terrainSelectCmd = new SqliteCommand(terrainSelect, m_conn); |
99 | terrainDa = new SqliteDataAdapter(terrainSelectCmd); | 99 | terrainDa = new SqliteDataAdapter(terrainSelectCmd); |
100 | 100 | ||
@@ -117,7 +117,7 @@ namespace OpenSim.Data.SQLite | |||
117 | 117 | ||
118 | ds.Tables.Add(createShapeTable()); | 118 | ds.Tables.Add(createShapeTable()); |
119 | setupShapeCommands(shapeDa, m_conn); | 119 | setupShapeCommands(shapeDa, m_conn); |
120 | 120 | ||
121 | if (persistPrimInventories) | 121 | if (persistPrimInventories) |
122 | { | 122 | { |
123 | ds.Tables.Add(createItemsTable()); | 123 | ds.Tables.Add(createItemsTable()); |
@@ -183,8 +183,8 @@ namespace OpenSim.Data.SQLite | |||
183 | { | 183 | { |
184 | foreach (SceneObjectPart prim in obj.Children.Values) | 184 | foreach (SceneObjectPart prim in obj.Children.Values) |
185 | { | 185 | { |
186 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0 | 186 | if ((prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Physics) == 0 |
187 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0 | 187 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.Temporary) == 0 |
188 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0) | 188 | && (prim.GetEffectiveObjectFlags() & (uint)LLObject.ObjectFlags.TemporaryOnRez) == 0) |
189 | { | 189 | { |
190 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); | 190 | m_log.Info("[REGION DB]: Adding obj: " + obj.UUID + " to region: " + regionUUID); |
@@ -210,7 +210,7 @@ namespace OpenSim.Data.SQLite | |||
210 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) | 210 | public void RemoveObject(LLUUID obj, LLUUID regionUUID) |
211 | { | 211 | { |
212 | m_log.InfoFormat("[REGION DB]: Removing obj: {0} from region: {1}", obj.UUID, regionUUID); | 212 | m_log.InfoFormat("[REGION DB]: Removing obj: {0} from region: {1}", obj.UUID, regionUUID); |
213 | 213 | ||
214 | DataTable prims = ds.Tables["prims"]; | 214 | DataTable prims = ds.Tables["prims"]; |
215 | DataTable shapes = ds.Tables["primshapes"]; | 215 | DataTable shapes = ds.Tables["primshapes"]; |
216 | 216 | ||
@@ -234,7 +234,7 @@ namespace OpenSim.Data.SQLite | |||
234 | } | 234 | } |
235 | 235 | ||
236 | // Remove prim row | 236 | // Remove prim row |
237 | row.Delete(); | 237 | row.Delete(); |
238 | } | 238 | } |
239 | } | 239 | } |
240 | 240 | ||
@@ -247,11 +247,11 @@ namespace OpenSim.Data.SQLite | |||
247 | /// </summary> | 247 | /// </summary> |
248 | private void RemoveItems(LLUUID uuid) | 248 | private void RemoveItems(LLUUID uuid) |
249 | { | 249 | { |
250 | DataTable items = ds.Tables["primitems"]; | 250 | DataTable items = ds.Tables["primitems"]; |
251 | 251 | ||
252 | String sql = String.Format("primID = '{0}'", uuid); | 252 | String sql = String.Format("primID = '{0}'", uuid); |
253 | DataRow[] itemRows = items.Select(sql); | 253 | DataRow[] itemRows = items.Select(sql); |
254 | 254 | ||
255 | foreach (DataRow itemRow in itemRows) | 255 | foreach (DataRow itemRow in itemRows) |
256 | { | 256 | { |
257 | itemRow.Delete(); | 257 | itemRow.Delete(); |
@@ -286,7 +286,7 @@ namespace OpenSim.Data.SQLite | |||
286 | try | 286 | try |
287 | { | 287 | { |
288 | SceneObjectPart prim = null; | 288 | SceneObjectPart prim = null; |
289 | 289 | ||
290 | string uuid = (string) primRow["UUID"]; | 290 | string uuid = (string) primRow["UUID"]; |
291 | string objID = (string) primRow["SceneGroupID"]; | 291 | string objID = (string) primRow["SceneGroupID"]; |
292 | if (uuid == objID) //is new SceneObjectGroup ? | 292 | if (uuid == objID) //is new SceneObjectGroup ? |
@@ -353,25 +353,25 @@ namespace OpenSim.Data.SQLite | |||
353 | private void LoadItems(SceneObjectPart prim) | 353 | private void LoadItems(SceneObjectPart prim) |
354 | { | 354 | { |
355 | //m_log.DebugFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); | 355 | //m_log.DebugFormat("[DATASTORE]: Loading inventory for {0}, {1}", prim.Name, prim.UUID); |
356 | 356 | ||
357 | DataTable dbItems = ds.Tables["primitems"]; | 357 | DataTable dbItems = ds.Tables["primitems"]; |
358 | 358 | ||
359 | String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); | 359 | String sql = String.Format("primID = '{0}'", prim.UUID.ToString()); |
360 | DataRow[] dbItemRows = dbItems.Select(sql); | 360 | DataRow[] dbItemRows = dbItems.Select(sql); |
361 | 361 | ||
362 | IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); | 362 | IList<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); |
363 | 363 | ||
364 | foreach (DataRow row in dbItemRows) | 364 | foreach (DataRow row in dbItemRows) |
365 | { | 365 | { |
366 | TaskInventoryItem item = buildItem(row); | 366 | TaskInventoryItem item = buildItem(row); |
367 | inventory.Add(item); | 367 | inventory.Add(item); |
368 | 368 | ||
369 | //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); | 369 | //m_log.DebugFormat("[DATASTORE]: Restored item {0}, {1}", item.Name, item.ItemID); |
370 | } | 370 | } |
371 | 371 | ||
372 | prim.RestoreInventoryItems(inventory); | 372 | prim.RestoreInventoryItems(inventory); |
373 | 373 | ||
374 | // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in | 374 | // XXX A nasty little hack to recover the folder id for the prim (which is currently stored in |
375 | // every item). This data should really be stored in the prim table itself. | 375 | // every item). This data should really be stored in the prim table itself. |
376 | if (dbItemRows.Length > 0) | 376 | if (dbItemRows.Length > 0) |
377 | { | 377 | { |
@@ -548,12 +548,12 @@ namespace OpenSim.Data.SQLite | |||
548 | { | 548 | { |
549 | primDa.Update(ds, "prims"); | 549 | primDa.Update(ds, "prims"); |
550 | shapeDa.Update(ds, "primshapes"); | 550 | shapeDa.Update(ds, "primshapes"); |
551 | 551 | ||
552 | if (persistPrimInventories) | 552 | if (persistPrimInventories) |
553 | { | 553 | { |
554 | itemsDa.Update(ds, "primitems"); | 554 | itemsDa.Update(ds, "primitems"); |
555 | } | 555 | } |
556 | 556 | ||
557 | terrainDa.Update(ds, "terrain"); | 557 | terrainDa.Update(ds, "terrain"); |
558 | landDa.Update(ds, "land"); | 558 | landDa.Update(ds, "land"); |
559 | landAccessListDa.Update(ds, "landaccesslist"); | 559 | landAccessListDa.Update(ds, "landaccesslist"); |
@@ -569,7 +569,7 @@ namespace OpenSim.Data.SQLite | |||
569 | /*********************************************************************** | 569 | /*********************************************************************** |
570 | * | 570 | * |
571 | * Database Definition Functions | 571 | * Database Definition Functions |
572 | * | 572 | * |
573 | * This should be db agnostic as we define them in ADO.NET terms | 573 | * This should be db agnostic as we define them in ADO.NET terms |
574 | * | 574 | * |
575 | **********************************************************************/ | 575 | **********************************************************************/ |
@@ -705,8 +705,8 @@ namespace OpenSim.Data.SQLite | |||
705 | createCol(items, "primID", typeof (String)); | 705 | createCol(items, "primID", typeof (String)); |
706 | createCol(items, "assetID", typeof (String)); | 706 | createCol(items, "assetID", typeof (String)); |
707 | createCol(items, "parentFolderID", typeof (String)); | 707 | createCol(items, "parentFolderID", typeof (String)); |
708 | 708 | ||
709 | createCol(items, "invType", typeof (Int32)); | 709 | createCol(items, "invType", typeof (Int32)); |
710 | createCol(items, "assetType", typeof (Int32)); | 710 | createCol(items, "assetType", typeof (Int32)); |
711 | 711 | ||
712 | createCol(items, "name", typeof (String)); | 712 | createCol(items, "name", typeof (String)); |
@@ -784,7 +784,7 @@ namespace OpenSim.Data.SQLite | |||
784 | } | 784 | } |
785 | 785 | ||
786 | /*********************************************************************** | 786 | /*********************************************************************** |
787 | * | 787 | * |
788 | * Convert between ADO.NET <=> OpenSim Objects | 788 | * Convert between ADO.NET <=> OpenSim Objects |
789 | * | 789 | * |
790 | * These should be database independant | 790 | * These should be database independant |
@@ -897,7 +897,7 @@ namespace OpenSim.Data.SQLite | |||
897 | 897 | ||
898 | return prim; | 898 | return prim; |
899 | } | 899 | } |
900 | 900 | ||
901 | /// <summary> | 901 | /// <summary> |
902 | /// Build a prim inventory item from the persisted data. | 902 | /// Build a prim inventory item from the persisted data. |
903 | /// </summary> | 903 | /// </summary> |
@@ -906,15 +906,15 @@ namespace OpenSim.Data.SQLite | |||
906 | private static TaskInventoryItem buildItem(DataRow row) | 906 | private static TaskInventoryItem buildItem(DataRow row) |
907 | { | 907 | { |
908 | TaskInventoryItem taskItem = new TaskInventoryItem(); | 908 | TaskInventoryItem taskItem = new TaskInventoryItem(); |
909 | 909 | ||
910 | taskItem.ItemID = new LLUUID((String)row["itemID"]); | 910 | taskItem.ItemID = new LLUUID((String)row["itemID"]); |
911 | taskItem.ParentPartID = new LLUUID((String)row["primID"]); | 911 | taskItem.ParentPartID = new LLUUID((String)row["primID"]); |
912 | taskItem.AssetID = new LLUUID((String)row["assetID"]); | 912 | taskItem.AssetID = new LLUUID((String)row["assetID"]); |
913 | taskItem.ParentID = new LLUUID((String)row["parentFolderID"]); | 913 | taskItem.ParentID = new LLUUID((String)row["parentFolderID"]); |
914 | 914 | ||
915 | taskItem.InvType = Convert.ToInt32(row["invType"]); | 915 | taskItem.InvType = Convert.ToInt32(row["invType"]); |
916 | taskItem.Type = Convert.ToInt32(row["assetType"]); | 916 | taskItem.Type = Convert.ToInt32(row["assetType"]); |
917 | 917 | ||
918 | taskItem.Name = (String)row["name"]; | 918 | taskItem.Name = (String)row["name"]; |
919 | taskItem.Description = (String)row["description"]; | 919 | taskItem.Description = (String)row["description"]; |
920 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); | 920 | taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]); |
@@ -922,13 +922,13 @@ namespace OpenSim.Data.SQLite | |||
922 | taskItem.OwnerID = new LLUUID((String)row["ownerID"]); | 922 | taskItem.OwnerID = new LLUUID((String)row["ownerID"]); |
923 | taskItem.LastOwnerID = new LLUUID((String)row["lastOwnerID"]); | 923 | taskItem.LastOwnerID = new LLUUID((String)row["lastOwnerID"]); |
924 | taskItem.GroupID = new LLUUID((String)row["groupID"]); | 924 | taskItem.GroupID = new LLUUID((String)row["groupID"]); |
925 | 925 | ||
926 | taskItem.NextOwnerMask = Convert.ToUInt32(row["nextPermissions"]); | 926 | taskItem.NextOwnerMask = Convert.ToUInt32(row["nextPermissions"]); |
927 | taskItem.OwnerMask = Convert.ToUInt32(row["currentPermissions"]); | 927 | taskItem.OwnerMask = Convert.ToUInt32(row["currentPermissions"]); |
928 | taskItem.BaseMask = Convert.ToUInt32(row["basePermissions"]); | 928 | taskItem.BaseMask = Convert.ToUInt32(row["basePermissions"]); |
929 | taskItem.EveryoneMask = Convert.ToUInt32(row["everyonePermissions"]); | 929 | taskItem.EveryoneMask = Convert.ToUInt32(row["everyonePermissions"]); |
930 | taskItem.GroupMask = Convert.ToUInt32(row["groupPermissions"]); | 930 | taskItem.GroupMask = Convert.ToUInt32(row["groupPermissions"]); |
931 | 931 | ||
932 | return taskItem; | 932 | return taskItem; |
933 | } | 933 | } |
934 | 934 | ||
@@ -990,14 +990,14 @@ namespace OpenSim.Data.SQLite | |||
990 | cmd.ExecuteNonQuery(); | 990 | cmd.ExecuteNonQuery(); |
991 | m_conn.Close(); | 991 | m_conn.Close(); |
992 | m_conn.Dispose(); | 992 | m_conn.Dispose(); |
993 | 993 | ||
994 | m_log.Error("[REGION DB]: The land table was recently updated. You need to restart the simulator. Exiting now."); | 994 | m_log.Error("[REGION DB]: The land table was recently updated. You need to restart the simulator. Exiting now."); |
995 | 995 | ||
996 | Thread.Sleep(10000); | 996 | Thread.Sleep(10000); |
997 | 997 | ||
998 | // ICK! but it's better then A thousand red SQLITE error messages! | 998 | // ICK! but it's better then A thousand red SQLITE error messages! |
999 | Environment.Exit(0); | 999 | Environment.Exit(0); |
1000 | 1000 | ||
1001 | } | 1001 | } |
1002 | catch (Exception) | 1002 | catch (Exception) |
1003 | { | 1003 | { |
@@ -1006,7 +1006,7 @@ namespace OpenSim.Data.SQLite | |||
1006 | Environment.Exit(0); | 1006 | Environment.Exit(0); |
1007 | } | 1007 | } |
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | return newData; | 1010 | return newData; |
1011 | } | 1011 | } |
1012 | 1012 | ||
@@ -1107,17 +1107,17 @@ namespace OpenSim.Data.SQLite | |||
1107 | row["SitTargetOrientY"] = sitTargetOrient.Y; | 1107 | row["SitTargetOrientY"] = sitTargetOrient.Y; |
1108 | row["SitTargetOrientZ"] = sitTargetOrient.Z; | 1108 | row["SitTargetOrientZ"] = sitTargetOrient.Z; |
1109 | } | 1109 | } |
1110 | 1110 | ||
1111 | private static void fillItemRow(DataRow row, TaskInventoryItem taskItem) | 1111 | private static void fillItemRow(DataRow row, TaskInventoryItem taskItem) |
1112 | { | 1112 | { |
1113 | row["itemID"] = taskItem.ItemID; | 1113 | row["itemID"] = taskItem.ItemID; |
1114 | row["primID"] = taskItem.ParentPartID; | 1114 | row["primID"] = taskItem.ParentPartID; |
1115 | row["assetID"] = taskItem.AssetID; | 1115 | row["assetID"] = taskItem.AssetID; |
1116 | row["parentFolderID"] = taskItem.ParentID; | 1116 | row["parentFolderID"] = taskItem.ParentID; |
1117 | 1117 | ||
1118 | row["invType"] = taskItem.InvType; | 1118 | row["invType"] = taskItem.InvType; |
1119 | row["assetType"] = taskItem.Type; | 1119 | row["assetType"] = taskItem.Type; |
1120 | 1120 | ||
1121 | row["name"] = taskItem.Name; | 1121 | row["name"] = taskItem.Name; |
1122 | row["description"] = taskItem.Description; | 1122 | row["description"] = taskItem.Description; |
1123 | row["creationDate"] = taskItem.CreationDate; | 1123 | row["creationDate"] = taskItem.CreationDate; |
@@ -1294,37 +1294,37 @@ namespace OpenSim.Data.SQLite | |||
1294 | fillShapeRow(shapeRow, prim); | 1294 | fillShapeRow(shapeRow, prim); |
1295 | } | 1295 | } |
1296 | } | 1296 | } |
1297 | 1297 | ||
1298 | // see IRegionDatastore | 1298 | // see IRegionDatastore |
1299 | public void StorePrimInventory(LLUUID primID, ICollection<TaskInventoryItem> items) | 1299 | public void StorePrimInventory(LLUUID primID, ICollection<TaskInventoryItem> items) |
1300 | { | 1300 | { |
1301 | if (!persistPrimInventories) | 1301 | if (!persistPrimInventories) |
1302 | return; | 1302 | return; |
1303 | 1303 | ||
1304 | m_log.InfoFormat("[REGION DB]: Entered StorePrimInventory with prim ID {0}", primID); | 1304 | m_log.InfoFormat("[REGION DB]: Entered StorePrimInventory with prim ID {0}", primID); |
1305 | 1305 | ||
1306 | DataTable dbItems = ds.Tables["primitems"]; | 1306 | DataTable dbItems = ds.Tables["primitems"]; |
1307 | 1307 | ||
1308 | // For now, we're just going to crudely remove all the previous inventory items | 1308 | // For now, we're just going to crudely remove all the previous inventory items |
1309 | // no matter whether they have changed or not, and replace them with the current set. | 1309 | // no matter whether they have changed or not, and replace them with the current set. |
1310 | lock (ds) | 1310 | lock (ds) |
1311 | { | 1311 | { |
1312 | RemoveItems(primID); | 1312 | RemoveItems(primID); |
1313 | 1313 | ||
1314 | // repalce with current inventory details | 1314 | // repalce with current inventory details |
1315 | foreach (TaskInventoryItem newItem in items) | 1315 | foreach (TaskInventoryItem newItem in items) |
1316 | { | 1316 | { |
1317 | // m_log.InfoFormat( | 1317 | // m_log.InfoFormat( |
1318 | // "[DATASTORE]: ", | 1318 | // "[DATASTORE]: ", |
1319 | // "Adding item {0}, {1} to prim ID {2}", | 1319 | // "Adding item {0}, {1} to prim ID {2}", |
1320 | // newItem.Name, newItem.ItemID, newItem.ParentPartID); | 1320 | // newItem.Name, newItem.ItemID, newItem.ParentPartID); |
1321 | 1321 | ||
1322 | DataRow newItemRow = dbItems.NewRow(); | 1322 | DataRow newItemRow = dbItems.NewRow(); |
1323 | fillItemRow(newItemRow, newItem); | 1323 | fillItemRow(newItemRow, newItem); |
1324 | dbItems.Rows.Add(newItemRow); | 1324 | dbItems.Rows.Add(newItemRow); |
1325 | } | 1325 | } |
1326 | } | 1326 | } |
1327 | 1327 | ||
1328 | Commit(); | 1328 | Commit(); |
1329 | } | 1329 | } |
1330 | 1330 | ||
@@ -1436,7 +1436,7 @@ namespace OpenSim.Data.SQLite | |||
1436 | /// This is a convenience function that collapses 5 repetitive | 1436 | /// This is a convenience function that collapses 5 repetitive |
1437 | /// lines for defining SqliteParameters to 2 parameters: | 1437 | /// lines for defining SqliteParameters to 2 parameters: |
1438 | /// column name and database type. | 1438 | /// column name and database type. |
1439 | /// | 1439 | /// |
1440 | /// It assumes certain conventions like :param as the param | 1440 | /// It assumes certain conventions like :param as the param |
1441 | /// name to replace in parametrized queries, and that source | 1441 | /// name to replace in parametrized queries, and that source |
1442 | /// version is always current version, both of which are fine | 1442 | /// version is always current version, both of which are fine |
@@ -1451,7 +1451,7 @@ namespace OpenSim.Data.SQLite | |||
1451 | param.SourceColumn = name; | 1451 | param.SourceColumn = name; |
1452 | param.SourceVersion = DataRowVersion.Current; | 1452 | param.SourceVersion = DataRowVersion.Current; |
1453 | return param; | 1453 | return param; |
1454 | } | 1454 | } |
1455 | 1455 | ||
1456 | private void setupPrimCommands(SqliteDataAdapter da, SqliteConnection conn) | 1456 | private void setupPrimCommands(SqliteDataAdapter da, SqliteConnection conn) |
1457 | { | 1457 | { |
@@ -1466,7 +1466,7 @@ namespace OpenSim.Data.SQLite | |||
1466 | delete.Connection = conn; | 1466 | delete.Connection = conn; |
1467 | da.DeleteCommand = delete; | 1467 | da.DeleteCommand = delete; |
1468 | } | 1468 | } |
1469 | 1469 | ||
1470 | private void setupItemsCommands(SqliteDataAdapter da, SqliteConnection conn) | 1470 | private void setupItemsCommands(SqliteDataAdapter da, SqliteConnection conn) |
1471 | { | 1471 | { |
1472 | da.InsertCommand = createInsertCommand("primitems", ds.Tables["primitems"]); | 1472 | da.InsertCommand = createInsertCommand("primitems", ds.Tables["primitems"]); |
@@ -1479,7 +1479,7 @@ namespace OpenSim.Data.SQLite | |||
1479 | delete.Parameters.Add(createSqliteParameter("itemID", typeof (String))); | 1479 | delete.Parameters.Add(createSqliteParameter("itemID", typeof (String))); |
1480 | delete.Connection = conn; | 1480 | delete.Connection = conn; |
1481 | da.DeleteCommand = delete; | 1481 | da.DeleteCommand = delete; |
1482 | } | 1482 | } |
1483 | 1483 | ||
1484 | private void setupTerrainCommands(SqliteDataAdapter da, SqliteConnection conn) | 1484 | private void setupTerrainCommands(SqliteDataAdapter da, SqliteConnection conn) |
1485 | { | 1485 | { |
@@ -1660,7 +1660,7 @@ namespace OpenSim.Data.SQLite | |||
1660 | return false; | 1660 | return false; |
1661 | } | 1661 | } |
1662 | } | 1662 | } |
1663 | 1663 | ||
1664 | // XXX primitems should probably go here eventually | 1664 | // XXX primitems should probably go here eventually |
1665 | 1665 | ||
1666 | foreach (DataColumn col in createTerrainTable().Columns) | 1666 | foreach (DataColumn col in createTerrainTable().Columns) |