From b99455d23d57d10c221929a9233520026aed2cd4 Mon Sep 17 00:00:00 2001 From: Johan Berntsson Date: Fri, 7 Mar 2008 08:10:52 +0000 Subject: [PATCH] Fix to solve mantis 717 problem. Makes sure the region DB schema is up to date and consistent --- OpenSim/Framework/Data.MySQL/MySQLGridData.cs | 7 ++++++- .../Resources/CreateRegionsTable.sql | 3 ++- .../UpgradeRegionsTableToVersion3.sql | 18 ++++++++++++++++++ OpenSim/Region/Application/OpenSimMain.cs | 19 ++++++++++--------- 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 OpenSim/Framework/Data.MySQL/Resources/UpgradeRegionsTableToVersion3.sql diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs index eefb4e9f1b..0ae8e0ba50 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs @@ -97,11 +97,16 @@ namespace OpenSim.Framework.Data.MySQL database.ExecuteResourceSql("CreateRegionsTable.sql"); return; } - else if (oldVersion.Contains("Rev. 1")) + if (oldVersion.Contains("Rev. 1")) { database.ExecuteResourceSql("UpgradeRegionsTableToVersion2.sql"); return; } + if (oldVersion.Contains("Rev. 2")) + { + database.ExecuteResourceSql("UpgradeRegionsTableToVersion3.sql"); + return; + } } #endregion diff --git a/OpenSim/Framework/Data.MySQL/Resources/CreateRegionsTable.sql b/OpenSim/Framework/Data.MySQL/Resources/CreateRegionsTable.sql index 23535afeb6..cb0f9bd2cd 100644 --- a/OpenSim/Framework/Data.MySQL/Resources/CreateRegionsTable.sql +++ b/OpenSim/Framework/Data.MySQL/Resources/CreateRegionsTable.sql @@ -23,9 +23,10 @@ CREATE TABLE `regions` ( `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. 2'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Rev. 3'; diff --git a/OpenSim/Framework/Data.MySQL/Resources/UpgradeRegionsTableToVersion3.sql b/OpenSim/Framework/Data.MySQL/Resources/UpgradeRegionsTableToVersion3.sql new file mode 100644 index 0000000000..b48afec303 --- /dev/null +++ b/OpenSim/Framework/Data.MySQL/Resources/UpgradeRegionsTableToVersion3.sql @@ -0,0 +1,18 @@ +DROP PROCEDURE IF EXISTS upgraderegions3; + +create procedure upgraderegions3() +BEGIN +DECLARE db_name varchar(64); +select database() into db_name; +IF ((select count(*) from information_schema.columns where table_name='regions' and column_name='owner_uuid' and table_schema=db_name) > 0) +THEN + ALTER TABLE `regions`, COMMENT='Rev. 3'; +ELSE + ALTER TABLE `regions` + ADD COLUMN `owner_uuid` varchar(36) default '00000000-0000-0000-0000-000000000000' not null after serverRemotingPort, COMMENT='Rev. 3'; +END IF; +END; + +call upgraderegions3(); + + diff --git a/OpenSim/Region/Application/OpenSimMain.cs b/OpenSim/Region/Application/OpenSimMain.cs index 2c9e50e665..ea251471d8 100644 --- a/OpenSim/Region/Application/OpenSimMain.cs +++ b/OpenSim/Region/Application/OpenSimMain.cs @@ -470,20 +470,21 @@ namespace OpenSim public UDPServer CreateRegion(RegionInfo regionInfo, bool portadd_flag) { int port = regionInfo.InternalEndPoint.Port; - if ((proxyOffset != 0) && (portadd_flag)) + + // set initial RegionID to originRegionID in RegionInfo. (it needs for loding prims) + regionInfo.originRegionID = regionInfo.RegionID; + + // set initial ServerURI + regionInfo.ServerURI = "http://" + regionInfo.ExternalHostName + + ":" + regionInfo.InternalEndPoint.Port.ToString(); + + if ((proxyUrl.Length > 0) && (portadd_flag)) { // set proxy url to RegionInfo regionInfo.proxyUrl = proxyUrl; - - // set initial RegionID to originRegionID in RegionInfo. (it needs for loding prims) - regionInfo.originRegionID = regionInfo.RegionID; - - // set initial ServerURI - regionInfo.ServerURI = "http://" + regionInfo.ExternalHostName - + ":" + regionInfo.InternalEndPoint.Port.ToString(); - ProxyCommand(proxyUrl, "AddPort", port, port + proxyOffset, regionInfo.ExternalHostName); } + UDPServer udpServer; Scene scene = SetupScene(regionInfo, proxyOffset, out udpServer, m_permissions);