diff --git a/OpenSim/Data/MySQL/MySQLDataStore.cs b/OpenSim/Data/MySQL/MySQLDataStore.cs
index 01cd605d7d..ff1b583b0a 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 86ceffc924..e5940e214e 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 0000000000..cb0f9bd2cd
--- /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';