From 631e10f269210cc352acc453fe04f56343c73360 Mon Sep 17 00:00:00 2001 From: Justin Clarke Casey Date: Thu, 19 Feb 2009 18:31:45 +0000 Subject: [PATCH] * Apply http://opensimulator.org/mantis/view.php?id=3151 * Fixes NHibernate overflow exception when saving some objects (under at least PostgreSQL 8.3) * Thanks Tommil! --- .../MsSql2005Dialect/001_InventoryStore.sql | 2 +- .../Resources/MsSql2005Dialect/001_RegionStore.sql | 10 +++++----- .../Resources/MySQLDialect/001_AssetStore.sql | 2 +- .../Resources/MySQLDialect/001_InventoryStore.sql | 6 +++--- .../Resources/MySQLDialect/001_RegionStore.sql | 1 - .../PostgreSQLDialect/001_InventoryStore.sql | 6 +++--- .../Resources/PostgreSQLDialect/001_RegionStore.sql | 11 +++++------ .../Resources/SQLiteDialect/001_AssetStore.sql | 2 +- .../Resources/SQLiteDialect/001_InventoryStore.sql | 6 +++--- .../Resources/SQLiteDialect/001_RegionStore.sql | 1 - OpenSim/Data/NHibernate/UInt16Type.cs | 6 +++--- OpenSim/Data/Tests/BasicRegionTest.cs | 12 ++++++++++++ 12 files changed, 37 insertions(+), 28 deletions(-) diff --git a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_InventoryStore.sql b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_InventoryStore.sql index 37ba733e7d..82936c47b3 100644 --- a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_InventoryStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_InventoryStore.sql @@ -1,7 +1,7 @@ create table InventoryFolders ( ID NVARCHAR(255) not null, Type SMALLINT null, - Version SMALLINT null, + Version INT null, ParentID NVARCHAR(255) null, Owner NVARCHAR(255) null, Name NVARCHAR(64) null, diff --git a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_RegionStore.sql index 56ad905e5a..f388f1a9f2 100644 --- a/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_RegionStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MsSql2005Dialect/001_RegionStore.sql @@ -49,8 +49,8 @@ create table Prims ( ScaleY REAL null, ScaleZ REAL null, PCode TINYINT null, - PathBegin SMALLINT null, - PathEnd SMALLINT null, + PathBegin INT null, + PathEnd INT null, PathScaleX TINYINT null, PathScaleY TINYINT null, PathShearX TINYINT null, @@ -62,10 +62,10 @@ create table Prims ( PathTaperX TINYINT null, PathTaperY TINYINT null, PathTwist TINYINT null, - ProfileBegin SMALLINT null, - ProfileEnd SMALLINT null, + ProfileBegin INT null, + ProfileEnd INT null, ProfileCurve TINYINT null, - ProfileHollow SMALLINT null, + ProfileHollow INT null, Texture VARBINARY(8000) null, ExtraParams VARBINARY(8000) null, State TINYINT null, diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_AssetStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_AssetStore.sql index 95737815a4..cd0958d5f8 100644 --- a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_AssetStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_AssetStore.sql @@ -1,6 +1,6 @@ CREATE TABLE Assets ( ID VARCHAR(36) NOT NULL, - Type TINYINT DEFAULT NULL, + Type SMALLINT DEFAULT NULL, Name VARCHAR(64) DEFAULT NULL, Description VARCHAR(64) DEFAULT NULL, Local BIT DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_InventoryStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_InventoryStore.sql index 13d8cf6cef..93d282bcff 100644 --- a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_InventoryStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_InventoryStore.sql @@ -1,7 +1,7 @@ CREATE TABLE InventoryFolders ( ID VARCHAR(36) NOT NULL, Type SMALLINT DEFAULT NULL, - Version SMALLINT DEFAULT NULL, + Version INT DEFAULT NULL, ParentID VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, Name VARCHAR(64) DEFAULT NULL, @@ -13,8 +13,8 @@ CREATE INDEX InventoryFoldersParentIdIndex ON InventoryFolders (ParentID); CREATE TABLE InventoryItems ( ID VARCHAR(36) NOT NULL, - InvType SMALLINT DEFAULT NULL, - AssetType SMALLINT DEFAULT NULL, + InvType INT DEFAULT NULL, + AssetType INT DEFAULT NULL, AssetID VARCHAR(36) DEFAULT NULL, Folder VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_RegionStore.sql index e44f01203d..74f67f2372 100644 --- a/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_RegionStore.sql +++ b/OpenSim/Data/NHibernate/Resources/MySQLDialect/001_RegionStore.sql @@ -71,7 +71,6 @@ CREATE TABLE Prims ( PathTaperX INT DEFAULT NULL, PathTaperY INT DEFAULT NULL, PathTwist INT DEFAULT NULL, - PathTwistBegin INT DEFAULT NULL, ProfileBegin INT DEFAULT NULL, ProfileEnd INT DEFAULT NULL, ProfileCurve INT DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_InventoryStore.sql b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_InventoryStore.sql index 9d0f711204..42af659c1e 100644 --- a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_InventoryStore.sql +++ b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_InventoryStore.sql @@ -1,7 +1,7 @@ CREATE TABLE InventoryFolders ( ID VARCHAR(36) NOT NULL, Type SMALLINT DEFAULT NULL, - Version SMALLINT DEFAULT NULL, + Version INT DEFAULT NULL, ParentID VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, Name VARCHAR(64) DEFAULT NULL, @@ -13,8 +13,8 @@ CREATE INDEX InventoryFoldersParentIdIndex ON InventoryFolders (ParentID); CREATE TABLE InventoryItems ( ID VARCHAR(36) NOT NULL, - InvType SMALLINT DEFAULT NULL, - AssetType SMALLINT DEFAULT NULL, + InvType INT DEFAULT NULL, + AssetType INT DEFAULT NULL, AssetID VARCHAR(36) DEFAULT NULL, Folder VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_RegionStore.sql index ff227c1aa3..25c3945b20 100644 --- a/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_RegionStore.sql +++ b/OpenSim/Data/NHibernate/Resources/PostgreSQLDialect/001_RegionStore.sql @@ -58,8 +58,8 @@ CREATE TABLE Prims ( ScaleY DOUBLE PRECISION DEFAULT NULL, ScaleZ DOUBLE PRECISION DEFAULT NULL, PCode INT DEFAULT NULL, - PathBegin SMALLINT DEFAULT NULL, - PathEnd SMALLINT DEFAULT NULL, + PathBegin INT DEFAULT NULL, + PathEnd INT DEFAULT NULL, PathScaleX INT DEFAULT NULL, PathScaleY INT DEFAULT NULL, PathShearX INT DEFAULT NULL, @@ -71,11 +71,10 @@ CREATE TABLE Prims ( PathTaperX SMALLINT DEFAULT NULL, PathTaperY SMALLINT DEFAULT NULL, PathTwist SMALLINT DEFAULT NULL, - PathTwistBegin INT DEFAULT NULL, - ProfileBegin SMALLINT DEFAULT NULL, - ProfileEnd SMALLINT DEFAULT NULL, + ProfileBegin INT DEFAULT NULL, + ProfileEnd INT DEFAULT NULL, ProfileCurve INT DEFAULT NULL, - ProfileHollow SMALLINT DEFAULT NULL, + ProfileHollow INT DEFAULT NULL, State INT DEFAULT NULL, Texture BYTEA, ExtraParams BYTEA, diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_AssetStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_AssetStore.sql index 15e10b3988..aedf76428e 100644 --- a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_AssetStore.sql +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_AssetStore.sql @@ -1,6 +1,6 @@ CREATE TABLE Assets ( ID VARCHAR(36) NOT NULL, - Type TINYINT DEFAULT NULL, + Type SMALLINT DEFAULT NULL, Name VARCHAR(64) DEFAULT NULL, Description VARCHAR(64) DEFAULT NULL, Local BIT DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_InventoryStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_InventoryStore.sql index 5f4dcaac2d..38978ee752 100644 --- a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_InventoryStore.sql +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_InventoryStore.sql @@ -1,7 +1,7 @@ CREATE TABLE InventoryFolders ( ID VARCHAR(36) NOT NULL, Type SMALLINT DEFAULT NULL, - Version SMALLINT DEFAULT NULL, + Version INT DEFAULT NULL, ParentID VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, Name VARCHAR(64) DEFAULT NULL, @@ -13,8 +13,8 @@ CREATE INDEX InventoryFoldersParentIdIndex ON InventoryFolders (ParentID); CREATE TABLE InventoryItems ( ID VARCHAR(36) NOT NULL, - InvType SMALLINT DEFAULT NULL, - AssetType SMALLINT DEFAULT NULL, + InvType INT DEFAULT NULL, + AssetType INT DEFAULT NULL, AssetID VARCHAR(36) DEFAULT NULL, Folder VARCHAR(36) DEFAULT NULL, Owner VARCHAR(36) DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql index 7b591be9c6..1cf5e15289 100644 --- a/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql +++ b/OpenSim/Data/NHibernate/Resources/SQLiteDialect/001_RegionStore.sql @@ -71,7 +71,6 @@ CREATE TABLE Prims ( PathTaperX INT DEFAULT NULL, PathTaperY INT DEFAULT NULL, PathTwist INT DEFAULT NULL, - PathTwistBegin INT DEFAULT NULL, ProfileBegin INT DEFAULT NULL, ProfileEnd INT DEFAULT NULL, ProfileCurve INT DEFAULT NULL, diff --git a/OpenSim/Data/NHibernate/UInt16Type.cs b/OpenSim/Data/NHibernate/UInt16Type.cs index 907e8328e0..05b9ce688d 100644 --- a/OpenSim/Data/NHibernate/UInt16Type.cs +++ b/OpenSim/Data/NHibernate/UInt16Type.cs @@ -73,7 +73,7 @@ namespace OpenSim.Data.NHibernate int ord = rs.GetOrdinal(names[0]); if (!rs.IsDBNull(ord)) { - uint1 = (UInt16)rs.GetInt16(ord); + uint1 = (UInt16)rs.GetInt32(ord); } return uint1; @@ -82,7 +82,7 @@ namespace OpenSim.Data.NHibernate public void NullSafeSet(IDbCommand cmd, object obj, int index) { UInt16 uint1 = (UInt16)obj; - ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt16(uint1); + ((IDataParameter)cmd.Parameters[index]).Value = Convert.ToInt32(uint1); } public object Replace(object original, object target, object owner) @@ -97,7 +97,7 @@ namespace OpenSim.Data.NHibernate public SqlType[] SqlTypes { - get { return new SqlType [] { NHibernateUtil.Int16.SqlType }; } + get { return new SqlType [] { NHibernateUtil.Int32.SqlType }; } } } } diff --git a/OpenSim/Data/Tests/BasicRegionTest.cs b/OpenSim/Data/Tests/BasicRegionTest.cs index 8e58443af1..89cfd7f3ef 100644 --- a/OpenSim/Data/Tests/BasicRegionTest.cs +++ b/OpenSim/Data/Tests/BasicRegionTest.cs @@ -243,6 +243,11 @@ namespace OpenSim.Data.Tests byte clickaction = (byte) random.Next(127); PrimitiveBaseShape pbshap = new PrimitiveBaseShape(); pbshap = PrimitiveBaseShape.Default; + pbshap.PathBegin = ushort.MaxValue; + pbshap.PathEnd = ushort.MaxValue; + pbshap.ProfileBegin = ushort.MaxValue; + pbshap.ProfileEnd = ushort.MaxValue; + pbshap.ProfileHollow = ushort.MaxValue; Vector3 scale = new Vector3(random.Next(),random.Next(),random.Next()); byte updatef = (byte) random.Next(127); @@ -366,7 +371,14 @@ namespace OpenSim.Data.Tests //Assert.That(linknum,Is.EqualTo(p.LinkNum)); Assert.That(clickaction,Is.EqualTo(p.ClickAction)); Assert.That(scale,Is.EqualTo(p.Scale)); + //Assert.That(updatef,Is.EqualTo(p.UpdateFlag)); + + Assert.That(pbshap.PathBegin, Is.EqualTo(p.Shape.PathBegin)); + Assert.That(pbshap.PathEnd, Is.EqualTo(p.Shape.PathEnd)); + Assert.That(pbshap.ProfileBegin, Is.EqualTo(p.Shape.ProfileBegin)); + Assert.That(pbshap.ProfileEnd, Is.EqualTo(p.Shape.ProfileEnd)); + Assert.That(pbshap.ProfileHollow, Is.EqualTo(p.Shape.ProfileHollow)); } [Test]