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