From fcd7cf5e4a7ef0a998e3d05236f8cb161e5c1bef Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Thu, 19 Jun 2008 15:03:00 +0000 Subject: fix an edge case with migrations in the region store. Add migration support to gridstore. --- OpenSim/Data/MySQL/MySQLDataStore.cs | 4 ++++ OpenSim/Data/MySQL/MySQLGridData.cs | 20 ++++++++++++++-- OpenSim/Data/MySQL/Resources/001_GridStore.sql | 32 ++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 OpenSim/Data/MySQL/Resources/001_GridStore.sql (limited to 'OpenSim/Data') diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs index 01cd605..ff1b583 100644 --- a/OpenSim/Data/MySQL/MySQLDataStore.cs +++ b/OpenSim/Data/MySQL/MySQLDataStore.cs @@ -1670,6 +1670,10 @@ namespace OpenSim.Data.MySQL private bool TestTables(MySqlConnection conn, Migration m) { + // we already have migrations, get out of here + if (m.Version > 0) + return false; + MySqlCommand primSelectCmd = new MySqlCommand(m_primSelect, conn); MySqlDataAdapter pDa = new MySqlDataAdapter(primSelectCmd); MySqlCommand shapeSelectCmd = new MySqlCommand(m_shapeSelect, conn); diff --git a/OpenSim/Data/MySQL/MySQLGridData.cs b/OpenSim/Data/MySQL/MySQLGridData.cs index 86ceffc..e5940e2 100644 --- a/OpenSim/Data/MySQL/MySQLGridData.cs +++ b/OpenSim/Data/MySQL/MySQLGridData.cs @@ -72,7 +72,15 @@ namespace OpenSim.Data.MySQL settingPooling, settingPort); } - TestTables(); + // This actually does the roll forward assembly stuff + Assembly assem = GetType().Assembly; + Migration m = new Migration(database.Connection, assem, "GridStore"); + + // TODO: After rev 6000, remove this. People should have + // been rolled onto the new migration code by then. + TestTables(m); + + m.Update(); } #region Test and initialization code @@ -80,14 +88,22 @@ namespace OpenSim.Data.MySQL /// /// Ensure that the user related tables exists and are at the latest version /// - private void TestTables() + private void TestTables(Migration m) { + // we already have migrations, get out of here + if (m.Version > 0) + return; + Dictionary tableList = new Dictionary(); tableList["regions"] = null; database.GetTableVersion(tableList); UpgradeRegionsTable(tableList["regions"]); + + // we have tables, but not a migration model yet + if (m.Version == 0) + m.Version = 1; } /// diff --git a/OpenSim/Data/MySQL/Resources/001_GridStore.sql b/OpenSim/Data/MySQL/Resources/001_GridStore.sql new file mode 100644 index 0000000..cb0f9bd --- /dev/null +++ b/OpenSim/Data/MySQL/Resources/001_GridStore.sql @@ -0,0 +1,32 @@ +CREATE TABLE `regions` ( + `uuid` varchar(36) NOT NULL, + `regionHandle` bigint(20) unsigned NOT NULL, + `regionName` varchar(32) default NULL, + `regionRecvKey` varchar(128) default NULL, + `regionSendKey` varchar(128) default NULL, + `regionSecret` varchar(128) default NULL, + `regionDataURI` varchar(255) default NULL, + `serverIP` varchar(64) default NULL, + `serverPort` int(10) unsigned default NULL, + `serverURI` varchar(255) default NULL, + `locX` int(10) unsigned default NULL, + `locY` int(10) unsigned default NULL, + `locZ` int(10) unsigned default NULL, + `eastOverrideHandle` bigint(20) unsigned default NULL, + `westOverrideHandle` bigint(20) unsigned default NULL, + `southOverrideHandle` bigint(20) unsigned default NULL, + `northOverrideHandle` bigint(20) unsigned default NULL, + `regionAssetURI` varchar(255) default NULL, + `regionAssetRecvKey` varchar(128) default NULL, + `regionAssetSendKey` varchar(128) default NULL, + `regionUserURI` varchar(255) default NULL, + `regionUserRecvKey` varchar(128) default NULL, + `regionUserSendKey` varchar(128) default NULL, `regionMapTexture` varchar(36) default NULL, + `serverHttpPort` int(10) default NULL, `serverRemotingPort` int(10) default NULL, + `owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null, + `originUUID` varchar(36), + PRIMARY KEY (`uuid`), + KEY `regionName` (`regionName`), + KEY `regionHandle` (`regionHandle`), + KEY `overrideHandles` (`eastOverrideHandle`,`westOverrideHandle`,`southOverrideHandle`,`northOverrideHandle`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Rev. 3'; -- cgit v1.1