From 1458fab82c4dab9901d81419e6b515f47ea7320f Mon Sep 17 00:00:00 2001 From: Kevin Houlihan Date: Mon, 12 Sep 2011 23:08:16 +0100 Subject: Reattaching a region was failing if the estate name had not changed (issue 5035). Using the RemoteAdmin API to close then recreate a region would fail if the estate name had not changed. If the estate name /was/ changed then the existing estate would be renamed rather than a new one being created. The problem really arose from a lack of distinction in the data storage layer between creating new estates and loading existing ones. --- OpenSim/Data/MSSQL/MSSQLEstateData.cs | 117 +++++++++++++++++------------ OpenSim/Data/MySQL/MySQLEstateData.cs | 123 ++++++++++++++++++++----------- OpenSim/Data/Null/NullEstateData.cs | 5 ++ OpenSim/Data/SQLite/SQLiteEstateData.cs | 126 ++++++++++++++++++++------------ 4 files changed, 231 insertions(+), 140 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/MSSQL/MSSQLEstateData.cs index 9c54e77..1faa249 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/MSSQL/MSSQLEstateData.cs @@ -148,56 +148,29 @@ namespace OpenSim.Data.MSSQL } } - if (insertEstate && create) { - List names = new List(FieldList); - - names.Remove("EstateID"); - - sql = string.Format("insert into estate_settings ({0}) values ( @{1})", String.Join(",", names.ToArray()), String.Join(", @", names.ToArray())); - - //_Log.Debug("[DB ESTATE]: SQL: " + sql); - using (SqlConnection conn = new SqlConnection(m_connectionString)) - using (SqlCommand insertCommand = new SqlCommand(sql, conn)) - { - insertCommand.CommandText = sql + " SET @ID = SCOPE_IDENTITY()"; + DoCreate(es); + LinkRegion(regionID, (int)es.EstateID); + } - foreach (string name in names) - { - insertCommand.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es))); - } - SqlParameter idParameter = new SqlParameter("@ID", SqlDbType.Int); - idParameter.Direction = ParameterDirection.Output; - insertCommand.Parameters.Add(idParameter); - conn.Open(); - insertCommand.ExecuteNonQuery(); + LoadBanList(es); - es.EstateID = Convert.ToUInt32(idParameter.Value); - } + es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); + es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); + es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - sql = "INSERT INTO [estate_map] ([RegionID] ,[EstateID]) VALUES (@RegionID, @EstateID)"; - using (SqlConnection conn = new SqlConnection(m_connectionString)) - using (SqlCommand cmd = new SqlCommand(sql, conn)) - { + //Set event + es.OnSave += StoreEstateSettings; + return es; + } - cmd.Parameters.Add(_Database.CreateParameter("@RegionID", regionID)); - cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID)); - // This will throw on dupe key - try - { - conn.Open(); - cmd.ExecuteNonQuery(); - } - catch (Exception e) - { - m_log.DebugFormat("[ESTATE DB]: Error inserting regionID and EstateID in estate_map: {0}", e); - } - } + public EstateSettings CreateNewEstate() + { + EstateSettings es = new EstateSettings(); + es.OnSave += StoreEstateSettings; - //TODO check if this is needed?? - es.Save(); - } + DoCreate(es); LoadBanList(es); @@ -205,11 +178,40 @@ namespace OpenSim.Data.MSSQL es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - //Set event - es.OnSave += StoreEstateSettings; return es; } + private void DoCreate(EstateSettings es) + { + List names = new List(FieldList); + + names.Remove("EstateID"); + + string sql = string.Format("insert into estate_settings ({0}) values ( @{1})", String.Join(",", names.ToArray()), String.Join(", @", names.ToArray())); + + //_Log.Debug("[DB ESTATE]: SQL: " + sql); + using (SqlConnection conn = new SqlConnection(m_connectionString)) + using (SqlCommand insertCommand = new SqlCommand(sql, conn)) + { + insertCommand.CommandText = sql + " SET @ID = SCOPE_IDENTITY()"; + + foreach (string name in names) + { + insertCommand.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es))); + } + SqlParameter idParameter = new SqlParameter("@ID", SqlDbType.Int); + idParameter.Direction = ParameterDirection.Output; + insertCommand.Parameters.Add(idParameter); + conn.Open(); + insertCommand.ExecuteNonQuery(); + + es.EstateID = Convert.ToUInt32(idParameter.Value); + } + + //TODO check if this is needed?? + es.Save(); + } + /// /// Stores the estate settings. /// @@ -498,24 +500,43 @@ namespace OpenSim.Data.MSSQL public bool LinkRegion(UUID regionID, int estateID) { - string sql = "insert into estate_map values (@RegionID, @EstateID)"; + string deleteSQL = "delete from estate_map where RegionID = @RegionID"; + string insertSQL = "insert into estate_map values (@RegionID, @EstateID)"; using (SqlConnection conn = new SqlConnection(m_connectionString)) { conn.Open(); + SqlTransaction transaction = conn.BeginTransaction(); + try { - using (SqlCommand cmd = new SqlCommand(sql, conn)) + using (SqlCommand cmd = new SqlCommand(deleteSQL, conn)) { - cmd.Parameters.AddWithValue("@RegionID", regionID); + cmd.Transaction = transaction; + cmd.Parameters.AddWithValue("@RegionID", regionID.Guid); + + cmd.ExecuteNonQuery(); + } + + using (SqlCommand cmd = new SqlCommand(insertSQL, conn)) + { + cmd.Transaction = transaction; + cmd.Parameters.AddWithValue("@RegionID", regionID.Guid); cmd.Parameters.AddWithValue("@EstateID", estateID); int ret = cmd.ExecuteNonQuery(); + + if (ret != 0) + transaction.Commit(); + else + transaction.Rollback(); + return (ret != 0); } } catch (Exception ex) { m_log.Error("[REGION DB]: LinkRegion failed: " + ex.Message); + transaction.Rollback(); } } return false; diff --git a/OpenSim/Data/MySQL/MySQLEstateData.cs b/OpenSim/Data/MySQL/MySQLEstateData.cs index 9dcf5e2..3d647ca 100644 --- a/OpenSim/Data/MySQL/MySQLEstateData.cs +++ b/OpenSim/Data/MySQL/MySQLEstateData.cs @@ -149,6 +149,22 @@ namespace OpenSim.Data.MySQL } } + public EstateSettings CreateNewEstate() + { + EstateSettings es = new EstateSettings(); + es.OnSave += StoreEstateSettings; + + DoCreate(es); + + LoadBanList(es); + + es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); + es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); + es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); + + return es; + } + private EstateSettings DoLoad(MySqlCommand cmd, UUID regionID, bool create) { EstateSettings es = new EstateSettings(); @@ -188,63 +204,65 @@ namespace OpenSim.Data.MySQL if (!found && create) { - // Migration case - List names = new List(FieldList); + DoCreate(es); + LinkRegion(regionID, (int)es.EstateID); + } + } - names.Remove("EstateID"); + LoadBanList(es); - string sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")"; + es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); + es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); + es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); + return es; + } - using (MySqlCommand cmd2 = dbcon.CreateCommand()) - { - cmd2.CommandText = sql; - cmd2.Parameters.Clear(); + private void DoCreate(EstateSettings es) + { + // Migration case + List names = new List(FieldList); - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) - { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd2.Parameters.AddWithValue("?" + name, "1"); - else - cmd2.Parameters.AddWithValue("?" + name, "0"); - } - else - { - cmd2.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString()); - } - } + names.Remove("EstateID"); - cmd2.ExecuteNonQuery(); + string sql = "insert into estate_settings (" + String.Join(",", names.ToArray()) + ") values ( ?" + String.Join(", ?", names.ToArray()) + ")"; - cmd2.CommandText = "select LAST_INSERT_ID() as id"; - cmd2.Parameters.Clear(); + using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + { + dbcon.Open(); + using (MySqlCommand cmd2 = dbcon.CreateCommand()) + { + cmd2.CommandText = sql; + cmd2.Parameters.Clear(); - using (IDataReader r = cmd2.ExecuteReader()) + foreach (string name in FieldList) + { + if (m_FieldMap[name].GetValue(es) is bool) + { + if ((bool)m_FieldMap[name].GetValue(es)) + cmd2.Parameters.AddWithValue("?" + name, "1"); + else + cmd2.Parameters.AddWithValue("?" + name, "0"); + } + else { - r.Read(); - es.EstateID = Convert.ToUInt32(r["id"]); + cmd2.Parameters.AddWithValue("?" + name, m_FieldMap[name].GetValue(es).ToString()); } + } - cmd2.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; - cmd2.Parameters.AddWithValue("?RegionID", regionID.ToString()); - cmd2.Parameters.AddWithValue("?EstateID", es.EstateID.ToString()); + cmd2.ExecuteNonQuery(); - // This will throw on dupe key - try { cmd2.ExecuteNonQuery(); } - catch (Exception) { } + cmd2.CommandText = "select LAST_INSERT_ID() as id"; + cmd2.Parameters.Clear(); - es.Save(); + using (IDataReader r = cmd2.ExecuteReader()) + { + r.Read(); + es.EstateID = Convert.ToUInt32(r["id"]); } + + es.Save(); } } - - LoadBanList(es); - - es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); - es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); - es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - return es; } public void StoreEstateSettings(EstateSettings es) @@ -477,7 +495,6 @@ namespace OpenSim.Data.MySQL } } - dbcon.Close(); } @@ -507,7 +524,6 @@ namespace OpenSim.Data.MySQL } } - dbcon.Close(); } @@ -519,16 +535,34 @@ namespace OpenSim.Data.MySQL using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); + MySqlTransaction transaction = dbcon.BeginTransaction(); try { + // Delete any existing association of this region with an estate. + using (MySqlCommand cmd = dbcon.CreateCommand()) + { + cmd.Transaction = transaction; + cmd.CommandText = "delete from estate_map where RegionID = ?RegionID"; + cmd.Parameters.AddWithValue("?RegionID", regionID); + + cmd.ExecuteNonQuery(); + } + using (MySqlCommand cmd = dbcon.CreateCommand()) { + cmd.Transaction = transaction; cmd.CommandText = "insert into estate_map values (?RegionID, ?EstateID)"; cmd.Parameters.AddWithValue("?RegionID", regionID); cmd.Parameters.AddWithValue("?EstateID", estateID); int ret = cmd.ExecuteNonQuery(); + + if (ret != 0) + transaction.Commit(); + else + transaction.Rollback(); + dbcon.Close(); return (ret != 0); @@ -537,6 +571,7 @@ namespace OpenSim.Data.MySQL catch (MySqlException ex) { m_log.Error("[REGION DB]: LinkRegion failed: " + ex.Message); + transaction.Rollback(); } dbcon.Close(); diff --git a/OpenSim/Data/Null/NullEstateData.cs b/OpenSim/Data/Null/NullEstateData.cs index 8db8064..d64136d 100755 --- a/OpenSim/Data/Null/NullEstateData.cs +++ b/OpenSim/Data/Null/NullEstateData.cs @@ -84,6 +84,11 @@ namespace OpenSim.Data.Null { return new EstateSettings(); } + + public EstateSettings CreateNewEstate() + { + return new EstateSettings(); + } public List LoadEstateSettingsAll() { diff --git a/OpenSim/Data/SQLite/SQLiteEstateData.cs b/OpenSim/Data/SQLite/SQLiteEstateData.cs index 65719a6..8db9262 100644 --- a/OpenSim/Data/SQLite/SQLiteEstateData.cs +++ b/OpenSim/Data/SQLite/SQLiteEstateData.cs @@ -151,67 +151,77 @@ namespace OpenSim.Data.SQLite } else if (create) { - r.Close(); + DoCreate(es); + LinkRegion(regionID, (int)es.EstateID); + } - List names = new List(FieldList); + LoadBanList(es); - names.Remove("EstateID"); + es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); + es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); + es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); + return es; + } - string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; + public EstateSettings CreateNewEstate() + { + EstateSettings es = new EstateSettings(); + es.OnSave += StoreEstateSettings; - cmd.CommandText = sql; - cmd.Parameters.Clear(); + DoCreate(es); - foreach (string name in FieldList) - { - if (m_FieldMap[name].GetValue(es) is bool) - { - if ((bool)m_FieldMap[name].GetValue(es)) - cmd.Parameters.AddWithValue(":"+name, "1"); - else - cmd.Parameters.AddWithValue(":"+name, "0"); - } - else - { - cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); - } - } + LoadBanList(es); - cmd.ExecuteNonQuery(); + es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); + es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); + es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - cmd.CommandText = "select LAST_INSERT_ROWID() as id"; - cmd.Parameters.Clear(); + return es; + } - r = cmd.ExecuteReader(); + private void DoCreate(EstateSettings es) + { + List names = new List(FieldList); - r.Read(); + SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + IDataReader r = null; - es.EstateID = Convert.ToUInt32(r["id"]); + names.Remove("EstateID"); - r.Close(); + string sql = "insert into estate_settings ("+String.Join(",", names.ToArray())+") values ( :"+String.Join(", :", names.ToArray())+")"; - cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)"; - cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); - cmd.Parameters.AddWithValue(":EstateID", es.EstateID.ToString()); + cmd.CommandText = sql; + cmd.Parameters.Clear(); - // This will throw on dupe key - try + foreach (string name in FieldList) + { + if (m_FieldMap[name].GetValue(es) is bool) { - cmd.ExecuteNonQuery(); + if ((bool)m_FieldMap[name].GetValue(es)) + cmd.Parameters.AddWithValue(":"+name, "1"); + else + cmd.Parameters.AddWithValue(":"+name, "0"); } - catch (Exception) + else { + cmd.Parameters.AddWithValue(":"+name, m_FieldMap[name].GetValue(es).ToString()); } - - es.Save(); } - LoadBanList(es); + cmd.ExecuteNonQuery(); - es.EstateManagers = LoadUUIDList(es.EstateID, "estate_managers"); - es.EstateAccess = LoadUUIDList(es.EstateID, "estate_users"); - es.EstateGroups = LoadUUIDList(es.EstateID, "estate_groups"); - return es; + cmd.CommandText = "select LAST_INSERT_ROWID() as id"; + cmd.Parameters.Clear(); + + r = cmd.ExecuteReader(); + + r.Read(); + + es.EstateID = Convert.ToUInt32(r["id"]); + + r.Close(); + + es.Save(); } public void StoreEstateSettings(EstateSettings es) @@ -440,16 +450,36 @@ namespace OpenSim.Data.SQLite public bool LinkRegion(UUID regionID, int estateID) { - SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand(); + SqliteTransaction transaction = m_connection.BeginTransaction(); - cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)"; - cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); - cmd.Parameters.AddWithValue(":EstateID", estateID.ToString()); + // Delete any existing estate mapping for this region. + using(SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = "delete from estate_map where RegionID = :RegionID"; + cmd.Transaction = transaction; + cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); - if (cmd.ExecuteNonQuery() == 0) - return false; + cmd.ExecuteNonQuery(); + } - return true; + using(SqliteCommand cmd = (SqliteCommand)m_connection.CreateCommand()) + { + cmd.CommandText = "insert into estate_map values (:RegionID, :EstateID)"; + cmd.Transaction = transaction; + cmd.Parameters.AddWithValue(":RegionID", regionID.ToString()); + cmd.Parameters.AddWithValue(":EstateID", estateID.ToString()); + + if (cmd.ExecuteNonQuery() == 0) + { + transaction.Rollback(); + return false; + } + else + { + transaction.Commit(); + return true; + } + } } public List GetRegions(int estateID) -- cgit v1.1 From d4043c084a86da5f462356ec5c65eab2b861564d Mon Sep 17 00:00:00 2001 From: Chris Hart Date: Tue, 13 Sep 2011 16:55:30 -0400 Subject: MSSQL Bug fix in user account retrieval, plus migrations for FriendsStore and InventoryStore --- OpenSim/Data/MSSQL/MSSQLUserAccountData.cs | 18 +++++++----- .../Data/MSSQL/Resources/FriendsStore.migrations | 28 +++++++++++++++++++ .../Data/MSSQL/Resources/InventoryStore.migrations | 32 ++++++++++++++++++++++ 3 files changed, 71 insertions(+), 7 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs b/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs index e7c8dc5..7feec91 100644 --- a/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs +++ b/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs @@ -218,23 +218,27 @@ namespace OpenSim.Data.MSSQL if (words.Length > 2) return new UserAccountData[0]; + string sql = ""; + using (SqlConnection conn = new SqlConnection(m_ConnectionString)) using (SqlCommand cmd = new SqlCommand()) { if (words.Length == 1) { - cmd.CommandText = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @search or [LastName] like @search)", m_Realm); + sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @search or [LastName] like @search)", m_Realm); cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); - cmd.Parameters.Add(m_database.CreateParameter("@search", "%" + words[0] + "%")); + cmd.Parameters.Add(m_database.CreateParameter("@search", "%" + words[0] + "%")); } else { - cmd.CommandText = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @searchFirst or [LastName] like @searchLast)", m_Realm); - cmd.Parameters.Add(m_database.CreateParameter("@searchFirst", "%" + words[0] + "%")); - cmd.Parameters.Add(m_database.CreateParameter("@searchLast", "%" + words[1] + "%")); - cmd.Parameters.Add(m_database.CreateParameter("@ScopeID", scopeID.ToString())); + sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @searchFirst or [LastName] like @searchLast)", m_Realm); + cmd.Parameters.Add(m_database.CreateParameter("@searchFirst", "%" + words[0] + "%")); + cmd.Parameters.Add(m_database.CreateParameter("@searchLast", "%" + words[1] + "%")); + cmd.Parameters.Add(m_database.CreateParameter("@ScopeID", scopeID.ToString())); } - + cmd.Connection = conn; + cmd.CommandText = sql; + conn.Open(); return DoQuery(cmd); } } diff --git a/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations b/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations index 4d8ab0f..cc94c4e 100644 --- a/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations +++ b/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations @@ -19,4 +19,32 @@ IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[userf INSERT INTO Friends (PrincipalID, Friend, Flags, Offered) SELECT [ownerID], [friendID], [friendPerms], 0 FROM userfriends; +COMMIT + +:VERSION 3 + +BEGIN TRANSACTION + +CREATE TABLE [Tmp_Friends] + ([PrincipalID] varchar(255) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', +[Friend] varchar(255) NOT NULL, +[Flags] char(16) NOT NULL DEFAULT '0', +[Offered] varchar(32) NOT NULL DEFAULT 0) +ON [PRIMARY] + + +IF EXISTS(SELECT * FROM dbo.Friends) + EXEC('INSERT INTO dbo.Tmp_Friends (PrincipalID, Friend, Flags, Offered) + SELECT CONVERT(varchar(255),PrincipalID), Friend, Flags, Offered FROM dbo.Friends WITH (HOLDLOCK TABLOCKX)') + +DROP TABLE dbo.Friends + +EXECUTE sp_rename N'dbo.Tmp_Friends', N'Friends', 'OBJECT' + +ALTER TABLE dbo.Friends ADD + PRIMARY KEY CLUSTERED +( + [PrincipalID] ASC, [Friend] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + COMMIT \ No newline at end of file diff --git a/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations b/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations index 4a3cb27..4e43653 100644 --- a/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations +++ b/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations @@ -244,4 +244,36 @@ ALTER TABLE inventoryitems ADD CONSTRAINT DF_inventoryitems_creatorID DEFAULT '00000000-0000-0000-0000-000000000000' FOR creatorID +:GO + +:VERSION 9 + +BEGIN TRANSACTION + +# CreatorID goes up to VARCHAR(255) + +exec sp_rename 'inventoryitems.CreatorID', 'cr_old', 'COLUMN' + +:GO + +alter table inventoryitems + add creatorID varchar(255) NULL + +:GO + +update inventoryitems set creatorID = cr_old + +alter table inventoryitems +drop CONSTRAINT DF_inventoryitems_creatorID +:GO + +alter table inventoryitems + drop column cr_old + :GO +COMMIT + +ALTER TABLE inventoryitems +ADD CONSTRAINT DF_inventoryitems_creatorID +DEFAULT '00000000-0000-0000-0000-000000000000' FOR creatorID + :GO \ No newline at end of file -- cgit v1.1 From aadf7dd91cdeb98b48cd81c5db06481593aff993 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 20 Sep 2011 20:56:32 +0100 Subject: Remove vestigal OpenSim.Data mono addins extension points that don't look like they've been active for at least 2 and a half years --- .../MSSQL/Resources/OpenSim.Data.MSSQL.addin.xml | 23 ---------------------- .../MySQL/Resources/OpenSim.Data.MySQL.addin.xml | 23 ---------------------- .../SQLite/Resources/OpenSim.Data.SQLite.addin.xml | 20 ------------------- 3 files changed, 66 deletions(-) delete mode 100644 OpenSim/Data/MSSQL/Resources/OpenSim.Data.MSSQL.addin.xml delete mode 100644 OpenSim/Data/MySQL/Resources/OpenSim.Data.MySQL.addin.xml delete mode 100644 OpenSim/Data/SQLite/Resources/OpenSim.Data.SQLite.addin.xml (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/MSSQL/Resources/OpenSim.Data.MSSQL.addin.xml b/OpenSim/Data/MSSQL/Resources/OpenSim.Data.MSSQL.addin.xml deleted file mode 100644 index 15fd29e..0000000 --- a/OpenSim/Data/MSSQL/Resources/OpenSim.Data.MSSQL.addin.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OpenSim/Data/MySQL/Resources/OpenSim.Data.MySQL.addin.xml b/OpenSim/Data/MySQL/Resources/OpenSim.Data.MySQL.addin.xml deleted file mode 100644 index 9e99547..0000000 --- a/OpenSim/Data/MySQL/Resources/OpenSim.Data.MySQL.addin.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/OpenSim/Data/SQLite/Resources/OpenSim.Data.SQLite.addin.xml b/OpenSim/Data/SQLite/Resources/OpenSim.Data.SQLite.addin.xml deleted file mode 100644 index e6764fa..0000000 --- a/OpenSim/Data/SQLite/Resources/OpenSim.Data.SQLite.addin.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -- cgit v1.1 From 7ec7a3cf33b3a67cb10df14bad04cf6f09262822 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Tue, 20 Sep 2011 15:31:43 -0700 Subject: Null simulation data must return a non-null region settings or other parts of the simulator expect --- OpenSim/Data/Null/NullSimulationData.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/Null/NullSimulationData.cs b/OpenSim/Data/Null/NullSimulationData.cs index c33a6f2..b788976 100644 --- a/OpenSim/Data/Null/NullSimulationData.cs +++ b/OpenSim/Data/Null/NullSimulationData.cs @@ -77,8 +77,10 @@ namespace OpenSim.Data.Null } public RegionSettings LoadRegionSettings(UUID regionUUID) - { - return null; + { + RegionSettings rs = new RegionSettings(); + rs.RegionUUID = regionUUID; + return rs; } public void StoreObject(SceneObjectGroup obj, UUID regionUUID) -- cgit v1.1