diff options
Diffstat (limited to '')
29 files changed, 1514 insertions, 4126 deletions
diff --git a/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs b/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs deleted file mode 100644 index 7feec91..0000000 --- a/OpenSim/Data/MSSQL/MSSQLUserAccountData.cs +++ /dev/null | |||
@@ -1,246 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (c) Contributors, http://opensimulator.org/ | ||
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | ||
4 | * | ||
5 | * Redistribution and use in source and binary forms, with or without | ||
6 | * modification, are permitted provided that the following conditions are met: | ||
7 | * * Redistributions of source code must retain the above copyright | ||
8 | * notice, this list of conditions and the following disclaimer. | ||
9 | * * Redistributions in binary form must reproduce the above copyright | ||
10 | * notice, this list of conditions and the following disclaimer in the | ||
11 | * documentation and/or other materials provided with the distribution. | ||
12 | * * Neither the name of the OpenSimulator Project nor the | ||
13 | * names of its contributors may be used to endorse or promote products | ||
14 | * derived from this software without specific prior written permission. | ||
15 | * | ||
16 | * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ''AS IS'' AND ANY | ||
17 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||
18 | * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
19 | * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY | ||
20 | * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||
21 | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
22 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||
23 | * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||
24 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||
26 | */ | ||
27 | |||
28 | using System; | ||
29 | using System.Collections; | ||
30 | using System.Collections.Generic; | ||
31 | using System.Data; | ||
32 | using OpenMetaverse; | ||
33 | using OpenSim.Framework; | ||
34 | using System.Data.SqlClient; | ||
35 | using System.Text; | ||
36 | |||
37 | namespace OpenSim.Data.MSSQL | ||
38 | { | ||
39 | public class MSSQLUserAccountData : MSSQLGenericTableHandler<UserAccountData>,IUserAccountData | ||
40 | { | ||
41 | public MSSQLUserAccountData(string connectionString, string realm) : | ||
42 | base(connectionString, realm, "UserAccount") | ||
43 | { | ||
44 | } | ||
45 | //private string m_Realm; | ||
46 | //private List<string> m_ColumnNames = null; | ||
47 | //private MSSQLManager m_database; | ||
48 | |||
49 | //public MSSQLUserAccountData(string connectionString, string realm) | ||
50 | //{ | ||
51 | // m_Realm = realm; | ||
52 | // m_ConnectionString = connectionString; | ||
53 | // m_database = new MSSQLManager(connectionString); | ||
54 | |||
55 | // using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
56 | // { | ||
57 | // conn.Open(); | ||
58 | // Migration m = new Migration(conn, GetType().Assembly, "UserStore"); | ||
59 | // m.Update(); | ||
60 | // } | ||
61 | //} | ||
62 | |||
63 | //public List<UserAccountData> Query(UUID principalID, UUID scopeID, string query) | ||
64 | //{ | ||
65 | // return null; | ||
66 | //} | ||
67 | |||
68 | //public UserAccountData Get(UUID principalID, UUID scopeID) | ||
69 | //{ | ||
70 | // UserAccountData ret = new UserAccountData(); | ||
71 | // ret.Data = new Dictionary<string, string>(); | ||
72 | |||
73 | // string sql = string.Format("select * from {0} where UUID = @principalID", m_Realm); | ||
74 | // if (scopeID != UUID.Zero) | ||
75 | // sql += " and ScopeID = @scopeID"; | ||
76 | |||
77 | // using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
78 | // using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
79 | // { | ||
80 | // cmd.Parameters.Add(m_database.CreateParameter("@principalID", principalID)); | ||
81 | // cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | ||
82 | |||
83 | // conn.Open(); | ||
84 | // using (SqlDataReader result = cmd.ExecuteReader()) | ||
85 | // { | ||
86 | // if (result.Read()) | ||
87 | // { | ||
88 | // ret.PrincipalID = principalID; | ||
89 | // UUID scope; | ||
90 | // UUID.TryParse(result["ScopeID"].ToString(), out scope); | ||
91 | // ret.ScopeID = scope; | ||
92 | |||
93 | // if (m_ColumnNames == null) | ||
94 | // { | ||
95 | // m_ColumnNames = new List<string>(); | ||
96 | |||
97 | // DataTable schemaTable = result.GetSchemaTable(); | ||
98 | // foreach (DataRow row in schemaTable.Rows) | ||
99 | // m_ColumnNames.Add(row["ColumnName"].ToString()); | ||
100 | // } | ||
101 | |||
102 | // foreach (string s in m_ColumnNames) | ||
103 | // { | ||
104 | // if (s == "UUID") | ||
105 | // continue; | ||
106 | // if (s == "ScopeID") | ||
107 | // continue; | ||
108 | |||
109 | // ret.Data[s] = result[s].ToString(); | ||
110 | // } | ||
111 | // return ret; | ||
112 | // } | ||
113 | // } | ||
114 | // } | ||
115 | // return null; | ||
116 | //} | ||
117 | |||
118 | //public bool Store(UserAccountData data) | ||
119 | //{ | ||
120 | // if (data.Data.ContainsKey("UUID")) | ||
121 | // data.Data.Remove("UUID"); | ||
122 | // if (data.Data.ContainsKey("ScopeID")) | ||
123 | // data.Data.Remove("ScopeID"); | ||
124 | |||
125 | // string[] fields = new List<string>(data.Data.Keys).ToArray(); | ||
126 | |||
127 | // using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
128 | // using (SqlCommand cmd = new SqlCommand()) | ||
129 | // { | ||
130 | // StringBuilder updateBuilder = new StringBuilder(); | ||
131 | // updateBuilder.AppendFormat("update {0} set ", m_Realm); | ||
132 | // bool first = true; | ||
133 | // foreach (string field in fields) | ||
134 | // { | ||
135 | // if (!first) | ||
136 | // updateBuilder.Append(", "); | ||
137 | // updateBuilder.AppendFormat("{0} = @{0}", field); | ||
138 | |||
139 | // first = false; | ||
140 | // cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); | ||
141 | // } | ||
142 | |||
143 | // updateBuilder.Append(" where UUID = @principalID"); | ||
144 | |||
145 | // if (data.ScopeID != UUID.Zero) | ||
146 | // updateBuilder.Append(" and ScopeID = @scopeID"); | ||
147 | |||
148 | // cmd.CommandText = updateBuilder.ToString(); | ||
149 | // cmd.Connection = conn; | ||
150 | // cmd.Parameters.Add(m_database.CreateParameter("@principalID", data.PrincipalID)); | ||
151 | // cmd.Parameters.Add(m_database.CreateParameter("@scopeID", data.ScopeID)); | ||
152 | // conn.Open(); | ||
153 | |||
154 | // if (cmd.ExecuteNonQuery() < 1) | ||
155 | // { | ||
156 | // StringBuilder insertBuilder = new StringBuilder(); | ||
157 | // insertBuilder.AppendFormat("insert into {0} (UUID, ScopeID, ", m_Realm); | ||
158 | // insertBuilder.Append(String.Join(", ", fields)); | ||
159 | // insertBuilder.Append(") values (@principalID, @scopeID, @"); | ||
160 | // insertBuilder.Append(String.Join(", @", fields)); | ||
161 | // insertBuilder.Append(")"); | ||
162 | |||
163 | // cmd.CommandText = insertBuilder.ToString(); | ||
164 | |||
165 | // if (cmd.ExecuteNonQuery() < 1) | ||
166 | // { | ||
167 | // return false; | ||
168 | // } | ||
169 | // } | ||
170 | // } | ||
171 | // return true; | ||
172 | //} | ||
173 | |||
174 | //public bool Store(UserAccountData data, UUID principalID, string token) | ||
175 | //{ | ||
176 | // return false; | ||
177 | //} | ||
178 | |||
179 | //public bool SetDataItem(UUID principalID, string item, string value) | ||
180 | //{ | ||
181 | // string sql = string.Format("update {0} set {1} = @{1} where UUID = @UUID", m_Realm, item); | ||
182 | // using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
183 | // using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
184 | // { | ||
185 | // cmd.Parameters.Add(m_database.CreateParameter("@" + item, value)); | ||
186 | // cmd.Parameters.Add(m_database.CreateParameter("@UUID", principalID)); | ||
187 | |||
188 | // conn.Open(); | ||
189 | |||
190 | // if (cmd.ExecuteNonQuery() > 0) | ||
191 | // return true; | ||
192 | // } | ||
193 | // return false; | ||
194 | //} | ||
195 | |||
196 | //public UserAccountData[] Get(string[] keys, string[] vals) | ||
197 | //{ | ||
198 | // return null; | ||
199 | //} | ||
200 | |||
201 | public UserAccountData[] GetUsers(UUID scopeID, string query) | ||
202 | { | ||
203 | string[] words = query.Split(new char[] { ' ' }); | ||
204 | |||
205 | for (int i = 0; i < words.Length; i++) | ||
206 | { | ||
207 | if (words[i].Length < 3) | ||
208 | { | ||
209 | if (i != words.Length - 1) | ||
210 | Array.Copy(words, i + 1, words, i, words.Length - i - 1); | ||
211 | Array.Resize(ref words, words.Length - 1); | ||
212 | } | ||
213 | } | ||
214 | |||
215 | if (words.Length == 0) | ||
216 | return new UserAccountData[0]; | ||
217 | |||
218 | if (words.Length > 2) | ||
219 | return new UserAccountData[0]; | ||
220 | |||
221 | string sql = ""; | ||
222 | |||
223 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | ||
224 | using (SqlCommand cmd = new SqlCommand()) | ||
225 | { | ||
226 | if (words.Length == 1) | ||
227 | { | ||
228 | sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @search or [LastName] like @search)", m_Realm); | ||
229 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | ||
230 | cmd.Parameters.Add(m_database.CreateParameter("@search", "%" + words[0] + "%")); | ||
231 | } | ||
232 | else | ||
233 | { | ||
234 | sql = String.Format("select * from {0} where ([ScopeID]=@ScopeID or [ScopeID]='00000000-0000-0000-0000-000000000000') and ([FirstName] like @searchFirst or [LastName] like @searchLast)", m_Realm); | ||
235 | cmd.Parameters.Add(m_database.CreateParameter("@searchFirst", "%" + words[0] + "%")); | ||
236 | cmd.Parameters.Add(m_database.CreateParameter("@searchLast", "%" + words[1] + "%")); | ||
237 | cmd.Parameters.Add(m_database.CreateParameter("@ScopeID", scopeID.ToString())); | ||
238 | } | ||
239 | cmd.Connection = conn; | ||
240 | cmd.CommandText = sql; | ||
241 | conn.Open(); | ||
242 | return DoQuery(cmd); | ||
243 | } | ||
244 | } | ||
245 | } | ||
246 | } | ||
diff --git a/OpenSim/Data/MSSQL/Resources/AssetStore.migrations b/OpenSim/Data/MSSQL/Resources/AssetStore.migrations deleted file mode 100644 index 8664ce9..0000000 --- a/OpenSim/Data/MSSQL/Resources/AssetStore.migrations +++ /dev/null | |||
@@ -1,106 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | CREATE TABLE [assets] ( | ||
4 | [id] [varchar](36) NOT NULL, | ||
5 | [name] [varchar](64) NOT NULL, | ||
6 | [description] [varchar](64) NOT NULL, | ||
7 | [assetType] [tinyint] NOT NULL, | ||
8 | [local] [tinyint] NOT NULL, | ||
9 | [temporary] [tinyint] NOT NULL, | ||
10 | [data] [image] NOT NULL, | ||
11 | PRIMARY KEY CLUSTERED | ||
12 | ( | ||
13 | [id] ASC | ||
14 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
15 | ) ON [PRIMARY] | ||
16 | |||
17 | |||
18 | :VERSION 2 | ||
19 | |||
20 | BEGIN TRANSACTION | ||
21 | |||
22 | CREATE TABLE Tmp_assets | ||
23 | ( | ||
24 | id varchar(36) NOT NULL, | ||
25 | name varchar(64) NOT NULL, | ||
26 | description varchar(64) NOT NULL, | ||
27 | assetType tinyint NOT NULL, | ||
28 | local bit NOT NULL, | ||
29 | temporary bit NOT NULL, | ||
30 | data image NOT NULL | ||
31 | ) ON [PRIMARY] | ||
32 | TEXTIMAGE_ON [PRIMARY] | ||
33 | |||
34 | IF EXISTS(SELECT * FROM assets) | ||
35 | EXEC('INSERT INTO Tmp_assets (id, name, description, assetType, local, temporary, data) | ||
36 | SELECT id, name, description, assetType, CONVERT(bit, local), CONVERT(bit, temporary), data FROM assets WITH (HOLDLOCK TABLOCKX)') | ||
37 | |||
38 | DROP TABLE assets | ||
39 | |||
40 | EXECUTE sp_rename N'Tmp_assets', N'assets', 'OBJECT' | ||
41 | |||
42 | ALTER TABLE dbo.assets ADD CONSTRAINT | ||
43 | PK__assets__id PRIMARY KEY CLUSTERED | ||
44 | ( | ||
45 | id | ||
46 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
47 | |||
48 | COMMIT | ||
49 | |||
50 | |||
51 | :VERSION 3 | ||
52 | |||
53 | BEGIN TRANSACTION | ||
54 | |||
55 | ALTER TABLE assets add create_time integer default 0 | ||
56 | ALTER TABLE assets add access_time integer default 0 | ||
57 | |||
58 | COMMIT | ||
59 | |||
60 | |||
61 | :VERSION 4 | ||
62 | |||
63 | BEGIN TRANSACTION | ||
64 | |||
65 | CREATE TABLE dbo.Tmp_assets | ||
66 | ( | ||
67 | id uniqueidentifier NOT NULL, | ||
68 | name varchar(64) NOT NULL, | ||
69 | description varchar(64) NOT NULL, | ||
70 | assetType tinyint NOT NULL, | ||
71 | local bit NOT NULL, | ||
72 | temporary bit NOT NULL, | ||
73 | data image NOT NULL, | ||
74 | create_time int NULL, | ||
75 | access_time int NULL | ||
76 | ) ON [PRIMARY] | ||
77 | TEXTIMAGE_ON [PRIMARY] | ||
78 | |||
79 | IF EXISTS(SELECT * FROM dbo.assets) | ||
80 | EXEC('INSERT INTO dbo.Tmp_assets (id, name, description, assetType, local, temporary, data, create_time, access_time) | ||
81 | SELECT CONVERT(uniqueidentifier, id), name, description, assetType, local, temporary, data, create_time, access_time FROM dbo.assets WITH (HOLDLOCK TABLOCKX)') | ||
82 | |||
83 | DROP TABLE assets | ||
84 | |||
85 | EXECUTE sp_rename N'Tmp_assets', N'assets', 'OBJECT' | ||
86 | |||
87 | ALTER TABLE dbo.assets ADD CONSTRAINT | ||
88 | PK__assets__id PRIMARY KEY CLUSTERED | ||
89 | ( | ||
90 | id | ||
91 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
92 | |||
93 | COMMIT | ||
94 | |||
95 | |||
96 | :VERSION 5 | ||
97 | |||
98 | DELETE FROM assets WHERE id = 'dc4b9f0b-d008-45c6-96a4-01dd947ac621'; | ||
99 | |||
100 | :VERSION 6 | ||
101 | |||
102 | ALTER TABLE assets ADD asset_flags INTEGER NOT NULL DEFAULT 0; | ||
103 | |||
104 | :VERSION 7 | ||
105 | |||
106 | alter table assets add creatorid varchar(36) not null default ''; | ||
diff --git a/OpenSim/Data/MSSQL/Resources/AuthStore.migrations b/OpenSim/Data/MSSQL/Resources/AuthStore.migrations deleted file mode 100644 index eb91296..0000000 --- a/OpenSim/Data/MSSQL/Resources/AuthStore.migrations +++ /dev/null | |||
@@ -1,32 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [auth] ( | ||
6 | [uuid] [uniqueidentifier] NOT NULL default '00000000-0000-0000-0000-000000000000', | ||
7 | [passwordHash] [varchar](32) NOT NULL, | ||
8 | [passwordSalt] [varchar](32) NOT NULL, | ||
9 | [webLoginKey] [varchar](255) NOT NULL, | ||
10 | [accountType] VARCHAR(32) NOT NULL DEFAULT 'UserAccount', | ||
11 | ) ON [PRIMARY] | ||
12 | |||
13 | CREATE TABLE [tokens] ( | ||
14 | [uuid] [uniqueidentifier] NOT NULL default '00000000-0000-0000-0000-000000000000', | ||
15 | [token] [varchar](255) NOT NULL, | ||
16 | [validity] [datetime] NOT NULL ) | ||
17 | ON [PRIMARY] | ||
18 | |||
19 | COMMIT | ||
20 | |||
21 | :VERSION 2 | ||
22 | |||
23 | BEGIN TRANSACTION | ||
24 | |||
25 | IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[users]') AND type in (N'U')) | ||
26 | INSERT INTO auth (UUID, passwordHash, passwordSalt, webLoginKey, accountType) SELECT [UUID] AS UUID, [passwordHash] AS passwordHash, [passwordSalt] AS passwordSalt, [webLoginKey] AS webLoginKey, 'UserAccount' as [accountType] FROM users; | ||
27 | |||
28 | COMMIT | ||
29 | |||
30 | |||
31 | |||
32 | |||
diff --git a/OpenSim/Data/MSSQL/Resources/Avatar.migrations b/OpenSim/Data/MSSQL/Resources/Avatar.migrations deleted file mode 100644 index 61f7b56..0000000 --- a/OpenSim/Data/MSSQL/Resources/Avatar.migrations +++ /dev/null | |||
@@ -1,64 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [Avatars] ( | ||
6 | [PrincipalID] uniqueidentifier NOT NULL, | ||
7 | [Name] varchar(32) NOT NULL, | ||
8 | [Value] varchar(255) NOT NULL DEFAULT '', | ||
9 | PRIMARY KEY CLUSTERED | ||
10 | ( | ||
11 | [PrincipalID] ASC, [Name] ASC | ||
12 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
13 | ) ON [PRIMARY] | ||
14 | |||
15 | |||
16 | COMMIT | ||
17 | |||
18 | :VERSION 2 | ||
19 | |||
20 | BEGIN TRANSACTION | ||
21 | |||
22 | CREATE TABLE dbo.Tmp_Avatars | ||
23 | ( | ||
24 | PrincipalID uniqueidentifier NOT NULL, | ||
25 | [Name] varchar(32) NOT NULL, | ||
26 | Value text NOT NULL DEFAULT '', | ||
27 | ) ON [PRIMARY] | ||
28 | TEXTIMAGE_ON [PRIMARY] | ||
29 | |||
30 | IF EXISTS(SELECT * FROM dbo.Avatars) | ||
31 | EXEC('INSERT INTO dbo.Tmp_Avatars (PrincipalID, Name, Value) | ||
32 | SELECT PrincipalID, CONVERT(text, Name), Value FROM dbo.Avatars WITH (HOLDLOCK TABLOCKX)') | ||
33 | |||
34 | DROP TABLE dbo.Avatars | ||
35 | |||
36 | EXECUTE sp_rename N'dbo.Tmp_Avatars', N'Avatars', 'OBJECT' | ||
37 | |||
38 | COMMIT | ||
39 | |||
40 | :VERSION 3 | ||
41 | |||
42 | BEGIN TRANSACTION | ||
43 | |||
44 | CREATE TABLE dbo.Tmp_Avatars | ||
45 | ( | ||
46 | PrincipalID uniqueidentifier NOT NULL, | ||
47 | [Name] varchar(32) NOT NULL, | ||
48 | Value text NOT NULL DEFAULT '', | ||
49 | PRIMARY KEY CLUSTERED | ||
50 | ( | ||
51 | [PrincipalID] ASC, [Name] ASC | ||
52 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
53 | ) ON [PRIMARY] | ||
54 | TEXTIMAGE_ON [PRIMARY] | ||
55 | |||
56 | IF EXISTS(SELECT * FROM dbo.Avatars) | ||
57 | EXEC('INSERT INTO dbo.Tmp_Avatars (PrincipalID, Name, Value) | ||
58 | SELECT PrincipalID, CONVERT(text, Name), Value FROM dbo.Avatars WITH (HOLDLOCK TABLOCKX)') | ||
59 | |||
60 | DROP TABLE dbo.Avatars | ||
61 | |||
62 | EXECUTE sp_rename N'dbo.Tmp_Avatars', N'Avatars', 'OBJECT' | ||
63 | COMMIT | ||
64 | |||
diff --git a/OpenSim/Data/MSSQL/Resources/EstateStore.migrations b/OpenSim/Data/MSSQL/Resources/EstateStore.migrations deleted file mode 100644 index 64b2d2b..0000000 --- a/OpenSim/Data/MSSQL/Resources/EstateStore.migrations +++ /dev/null | |||
@@ -1,334 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [dbo].[estate_managers]( | ||
6 | [EstateID] [int] NOT NULL, | ||
7 | [uuid] [varchar](36) NOT NULL, | ||
8 | CONSTRAINT [PK_estate_managers] PRIMARY KEY CLUSTERED | ||
9 | ( | ||
10 | [EstateID] ASC | ||
11 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
12 | ) ON [PRIMARY]; | ||
13 | |||
14 | CREATE TABLE [dbo].[estate_groups]( | ||
15 | [EstateID] [int] NOT NULL, | ||
16 | [uuid] [varchar](36) NOT NULL, | ||
17 | CONSTRAINT [PK_estate_groups] PRIMARY KEY CLUSTERED | ||
18 | ( | ||
19 | [EstateID] ASC | ||
20 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
21 | ) ON [PRIMARY]; | ||
22 | |||
23 | |||
24 | CREATE TABLE [dbo].[estate_users]( | ||
25 | [EstateID] [int] NOT NULL, | ||
26 | [uuid] [varchar](36) NOT NULL, | ||
27 | CONSTRAINT [PK_estate_users] PRIMARY KEY CLUSTERED | ||
28 | ( | ||
29 | [EstateID] ASC | ||
30 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
31 | ) ON [PRIMARY]; | ||
32 | |||
33 | |||
34 | CREATE TABLE [dbo].[estateban]( | ||
35 | [EstateID] [int] NOT NULL, | ||
36 | [bannedUUID] [varchar](36) NOT NULL, | ||
37 | [bannedIp] [varchar](16) NOT NULL, | ||
38 | [bannedIpHostMask] [varchar](16) NOT NULL, | ||
39 | [bannedNameMask] [varchar](64) NULL DEFAULT (NULL), | ||
40 | CONSTRAINT [PK_estateban] PRIMARY KEY CLUSTERED | ||
41 | ( | ||
42 | [EstateID] ASC | ||
43 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
44 | ) ON [PRIMARY]; | ||
45 | |||
46 | CREATE TABLE [dbo].[estate_settings]( | ||
47 | [EstateID] [int] IDENTITY(1,100) NOT NULL, | ||
48 | [EstateName] [varchar](64) NULL DEFAULT (NULL), | ||
49 | [AbuseEmailToEstateOwner] [bit] NOT NULL, | ||
50 | [DenyAnonymous] [bit] NOT NULL, | ||
51 | [ResetHomeOnTeleport] [bit] NOT NULL, | ||
52 | [FixedSun] [bit] NOT NULL, | ||
53 | [DenyTransacted] [bit] NOT NULL, | ||
54 | [BlockDwell] [bit] NOT NULL, | ||
55 | [DenyIdentified] [bit] NOT NULL, | ||
56 | [AllowVoice] [bit] NOT NULL, | ||
57 | [UseGlobalTime] [bit] NOT NULL, | ||
58 | [PricePerMeter] [int] NOT NULL, | ||
59 | [TaxFree] [bit] NOT NULL, | ||
60 | [AllowDirectTeleport] [bit] NOT NULL, | ||
61 | [RedirectGridX] [int] NOT NULL, | ||
62 | [RedirectGridY] [int] NOT NULL, | ||
63 | [ParentEstateID] [int] NOT NULL, | ||
64 | [SunPosition] [float] NOT NULL, | ||
65 | [EstateSkipScripts] [bit] NOT NULL, | ||
66 | [BillableFactor] [float] NOT NULL, | ||
67 | [PublicAccess] [bit] NOT NULL, | ||
68 | [AbuseEmail] [varchar](255) NOT NULL, | ||
69 | [EstateOwner] [varchar](36) NOT NULL, | ||
70 | [DenyMinors] [bit] NOT NULL, | ||
71 | CONSTRAINT [PK_estate_settings] PRIMARY KEY CLUSTERED | ||
72 | ( | ||
73 | [EstateID] ASC | ||
74 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
75 | ) ON [PRIMARY]; | ||
76 | |||
77 | |||
78 | CREATE TABLE [dbo].[estate_map]( | ||
79 | [RegionID] [varchar](36) NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
80 | [EstateID] [int] NOT NULL, | ||
81 | CONSTRAINT [PK_estate_map] PRIMARY KEY CLUSTERED | ||
82 | ( | ||
83 | [RegionID] ASC | ||
84 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
85 | ) ON [PRIMARY]; | ||
86 | |||
87 | COMMIT | ||
88 | |||
89 | :VERSION 2 | ||
90 | |||
91 | BEGIN TRANSACTION | ||
92 | |||
93 | ALTER TABLE dbo.estate_managers DROP CONSTRAINT PK_estate_managers | ||
94 | |||
95 | CREATE NONCLUSTERED INDEX IX_estate_managers ON dbo.estate_managers | ||
96 | ( | ||
97 | EstateID | ||
98 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
99 | |||
100 | ALTER TABLE dbo.estate_groups DROP CONSTRAINT PK_estate_groups | ||
101 | |||
102 | CREATE NONCLUSTERED INDEX IX_estate_groups ON dbo.estate_groups | ||
103 | ( | ||
104 | EstateID | ||
105 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
106 | |||
107 | |||
108 | ALTER TABLE dbo.estate_users DROP CONSTRAINT PK_estate_users | ||
109 | |||
110 | CREATE NONCLUSTERED INDEX IX_estate_users ON dbo.estate_users | ||
111 | ( | ||
112 | EstateID | ||
113 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
114 | |||
115 | COMMIT | ||
116 | |||
117 | |||
118 | :VERSION 3 | ||
119 | |||
120 | BEGIN TRANSACTION | ||
121 | |||
122 | CREATE TABLE dbo.Tmp_estateban | ||
123 | ( | ||
124 | EstateID int NOT NULL, | ||
125 | bannedUUID varchar(36) NOT NULL, | ||
126 | bannedIp varchar(16) NULL, | ||
127 | bannedIpHostMask varchar(16) NULL, | ||
128 | bannedNameMask varchar(64) NULL | ||
129 | ) ON [PRIMARY] | ||
130 | |||
131 | IF EXISTS(SELECT * FROM dbo.estateban) | ||
132 | EXEC('INSERT INTO dbo.Tmp_estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) | ||
133 | SELECT EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask FROM dbo.estateban') | ||
134 | |||
135 | DROP TABLE dbo.estateban | ||
136 | |||
137 | EXECUTE sp_rename N'dbo.Tmp_estateban', N'estateban', 'OBJECT' | ||
138 | |||
139 | CREATE NONCLUSTERED INDEX IX_estateban ON dbo.estateban | ||
140 | ( | ||
141 | EstateID | ||
142 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
143 | |||
144 | COMMIT | ||
145 | |||
146 | |||
147 | :VERSION 4 | ||
148 | |||
149 | BEGIN TRANSACTION | ||
150 | |||
151 | CREATE TABLE dbo.Tmp_estate_managers | ||
152 | ( | ||
153 | EstateID int NOT NULL, | ||
154 | uuid uniqueidentifier NOT NULL | ||
155 | ) ON [PRIMARY] | ||
156 | |||
157 | IF EXISTS(SELECT * FROM dbo.estate_managers) | ||
158 | EXEC('INSERT INTO dbo.Tmp_estate_managers (EstateID, uuid) | ||
159 | SELECT EstateID, CONVERT(uniqueidentifier, uuid) FROM dbo.estate_managers WITH (HOLDLOCK TABLOCKX)') | ||
160 | |||
161 | DROP TABLE dbo.estate_managers | ||
162 | |||
163 | EXECUTE sp_rename N'dbo.Tmp_estate_managers', N'estate_managers', 'OBJECT' | ||
164 | |||
165 | CREATE NONCLUSTERED INDEX IX_estate_managers ON dbo.estate_managers | ||
166 | ( | ||
167 | EstateID | ||
168 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
169 | |||
170 | COMMIT | ||
171 | |||
172 | |||
173 | :VERSION 5 | ||
174 | |||
175 | BEGIN TRANSACTION | ||
176 | |||
177 | CREATE TABLE dbo.Tmp_estate_groups | ||
178 | ( | ||
179 | EstateID int NOT NULL, | ||
180 | uuid uniqueidentifier NOT NULL | ||
181 | ) ON [PRIMARY] | ||
182 | |||
183 | IF EXISTS(SELECT * FROM dbo.estate_groups) | ||
184 | EXEC('INSERT INTO dbo.Tmp_estate_groups (EstateID, uuid) | ||
185 | SELECT EstateID, CONVERT(uniqueidentifier, uuid) FROM dbo.estate_groups WITH (HOLDLOCK TABLOCKX)') | ||
186 | |||
187 | DROP TABLE dbo.estate_groups | ||
188 | |||
189 | EXECUTE sp_rename N'dbo.Tmp_estate_groups', N'estate_groups', 'OBJECT' | ||
190 | |||
191 | CREATE NONCLUSTERED INDEX IX_estate_groups ON dbo.estate_groups | ||
192 | ( | ||
193 | EstateID | ||
194 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
195 | |||
196 | COMMIT | ||
197 | |||
198 | |||
199 | :VERSION 6 | ||
200 | |||
201 | BEGIN TRANSACTION | ||
202 | |||
203 | CREATE TABLE dbo.Tmp_estate_users | ||
204 | ( | ||
205 | EstateID int NOT NULL, | ||
206 | uuid uniqueidentifier NOT NULL | ||
207 | ) ON [PRIMARY] | ||
208 | |||
209 | IF EXISTS(SELECT * FROM dbo.estate_users) | ||
210 | EXEC('INSERT INTO dbo.Tmp_estate_users (EstateID, uuid) | ||
211 | SELECT EstateID, CONVERT(uniqueidentifier, uuid) FROM dbo.estate_users WITH (HOLDLOCK TABLOCKX)') | ||
212 | |||
213 | DROP TABLE dbo.estate_users | ||
214 | |||
215 | EXECUTE sp_rename N'dbo.Tmp_estate_users', N'estate_users', 'OBJECT' | ||
216 | |||
217 | CREATE NONCLUSTERED INDEX IX_estate_users ON dbo.estate_users | ||
218 | ( | ||
219 | EstateID | ||
220 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
221 | |||
222 | COMMIT | ||
223 | |||
224 | |||
225 | :VERSION 7 | ||
226 | |||
227 | BEGIN TRANSACTION | ||
228 | |||
229 | CREATE TABLE dbo.Tmp_estateban | ||
230 | ( | ||
231 | EstateID int NOT NULL, | ||
232 | bannedUUID uniqueidentifier NOT NULL, | ||
233 | bannedIp varchar(16) NULL, | ||
234 | bannedIpHostMask varchar(16) NULL, | ||
235 | bannedNameMask varchar(64) NULL | ||
236 | ) ON [PRIMARY] | ||
237 | |||
238 | IF EXISTS(SELECT * FROM dbo.estateban) | ||
239 | EXEC('INSERT INTO dbo.Tmp_estateban (EstateID, bannedUUID, bannedIp, bannedIpHostMask, bannedNameMask) | ||
240 | SELECT EstateID, CONVERT(uniqueidentifier, bannedUUID), bannedIp, bannedIpHostMask, bannedNameMask FROM dbo.estateban WITH (HOLDLOCK TABLOCKX)') | ||
241 | |||
242 | DROP TABLE dbo.estateban | ||
243 | |||
244 | EXECUTE sp_rename N'dbo.Tmp_estateban', N'estateban', 'OBJECT' | ||
245 | |||
246 | CREATE NONCLUSTERED INDEX IX_estateban ON dbo.estateban | ||
247 | ( | ||
248 | EstateID | ||
249 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
250 | |||
251 | COMMIT | ||
252 | |||
253 | |||
254 | :VERSION 8 | ||
255 | |||
256 | BEGIN TRANSACTION | ||
257 | |||
258 | CREATE TABLE dbo.Tmp_estate_settings | ||
259 | ( | ||
260 | EstateID int NOT NULL IDENTITY (1, 100), | ||
261 | EstateName varchar(64) NULL DEFAULT (NULL), | ||
262 | AbuseEmailToEstateOwner bit NOT NULL, | ||
263 | DenyAnonymous bit NOT NULL, | ||
264 | ResetHomeOnTeleport bit NOT NULL, | ||
265 | FixedSun bit NOT NULL, | ||
266 | DenyTransacted bit NOT NULL, | ||
267 | BlockDwell bit NOT NULL, | ||
268 | DenyIdentified bit NOT NULL, | ||
269 | AllowVoice bit NOT NULL, | ||
270 | UseGlobalTime bit NOT NULL, | ||
271 | PricePerMeter int NOT NULL, | ||
272 | TaxFree bit NOT NULL, | ||
273 | AllowDirectTeleport bit NOT NULL, | ||
274 | RedirectGridX int NOT NULL, | ||
275 | RedirectGridY int NOT NULL, | ||
276 | ParentEstateID int NOT NULL, | ||
277 | SunPosition float(53) NOT NULL, | ||
278 | EstateSkipScripts bit NOT NULL, | ||
279 | BillableFactor float(53) NOT NULL, | ||
280 | PublicAccess bit NOT NULL, | ||
281 | AbuseEmail varchar(255) NOT NULL, | ||
282 | EstateOwner uniqueidentifier NOT NULL, | ||
283 | DenyMinors bit NOT NULL | ||
284 | ) ON [PRIMARY] | ||
285 | |||
286 | SET IDENTITY_INSERT dbo.Tmp_estate_settings ON | ||
287 | |||
288 | IF EXISTS(SELECT * FROM dbo.estate_settings) | ||
289 | EXEC('INSERT INTO dbo.Tmp_estate_settings (EstateID, EstateName, AbuseEmailToEstateOwner, DenyAnonymous, ResetHomeOnTeleport, FixedSun, DenyTransacted, BlockDwell, DenyIdentified, AllowVoice, UseGlobalTime, PricePerMeter, TaxFree, AllowDirectTeleport, RedirectGridX, RedirectGridY, ParentEstateID, SunPosition, EstateSkipScripts, BillableFactor, PublicAccess, AbuseEmail, EstateOwner, DenyMinors) | ||
290 | SELECT EstateID, EstateName, AbuseEmailToEstateOwner, DenyAnonymous, ResetHomeOnTeleport, FixedSun, DenyTransacted, BlockDwell, DenyIdentified, AllowVoice, UseGlobalTime, PricePerMeter, TaxFree, AllowDirectTeleport, RedirectGridX, RedirectGridY, ParentEstateID, SunPosition, EstateSkipScripts, BillableFactor, PublicAccess, AbuseEmail, CONVERT(uniqueidentifier, EstateOwner), DenyMinors FROM dbo.estate_settings WITH (HOLDLOCK TABLOCKX)') | ||
291 | |||
292 | SET IDENTITY_INSERT dbo.Tmp_estate_settings OFF | ||
293 | |||
294 | DROP TABLE dbo.estate_settings | ||
295 | |||
296 | EXECUTE sp_rename N'dbo.Tmp_estate_settings', N'estate_settings', 'OBJECT' | ||
297 | |||
298 | ALTER TABLE dbo.estate_settings ADD CONSTRAINT | ||
299 | PK_estate_settings PRIMARY KEY CLUSTERED | ||
300 | ( | ||
301 | EstateID | ||
302 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
303 | |||
304 | COMMIT | ||
305 | |||
306 | |||
307 | :VERSION 9 | ||
308 | |||
309 | BEGIN TRANSACTION | ||
310 | |||
311 | CREATE TABLE dbo.Tmp_estate_map | ||
312 | ( | ||
313 | RegionID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
314 | EstateID int NOT NULL | ||
315 | ) ON [PRIMARY] | ||
316 | |||
317 | IF EXISTS(SELECT * FROM dbo.estate_map) | ||
318 | EXEC('INSERT INTO dbo.Tmp_estate_map (RegionID, EstateID) | ||
319 | SELECT CONVERT(uniqueidentifier, RegionID), EstateID FROM dbo.estate_map WITH (HOLDLOCK TABLOCKX)') | ||
320 | |||
321 | DROP TABLE dbo.estate_map | ||
322 | |||
323 | EXECUTE sp_rename N'dbo.Tmp_estate_map', N'estate_map', 'OBJECT' | ||
324 | |||
325 | ALTER TABLE dbo.estate_map ADD CONSTRAINT | ||
326 | PK_estate_map PRIMARY KEY CLUSTERED | ||
327 | ( | ||
328 | RegionID | ||
329 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
330 | |||
331 | |||
332 | COMMIT | ||
333 | |||
334 | |||
diff --git a/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations b/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations deleted file mode 100644 index cc94c4e..0000000 --- a/OpenSim/Data/MSSQL/Resources/FriendsStore.migrations +++ /dev/null | |||
@@ -1,50 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [Friends] ( | ||
6 | [PrincipalID] uniqueidentifier NOT NULL, | ||
7 | [Friend] varchar(255) NOT NULL, | ||
8 | [Flags] char(16) NOT NULL DEFAULT '0', | ||
9 | [Offered] varchar(32) NOT NULL DEFAULT 0) | ||
10 | ON [PRIMARY] | ||
11 | |||
12 | COMMIT | ||
13 | |||
14 | :VERSION 2 | ||
15 | |||
16 | BEGIN TRANSACTION | ||
17 | |||
18 | IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[userfriends]') AND type in (N'U')) | ||
19 | INSERT INTO Friends (PrincipalID, Friend, Flags, Offered) | ||
20 | SELECT [ownerID], [friendID], [friendPerms], 0 FROM userfriends; | ||
21 | |||
22 | COMMIT | ||
23 | |||
24 | :VERSION 3 | ||
25 | |||
26 | BEGIN TRANSACTION | ||
27 | |||
28 | CREATE TABLE [Tmp_Friends] | ||
29 | ([PrincipalID] varchar(255) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
30 | [Friend] varchar(255) NOT NULL, | ||
31 | [Flags] char(16) NOT NULL DEFAULT '0', | ||
32 | [Offered] varchar(32) NOT NULL DEFAULT 0) | ||
33 | ON [PRIMARY] | ||
34 | |||
35 | |||
36 | IF EXISTS(SELECT * FROM dbo.Friends) | ||
37 | EXEC('INSERT INTO dbo.Tmp_Friends (PrincipalID, Friend, Flags, Offered) | ||
38 | SELECT CONVERT(varchar(255),PrincipalID), Friend, Flags, Offered FROM dbo.Friends WITH (HOLDLOCK TABLOCKX)') | ||
39 | |||
40 | DROP TABLE dbo.Friends | ||
41 | |||
42 | EXECUTE sp_rename N'dbo.Tmp_Friends', N'Friends', 'OBJECT' | ||
43 | |||
44 | ALTER TABLE dbo.Friends ADD | ||
45 | PRIMARY KEY CLUSTERED | ||
46 | ( | ||
47 | [PrincipalID] ASC, [Friend] ASC | ||
48 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
49 | |||
50 | COMMIT \ No newline at end of file | ||
diff --git a/OpenSim/Data/MSSQL/Resources/GridStore.migrations b/OpenSim/Data/MSSQL/Resources/GridStore.migrations deleted file mode 100644 index de0cea7..0000000 --- a/OpenSim/Data/MSSQL/Resources/GridStore.migrations +++ /dev/null | |||
@@ -1,245 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [dbo].[regions]( | ||
6 | [regionHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
7 | [regionName] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
8 | [uuid] [varchar](255) COLLATE Latin1_General_CI_AS NOT NULL, | ||
9 | [regionRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
10 | [regionSecret] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
11 | [regionSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
12 | [regionDataURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
13 | [serverIP] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
14 | [serverPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
15 | [serverURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
16 | [locX] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
17 | [locY] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
18 | [locZ] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
19 | [eastOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
20 | [westOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
21 | [southOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
22 | [northOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
23 | [regionAssetURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
24 | [regionAssetRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
25 | [regionAssetSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
26 | [regionUserURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
27 | [regionUserRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
28 | [regionUserSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
29 | [regionMapTexture] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
30 | [serverHttpPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
31 | [serverRemotingPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
32 | [owner_uuid] [varchar](36) COLLATE Latin1_General_CI_AS NULL, | ||
33 | PRIMARY KEY CLUSTERED | ||
34 | ( | ||
35 | [uuid] ASC | ||
36 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
37 | ) ON [PRIMARY] | ||
38 | |||
39 | COMMIT | ||
40 | |||
41 | |||
42 | :VERSION 2 | ||
43 | |||
44 | BEGIN TRANSACTION | ||
45 | |||
46 | CREATE TABLE Tmp_regions | ||
47 | ( | ||
48 | uuid varchar(36) COLLATE Latin1_General_CI_AS NOT NULL, | ||
49 | regionHandle bigint NULL, | ||
50 | regionName varchar(20) NULL, | ||
51 | regionRecvKey varchar(128) NULL, | ||
52 | regionSendKey varchar(128) NULL, | ||
53 | regionSecret varchar(128) NULL, | ||
54 | regionDataURI varchar(128) NULL, | ||
55 | serverIP varchar(64) NULL, | ||
56 | serverPort int NULL, | ||
57 | serverURI varchar(255) NULL, | ||
58 | locX int NULL, | ||
59 | locY int NULL, | ||
60 | locZ int NULL, | ||
61 | eastOverrideHandle bigint NULL, | ||
62 | westOverrideHandle bigint NULL, | ||
63 | southOverrideHandle bigint NULL, | ||
64 | northOverrideHandle bigint NULL, | ||
65 | regionAssetURI varchar(255) NULL, | ||
66 | regionAssetRecvKey varchar(128) NULL, | ||
67 | regionAssetSendKey varchar(128) NULL, | ||
68 | regionUserURI varchar(255) NULL, | ||
69 | regionUserRecvKey varchar(128) NULL, | ||
70 | regionUserSendKey varchar(128) NULL, | ||
71 | regionMapTexture varchar(36) NULL, | ||
72 | serverHttpPort int NULL, | ||
73 | serverRemotingPort int NULL, | ||
74 | owner_uuid varchar(36) NULL, | ||
75 | originUUID varchar(36) NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000') | ||
76 | ) ON [PRIMARY] | ||
77 | |||
78 | IF EXISTS(SELECT * FROM regions) | ||
79 | EXEC('INSERT INTO Tmp_regions (uuid, regionHandle, regionName, regionRecvKey, regionSendKey, regionSecret, regionDataURI, serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture, serverHttpPort, serverRemotingPort, owner_uuid) | ||
80 | SELECT CONVERT(varchar(36), uuid), CONVERT(bigint, regionHandle), CONVERT(varchar(20), regionName), CONVERT(varchar(128), regionRecvKey), CONVERT(varchar(128), regionSendKey), CONVERT(varchar(128), regionSecret), CONVERT(varchar(128), regionDataURI), CONVERT(varchar(64), serverIP), CONVERT(int, serverPort), serverURI, CONVERT(int, locX), CONVERT(int, locY), CONVERT(int, locZ), CONVERT(bigint, eastOverrideHandle), CONVERT(bigint, westOverrideHandle), CONVERT(bigint, southOverrideHandle), CONVERT(bigint, northOverrideHandle), regionAssetURI, CONVERT(varchar(128), regionAssetRecvKey), CONVERT(varchar(128), regionAssetSendKey), regionUserURI, CONVERT(varchar(128), regionUserRecvKey), CONVERT(varchar(128), regionUserSendKey), CONVERT(varchar(36), regionMapTexture), CONVERT(int, serverHttpPort), CONVERT(int, serverRemotingPort), owner_uuid FROM regions') | ||
81 | |||
82 | DROP TABLE regions | ||
83 | |||
84 | EXECUTE sp_rename N'Tmp_regions', N'regions', 'OBJECT' | ||
85 | |||
86 | ALTER TABLE regions ADD CONSTRAINT | ||
87 | PK__regions__uuid PRIMARY KEY CLUSTERED | ||
88 | ( | ||
89 | uuid | ||
90 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
91 | |||
92 | COMMIT | ||
93 | |||
94 | :VERSION 3 | ||
95 | |||
96 | BEGIN TRANSACTION | ||
97 | |||
98 | CREATE NONCLUSTERED INDEX IX_regions_name ON dbo.regions | ||
99 | ( | ||
100 | regionName | ||
101 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
102 | |||
103 | CREATE NONCLUSTERED INDEX IX_regions_handle ON dbo.regions | ||
104 | ( | ||
105 | regionHandle | ||
106 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
107 | |||
108 | |||
109 | CREATE NONCLUSTERED INDEX IX_regions_override ON dbo.regions | ||
110 | ( | ||
111 | eastOverrideHandle, | ||
112 | westOverrideHandle, | ||
113 | southOverrideHandle, | ||
114 | northOverrideHandle | ||
115 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
116 | |||
117 | COMMIT | ||
118 | |||
119 | |||
120 | :VERSION 4 | ||
121 | |||
122 | /* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/ | ||
123 | BEGIN TRANSACTION | ||
124 | |||
125 | CREATE TABLE dbo.Tmp_regions | ||
126 | ( | ||
127 | uuid uniqueidentifier NOT NULL, | ||
128 | regionHandle bigint NULL, | ||
129 | regionName varchar(20) NULL, | ||
130 | regionRecvKey varchar(128) NULL, | ||
131 | regionSendKey varchar(128) NULL, | ||
132 | regionSecret varchar(128) NULL, | ||
133 | regionDataURI varchar(128) NULL, | ||
134 | serverIP varchar(64) NULL, | ||
135 | serverPort int NULL, | ||
136 | serverURI varchar(255) NULL, | ||
137 | locX int NULL, | ||
138 | locY int NULL, | ||
139 | locZ int NULL, | ||
140 | eastOverrideHandle bigint NULL, | ||
141 | westOverrideHandle bigint NULL, | ||
142 | southOverrideHandle bigint NULL, | ||
143 | northOverrideHandle bigint NULL, | ||
144 | regionAssetURI varchar(255) NULL, | ||
145 | regionAssetRecvKey varchar(128) NULL, | ||
146 | regionAssetSendKey varchar(128) NULL, | ||
147 | regionUserURI varchar(255) NULL, | ||
148 | regionUserRecvKey varchar(128) NULL, | ||
149 | regionUserSendKey varchar(128) NULL, | ||
150 | regionMapTexture uniqueidentifier NULL, | ||
151 | serverHttpPort int NULL, | ||
152 | serverRemotingPort int NULL, | ||
153 | owner_uuid uniqueidentifier NOT NULL, | ||
154 | originUUID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000') | ||
155 | ) ON [PRIMARY] | ||
156 | |||
157 | IF EXISTS(SELECT * FROM dbo.regions) | ||
158 | EXEC('INSERT INTO dbo.Tmp_regions (uuid, regionHandle, regionName, regionRecvKey, regionSendKey, regionSecret, regionDataURI, serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, regionMapTexture, serverHttpPort, serverRemotingPort, owner_uuid, originUUID) | ||
159 | SELECT CONVERT(uniqueidentifier, uuid), regionHandle, regionName, regionRecvKey, regionSendKey, regionSecret, regionDataURI, serverIP, serverPort, serverURI, locX, locY, locZ, eastOverrideHandle, westOverrideHandle, southOverrideHandle, northOverrideHandle, regionAssetURI, regionAssetRecvKey, regionAssetSendKey, regionUserURI, regionUserRecvKey, regionUserSendKey, CONVERT(uniqueidentifier, regionMapTexture), serverHttpPort, serverRemotingPort, CONVERT(uniqueidentifier, owner_uuid), CONVERT(uniqueidentifier, originUUID) FROM dbo.regions WITH (HOLDLOCK TABLOCKX)') | ||
160 | |||
161 | DROP TABLE dbo.regions | ||
162 | |||
163 | EXECUTE sp_rename N'dbo.Tmp_regions', N'regions', 'OBJECT' | ||
164 | |||
165 | ALTER TABLE dbo.regions ADD CONSTRAINT | ||
166 | PK__regions__uuid PRIMARY KEY CLUSTERED | ||
167 | ( | ||
168 | uuid | ||
169 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
170 | |||
171 | CREATE NONCLUSTERED INDEX IX_regions_name ON dbo.regions | ||
172 | ( | ||
173 | regionName | ||
174 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
175 | |||
176 | CREATE NONCLUSTERED INDEX IX_regions_handle ON dbo.regions | ||
177 | ( | ||
178 | regionHandle | ||
179 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
180 | |||
181 | CREATE NONCLUSTERED INDEX IX_regions_override ON dbo.regions | ||
182 | ( | ||
183 | eastOverrideHandle, | ||
184 | westOverrideHandle, | ||
185 | southOverrideHandle, | ||
186 | northOverrideHandle | ||
187 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
188 | |||
189 | COMMIT | ||
190 | |||
191 | |||
192 | :VERSION 5 | ||
193 | |||
194 | BEGIN TRANSACTION | ||
195 | |||
196 | ALTER TABLE regions ADD access int default 0; | ||
197 | |||
198 | COMMIT | ||
199 | |||
200 | |||
201 | :VERSION 6 | ||
202 | |||
203 | BEGIN TRANSACTION | ||
204 | |||
205 | ALTER TABLE regions ADD scopeid uniqueidentifier default '00000000-0000-0000-0000-000000000000'; | ||
206 | ALTER TABLE regions ADD DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [owner_uuid]; | ||
207 | ALTER TABLE regions ADD sizeX integer not null default 0; | ||
208 | ALTER TABLE regions ADD sizeY integer not null default 0; | ||
209 | |||
210 | COMMIT | ||
211 | |||
212 | |||
213 | :VERSION 7 | ||
214 | |||
215 | BEGIN TRANSACTION | ||
216 | |||
217 | ALTER TABLE regions ADD [flags] integer NOT NULL DEFAULT 0; | ||
218 | CREATE INDEX [flags] ON regions(flags); | ||
219 | ALTER TABLE [regions] ADD [last_seen] integer NOT NULL DEFAULT 0; | ||
220 | ALTER TABLE [regions] ADD [PrincipalID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'; | ||
221 | ALTER TABLE [regions] ADD [Token] varchar(255) NOT NULL DEFAULT 0; | ||
222 | |||
223 | COMMIT | ||
224 | |||
225 | :VERSION 8 | ||
226 | |||
227 | BEGIN TRANSACTION | ||
228 | ALTER TABLE regions ALTER COLUMN regionName VarChar(128) | ||
229 | |||
230 | DROP INDEX IX_regions_name ON dbo.regions | ||
231 | ALTER TABLE regions ALTER COLUMN regionName VarChar(128) null | ||
232 | |||
233 | CREATE NONCLUSTERED INDEX IX_regions_name ON dbo.regions | ||
234 | ( | ||
235 | regionName | ||
236 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
237 | |||
238 | COMMIT | ||
239 | |||
240 | :VERSION 9 | ||
241 | |||
242 | BEGIN TRANSACTION | ||
243 | ALTER TABLE regions ADD parcelMapTexture uniqueidentifier NULL; | ||
244 | |||
245 | COMMIT | ||
diff --git a/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations b/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations deleted file mode 100644 index ecd3f4d..0000000 --- a/OpenSim/Data/MSSQL/Resources/GridUserStore.migrations +++ /dev/null | |||
@@ -1,65 +0,0 @@ | |||
1 | :VERSION 1 # -------------------------- | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE "GridUser" ( | ||
6 | "UserID" VARCHAR(255) NOT NULL, | ||
7 | "HomeRegionID" CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
8 | "HomePosition" CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
9 | "HomeLookAt" CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
10 | "LastRegionID" CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
11 | "LastPosition" CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
12 | "LastLookAt" CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
13 | "Online" CHAR(5) NOT NULL DEFAULT 'false', | ||
14 | "Login" CHAR(16) NOT NULL DEFAULT '0', | ||
15 | "Logout" CHAR(16) NOT NULL DEFAULT '0', | ||
16 | PRIMARY KEY ("UserID") | ||
17 | ) | ||
18 | |||
19 | COMMIT | ||
20 | |||
21 | :VERSION 2 # -------------------------- | ||
22 | |||
23 | BEGIN TRANSACTION | ||
24 | |||
25 | CREATE TABLE [GridUser_tmp] ( | ||
26 | [UserID] VARCHAR(255) NOT NULL, | ||
27 | [HomeRegionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
28 | [HomePosition] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
29 | [HomeLookAt] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
30 | [LastRegionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
31 | [LastPosition] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
32 | [LastLookAt] CHAR(64) NOT NULL DEFAULT '<0,0,0>', | ||
33 | [Online] CHAR(5) NOT NULL DEFAULT 'false', | ||
34 | [Login] CHAR(16) NOT NULL DEFAULT '0', | ||
35 | [Logout] CHAR(16) NOT NULL DEFAULT '0', | ||
36 | |||
37 | PRIMARY KEY CLUSTERED | ||
38 | ( | ||
39 | [UserID] ASC | ||
40 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
41 | ) ON [PRIMARY] | ||
42 | |||
43 | COMMIT | ||
44 | |||
45 | IF EXISTS(SELECT * FROM dbo.GridUser) | ||
46 | EXEC('INSERT INTO dbo.GridUser_tmp ([UserID] | ||
47 | ,[HomeRegionID] | ||
48 | ,[HomePosition] | ||
49 | ,[HomeLookAt] | ||
50 | ,[LastRegionID] | ||
51 | ,[LastPosition] | ||
52 | ,[LastLookAt] | ||
53 | ,[Online] | ||
54 | ,[Login] | ||
55 | ,[Logout]) | ||
56 | SELECT CONVERT(varchar(36), [HomeRegionID]), [HomePosition] ,[HomeLookAt] , CONVERT(varchar(36),[LastRegionID]) | ||
57 | ,[LastPosition] | ||
58 | ,[LastLookAt] | ||
59 | ,[Online] | ||
60 | ,[Login] | ||
61 | ,[Logout] FROM dbo.GridUser WITH (HOLDLOCK TABLOCKX)') | ||
62 | |||
63 | DROP TABLE dbo.GridUser | ||
64 | |||
65 | EXECUTE sp_rename N'dbo.GridUser_tmp', N'GridUser', 'OBJECT' \ No newline at end of file | ||
diff --git a/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations b/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations deleted file mode 100644 index 4e43653..0000000 --- a/OpenSim/Data/MSSQL/Resources/InventoryStore.migrations +++ /dev/null | |||
@@ -1,279 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [inventoryfolders] ( | ||
6 | [folderID] [varchar](36) NOT NULL default '', | ||
7 | [agentID] [varchar](36) default NULL, | ||
8 | [parentFolderID] [varchar](36) default NULL, | ||
9 | [folderName] [varchar](64) default NULL, | ||
10 | [type] [smallint] NOT NULL default 0, | ||
11 | [version] [int] NOT NULL default 0, | ||
12 | PRIMARY KEY CLUSTERED | ||
13 | ( | ||
14 | [folderID] ASC | ||
15 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
16 | ) ON [PRIMARY] | ||
17 | |||
18 | CREATE NONCLUSTERED INDEX [owner] ON [inventoryfolders] | ||
19 | ( | ||
20 | [agentID] ASC | ||
21 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
22 | |||
23 | CREATE NONCLUSTERED INDEX [parent] ON [inventoryfolders] | ||
24 | ( | ||
25 | [parentFolderID] ASC | ||
26 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
27 | |||
28 | |||
29 | CREATE TABLE [inventoryitems] ( | ||
30 | [inventoryID] [varchar](36) NOT NULL default '', | ||
31 | [assetID] [varchar](36) default NULL, | ||
32 | [assetType] [int] default NULL, | ||
33 | [parentFolderID] [varchar](36) default NULL, | ||
34 | [avatarID] [varchar](36) default NULL, | ||
35 | [inventoryName] [varchar](64) default NULL, | ||
36 | [inventoryDescription] [varchar](128) default NULL, | ||
37 | [inventoryNextPermissions] [int] default NULL, | ||
38 | [inventoryCurrentPermissions] [int] default NULL, | ||
39 | [invType] [int] default NULL, | ||
40 | [creatorID] [varchar](36) default NULL, | ||
41 | [inventoryBasePermissions] [int] NOT NULL default 0, | ||
42 | [inventoryEveryOnePermissions] [int] NOT NULL default 0, | ||
43 | [salePrice] [int] default NULL, | ||
44 | [saleType] [tinyint] default NULL, | ||
45 | [creationDate] [int] default NULL, | ||
46 | [groupID] [varchar](36) default NULL, | ||
47 | [groupOwned] [bit] default NULL, | ||
48 | [flags] [int] default NULL, | ||
49 | PRIMARY KEY CLUSTERED | ||
50 | ( | ||
51 | [inventoryID] ASC | ||
52 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
53 | ) ON [PRIMARY] | ||
54 | |||
55 | |||
56 | CREATE NONCLUSTERED INDEX [owner] ON [inventoryitems] | ||
57 | ( | ||
58 | [avatarID] ASC | ||
59 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
60 | |||
61 | CREATE NONCLUSTERED INDEX [folder] ON [inventoryitems] | ||
62 | ( | ||
63 | [parentFolderID] ASC | ||
64 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
65 | |||
66 | COMMIT | ||
67 | |||
68 | |||
69 | :VERSION 2 | ||
70 | |||
71 | BEGIN TRANSACTION | ||
72 | |||
73 | ALTER TABLE inventoryitems ADD inventoryGroupPermissions INTEGER NOT NULL default 0 | ||
74 | |||
75 | COMMIT | ||
76 | |||
77 | :VERSION 3 | ||
78 | |||
79 | /* To prevent any potential data loss issues, you should review this script in detail before running it outside the context of the database designer.*/ | ||
80 | BEGIN TRANSACTION | ||
81 | |||
82 | CREATE TABLE dbo.Tmp_inventoryfolders | ||
83 | ( | ||
84 | folderID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
85 | agentID uniqueidentifier NULL DEFAULT (NULL), | ||
86 | parentFolderID uniqueidentifier NULL DEFAULT (NULL), | ||
87 | folderName varchar(64) NULL DEFAULT (NULL), | ||
88 | type smallint NOT NULL DEFAULT ((0)), | ||
89 | version int NOT NULL DEFAULT ((0)) | ||
90 | ) ON [PRIMARY] | ||
91 | |||
92 | IF EXISTS(SELECT * FROM dbo.inventoryfolders) | ||
93 | EXEC('INSERT INTO dbo.Tmp_inventoryfolders (folderID, agentID, parentFolderID, folderName, type, version) | ||
94 | SELECT CONVERT(uniqueidentifier, folderID), CONVERT(uniqueidentifier, agentID), CONVERT(uniqueidentifier, parentFolderID), folderName, type, version FROM dbo.inventoryfolders WITH (HOLDLOCK TABLOCKX)') | ||
95 | |||
96 | DROP TABLE dbo.inventoryfolders | ||
97 | |||
98 | EXECUTE sp_rename N'dbo.Tmp_inventoryfolders', N'inventoryfolders', 'OBJECT' | ||
99 | |||
100 | ALTER TABLE dbo.inventoryfolders ADD CONSTRAINT | ||
101 | PK__inventor__C2FABFB3173876EA PRIMARY KEY CLUSTERED | ||
102 | ( | ||
103 | folderID | ||
104 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
105 | |||
106 | CREATE NONCLUSTERED INDEX owner ON dbo.inventoryfolders | ||
107 | ( | ||
108 | agentID | ||
109 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
110 | |||
111 | CREATE NONCLUSTERED INDEX parent ON dbo.inventoryfolders | ||
112 | ( | ||
113 | parentFolderID | ||
114 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
115 | |||
116 | COMMIT | ||
117 | |||
118 | |||
119 | :VERSION 4 | ||
120 | |||
121 | BEGIN TRANSACTION | ||
122 | |||
123 | CREATE TABLE dbo.Tmp_inventoryitems | ||
124 | ( | ||
125 | inventoryID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
126 | assetID uniqueidentifier NULL DEFAULT (NULL), | ||
127 | assetType int NULL DEFAULT (NULL), | ||
128 | parentFolderID uniqueidentifier NULL DEFAULT (NULL), | ||
129 | avatarID uniqueidentifier NULL DEFAULT (NULL), | ||
130 | inventoryName varchar(64) NULL DEFAULT (NULL), | ||
131 | inventoryDescription varchar(128) NULL DEFAULT (NULL), | ||
132 | inventoryNextPermissions int NULL DEFAULT (NULL), | ||
133 | inventoryCurrentPermissions int NULL DEFAULT (NULL), | ||
134 | invType int NULL DEFAULT (NULL), | ||
135 | creatorID uniqueidentifier NULL DEFAULT (NULL), | ||
136 | inventoryBasePermissions int NOT NULL DEFAULT ((0)), | ||
137 | inventoryEveryOnePermissions int NOT NULL DEFAULT ((0)), | ||
138 | salePrice int NULL DEFAULT (NULL), | ||
139 | saleType tinyint NULL DEFAULT (NULL), | ||
140 | creationDate int NULL DEFAULT (NULL), | ||
141 | groupID uniqueidentifier NULL DEFAULT (NULL), | ||
142 | groupOwned bit NULL DEFAULT (NULL), | ||
143 | flags int NULL DEFAULT (NULL), | ||
144 | inventoryGroupPermissions int NOT NULL DEFAULT ((0)) | ||
145 | ) ON [PRIMARY] | ||
146 | |||
147 | IF EXISTS(SELECT * FROM dbo.inventoryitems) | ||
148 | EXEC('INSERT INTO dbo.Tmp_inventoryitems (inventoryID, assetID, assetType, parentFolderID, avatarID, inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions, invType, creatorID, inventoryBasePermissions, inventoryEveryOnePermissions, salePrice, saleType, creationDate, groupID, groupOwned, flags, inventoryGroupPermissions) | ||
149 | SELECT CONVERT(uniqueidentifier, inventoryID), CONVERT(uniqueidentifier, assetID), assetType, CONVERT(uniqueidentifier, parentFolderID), CONVERT(uniqueidentifier, avatarID), inventoryName, inventoryDescription, inventoryNextPermissions, inventoryCurrentPermissions, invType, CONVERT(uniqueidentifier, creatorID), inventoryBasePermissions, inventoryEveryOnePermissions, salePrice, saleType, creationDate, CONVERT(uniqueidentifier, groupID), groupOwned, flags, inventoryGroupPermissions FROM dbo.inventoryitems WITH (HOLDLOCK TABLOCKX)') | ||
150 | |||
151 | DROP TABLE dbo.inventoryitems | ||
152 | |||
153 | EXECUTE sp_rename N'dbo.Tmp_inventoryitems', N'inventoryitems', 'OBJECT' | ||
154 | |||
155 | ALTER TABLE dbo.inventoryitems ADD CONSTRAINT | ||
156 | PK__inventor__C4B7BC2220C1E124 PRIMARY KEY CLUSTERED | ||
157 | ( | ||
158 | inventoryID | ||
159 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
160 | |||
161 | |||
162 | CREATE NONCLUSTERED INDEX owner ON dbo.inventoryitems | ||
163 | ( | ||
164 | avatarID | ||
165 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
166 | |||
167 | CREATE NONCLUSTERED INDEX folder ON dbo.inventoryitems | ||
168 | ( | ||
169 | parentFolderID | ||
170 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
171 | |||
172 | COMMIT | ||
173 | |||
174 | :VERSION 5 | ||
175 | |||
176 | # It would be totally crazy to have to recreate the whole table just to change one column type, | ||
177 | # just because MS SQL treats each DEFAULT as a constraint object that must be dropped | ||
178 | # before anything can be done to the column. Since all defaults here are unnamed, there is | ||
179 | # no easy way to drop them! The hairy piece of code below removes all DEFAULT constraints | ||
180 | # from InventoryItems. | ||
181 | |||
182 | # SO: anything that's NULLable is by default NULL, so please don't declare DEFAULT(NULL), | ||
183 | # they do nothing but prevent changes to the columns. If you really | ||
184 | # need to have DEFAULTs or other constraints, give them names so they can be dropped when needed! | ||
185 | |||
186 | BEGIN TRANSACTION | ||
187 | DECLARE @nm varchar(80); | ||
188 | DECLARE x CURSOR LOCAL FORWARD_ONLY READ_ONLY | ||
189 | FOR SELECT name FROM sys.default_constraints where parent_object_id = OBJECT_ID('inventoryitems'); | ||
190 | OPEN x; | ||
191 | FETCH NEXT FROM x INTO @nm; | ||
192 | WHILE @@FETCH_STATUS = 0 | ||
193 | BEGIN | ||
194 | EXEC('alter table inventoryitems drop ' + @nm); | ||
195 | FETCH NEXT FROM x INTO @nm; | ||
196 | END | ||
197 | CLOSE x | ||
198 | DEALLOCATE x | ||
199 | COMMIT | ||
200 | |||
201 | # all DEFAULTs dropped! | ||
202 | |||
203 | :GO | ||
204 | |||
205 | BEGIN TRANSACTION | ||
206 | |||
207 | # Restoring defaults: | ||
208 | # NOTE: [inventoryID] does NOT need one: it's NOT NULL PK and a unique Guid must be provided every time anyway! | ||
209 | |||
210 | alter table inventoryitems | ||
211 | add constraint def_baseperm default 0 for inventoryBasePermissions | ||
212 | alter table inventoryitems | ||
213 | add constraint def_allperm default 0 for inventoryEveryOnePermissions | ||
214 | alter table inventoryitems | ||
215 | add constraint def_grpperm default 0 for inventoryGroupPermissions | ||
216 | |||
217 | COMMIT | ||
218 | |||
219 | :VERSION 7 | ||
220 | |||
221 | BEGIN TRANSACTION | ||
222 | |||
223 | # CreatorID goes back to VARCHAR(36) (???) | ||
224 | |||
225 | exec sp_rename 'inventoryitems.CreatorID', 'cr_old', 'COLUMN' | ||
226 | |||
227 | :GO | ||
228 | |||
229 | alter table inventoryitems | ||
230 | add creatorID varchar(36) NULL | ||
231 | |||
232 | :GO | ||
233 | |||
234 | update inventoryitems set creatorID = CONVERT(VARCHAR(36), cr_old) | ||
235 | |||
236 | alter table inventoryitems | ||
237 | drop column cr_old | ||
238 | |||
239 | COMMIT | ||
240 | |||
241 | :VERSION 8 | ||
242 | |||
243 | ALTER TABLE inventoryitems | ||
244 | ADD CONSTRAINT DF_inventoryitems_creatorID | ||
245 | DEFAULT '00000000-0000-0000-0000-000000000000' FOR creatorID | ||
246 | |||
247 | :GO | ||
248 | |||
249 | :VERSION 9 | ||
250 | |||
251 | BEGIN TRANSACTION | ||
252 | |||
253 | # CreatorID goes up to VARCHAR(255) | ||
254 | |||
255 | exec sp_rename 'inventoryitems.CreatorID', 'cr_old', 'COLUMN' | ||
256 | |||
257 | :GO | ||
258 | |||
259 | alter table inventoryitems | ||
260 | add creatorID varchar(255) NULL | ||
261 | |||
262 | :GO | ||
263 | |||
264 | update inventoryitems set creatorID = cr_old | ||
265 | |||
266 | alter table inventoryitems | ||
267 | drop CONSTRAINT DF_inventoryitems_creatorID | ||
268 | :GO | ||
269 | |||
270 | alter table inventoryitems | ||
271 | drop column cr_old | ||
272 | :GO | ||
273 | COMMIT | ||
274 | |||
275 | ALTER TABLE inventoryitems | ||
276 | ADD CONSTRAINT DF_inventoryitems_creatorID | ||
277 | DEFAULT '00000000-0000-0000-0000-000000000000' FOR creatorID | ||
278 | |||
279 | :GO \ No newline at end of file | ||
diff --git a/OpenSim/Data/MSSQL/Resources/LogStore.migrations b/OpenSim/Data/MSSQL/Resources/LogStore.migrations deleted file mode 100644 index 1430d8d..0000000 --- a/OpenSim/Data/MSSQL/Resources/LogStore.migrations +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [logs] ( | ||
6 | [logID] [int] NOT NULL, | ||
7 | [target] [varchar](36) default NULL, | ||
8 | [server] [varchar](64) default NULL, | ||
9 | [method] [varchar](64) default NULL, | ||
10 | [arguments] [varchar](255) default NULL, | ||
11 | [priority] [int] default NULL, | ||
12 | [message] [ntext], | ||
13 | PRIMARY KEY CLUSTERED | ||
14 | ( | ||
15 | [logID] ASC | ||
16 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
17 | ) ON [PRIMARY] | ||
18 | |||
19 | COMMIT | ||
diff --git a/OpenSim/Data/MSSQL/Resources/Presence.migrations b/OpenSim/Data/MSSQL/Resources/Presence.migrations deleted file mode 100644 index bcb6328..0000000 --- a/OpenSim/Data/MSSQL/Resources/Presence.migrations +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | BEGIN TRANSACTION | ||
4 | |||
5 | CREATE TABLE [Presence] ( | ||
6 | [UserID] varchar(255) NOT NULL, | ||
7 | [RegionID] uniqueidentifier NOT NULL, | ||
8 | [SessionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
9 | [SecureSessionID] uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000', | ||
10 | |||
11 | ) | ||
12 | ON [PRIMARY] | ||
13 | |||
14 | COMMIT | ||
15 | |||
16 | :VERSION 2 | ||
17 | |||
18 | BEGIN TRANSACTION | ||
19 | |||
20 | CREATE UNIQUE INDEX SessionID ON Presence(SessionID); | ||
21 | CREATE INDEX UserID ON Presence(UserID); | ||
22 | |||
23 | COMMIT | ||
24 | |||
25 | :VERSION 2 | ||
26 | |||
27 | BEGIN TRANSACTION | ||
28 | |||
29 | ALTER TABLE Presence ADD LastSeen DateTime | ||
30 | |||
31 | COMMIT \ No newline at end of file | ||
diff --git a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations b/OpenSim/Data/MSSQL/Resources/RegionStore.migrations deleted file mode 100644 index 350e548..0000000 --- a/OpenSim/Data/MSSQL/Resources/RegionStore.migrations +++ /dev/null | |||
@@ -1,1150 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | CREATE TABLE [dbo].[prims]( | ||
4 | [UUID] [varchar](255) NOT NULL, | ||
5 | [RegionUUID] [varchar](255) NULL, | ||
6 | [ParentID] [int] NULL, | ||
7 | [CreationDate] [int] NULL, | ||
8 | [Name] [varchar](255) NULL, | ||
9 | [SceneGroupID] [varchar](255) NULL, | ||
10 | [Text] [varchar](255) NULL, | ||
11 | [Description] [varchar](255) NULL, | ||
12 | [SitName] [varchar](255) NULL, | ||
13 | [TouchName] [varchar](255) NULL, | ||
14 | [ObjectFlags] [int] NULL, | ||
15 | [CreatorID] [varchar](255) NULL, | ||
16 | [OwnerID] [varchar](255) NULL, | ||
17 | [GroupID] [varchar](255) NULL, | ||
18 | [LastOwnerID] [varchar](255) NULL, | ||
19 | [OwnerMask] [int] NULL, | ||
20 | [NextOwnerMask] [int] NULL, | ||
21 | [GroupMask] [int] NULL, | ||
22 | [EveryoneMask] [int] NULL, | ||
23 | [BaseMask] [int] NULL, | ||
24 | [PositionX] [float] NULL, | ||
25 | [PositionY] [float] NULL, | ||
26 | [PositionZ] [float] NULL, | ||
27 | [GroupPositionX] [float] NULL, | ||
28 | [GroupPositionY] [float] NULL, | ||
29 | [GroupPositionZ] [float] NULL, | ||
30 | [VelocityX] [float] NULL, | ||
31 | [VelocityY] [float] NULL, | ||
32 | [VelocityZ] [float] NULL, | ||
33 | [AngularVelocityX] [float] NULL, | ||
34 | [AngularVelocityY] [float] NULL, | ||
35 | [AngularVelocityZ] [float] NULL, | ||
36 | [AccelerationX] [float] NULL, | ||
37 | [AccelerationY] [float] NULL, | ||
38 | [AccelerationZ] [float] NULL, | ||
39 | [RotationX] [float] NULL, | ||
40 | [RotationY] [float] NULL, | ||
41 | [RotationZ] [float] NULL, | ||
42 | [RotationW] [float] NULL, | ||
43 | [SitTargetOffsetX] [float] NULL, | ||
44 | [SitTargetOffsetY] [float] NULL, | ||
45 | [SitTargetOffsetZ] [float] NULL, | ||
46 | [SitTargetOrientW] [float] NULL, | ||
47 | [SitTargetOrientX] [float] NULL, | ||
48 | [SitTargetOrientY] [float] NULL, | ||
49 | [SitTargetOrientZ] [float] NULL, | ||
50 | PRIMARY KEY CLUSTERED | ||
51 | ( | ||
52 | [UUID] ASC | ||
53 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
54 | ) ON [PRIMARY] | ||
55 | |||
56 | CREATE TABLE [dbo].[primshapes]( | ||
57 | [UUID] [varchar](255) NOT NULL, | ||
58 | [Shape] [int] NULL, | ||
59 | [ScaleX] [float] NULL, | ||
60 | [ScaleY] [float] NULL, | ||
61 | [ScaleZ] [float] NULL, | ||
62 | [PCode] [int] NULL, | ||
63 | [PathBegin] [int] NULL, | ||
64 | [PathEnd] [int] NULL, | ||
65 | [PathScaleX] [int] NULL, | ||
66 | [PathScaleY] [int] NULL, | ||
67 | [PathShearX] [int] NULL, | ||
68 | [PathShearY] [int] NULL, | ||
69 | [PathSkew] [int] NULL, | ||
70 | [PathCurve] [int] NULL, | ||
71 | [PathRadiusOffset] [int] NULL, | ||
72 | [PathRevolutions] [int] NULL, | ||
73 | [PathTaperX] [int] NULL, | ||
74 | [PathTaperY] [int] NULL, | ||
75 | [PathTwist] [int] NULL, | ||
76 | [PathTwistBegin] [int] NULL, | ||
77 | [ProfileBegin] [int] NULL, | ||
78 | [ProfileEnd] [int] NULL, | ||
79 | [ProfileCurve] [int] NULL, | ||
80 | [ProfileHollow] [int] NULL, | ||
81 | [State] [int] NULL, | ||
82 | [Texture] [image] NULL, | ||
83 | [ExtraParams] [image] NULL, | ||
84 | PRIMARY KEY CLUSTERED | ||
85 | ( | ||
86 | [UUID] ASC | ||
87 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
88 | ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] | ||
89 | |||
90 | CREATE TABLE [dbo].[primitems]( | ||
91 | [itemID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | ||
92 | [primID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
93 | [assetID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
94 | [parentFolderID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
95 | [invType] [int] NULL, | ||
96 | [assetType] [int] NULL, | ||
97 | [name] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
98 | [description] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
99 | [creationDate] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
100 | [creatorID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
101 | [ownerID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
102 | [lastOwnerID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
103 | [groupID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
104 | [nextPermissions] [int] NULL, | ||
105 | [currentPermissions] [int] NULL, | ||
106 | [basePermissions] [int] NULL, | ||
107 | [everyonePermissions] [int] NULL, | ||
108 | [groupPermissions] [int] NULL, | ||
109 | PRIMARY KEY CLUSTERED | ||
110 | ( | ||
111 | [itemID] ASC | ||
112 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
113 | ) ON [PRIMARY] | ||
114 | |||
115 | CREATE TABLE [dbo].[terrain]( | ||
116 | [RegionUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
117 | [Revision] [int] NULL, | ||
118 | [Heightfield] [image] NULL | ||
119 | ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] | ||
120 | |||
121 | CREATE TABLE [dbo].[land]( | ||
122 | [UUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | ||
123 | [RegionUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
124 | [LocalLandID] [int] NULL, | ||
125 | [Bitmap] [image] NULL, | ||
126 | [Name] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
127 | [Description] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
128 | [OwnerUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
129 | [IsGroupOwned] [int] NULL, | ||
130 | [Area] [int] NULL, | ||
131 | [AuctionID] [int] NULL, | ||
132 | [Category] [int] NULL, | ||
133 | [ClaimDate] [int] NULL, | ||
134 | [ClaimPrice] [int] NULL, | ||
135 | [GroupUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
136 | [SalePrice] [int] NULL, | ||
137 | [LandStatus] [int] NULL, | ||
138 | [LandFlags] [int] NULL, | ||
139 | [LandingType] [int] NULL, | ||
140 | [MediaAutoScale] [int] NULL, | ||
141 | [MediaTextureUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
142 | [MediaURL] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
143 | [MusicURL] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
144 | [PassHours] [float] NULL, | ||
145 | [PassPrice] [int] NULL, | ||
146 | [SnapshotUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
147 | [UserLocationX] [float] NULL, | ||
148 | [UserLocationY] [float] NULL, | ||
149 | [UserLocationZ] [float] NULL, | ||
150 | [UserLookAtX] [float] NULL, | ||
151 | [UserLookAtY] [float] NULL, | ||
152 | [UserLookAtZ] [float] NULL, | ||
153 | PRIMARY KEY CLUSTERED | ||
154 | ( | ||
155 | [UUID] ASC | ||
156 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
157 | ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] | ||
158 | |||
159 | CREATE TABLE [dbo].[landaccesslist]( | ||
160 | [LandUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
161 | [AccessUUID] [varchar](255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, | ||
162 | [Flags] [int] NULL | ||
163 | ) ON [PRIMARY] | ||
164 | |||
165 | :VERSION 2 | ||
166 | |||
167 | BEGIN TRANSACTION | ||
168 | |||
169 | CREATE TABLE regionban ( | ||
170 | [regionUUID] VARCHAR(36) NOT NULL, | ||
171 | [bannedUUID] VARCHAR(36) NOT NULL, | ||
172 | [bannedIp] VARCHAR(16) NOT NULL, | ||
173 | [bannedIpHostMask] VARCHAR(16) NOT NULL) | ||
174 | |||
175 | create table [dbo].[regionsettings] ( | ||
176 | [regionUUID] [varchar](36) not null, | ||
177 | [block_terraform] [bit] not null, | ||
178 | [block_fly] [bit] not null, | ||
179 | [allow_damage] [bit] not null, | ||
180 | [restrict_pushing] [bit] not null, | ||
181 | [allow_land_resell] [bit] not null, | ||
182 | [allow_land_join_divide] [bit] not null, | ||
183 | [block_show_in_search] [bit] not null, | ||
184 | [agent_limit] [int] not null, | ||
185 | [object_bonus] [float] not null, | ||
186 | [maturity] [int] not null, | ||
187 | [disable_scripts] [bit] not null, | ||
188 | [disable_collisions] [bit] not null, | ||
189 | [disable_physics] [bit] not null, | ||
190 | [terrain_texture_1] [varchar](36) not null, | ||
191 | [terrain_texture_2] [varchar](36) not null, | ||
192 | [terrain_texture_3] [varchar](36) not null, | ||
193 | [terrain_texture_4] [varchar](36) not null, | ||
194 | [elevation_1_nw] [float] not null, | ||
195 | [elevation_2_nw] [float] not null, | ||
196 | [elevation_1_ne] [float] not null, | ||
197 | [elevation_2_ne] [float] not null, | ||
198 | [elevation_1_se] [float] not null, | ||
199 | [elevation_2_se] [float] not null, | ||
200 | [elevation_1_sw] [float] not null, | ||
201 | [elevation_2_sw] [float] not null, | ||
202 | [water_height] [float] not null, | ||
203 | [terrain_raise_limit] [float] not null, | ||
204 | [terrain_lower_limit] [float] not null, | ||
205 | [use_estate_sun] [bit] not null, | ||
206 | [fixed_sun] [bit] not null, | ||
207 | [sun_position] [float] not null, | ||
208 | [covenant] [varchar](36) default NULL, | ||
209 | [Sandbox] [bit] NOT NULL, | ||
210 | PRIMARY KEY CLUSTERED | ||
211 | ( | ||
212 | [regionUUID] ASC | ||
213 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
214 | ) ON [PRIMARY] | ||
215 | |||
216 | COMMIT | ||
217 | |||
218 | :VERSION 3 | ||
219 | |||
220 | BEGIN TRANSACTION | ||
221 | |||
222 | CREATE TABLE dbo.Tmp_prims | ||
223 | ( | ||
224 | UUID varchar(36) NOT NULL, | ||
225 | RegionUUID varchar(36) NULL, | ||
226 | ParentID int NULL, | ||
227 | CreationDate int NULL, | ||
228 | Name varchar(255) NULL, | ||
229 | SceneGroupID varchar(36) NULL, | ||
230 | Text varchar(255) NULL, | ||
231 | Description varchar(255) NULL, | ||
232 | SitName varchar(255) NULL, | ||
233 | TouchName varchar(255) NULL, | ||
234 | ObjectFlags int NULL, | ||
235 | CreatorID varchar(36) NULL, | ||
236 | OwnerID varchar(36) NULL, | ||
237 | GroupID varchar(36) NULL, | ||
238 | LastOwnerID varchar(36) NULL, | ||
239 | OwnerMask int NULL, | ||
240 | NextOwnerMask int NULL, | ||
241 | GroupMask int NULL, | ||
242 | EveryoneMask int NULL, | ||
243 | BaseMask int NULL, | ||
244 | PositionX float(53) NULL, | ||
245 | PositionY float(53) NULL, | ||
246 | PositionZ float(53) NULL, | ||
247 | GroupPositionX float(53) NULL, | ||
248 | GroupPositionY float(53) NULL, | ||
249 | GroupPositionZ float(53) NULL, | ||
250 | VelocityX float(53) NULL, | ||
251 | VelocityY float(53) NULL, | ||
252 | VelocityZ float(53) NULL, | ||
253 | AngularVelocityX float(53) NULL, | ||
254 | AngularVelocityY float(53) NULL, | ||
255 | AngularVelocityZ float(53) NULL, | ||
256 | AccelerationX float(53) NULL, | ||
257 | AccelerationY float(53) NULL, | ||
258 | AccelerationZ float(53) NULL, | ||
259 | RotationX float(53) NULL, | ||
260 | RotationY float(53) NULL, | ||
261 | RotationZ float(53) NULL, | ||
262 | RotationW float(53) NULL, | ||
263 | SitTargetOffsetX float(53) NULL, | ||
264 | SitTargetOffsetY float(53) NULL, | ||
265 | SitTargetOffsetZ float(53) NULL, | ||
266 | SitTargetOrientW float(53) NULL, | ||
267 | SitTargetOrientX float(53) NULL, | ||
268 | SitTargetOrientY float(53) NULL, | ||
269 | SitTargetOrientZ float(53) NULL | ||
270 | ) ON [PRIMARY] | ||
271 | |||
272 | IF EXISTS(SELECT * FROM dbo.prims) | ||
273 | EXEC('INSERT INTO dbo.Tmp_prims (UUID, RegionUUID, ParentID, CreationDate, Name, SceneGroupID, Text, Description, SitName, TouchName, ObjectFlags, CreatorID, OwnerID, GroupID, LastOwnerID, OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ) | ||
274 | SELECT CONVERT(varchar(36), UUID), CONVERT(varchar(36), RegionUUID), ParentID, CreationDate, Name, CONVERT(varchar(36), SceneGroupID), Text, Description, SitName, TouchName, ObjectFlags, CONVERT(varchar(36), CreatorID), CONVERT(varchar(36), OwnerID), CONVERT(varchar(36), GroupID), CONVERT(varchar(36), LastOwnerID), OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ FROM dbo.prims WITH (HOLDLOCK TABLOCKX)') | ||
275 | |||
276 | DROP TABLE dbo.prims | ||
277 | |||
278 | EXECUTE sp_rename N'dbo.Tmp_prims', N'prims', 'OBJECT' | ||
279 | |||
280 | ALTER TABLE dbo.prims ADD CONSTRAINT | ||
281 | PK__prims__10566F31 PRIMARY KEY CLUSTERED | ||
282 | ( | ||
283 | UUID | ||
284 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
285 | |||
286 | COMMIT | ||
287 | |||
288 | :VERSION 4 | ||
289 | |||
290 | BEGIN TRANSACTION | ||
291 | |||
292 | CREATE TABLE Tmp_primitems | ||
293 | ( | ||
294 | itemID varchar(36) NOT NULL, | ||
295 | primID varchar(36) NULL, | ||
296 | assetID varchar(36) NULL, | ||
297 | parentFolderID varchar(36) NULL, | ||
298 | invType int NULL, | ||
299 | assetType int NULL, | ||
300 | name varchar(255) NULL, | ||
301 | description varchar(255) NULL, | ||
302 | creationDate varchar(255) NULL, | ||
303 | creatorID varchar(36) NULL, | ||
304 | ownerID varchar(36) NULL, | ||
305 | lastOwnerID varchar(36) NULL, | ||
306 | groupID varchar(36) NULL, | ||
307 | nextPermissions int NULL, | ||
308 | currentPermissions int NULL, | ||
309 | basePermissions int NULL, | ||
310 | everyonePermissions int NULL, | ||
311 | groupPermissions int NULL | ||
312 | ) ON [PRIMARY] | ||
313 | |||
314 | IF EXISTS(SELECT * FROM primitems) | ||
315 | EXEC('INSERT INTO Tmp_primitems (itemID, primID, assetID, parentFolderID, invType, assetType, name, description, creationDate, creatorID, ownerID, lastOwnerID, groupID, nextPermissions, currentPermissions, basePermissions, everyonePermissions, groupPermissions) | ||
316 | SELECT CONVERT(varchar(36), itemID), CONVERT(varchar(36), primID), CONVERT(varchar(36), assetID), CONVERT(varchar(36), parentFolderID), invType, assetType, name, description, creationDate, CONVERT(varchar(36), creatorID), CONVERT(varchar(36), ownerID), CONVERT(varchar(36), lastOwnerID), CONVERT(varchar(36), groupID), nextPermissions, currentPermissions, basePermissions, everyonePermissions, groupPermissions') | ||
317 | |||
318 | DROP TABLE primitems | ||
319 | |||
320 | EXECUTE sp_rename N'Tmp_primitems', N'primitems', 'OBJECT' | ||
321 | |||
322 | ALTER TABLE primitems ADD CONSTRAINT | ||
323 | PK__primitems__0A688BB1 PRIMARY KEY CLUSTERED | ||
324 | ( | ||
325 | itemID | ||
326 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
327 | |||
328 | |||
329 | COMMIT | ||
330 | |||
331 | |||
332 | :VERSION 5 | ||
333 | |||
334 | BEGIN TRANSACTION | ||
335 | |||
336 | CREATE TABLE Tmp_primshapes | ||
337 | ( | ||
338 | UUID varchar(36) NOT NULL, | ||
339 | Shape int NULL, | ||
340 | ScaleX float(53) NULL, | ||
341 | ScaleY float(53) NULL, | ||
342 | ScaleZ float(53) NULL, | ||
343 | PCode int NULL, | ||
344 | PathBegin int NULL, | ||
345 | PathEnd int NULL, | ||
346 | PathScaleX int NULL, | ||
347 | PathScaleY int NULL, | ||
348 | PathShearX int NULL, | ||
349 | PathShearY int NULL, | ||
350 | PathSkew int NULL, | ||
351 | PathCurve int NULL, | ||
352 | PathRadiusOffset int NULL, | ||
353 | PathRevolutions int NULL, | ||
354 | PathTaperX int NULL, | ||
355 | PathTaperY int NULL, | ||
356 | PathTwist int NULL, | ||
357 | PathTwistBegin int NULL, | ||
358 | ProfileBegin int NULL, | ||
359 | ProfileEnd int NULL, | ||
360 | ProfileCurve int NULL, | ||
361 | ProfileHollow int NULL, | ||
362 | State int NULL, | ||
363 | Texture image NULL, | ||
364 | ExtraParams image NULL | ||
365 | ) ON [PRIMARY] | ||
366 | TEXTIMAGE_ON [PRIMARY] | ||
367 | |||
368 | IF EXISTS(SELECT * FROM primshapes) | ||
369 | EXEC('INSERT INTO Tmp_primshapes (UUID, Shape, ScaleX, ScaleY, ScaleZ, PCode, PathBegin, PathEnd, PathScaleX, PathScaleY, PathShearX, PathShearY, PathSkew, PathCurve, PathRadiusOffset, PathRevolutions, PathTaperX, PathTaperY, PathTwist, PathTwistBegin, ProfileBegin, ProfileEnd, ProfileCurve, ProfileHollow, State, Texture, ExtraParams) | ||
370 | SELECT CONVERT(varchar(36), UUID), Shape, ScaleX, ScaleY, ScaleZ, PCode, PathBegin, PathEnd, PathScaleX, PathScaleY, PathShearX, PathShearY, PathSkew, PathCurve, PathRadiusOffset, PathRevolutions, PathTaperX, PathTaperY, PathTwist, PathTwistBegin, ProfileBegin, ProfileEnd, ProfileCurve, ProfileHollow, State, Texture, ExtraParams FROM primshapes WITH (HOLDLOCK TABLOCKX)') | ||
371 | |||
372 | DROP TABLE primshapes | ||
373 | |||
374 | EXECUTE sp_rename N'Tmp_primshapes', N'primshapes', 'OBJECT' | ||
375 | |||
376 | ALTER TABLE primshapes ADD CONSTRAINT | ||
377 | PK__primshapes__0880433F PRIMARY KEY CLUSTERED | ||
378 | ( | ||
379 | UUID | ||
380 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
381 | |||
382 | COMMIT | ||
383 | |||
384 | |||
385 | :VERSION 6 | ||
386 | |||
387 | BEGIN TRANSACTION | ||
388 | |||
389 | ALTER TABLE prims ADD PayPrice int not null default 0 | ||
390 | ALTER TABLE prims ADD PayButton1 int not null default 0 | ||
391 | ALTER TABLE prims ADD PayButton2 int not null default 0 | ||
392 | ALTER TABLE prims ADD PayButton3 int not null default 0 | ||
393 | ALTER TABLE prims ADD PayButton4 int not null default 0 | ||
394 | ALTER TABLE prims ADD LoopedSound varchar(36) not null default '00000000-0000-0000-0000-000000000000'; | ||
395 | ALTER TABLE prims ADD LoopedSoundGain float not null default 0.0; | ||
396 | ALTER TABLE prims ADD TextureAnimation image | ||
397 | ALTER TABLE prims ADD OmegaX float not null default 0.0 | ||
398 | ALTER TABLE prims ADD OmegaY float not null default 0.0 | ||
399 | ALTER TABLE prims ADD OmegaZ float not null default 0.0 | ||
400 | ALTER TABLE prims ADD CameraEyeOffsetX float not null default 0.0 | ||
401 | ALTER TABLE prims ADD CameraEyeOffsetY float not null default 0.0 | ||
402 | ALTER TABLE prims ADD CameraEyeOffsetZ float not null default 0.0 | ||
403 | ALTER TABLE prims ADD CameraAtOffsetX float not null default 0.0 | ||
404 | ALTER TABLE prims ADD CameraAtOffsetY float not null default 0.0 | ||
405 | ALTER TABLE prims ADD CameraAtOffsetZ float not null default 0.0 | ||
406 | ALTER TABLE prims ADD ForceMouselook tinyint not null default 0 | ||
407 | ALTER TABLE prims ADD ScriptAccessPin int not null default 0 | ||
408 | ALTER TABLE prims ADD AllowedDrop tinyint not null default 0 | ||
409 | ALTER TABLE prims ADD DieAtEdge tinyint not null default 0 | ||
410 | ALTER TABLE prims ADD SalePrice int not null default 10 | ||
411 | ALTER TABLE prims ADD SaleType tinyint not null default 0 | ||
412 | |||
413 | ALTER TABLE primitems add flags integer not null default 0 | ||
414 | |||
415 | ALTER TABLE land ADD AuthbuyerID varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000' | ||
416 | |||
417 | CREATE index prims_regionuuid on prims(RegionUUID) | ||
418 | CREATE index prims_parentid on prims(ParentID) | ||
419 | |||
420 | CREATE index primitems_primid on primitems(primID) | ||
421 | |||
422 | COMMIT | ||
423 | |||
424 | |||
425 | :VERSION 7 | ||
426 | |||
427 | BEGIN TRANSACTION | ||
428 | |||
429 | ALTER TABLE prims ADD ColorR int not null default 0; | ||
430 | ALTER TABLE prims ADD ColorG int not null default 0; | ||
431 | ALTER TABLE prims ADD ColorB int not null default 0; | ||
432 | ALTER TABLE prims ADD ColorA int not null default 0; | ||
433 | ALTER TABLE prims ADD ParticleSystem IMAGE; | ||
434 | ALTER TABLE prims ADD ClickAction tinyint NOT NULL default 0; | ||
435 | |||
436 | COMMIT | ||
437 | |||
438 | |||
439 | :VERSION 8 | ||
440 | |||
441 | BEGIN TRANSACTION | ||
442 | |||
443 | ALTER TABLE land ADD OtherCleanTime integer NOT NULL default 0; | ||
444 | ALTER TABLE land ADD Dwell integer NOT NULL default 0; | ||
445 | |||
446 | COMMIT | ||
447 | |||
448 | :VERSION 9 | ||
449 | |||
450 | BEGIN TRANSACTION | ||
451 | |||
452 | ALTER TABLE prims ADD Material tinyint NOT NULL default 3 | ||
453 | |||
454 | COMMIT | ||
455 | |||
456 | |||
457 | :VERSION 10 | ||
458 | |||
459 | BEGIN TRANSACTION | ||
460 | |||
461 | ALTER TABLE regionsettings ADD sunvectorx float NOT NULL default 0; | ||
462 | ALTER TABLE regionsettings ADD sunvectory float NOT NULL default 0; | ||
463 | ALTER TABLE regionsettings ADD sunvectorz float NOT NULL default 0; | ||
464 | |||
465 | COMMIT | ||
466 | |||
467 | |||
468 | :VERSION 11 | ||
469 | |||
470 | BEGIN TRANSACTION | ||
471 | |||
472 | ALTER TABLE prims ADD CollisionSound char(36) not null default '00000000-0000-0000-0000-000000000000' | ||
473 | ALTER TABLE prims ADD CollisionSoundVolume float not null default 0.0 | ||
474 | |||
475 | COMMIT | ||
476 | |||
477 | |||
478 | :VERSION 12 | ||
479 | |||
480 | BEGIN TRANSACTION | ||
481 | |||
482 | ALTER TABLE prims ADD LinkNumber integer not null default 0 | ||
483 | |||
484 | COMMIT | ||
485 | |||
486 | |||
487 | :VERSION 13 | ||
488 | |||
489 | BEGIN TRANSACTION | ||
490 | |||
491 | CREATE TABLE dbo.Tmp_prims | ||
492 | ( | ||
493 | UUID uniqueidentifier NOT NULL, | ||
494 | RegionUUID uniqueidentifier NULL, | ||
495 | ParentID int NULL, | ||
496 | CreationDate int NULL, | ||
497 | Name varchar(255) NULL, | ||
498 | SceneGroupID uniqueidentifier NULL, | ||
499 | Text varchar(255) NULL, | ||
500 | Description varchar(255) NULL, | ||
501 | SitName varchar(255) NULL, | ||
502 | TouchName varchar(255) NULL, | ||
503 | ObjectFlags int NULL, | ||
504 | CreatorID uniqueidentifier NULL, | ||
505 | OwnerID uniqueidentifier NULL, | ||
506 | GroupID uniqueidentifier NULL, | ||
507 | LastOwnerID uniqueidentifier NULL, | ||
508 | OwnerMask int NULL, | ||
509 | NextOwnerMask int NULL, | ||
510 | GroupMask int NULL, | ||
511 | EveryoneMask int NULL, | ||
512 | BaseMask int NULL, | ||
513 | PositionX float(53) NULL, | ||
514 | PositionY float(53) NULL, | ||
515 | PositionZ float(53) NULL, | ||
516 | GroupPositionX float(53) NULL, | ||
517 | GroupPositionY float(53) NULL, | ||
518 | GroupPositionZ float(53) NULL, | ||
519 | VelocityX float(53) NULL, | ||
520 | VelocityY float(53) NULL, | ||
521 | VelocityZ float(53) NULL, | ||
522 | AngularVelocityX float(53) NULL, | ||
523 | AngularVelocityY float(53) NULL, | ||
524 | AngularVelocityZ float(53) NULL, | ||
525 | AccelerationX float(53) NULL, | ||
526 | AccelerationY float(53) NULL, | ||
527 | AccelerationZ float(53) NULL, | ||
528 | RotationX float(53) NULL, | ||
529 | RotationY float(53) NULL, | ||
530 | RotationZ float(53) NULL, | ||
531 | RotationW float(53) NULL, | ||
532 | SitTargetOffsetX float(53) NULL, | ||
533 | SitTargetOffsetY float(53) NULL, | ||
534 | SitTargetOffsetZ float(53) NULL, | ||
535 | SitTargetOrientW float(53) NULL, | ||
536 | SitTargetOrientX float(53) NULL, | ||
537 | SitTargetOrientY float(53) NULL, | ||
538 | SitTargetOrientZ float(53) NULL, | ||
539 | PayPrice int NOT NULL DEFAULT ((0)), | ||
540 | PayButton1 int NOT NULL DEFAULT ((0)), | ||
541 | PayButton2 int NOT NULL DEFAULT ((0)), | ||
542 | PayButton3 int NOT NULL DEFAULT ((0)), | ||
543 | PayButton4 int NOT NULL DEFAULT ((0)), | ||
544 | LoopedSound uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
545 | LoopedSoundGain float(53) NOT NULL DEFAULT ((0.0)), | ||
546 | TextureAnimation image NULL, | ||
547 | OmegaX float(53) NOT NULL DEFAULT ((0.0)), | ||
548 | OmegaY float(53) NOT NULL DEFAULT ((0.0)), | ||
549 | OmegaZ float(53) NOT NULL DEFAULT ((0.0)), | ||
550 | CameraEyeOffsetX float(53) NOT NULL DEFAULT ((0.0)), | ||
551 | CameraEyeOffsetY float(53) NOT NULL DEFAULT ((0.0)), | ||
552 | CameraEyeOffsetZ float(53) NOT NULL DEFAULT ((0.0)), | ||
553 | CameraAtOffsetX float(53) NOT NULL DEFAULT ((0.0)), | ||
554 | CameraAtOffsetY float(53) NOT NULL DEFAULT ((0.0)), | ||
555 | CameraAtOffsetZ float(53) NOT NULL DEFAULT ((0.0)), | ||
556 | ForceMouselook tinyint NOT NULL DEFAULT ((0)), | ||
557 | ScriptAccessPin int NOT NULL DEFAULT ((0)), | ||
558 | AllowedDrop tinyint NOT NULL DEFAULT ((0)), | ||
559 | DieAtEdge tinyint NOT NULL DEFAULT ((0)), | ||
560 | SalePrice int NOT NULL DEFAULT ((10)), | ||
561 | SaleType tinyint NOT NULL DEFAULT ((0)), | ||
562 | ColorR int NOT NULL DEFAULT ((0)), | ||
563 | ColorG int NOT NULL DEFAULT ((0)), | ||
564 | ColorB int NOT NULL DEFAULT ((0)), | ||
565 | ColorA int NOT NULL DEFAULT ((0)), | ||
566 | ParticleSystem image NULL, | ||
567 | ClickAction tinyint NOT NULL DEFAULT ((0)), | ||
568 | Material tinyint NOT NULL DEFAULT ((3)), | ||
569 | CollisionSound uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
570 | CollisionSoundVolume float(53) NOT NULL DEFAULT ((0.0)), | ||
571 | LinkNumber int NOT NULL DEFAULT ((0)) | ||
572 | ) ON [PRIMARY] | ||
573 | TEXTIMAGE_ON [PRIMARY] | ||
574 | |||
575 | IF EXISTS(SELECT * FROM dbo.prims) | ||
576 | EXEC('INSERT INTO dbo.Tmp_prims (UUID, RegionUUID, ParentID, CreationDate, Name, SceneGroupID, Text, Description, SitName, TouchName, ObjectFlags, CreatorID, OwnerID, GroupID, LastOwnerID, OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ, PayPrice, PayButton1, PayButton2, PayButton3, PayButton4, LoopedSound, LoopedSoundGain, TextureAnimation, OmegaX, OmegaY, OmegaZ, CameraEyeOffsetX, CameraEyeOffsetY, CameraEyeOffsetZ, CameraAtOffsetX, CameraAtOffsetY, CameraAtOffsetZ, ForceMouselook, ScriptAccessPin, AllowedDrop, DieAtEdge, SalePrice, SaleType, ColorR, ColorG, ColorB, ColorA, ParticleSystem, ClickAction, Material, CollisionSound, CollisionSoundVolume, LinkNumber) | ||
577 | SELECT CONVERT(uniqueidentifier, UUID), CONVERT(uniqueidentifier, RegionUUID), ParentID, CreationDate, Name, CONVERT(uniqueidentifier, SceneGroupID), Text, Description, SitName, TouchName, ObjectFlags, CONVERT(uniqueidentifier, CreatorID), CONVERT(uniqueidentifier, OwnerID), CONVERT(uniqueidentifier, GroupID), CONVERT(uniqueidentifier, LastOwnerID), OwnerMask, NextOwnerMask, GroupMask, EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ, PayPrice, PayButton1, PayButton2, PayButton3, PayButton4, CONVERT(uniqueidentifier, LoopedSound), LoopedSoundGain, TextureAnimation, OmegaX, OmegaY, OmegaZ, CameraEyeOffsetX, CameraEyeOffsetY, CameraEyeOffsetZ, CameraAtOffsetX, CameraAtOffsetY, CameraAtOffsetZ, ForceMouselook, ScriptAccessPin, AllowedDrop, DieAtEdge, SalePrice, SaleType, ColorR, ColorG, ColorB, ColorA, ParticleSystem, ClickAction, Material, CONVERT(uniqueidentifier, CollisionSound), CollisionSoundVolume, LinkNumber FROM dbo.prims WITH (HOLDLOCK TABLOCKX)') | ||
578 | |||
579 | DROP TABLE dbo.prims | ||
580 | |||
581 | EXECUTE sp_rename N'dbo.Tmp_prims', N'prims', 'OBJECT' | ||
582 | |||
583 | ALTER TABLE dbo.prims ADD CONSTRAINT | ||
584 | PK__prims__10566F31 PRIMARY KEY CLUSTERED | ||
585 | ( | ||
586 | UUID | ||
587 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
588 | |||
589 | |||
590 | CREATE NONCLUSTERED INDEX prims_regionuuid ON dbo.prims | ||
591 | ( | ||
592 | RegionUUID | ||
593 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
594 | |||
595 | CREATE NONCLUSTERED INDEX prims_parentid ON dbo.prims | ||
596 | ( | ||
597 | ParentID | ||
598 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
599 | |||
600 | COMMIT | ||
601 | |||
602 | |||
603 | :VERSION 14 | ||
604 | |||
605 | BEGIN TRANSACTION | ||
606 | |||
607 | CREATE TABLE dbo.Tmp_primshapes | ||
608 | ( | ||
609 | UUID uniqueidentifier NOT NULL, | ||
610 | Shape int NULL, | ||
611 | ScaleX float(53) NULL, | ||
612 | ScaleY float(53) NULL, | ||
613 | ScaleZ float(53) NULL, | ||
614 | PCode int NULL, | ||
615 | PathBegin int NULL, | ||
616 | PathEnd int NULL, | ||
617 | PathScaleX int NULL, | ||
618 | PathScaleY int NULL, | ||
619 | PathShearX int NULL, | ||
620 | PathShearY int NULL, | ||
621 | PathSkew int NULL, | ||
622 | PathCurve int NULL, | ||
623 | PathRadiusOffset int NULL, | ||
624 | PathRevolutions int NULL, | ||
625 | PathTaperX int NULL, | ||
626 | PathTaperY int NULL, | ||
627 | PathTwist int NULL, | ||
628 | PathTwistBegin int NULL, | ||
629 | ProfileBegin int NULL, | ||
630 | ProfileEnd int NULL, | ||
631 | ProfileCurve int NULL, | ||
632 | ProfileHollow int NULL, | ||
633 | State int NULL, | ||
634 | Texture image NULL, | ||
635 | ExtraParams image NULL | ||
636 | ) ON [PRIMARY] | ||
637 | TEXTIMAGE_ON [PRIMARY] | ||
638 | |||
639 | IF EXISTS(SELECT * FROM dbo.primshapes) | ||
640 | EXEC('INSERT INTO dbo.Tmp_primshapes (UUID, Shape, ScaleX, ScaleY, ScaleZ, PCode, PathBegin, PathEnd, PathScaleX, PathScaleY, PathShearX, PathShearY, PathSkew, PathCurve, PathRadiusOffset, PathRevolutions, PathTaperX, PathTaperY, PathTwist, PathTwistBegin, ProfileBegin, ProfileEnd, ProfileCurve, ProfileHollow, State, Texture, ExtraParams) | ||
641 | SELECT CONVERT(uniqueidentifier, UUID), Shape, ScaleX, ScaleY, ScaleZ, PCode, PathBegin, PathEnd, PathScaleX, PathScaleY, PathShearX, PathShearY, PathSkew, PathCurve, PathRadiusOffset, PathRevolutions, PathTaperX, PathTaperY, PathTwist, PathTwistBegin, ProfileBegin, ProfileEnd, ProfileCurve, ProfileHollow, State, Texture, ExtraParams FROM dbo.primshapes WITH (HOLDLOCK TABLOCKX)') | ||
642 | |||
643 | DROP TABLE dbo.primshapes | ||
644 | |||
645 | EXECUTE sp_rename N'dbo.Tmp_primshapes', N'primshapes', 'OBJECT' | ||
646 | |||
647 | ALTER TABLE dbo.primshapes ADD CONSTRAINT | ||
648 | PK__primshapes__0880433F PRIMARY KEY CLUSTERED | ||
649 | ( | ||
650 | UUID | ||
651 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
652 | |||
653 | COMMIT | ||
654 | |||
655 | |||
656 | :VERSION 15 | ||
657 | |||
658 | BEGIN TRANSACTION | ||
659 | |||
660 | CREATE TABLE dbo.Tmp_primitems | ||
661 | ( | ||
662 | itemID uniqueidentifier NOT NULL, | ||
663 | primID uniqueidentifier NULL, | ||
664 | assetID uniqueidentifier NULL, | ||
665 | parentFolderID uniqueidentifier NULL, | ||
666 | invType int NULL, | ||
667 | assetType int NULL, | ||
668 | name varchar(255) NULL, | ||
669 | description varchar(255) NULL, | ||
670 | creationDate varchar(255) NULL, | ||
671 | creatorID uniqueidentifier NULL, | ||
672 | ownerID uniqueidentifier NULL, | ||
673 | lastOwnerID uniqueidentifier NULL, | ||
674 | groupID uniqueidentifier NULL, | ||
675 | nextPermissions int NULL, | ||
676 | currentPermissions int NULL, | ||
677 | basePermissions int NULL, | ||
678 | everyonePermissions int NULL, | ||
679 | groupPermissions int NULL, | ||
680 | flags int NOT NULL DEFAULT ((0)) | ||
681 | ) ON [PRIMARY] | ||
682 | |||
683 | IF EXISTS(SELECT * FROM dbo.primitems) | ||
684 | EXEC('INSERT INTO dbo.Tmp_primitems (itemID, primID, assetID, parentFolderID, invType, assetType, name, description, creationDate, creatorID, ownerID, lastOwnerID, groupID, nextPermissions, currentPermissions, basePermissions, everyonePermissions, groupPermissions, flags) | ||
685 | SELECT CONVERT(uniqueidentifier, itemID), CONVERT(uniqueidentifier, primID), CONVERT(uniqueidentifier, assetID), CONVERT(uniqueidentifier, parentFolderID), invType, assetType, name, description, creationDate, CONVERT(uniqueidentifier, creatorID), CONVERT(uniqueidentifier, ownerID), CONVERT(uniqueidentifier, lastOwnerID), CONVERT(uniqueidentifier, groupID), nextPermissions, currentPermissions, basePermissions, everyonePermissions, groupPermissions, flags FROM dbo.primitems WITH (HOLDLOCK TABLOCKX)') | ||
686 | |||
687 | DROP TABLE dbo.primitems | ||
688 | |||
689 | EXECUTE sp_rename N'dbo.Tmp_primitems', N'primitems', 'OBJECT' | ||
690 | |||
691 | ALTER TABLE dbo.primitems ADD CONSTRAINT | ||
692 | PK__primitems__0A688BB1 PRIMARY KEY CLUSTERED | ||
693 | ( | ||
694 | itemID | ||
695 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
696 | |||
697 | CREATE NONCLUSTERED INDEX primitems_primid ON dbo.primitems | ||
698 | ( | ||
699 | primID | ||
700 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
701 | |||
702 | COMMIT | ||
703 | |||
704 | |||
705 | :VERSION 16 | ||
706 | |||
707 | |||
708 | BEGIN TRANSACTION | ||
709 | |||
710 | CREATE TABLE dbo.Tmp_terrain | ||
711 | ( | ||
712 | RegionUUID uniqueidentifier NULL, | ||
713 | Revision int NULL, | ||
714 | Heightfield image NULL | ||
715 | ) ON [PRIMARY] | ||
716 | TEXTIMAGE_ON [PRIMARY] | ||
717 | |||
718 | IF EXISTS(SELECT * FROM dbo.terrain) | ||
719 | EXEC('INSERT INTO dbo.Tmp_terrain (RegionUUID, Revision, Heightfield) | ||
720 | SELECT CONVERT(uniqueidentifier, RegionUUID), Revision, Heightfield FROM dbo.terrain WITH (HOLDLOCK TABLOCKX)') | ||
721 | |||
722 | DROP TABLE dbo.terrain | ||
723 | |||
724 | EXECUTE sp_rename N'dbo.Tmp_terrain', N'terrain', 'OBJECT' | ||
725 | |||
726 | COMMIT | ||
727 | |||
728 | |||
729 | :VERSION 17 | ||
730 | |||
731 | BEGIN TRANSACTION | ||
732 | |||
733 | CREATE TABLE dbo.Tmp_land | ||
734 | ( | ||
735 | UUID uniqueidentifier NOT NULL, | ||
736 | RegionUUID uniqueidentifier NULL, | ||
737 | LocalLandID int NULL, | ||
738 | Bitmap image NULL, | ||
739 | Name varchar(255) NULL, | ||
740 | Description varchar(255) NULL, | ||
741 | OwnerUUID uniqueidentifier NULL, | ||
742 | IsGroupOwned int NULL, | ||
743 | Area int NULL, | ||
744 | AuctionID int NULL, | ||
745 | Category int NULL, | ||
746 | ClaimDate int NULL, | ||
747 | ClaimPrice int NULL, | ||
748 | GroupUUID uniqueidentifier NULL, | ||
749 | SalePrice int NULL, | ||
750 | LandStatus int NULL, | ||
751 | LandFlags int NULL, | ||
752 | LandingType int NULL, | ||
753 | MediaAutoScale int NULL, | ||
754 | MediaTextureUUID uniqueidentifier NULL, | ||
755 | MediaURL varchar(255) NULL, | ||
756 | MusicURL varchar(255) NULL, | ||
757 | PassHours float(53) NULL, | ||
758 | PassPrice int NULL, | ||
759 | SnapshotUUID uniqueidentifier NULL, | ||
760 | UserLocationX float(53) NULL, | ||
761 | UserLocationY float(53) NULL, | ||
762 | UserLocationZ float(53) NULL, | ||
763 | UserLookAtX float(53) NULL, | ||
764 | UserLookAtY float(53) NULL, | ||
765 | UserLookAtZ float(53) NULL, | ||
766 | AuthbuyerID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
767 | OtherCleanTime int NOT NULL DEFAULT ((0)), | ||
768 | Dwell int NOT NULL DEFAULT ((0)) | ||
769 | ) ON [PRIMARY] | ||
770 | TEXTIMAGE_ON [PRIMARY] | ||
771 | |||
772 | IF EXISTS(SELECT * FROM dbo.land) | ||
773 | EXEC('INSERT INTO dbo.Tmp_land (UUID, RegionUUID, LocalLandID, Bitmap, Name, Description, OwnerUUID, IsGroupOwned, Area, AuctionID, Category, ClaimDate, ClaimPrice, GroupUUID, SalePrice, LandStatus, LandFlags, LandingType, MediaAutoScale, MediaTextureUUID, MediaURL, MusicURL, PassHours, PassPrice, SnapshotUUID, UserLocationX, UserLocationY, UserLocationZ, UserLookAtX, UserLookAtY, UserLookAtZ, AuthbuyerID, OtherCleanTime, Dwell) | ||
774 | SELECT CONVERT(uniqueidentifier, UUID), CONVERT(uniqueidentifier, RegionUUID), LocalLandID, Bitmap, Name, Description, CONVERT(uniqueidentifier, OwnerUUID), IsGroupOwned, Area, AuctionID, Category, ClaimDate, ClaimPrice, CONVERT(uniqueidentifier, GroupUUID), SalePrice, LandStatus, LandFlags, LandingType, MediaAutoScale, CONVERT(uniqueidentifier, MediaTextureUUID), MediaURL, MusicURL, PassHours, PassPrice, CONVERT(uniqueidentifier, SnapshotUUID), UserLocationX, UserLocationY, UserLocationZ, UserLookAtX, UserLookAtY, UserLookAtZ, CONVERT(uniqueidentifier, AuthbuyerID), OtherCleanTime, Dwell FROM dbo.land WITH (HOLDLOCK TABLOCKX)') | ||
775 | |||
776 | DROP TABLE dbo.land | ||
777 | |||
778 | EXECUTE sp_rename N'dbo.Tmp_land', N'land', 'OBJECT' | ||
779 | |||
780 | ALTER TABLE dbo.land ADD CONSTRAINT | ||
781 | PK__land__65A475E71BFD2C07 PRIMARY KEY CLUSTERED | ||
782 | ( | ||
783 | UUID | ||
784 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
785 | |||
786 | COMMIT | ||
787 | |||
788 | |||
789 | |||
790 | :VERSION 18 | ||
791 | |||
792 | BEGIN TRANSACTION | ||
793 | |||
794 | CREATE TABLE dbo.Tmp_landaccesslist | ||
795 | ( | ||
796 | LandUUID uniqueidentifier NULL, | ||
797 | AccessUUID uniqueidentifier NULL, | ||
798 | Flags int NULL | ||
799 | ) ON [PRIMARY] | ||
800 | |||
801 | IF EXISTS(SELECT * FROM dbo.landaccesslist) | ||
802 | EXEC('INSERT INTO dbo.Tmp_landaccesslist (LandUUID, AccessUUID, Flags) | ||
803 | SELECT CONVERT(uniqueidentifier, LandUUID), CONVERT(uniqueidentifier, AccessUUID), Flags FROM dbo.landaccesslist WITH (HOLDLOCK TABLOCKX)') | ||
804 | |||
805 | DROP TABLE dbo.landaccesslist | ||
806 | |||
807 | EXECUTE sp_rename N'dbo.Tmp_landaccesslist', N'landaccesslist', 'OBJECT' | ||
808 | |||
809 | COMMIT | ||
810 | |||
811 | |||
812 | |||
813 | :VERSION 19 | ||
814 | |||
815 | BEGIN TRANSACTION | ||
816 | |||
817 | CREATE TABLE dbo.Tmp_regionban | ||
818 | ( | ||
819 | regionUUID uniqueidentifier NOT NULL, | ||
820 | bannedUUID uniqueidentifier NOT NULL, | ||
821 | bannedIp varchar(16) NOT NULL, | ||
822 | bannedIpHostMask varchar(16) NOT NULL | ||
823 | ) ON [PRIMARY] | ||
824 | |||
825 | IF EXISTS(SELECT * FROM dbo.regionban) | ||
826 | EXEC('INSERT INTO dbo.Tmp_regionban (regionUUID, bannedUUID, bannedIp, bannedIpHostMask) | ||
827 | SELECT CONVERT(uniqueidentifier, regionUUID), CONVERT(uniqueidentifier, bannedUUID), bannedIp, bannedIpHostMask FROM dbo.regionban WITH (HOLDLOCK TABLOCKX)') | ||
828 | |||
829 | DROP TABLE dbo.regionban | ||
830 | |||
831 | EXECUTE sp_rename N'dbo.Tmp_regionban', N'regionban', 'OBJECT' | ||
832 | |||
833 | COMMIT | ||
834 | |||
835 | |||
836 | :VERSION 20 | ||
837 | |||
838 | BEGIN TRANSACTION | ||
839 | |||
840 | CREATE TABLE dbo.Tmp_regionsettings | ||
841 | ( | ||
842 | regionUUID uniqueidentifier NOT NULL, | ||
843 | block_terraform bit NOT NULL, | ||
844 | block_fly bit NOT NULL, | ||
845 | allow_damage bit NOT NULL, | ||
846 | restrict_pushing bit NOT NULL, | ||
847 | allow_land_resell bit NOT NULL, | ||
848 | allow_land_join_divide bit NOT NULL, | ||
849 | block_show_in_search bit NOT NULL, | ||
850 | agent_limit int NOT NULL, | ||
851 | object_bonus float(53) NOT NULL, | ||
852 | maturity int NOT NULL, | ||
853 | disable_scripts bit NOT NULL, | ||
854 | disable_collisions bit NOT NULL, | ||
855 | disable_physics bit NOT NULL, | ||
856 | terrain_texture_1 uniqueidentifier NOT NULL, | ||
857 | terrain_texture_2 uniqueidentifier NOT NULL, | ||
858 | terrain_texture_3 uniqueidentifier NOT NULL, | ||
859 | terrain_texture_4 uniqueidentifier NOT NULL, | ||
860 | elevation_1_nw float(53) NOT NULL, | ||
861 | elevation_2_nw float(53) NOT NULL, | ||
862 | elevation_1_ne float(53) NOT NULL, | ||
863 | elevation_2_ne float(53) NOT NULL, | ||
864 | elevation_1_se float(53) NOT NULL, | ||
865 | elevation_2_se float(53) NOT NULL, | ||
866 | elevation_1_sw float(53) NOT NULL, | ||
867 | elevation_2_sw float(53) NOT NULL, | ||
868 | water_height float(53) NOT NULL, | ||
869 | terrain_raise_limit float(53) NOT NULL, | ||
870 | terrain_lower_limit float(53) NOT NULL, | ||
871 | use_estate_sun bit NOT NULL, | ||
872 | fixed_sun bit NOT NULL, | ||
873 | sun_position float(53) NOT NULL, | ||
874 | covenant uniqueidentifier NULL DEFAULT (NULL), | ||
875 | Sandbox bit NOT NULL, | ||
876 | sunvectorx float(53) NOT NULL DEFAULT ((0)), | ||
877 | sunvectory float(53) NOT NULL DEFAULT ((0)), | ||
878 | sunvectorz float(53) NOT NULL DEFAULT ((0)) | ||
879 | ) ON [PRIMARY] | ||
880 | |||
881 | IF EXISTS(SELECT * FROM dbo.regionsettings) | ||
882 | EXEC('INSERT INTO dbo.Tmp_regionsettings (regionUUID, block_terraform, block_fly, allow_damage, restrict_pushing, allow_land_resell, allow_land_join_divide, block_show_in_search, agent_limit, object_bonus, maturity, disable_scripts, disable_collisions, disable_physics, terrain_texture_1, terrain_texture_2, terrain_texture_3, terrain_texture_4, elevation_1_nw, elevation_2_nw, elevation_1_ne, elevation_2_ne, elevation_1_se, elevation_2_se, elevation_1_sw, elevation_2_sw, water_height, terrain_raise_limit, terrain_lower_limit, use_estate_sun, fixed_sun, sun_position, covenant, Sandbox, sunvectorx, sunvectory, sunvectorz) | ||
883 | SELECT CONVERT(uniqueidentifier, regionUUID), block_terraform, block_fly, allow_damage, restrict_pushing, allow_land_resell, allow_land_join_divide, block_show_in_search, agent_limit, object_bonus, maturity, disable_scripts, disable_collisions, disable_physics, CONVERT(uniqueidentifier, terrain_texture_1), CONVERT(uniqueidentifier, terrain_texture_2), CONVERT(uniqueidentifier, terrain_texture_3), CONVERT(uniqueidentifier, terrain_texture_4), elevation_1_nw, elevation_2_nw, elevation_1_ne, elevation_2_ne, elevation_1_se, elevation_2_se, elevation_1_sw, elevation_2_sw, water_height, terrain_raise_limit, terrain_lower_limit, use_estate_sun, fixed_sun, sun_position, CONVERT(uniqueidentifier, covenant), Sandbox, sunvectorx, sunvectory, sunvectorz FROM dbo.regionsettings WITH (HOLDLOCK TABLOCKX)') | ||
884 | |||
885 | DROP TABLE dbo.regionsettings | ||
886 | |||
887 | EXECUTE sp_rename N'dbo.Tmp_regionsettings', N'regionsettings', 'OBJECT' | ||
888 | |||
889 | ALTER TABLE dbo.regionsettings ADD CONSTRAINT | ||
890 | PK__regionse__5B35159D21B6055D PRIMARY KEY CLUSTERED | ||
891 | ( | ||
892 | regionUUID | ||
893 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
894 | |||
895 | COMMIT | ||
896 | |||
897 | |||
898 | :VERSION 21 | ||
899 | |||
900 | BEGIN TRANSACTION | ||
901 | |||
902 | ALTER TABLE prims ADD PassTouches bit not null default 0 | ||
903 | |||
904 | COMMIT | ||
905 | |||
906 | |||
907 | :VERSION 22 | ||
908 | |||
909 | BEGIN TRANSACTION | ||
910 | |||
911 | ALTER TABLE regionsettings ADD loaded_creation_date varchar(20) | ||
912 | ALTER TABLE regionsettings ADD loaded_creation_time varchar(20) | ||
913 | ALTER TABLE regionsettings ADD loaded_creation_id varchar(64) | ||
914 | |||
915 | COMMIT | ||
916 | |||
917 | :VERSION 23 | ||
918 | |||
919 | BEGIN TRANSACTION | ||
920 | |||
921 | ALTER TABLE regionsettings DROP COLUMN loaded_creation_date | ||
922 | ALTER TABLE regionsettings DROP COLUMN loaded_creation_time | ||
923 | ALTER TABLE regionsettings ADD loaded_creation_datetime int NOT NULL default 0 | ||
924 | |||
925 | COMMIT | ||
926 | |||
927 | :VERSION 24 | ||
928 | |||
929 | BEGIN TRANSACTION | ||
930 | |||
931 | ALTER TABLE prims ADD MediaURL varchar(255) | ||
932 | ALTER TABLE primshapes ADD Media TEXT NULL | ||
933 | |||
934 | COMMIT | ||
935 | |||
936 | :VERSION 25 | ||
937 | |||
938 | BEGIN TRANSACTION | ||
939 | CREATE TABLE "regionwindlight" ( | ||
940 | "region_id" varchar(36) NOT NULL DEFAULT '000000-0000-0000-0000-000000000000', | ||
941 | "water_color_r" [float] NOT NULL DEFAULT '4.000000', | ||
942 | "water_color_g" [float] NOT NULL DEFAULT '38.000000', | ||
943 | "water_color_b" [float] NOT NULL DEFAULT '64.000000', | ||
944 | "water_fog_density_exponent" [float] NOT NULL DEFAULT '4.0', | ||
945 | "underwater_fog_modifier" [float] NOT NULL DEFAULT '0.25', | ||
946 | "reflection_wavelet_scale_1" [float] NOT NULL DEFAULT '2.0', | ||
947 | "reflection_wavelet_scale_2" [float] NOT NULL DEFAULT '2.0', | ||
948 | "reflection_wavelet_scale_3" [float] NOT NULL DEFAULT '2.0', | ||
949 | "fresnel_scale" [float] NOT NULL DEFAULT '0.40', | ||
950 | "fresnel_offset" [float] NOT NULL DEFAULT '0.50', | ||
951 | "refract_scale_above" [float] NOT NULL DEFAULT '0.03', | ||
952 | "refract_scale_below" [float] NOT NULL DEFAULT '0.20', | ||
953 | "blur_multiplier" [float] NOT NULL DEFAULT '0.040', | ||
954 | "big_wave_direction_x" [float] NOT NULL DEFAULT '1.05', | ||
955 | "big_wave_direction_y" [float] NOT NULL DEFAULT '-0.42', | ||
956 | "little_wave_direction_x" [float] NOT NULL DEFAULT '1.11', | ||
957 | "little_wave_direction_y" [float] NOT NULL DEFAULT '-1.16', | ||
958 | "normal_map_texture" varchar(36) NOT NULL DEFAULT '822ded49-9a6c-f61c-cb89-6df54f42cdf4', | ||
959 | "horizon_r" [float] NOT NULL DEFAULT '0.25', | ||
960 | "horizon_g" [float] NOT NULL DEFAULT '0.25', | ||
961 | "horizon_b" [float] NOT NULL DEFAULT '0.32', | ||
962 | "horizon_i" [float] NOT NULL DEFAULT '0.32', | ||
963 | "haze_horizon" [float] NOT NULL DEFAULT '0.19', | ||
964 | "blue_density_r" [float] NOT NULL DEFAULT '0.12', | ||
965 | "blue_density_g" [float] NOT NULL DEFAULT '0.22', | ||
966 | "blue_density_b" [float] NOT NULL DEFAULT '0.38', | ||
967 | "blue_density_i" [float] NOT NULL DEFAULT '0.38', | ||
968 | "haze_density" [float] NOT NULL DEFAULT '0.70', | ||
969 | "density_multiplier" [float] NOT NULL DEFAULT '0.18', | ||
970 | "distance_multiplier" [float] NOT NULL DEFAULT '0.8', | ||
971 | "max_altitude" int NOT NULL DEFAULT '1605', | ||
972 | "sun_moon_color_r" [float] NOT NULL DEFAULT '0.24', | ||
973 | "sun_moon_color_g" [float] NOT NULL DEFAULT '0.26', | ||
974 | "sun_moon_color_b" [float] NOT NULL DEFAULT '0.30', | ||
975 | "sun_moon_color_i" [float] NOT NULL DEFAULT '0.30', | ||
976 | "sun_moon_position" [float] NOT NULL DEFAULT '0.317', | ||
977 | "ambient_r" [float] NOT NULL DEFAULT '0.35', | ||
978 | "ambient_g" [float] NOT NULL DEFAULT '0.35', | ||
979 | "ambient_b" [float] NOT NULL DEFAULT '0.35', | ||
980 | "ambient_i" [float] NOT NULL DEFAULT '0.35', | ||
981 | "east_angle" [float] NOT NULL DEFAULT '0.00', | ||
982 | "sun_glow_focus" [float] NOT NULL DEFAULT '0.10', | ||
983 | "sun_glow_size" [float] NOT NULL DEFAULT '1.75', | ||
984 | "scene_gamma" [float] NOT NULL DEFAULT '1.00', | ||
985 | "star_brightness" [float] NOT NULL DEFAULT '0.00', | ||
986 | "cloud_color_r" [float] NOT NULL DEFAULT '0.41', | ||
987 | "cloud_color_g" [float] NOT NULL DEFAULT '0.41', | ||
988 | "cloud_color_b" [float] NOT NULL DEFAULT '0.41', | ||
989 | "cloud_color_i" [float] NOT NULL DEFAULT '0.41', | ||
990 | "cloud_x" [float] NOT NULL DEFAULT '1.00', | ||
991 | "cloud_y" [float] NOT NULL DEFAULT '0.53', | ||
992 | "cloud_density" [float] NOT NULL DEFAULT '1.00', | ||
993 | "cloud_coverage" [float] NOT NULL DEFAULT '0.27', | ||
994 | "cloud_scale" [float] NOT NULL DEFAULT '0.42', | ||
995 | "cloud_detail_x" [float] NOT NULL DEFAULT '1.00', | ||
996 | "cloud_detail_y" [float] NOT NULL DEFAULT '0.53', | ||
997 | "cloud_detail_density" [float] NOT NULL DEFAULT '0.12', | ||
998 | "cloud_scroll_x" [float] NOT NULL DEFAULT '0.20', | ||
999 | "cloud_scroll_x_lock" tinyint NOT NULL DEFAULT '0', | ||
1000 | "cloud_scroll_y" [float] NOT NULL DEFAULT '0.01', | ||
1001 | "cloud_scroll_y_lock" tinyint NOT NULL DEFAULT '0', | ||
1002 | "draw_classic_clouds" tinyint NOT NULL DEFAULT '1', | ||
1003 | PRIMARY KEY ("region_id") | ||
1004 | ) | ||
1005 | |||
1006 | COMMIT | ||
1007 | |||
1008 | :VERSION 26 | ||
1009 | |||
1010 | BEGIN TRANSACTION | ||
1011 | |||
1012 | ALTER TABLE regionsettings ADD map_tile_ID CHAR(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000' | ||
1013 | |||
1014 | COMMIT | ||
1015 | |||
1016 | :VERSION 27 #--------------------- | ||
1017 | |||
1018 | BEGIN TRANSACTION | ||
1019 | ALTER TABLE land ADD MediaType VARCHAR(32) NOT NULL DEFAULT 'none/none' | ||
1020 | ALTER TABLE land ADD MediaDescription VARCHAR(255) NOT NULL DEFAULT '' | ||
1021 | ALTER TABLE land ADD MediaSize VARCHAR(16) NOT NULL DEFAULT '0,0' | ||
1022 | ALTER TABLE land ADD MediaLoop bit NOT NULL DEFAULT 0 | ||
1023 | ALTER TABLE land ADD ObscureMusic bit NOT NULL DEFAULT 0 | ||
1024 | ALTER TABLE land ADD ObscureMedia bit NOT NULL DEFAULT 0 | ||
1025 | COMMIT | ||
1026 | |||
1027 | :VERSION 28 #--------------------- | ||
1028 | |||
1029 | BEGIN TRANSACTION | ||
1030 | |||
1031 | ALTER TABLE prims | ||
1032 | ADD CONSTRAINT DF_prims_CreatorID | ||
1033 | DEFAULT '00000000-0000-0000-0000-000000000000' | ||
1034 | FOR CreatorID | ||
1035 | |||
1036 | ALTER TABLE prims ALTER COLUMN CreatorID uniqueidentifier NOT NULL | ||
1037 | |||
1038 | ALTER TABLE primitems | ||
1039 | ADD CONSTRAINT DF_primitems_CreatorID | ||
1040 | DEFAULT '00000000-0000-0000-0000-000000000000' | ||
1041 | FOR CreatorID | ||
1042 | |||
1043 | ALTER TABLE primitems ALTER COLUMN CreatorID uniqueidentifier NOT NULL | ||
1044 | |||
1045 | COMMIT | ||
1046 | |||
1047 | :VERSION 29 #----------------- Region Covenant changed time | ||
1048 | |||
1049 | BEGIN TRANSACTION | ||
1050 | |||
1051 | ALTER TABLE regionsettings ADD covenant_datetime int NOT NULL default 0 | ||
1052 | |||
1053 | COMMIT | ||
1054 | |||
1055 | :VERSION 30 #------------------Migrate creatorID storage to varchars instead of UUIDs for HG support | ||
1056 | |||
1057 | BEGIN TRANSACTION | ||
1058 | |||
1059 | EXECUTE sp_rename N'dbo.prims.creatorid', N'creatoridold', 'COLUMN' | ||
1060 | EXECUTE sp_rename N'dbo.primitems.creatorid', N'creatoridold', 'COLUMN' | ||
1061 | |||
1062 | COMMIT | ||
1063 | |||
1064 | :VERSION 31 #--------------------- | ||
1065 | |||
1066 | BEGIN TRANSACTION | ||
1067 | |||
1068 | ALTER TABLE prims ADD CreatorID varchar(255) | ||
1069 | ALTER TABLE primitems ADD CreatorID varchar(255) | ||
1070 | |||
1071 | COMMIT | ||
1072 | |||
1073 | :VERSION 32 #--------------------- | ||
1074 | |||
1075 | BEGIN TRANSACTION | ||
1076 | |||
1077 | UPDATE prims SET prims.CreatorID = CONVERT(varchar(255), creatoridold) | ||
1078 | UPDATE primitems SET primitems.CreatorID = CONVERT(varchar(255), creatoridold) | ||
1079 | |||
1080 | COMMIT | ||
1081 | |||
1082 | :VERSION 33 #--------------------- | ||
1083 | |||
1084 | BEGIN TRANSACTION | ||
1085 | |||
1086 | ALTER TABLE prims | ||
1087 | ADD CONSTRAINT DF_prims_CreatorIDNew | ||
1088 | DEFAULT '00000000-0000-0000-0000-000000000000' | ||
1089 | FOR CreatorID | ||
1090 | |||
1091 | ALTER TABLE prims ALTER COLUMN CreatorID varchar(255) NOT NULL | ||
1092 | |||
1093 | ALTER TABLE primitems | ||
1094 | ADD CONSTRAINT DF_primitems_CreatorIDNew | ||
1095 | DEFAULT '00000000-0000-0000-0000-000000000000' | ||
1096 | FOR CreatorID | ||
1097 | |||
1098 | ALTER TABLE primitems ALTER COLUMN CreatorID varchar(255) NOT NULL | ||
1099 | |||
1100 | COMMIT | ||
1101 | |||
1102 | :VERSION 34 #--------------- Telehub support | ||
1103 | |||
1104 | BEGIN TRANSACTION | ||
1105 | |||
1106 | CREATE TABLE [dbo].[Spawn_Points]( | ||
1107 | [RegionUUID] [uniqueidentifier] NOT NULL, | ||
1108 | [Yaw] [float] NOT NULL, | ||
1109 | [Pitch] [float] NOT NULL, | ||
1110 | [Distance] [float] NOT NULL, | ||
1111 | PRIMARY KEY CLUSTERED | ||
1112 | ( | ||
1113 | [RegionUUID] ASC | ||
1114 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
1115 | ) ON [PRIMARY] | ||
1116 | |||
1117 | ALTER TABLE regionsettings ADD TelehubObject uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'; | ||
1118 | |||
1119 | COMMIT | ||
1120 | |||
1121 | :VERSION 35 #---------------- Parcels for sale | ||
1122 | |||
1123 | BEGIN TRANSACTION | ||
1124 | |||
1125 | ALTER TABLE regionsettings ADD parcel_tile_ID uniqueidentifier NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000'; | ||
1126 | |||
1127 | COMMIT | ||
1128 | |||
1129 | :VERSION 36 #---------------- Timed bans/access | ||
1130 | |||
1131 | BEGIN TRANSACTION | ||
1132 | |||
1133 | ALTER TABLE landaccesslist ADD Expires integer NOT NULL DEFAULT 0; | ||
1134 | |||
1135 | COMMIT | ||
1136 | |||
1137 | :VERSION 37 #---------------- Environment Settings | ||
1138 | |||
1139 | BEGIN TRANSACTION | ||
1140 | |||
1141 | CREATE TABLE [dbo].[regionenvironment]( | ||
1142 | [region_id] [uniqueidentifier] NOT NULL, | ||
1143 | [llsd_settings] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | ||
1144 | PRIMARY KEY CLUSTERED | ||
1145 | ( | ||
1146 | [region_id] ASC | ||
1147 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
1148 | ) ON [PRIMARY] | ||
1149 | |||
1150 | COMMIT | ||
diff --git a/OpenSim/Data/MSSQL/Resources/UserAccount.migrations b/OpenSim/Data/MSSQL/Resources/UserAccount.migrations deleted file mode 100644 index a81704d..0000000 --- a/OpenSim/Data/MSSQL/Resources/UserAccount.migrations +++ /dev/null | |||
@@ -1,55 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | CREATE TABLE [UserAccounts] ( | ||
4 | [PrincipalID] uniqueidentifier NOT NULL, | ||
5 | [ScopeID] uniqueidentifier NOT NULL, | ||
6 | [FirstName] [varchar](64) NOT NULL, | ||
7 | [LastName] [varchar](64) NOT NULL, | ||
8 | [Email] [varchar](64) NULL, | ||
9 | [ServiceURLs] [text] NULL, | ||
10 | [Created] [int] default NULL, | ||
11 | |||
12 | PRIMARY KEY CLUSTERED | ||
13 | ( | ||
14 | [PrincipalID] ASC | ||
15 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
16 | ) ON [PRIMARY] | ||
17 | |||
18 | |||
19 | :VERSION 2 | ||
20 | |||
21 | BEGIN TRANSACTION | ||
22 | IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[users]') AND type in (N'U')) | ||
23 | INSERT INTO UserAccounts (PrincipalID, ScopeID, FirstName, LastName, Email, ServiceURLs, Created) SELECT [UUID] AS PrincipalID, '00000000-0000-0000-0000-000000000000' AS ScopeID, | ||
24 | username AS FirstName, | ||
25 | lastname AS LastName, | ||
26 | email as Email, ( | ||
27 | 'AssetServerURI=' + | ||
28 | userAssetURI + ' InventoryServerURI=' + userInventoryURI + ' GatewayURI= HomeURI=') AS ServiceURLs, | ||
29 | created as Created FROM users; | ||
30 | |||
31 | |||
32 | COMMIT | ||
33 | |||
34 | :VERSION 3 | ||
35 | |||
36 | BEGIN TRANSACTION | ||
37 | |||
38 | CREATE UNIQUE INDEX PrincipalID ON UserAccounts(PrincipalID); | ||
39 | CREATE INDEX Email ON UserAccounts(Email); | ||
40 | CREATE INDEX FirstName ON UserAccounts(FirstName); | ||
41 | CREATE INDEX LastName ON UserAccounts(LastName); | ||
42 | CREATE INDEX Name ON UserAccounts(FirstName,LastName); | ||
43 | |||
44 | COMMIT | ||
45 | |||
46 | :VERSION 4 | ||
47 | |||
48 | BEGIN TRANSACTION | ||
49 | |||
50 | ALTER TABLE UserAccounts ADD UserLevel integer NOT NULL DEFAULT 0; | ||
51 | ALTER TABLE UserAccounts ADD UserFlags integer NOT NULL DEFAULT 0; | ||
52 | ALTER TABLE UserAccounts ADD UserTitle varchar(64) NOT NULL DEFAULT ''; | ||
53 | |||
54 | COMMIT | ||
55 | |||
diff --git a/OpenSim/Data/MSSQL/Resources/UserStore.migrations b/OpenSim/Data/MSSQL/Resources/UserStore.migrations deleted file mode 100644 index 050c544..0000000 --- a/OpenSim/Data/MSSQL/Resources/UserStore.migrations +++ /dev/null | |||
@@ -1,421 +0,0 @@ | |||
1 | :VERSION 1 | ||
2 | |||
3 | CREATE TABLE [users] ( | ||
4 | [UUID] [varchar](36) NOT NULL default '', | ||
5 | [username] [varchar](32) NOT NULL, | ||
6 | [lastname] [varchar](32) NOT NULL, | ||
7 | [passwordHash] [varchar](32) NOT NULL, | ||
8 | [passwordSalt] [varchar](32) NOT NULL, | ||
9 | [homeRegion] [bigint] default NULL, | ||
10 | [homeLocationX] [float] default NULL, | ||
11 | [homeLocationY] [float] default NULL, | ||
12 | [homeLocationZ] [float] default NULL, | ||
13 | [homeLookAtX] [float] default NULL, | ||
14 | [homeLookAtY] [float] default NULL, | ||
15 | [homeLookAtZ] [float] default NULL, | ||
16 | [created] [int] NOT NULL, | ||
17 | [lastLogin] [int] NOT NULL, | ||
18 | [userInventoryURI] [varchar](255) default NULL, | ||
19 | [userAssetURI] [varchar](255) default NULL, | ||
20 | [profileCanDoMask] [int] default NULL, | ||
21 | [profileWantDoMask] [int] default NULL, | ||
22 | [profileAboutText] [ntext], | ||
23 | [profileFirstText] [ntext], | ||
24 | [profileImage] [varchar](36) default NULL, | ||
25 | [profileFirstImage] [varchar](36) default NULL, | ||
26 | [webLoginKey] [varchar](36) default NULL, | ||
27 | PRIMARY KEY CLUSTERED | ||
28 | ( | ||
29 | [UUID] ASC | ||
30 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
31 | ) ON [PRIMARY] | ||
32 | |||
33 | |||
34 | CREATE NONCLUSTERED INDEX [usernames] ON [users] | ||
35 | ( | ||
36 | [username] ASC, | ||
37 | [lastname] ASC | ||
38 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
39 | |||
40 | |||
41 | CREATE TABLE [agents] ( | ||
42 | [UUID] [varchar](36) NOT NULL, | ||
43 | [sessionID] [varchar](36) NOT NULL, | ||
44 | [secureSessionID] [varchar](36) NOT NULL, | ||
45 | [agentIP] [varchar](16) NOT NULL, | ||
46 | [agentPort] [int] NOT NULL, | ||
47 | [agentOnline] [tinyint] NOT NULL, | ||
48 | [loginTime] [int] NOT NULL, | ||
49 | [logoutTime] [int] NOT NULL, | ||
50 | [currentRegion] [varchar](36) NOT NULL, | ||
51 | [currentHandle] [bigint] NOT NULL, | ||
52 | [currentPos] [varchar](64) NOT NULL, | ||
53 | PRIMARY KEY CLUSTERED | ||
54 | ( | ||
55 | [UUID] ASC | ||
56 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
57 | ) ON [PRIMARY] | ||
58 | |||
59 | |||
60 | CREATE NONCLUSTERED INDEX [session] ON [agents] | ||
61 | ( | ||
62 | [sessionID] ASC | ||
63 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
64 | |||
65 | CREATE NONCLUSTERED INDEX [ssession] ON [agents] | ||
66 | ( | ||
67 | [secureSessionID] ASC | ||
68 | )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
69 | |||
70 | |||
71 | CREATE TABLE [dbo].[userfriends]( | ||
72 | [ownerID] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL, | ||
73 | [friendID] [varchar](50) COLLATE Latin1_General_CI_AS NOT NULL, | ||
74 | [friendPerms] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, | ||
75 | [datetimestamp] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL | ||
76 | ) ON [PRIMARY] | ||
77 | |||
78 | CREATE TABLE [avatarappearance] ( | ||
79 | [Owner] [varchar](36) NOT NULL, | ||
80 | [Serial] int NOT NULL, | ||
81 | [Visual_Params] [image] NOT NULL, | ||
82 | [Texture] [image] NOT NULL, | ||
83 | [Avatar_Height] float NOT NULL, | ||
84 | [Body_Item] [varchar](36) NOT NULL, | ||
85 | [Body_Asset] [varchar](36) NOT NULL, | ||
86 | [Skin_Item] [varchar](36) NOT NULL, | ||
87 | [Skin_Asset] [varchar](36) NOT NULL, | ||
88 | [Hair_Item] [varchar](36) NOT NULL, | ||
89 | [Hair_Asset] [varchar](36) NOT NULL, | ||
90 | [Eyes_Item] [varchar](36) NOT NULL, | ||
91 | [Eyes_Asset] [varchar](36) NOT NULL, | ||
92 | [Shirt_Item] [varchar](36) NOT NULL, | ||
93 | [Shirt_Asset] [varchar](36) NOT NULL, | ||
94 | [Pants_Item] [varchar](36) NOT NULL, | ||
95 | [Pants_Asset] [varchar](36) NOT NULL, | ||
96 | [Shoes_Item] [varchar](36) NOT NULL, | ||
97 | [Shoes_Asset] [varchar](36) NOT NULL, | ||
98 | [Socks_Item] [varchar](36) NOT NULL, | ||
99 | [Socks_Asset] [varchar](36) NOT NULL, | ||
100 | [Jacket_Item] [varchar](36) NOT NULL, | ||
101 | [Jacket_Asset] [varchar](36) NOT NULL, | ||
102 | [Gloves_Item] [varchar](36) NOT NULL, | ||
103 | [Gloves_Asset] [varchar](36) NOT NULL, | ||
104 | [Undershirt_Item] [varchar](36) NOT NULL, | ||
105 | [Undershirt_Asset] [varchar](36) NOT NULL, | ||
106 | [Underpants_Item] [varchar](36) NOT NULL, | ||
107 | [Underpants_Asset] [varchar](36) NOT NULL, | ||
108 | [Skirt_Item] [varchar](36) NOT NULL, | ||
109 | [Skirt_Asset] [varchar](36) NOT NULL, | ||
110 | |||
111 | PRIMARY KEY CLUSTERED ( | ||
112 | [Owner] | ||
113 | ) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
114 | ) ON [PRIMARY] | ||
115 | |||
116 | :VERSION 2 | ||
117 | |||
118 | BEGIN TRANSACTION | ||
119 | |||
120 | ALTER TABLE users ADD homeRegionID varchar(36) NOT NULL default '00000000-0000-0000-0000-000000000000'; | ||
121 | ALTER TABLE users ADD userFlags int NOT NULL default 0; | ||
122 | ALTER TABLE users ADD godLevel int NOT NULL default 0; | ||
123 | ALTER TABLE users ADD customType varchar(32) not null default ''; | ||
124 | ALTER TABLE users ADD partner varchar(36) not null default '00000000-0000-0000-0000-000000000000'; | ||
125 | |||
126 | COMMIT | ||
127 | |||
128 | |||
129 | :VERSION 3 | ||
130 | |||
131 | BEGIN TRANSACTION | ||
132 | |||
133 | CREATE TABLE [avatarattachments] ( | ||
134 | [UUID] varchar(36) NOT NULL | ||
135 | , [attachpoint] int NOT NULL | ||
136 | , [item] varchar(36) NOT NULL | ||
137 | , [asset] varchar(36) NOT NULL) | ||
138 | |||
139 | CREATE NONCLUSTERED INDEX IX_avatarattachments ON dbo.avatarattachments | ||
140 | ( | ||
141 | UUID | ||
142 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
143 | |||
144 | |||
145 | COMMIT | ||
146 | |||
147 | |||
148 | :VERSION 4 | ||
149 | |||
150 | BEGIN TRANSACTION | ||
151 | |||
152 | CREATE TABLE Tmp_userfriends | ||
153 | ( | ||
154 | ownerID varchar(36) NOT NULL, | ||
155 | friendID varchar(36) NOT NULL, | ||
156 | friendPerms int NOT NULL, | ||
157 | datetimestamp int NOT NULL | ||
158 | ) ON [PRIMARY] | ||
159 | |||
160 | IF EXISTS(SELECT * FROM userfriends) | ||
161 | EXEC('INSERT INTO dbo.Tmp_userfriends (ownerID, friendID, friendPerms, datetimestamp) | ||
162 | SELECT CONVERT(varchar(36), ownerID), CONVERT(varchar(36), friendID), CONVERT(int, friendPerms), CONVERT(int, datetimestamp) FROM dbo.userfriends WITH (HOLDLOCK TABLOCKX)') | ||
163 | |||
164 | DROP TABLE dbo.userfriends | ||
165 | |||
166 | EXECUTE sp_rename N'Tmp_userfriends', N'userfriends', 'OBJECT' | ||
167 | |||
168 | CREATE NONCLUSTERED INDEX IX_userfriends_ownerID ON userfriends | ||
169 | ( | ||
170 | ownerID | ||
171 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
172 | |||
173 | CREATE NONCLUSTERED INDEX IX_userfriends_friendID ON userfriends | ||
174 | ( | ||
175 | friendID | ||
176 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
177 | |||
178 | COMMIT | ||
179 | |||
180 | |||
181 | :VERSION 5 | ||
182 | |||
183 | BEGIN TRANSACTION | ||
184 | |||
185 | ALTER TABLE users add email varchar(250); | ||
186 | |||
187 | COMMIT | ||
188 | |||
189 | |||
190 | :VERSION 6 | ||
191 | |||
192 | BEGIN TRANSACTION | ||
193 | |||
194 | CREATE TABLE dbo.Tmp_users | ||
195 | ( | ||
196 | UUID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
197 | username varchar(32) NOT NULL, | ||
198 | lastname varchar(32) NOT NULL, | ||
199 | passwordHash varchar(32) NOT NULL, | ||
200 | passwordSalt varchar(32) NOT NULL, | ||
201 | homeRegion bigint NULL DEFAULT (NULL), | ||
202 | homeLocationX float(53) NULL DEFAULT (NULL), | ||
203 | homeLocationY float(53) NULL DEFAULT (NULL), | ||
204 | homeLocationZ float(53) NULL DEFAULT (NULL), | ||
205 | homeLookAtX float(53) NULL DEFAULT (NULL), | ||
206 | homeLookAtY float(53) NULL DEFAULT (NULL), | ||
207 | homeLookAtZ float(53) NULL DEFAULT (NULL), | ||
208 | created int NOT NULL, | ||
209 | lastLogin int NOT NULL, | ||
210 | userInventoryURI varchar(255) NULL DEFAULT (NULL), | ||
211 | userAssetURI varchar(255) NULL DEFAULT (NULL), | ||
212 | profileCanDoMask int NULL DEFAULT (NULL), | ||
213 | profileWantDoMask int NULL DEFAULT (NULL), | ||
214 | profileAboutText ntext NULL, | ||
215 | profileFirstText ntext NULL, | ||
216 | profileImage uniqueidentifier NULL DEFAULT (NULL), | ||
217 | profileFirstImage uniqueidentifier NULL DEFAULT (NULL), | ||
218 | webLoginKey uniqueidentifier NULL DEFAULT (NULL), | ||
219 | homeRegionID uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
220 | userFlags int NOT NULL DEFAULT ((0)), | ||
221 | godLevel int NOT NULL DEFAULT ((0)), | ||
222 | customType varchar(32) NOT NULL DEFAULT (''), | ||
223 | partner uniqueidentifier NOT NULL DEFAULT ('00000000-0000-0000-0000-000000000000'), | ||
224 | email varchar(250) NULL | ||
225 | ) ON [PRIMARY] | ||
226 | TEXTIMAGE_ON [PRIMARY] | ||
227 | |||
228 | IF EXISTS(SELECT * FROM dbo.users) | ||
229 | EXEC('INSERT INTO dbo.Tmp_users (UUID, username, lastname, passwordHash, passwordSalt, homeRegion, homeLocationX, homeLocationY, homeLocationZ, homeLookAtX, homeLookAtY, homeLookAtZ, created, lastLogin, userInventoryURI, userAssetURI, profileCanDoMask, profileWantDoMask, profileAboutText, profileFirstText, profileImage, profileFirstImage, webLoginKey, homeRegionID, userFlags, godLevel, customType, partner, email) | ||
230 | SELECT CONVERT(uniqueidentifier, UUID), username, lastname, passwordHash, passwordSalt, homeRegion, homeLocationX, homeLocationY, homeLocationZ, homeLookAtX, homeLookAtY, homeLookAtZ, created, lastLogin, userInventoryURI, userAssetURI, profileCanDoMask, profileWantDoMask, profileAboutText, profileFirstText, CONVERT(uniqueidentifier, profileImage), CONVERT(uniqueidentifier, profileFirstImage), CONVERT(uniqueidentifier, webLoginKey), CONVERT(uniqueidentifier, homeRegionID), userFlags, godLevel, customType, CONVERT(uniqueidentifier, partner), email FROM dbo.users WITH (HOLDLOCK TABLOCKX)') | ||
231 | |||
232 | DROP TABLE dbo.users | ||
233 | |||
234 | EXECUTE sp_rename N'dbo.Tmp_users', N'users', 'OBJECT' | ||
235 | |||
236 | ALTER TABLE dbo.users ADD CONSTRAINT | ||
237 | PK__users__65A475E737A5467C PRIMARY KEY CLUSTERED | ||
238 | ( | ||
239 | UUID | ||
240 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
241 | |||
242 | CREATE NONCLUSTERED INDEX usernames ON dbo.users | ||
243 | ( | ||
244 | username, | ||
245 | lastname | ||
246 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
247 | |||
248 | COMMIT | ||
249 | |||
250 | |||
251 | :VERSION 7 | ||
252 | |||
253 | BEGIN TRANSACTION | ||
254 | |||
255 | CREATE TABLE dbo.Tmp_agents | ||
256 | ( | ||
257 | UUID uniqueidentifier NOT NULL, | ||
258 | sessionID uniqueidentifier NOT NULL, | ||
259 | secureSessionID uniqueidentifier NOT NULL, | ||
260 | agentIP varchar(16) NOT NULL, | ||
261 | agentPort int NOT NULL, | ||
262 | agentOnline tinyint NOT NULL, | ||
263 | loginTime int NOT NULL, | ||
264 | logoutTime int NOT NULL, | ||
265 | currentRegion uniqueidentifier NOT NULL, | ||
266 | currentHandle bigint NOT NULL, | ||
267 | currentPos varchar(64) NOT NULL | ||
268 | ) ON [PRIMARY] | ||
269 | |||
270 | IF EXISTS(SELECT * FROM dbo.agents) | ||
271 | EXEC('INSERT INTO dbo.Tmp_agents (UUID, sessionID, secureSessionID, agentIP, agentPort, agentOnline, loginTime, logoutTime, currentRegion, currentHandle, currentPos) | ||
272 | SELECT CONVERT(uniqueidentifier, UUID), CONVERT(uniqueidentifier, sessionID), CONVERT(uniqueidentifier, secureSessionID), agentIP, agentPort, agentOnline, loginTime, logoutTime, CONVERT(uniqueidentifier, currentRegion), currentHandle, currentPos FROM dbo.agents WITH (HOLDLOCK TABLOCKX)') | ||
273 | |||
274 | DROP TABLE dbo.agents | ||
275 | |||
276 | EXECUTE sp_rename N'dbo.Tmp_agents', N'agents', 'OBJECT' | ||
277 | |||
278 | ALTER TABLE dbo.agents ADD CONSTRAINT | ||
279 | PK__agents__65A475E749C3F6B7 PRIMARY KEY CLUSTERED | ||
280 | ( | ||
281 | UUID | ||
282 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
283 | |||
284 | CREATE NONCLUSTERED INDEX session ON dbo.agents | ||
285 | ( | ||
286 | sessionID | ||
287 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
288 | |||
289 | CREATE NONCLUSTERED INDEX ssession ON dbo.agents | ||
290 | ( | ||
291 | secureSessionID | ||
292 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
293 | |||
294 | COMMIT | ||
295 | |||
296 | |||
297 | :VERSION 8 | ||
298 | |||
299 | BEGIN TRANSACTION | ||
300 | |||
301 | CREATE TABLE dbo.Tmp_userfriends | ||
302 | ( | ||
303 | ownerID uniqueidentifier NOT NULL, | ||
304 | friendID uniqueidentifier NOT NULL, | ||
305 | friendPerms int NOT NULL, | ||
306 | datetimestamp int NOT NULL | ||
307 | ) ON [PRIMARY] | ||
308 | |||
309 | IF EXISTS(SELECT * FROM dbo.userfriends) | ||
310 | EXEC('INSERT INTO dbo.Tmp_userfriends (ownerID, friendID, friendPerms, datetimestamp) | ||
311 | SELECT CONVERT(uniqueidentifier, ownerID), CONVERT(uniqueidentifier, friendID), friendPerms, datetimestamp FROM dbo.userfriends WITH (HOLDLOCK TABLOCKX)') | ||
312 | |||
313 | DROP TABLE dbo.userfriends | ||
314 | |||
315 | EXECUTE sp_rename N'dbo.Tmp_userfriends', N'userfriends', 'OBJECT' | ||
316 | |||
317 | CREATE NONCLUSTERED INDEX IX_userfriends_ownerID ON dbo.userfriends | ||
318 | ( | ||
319 | ownerID | ||
320 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
321 | |||
322 | CREATE NONCLUSTERED INDEX IX_userfriends_friendID ON dbo.userfriends | ||
323 | ( | ||
324 | friendID | ||
325 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
326 | |||
327 | COMMIT | ||
328 | |||
329 | |||
330 | :VERSION 9 | ||
331 | |||
332 | BEGIN TRANSACTION | ||
333 | |||
334 | CREATE TABLE dbo.Tmp_avatarappearance | ||
335 | ( | ||
336 | Owner uniqueidentifier NOT NULL, | ||
337 | Serial int NOT NULL, | ||
338 | Visual_Params image NOT NULL, | ||
339 | Texture image NOT NULL, | ||
340 | Avatar_Height float(53) NOT NULL, | ||
341 | Body_Item uniqueidentifier NOT NULL, | ||
342 | Body_Asset uniqueidentifier NOT NULL, | ||
343 | Skin_Item uniqueidentifier NOT NULL, | ||
344 | Skin_Asset uniqueidentifier NOT NULL, | ||
345 | Hair_Item uniqueidentifier NOT NULL, | ||
346 | Hair_Asset uniqueidentifier NOT NULL, | ||
347 | Eyes_Item uniqueidentifier NOT NULL, | ||
348 | Eyes_Asset uniqueidentifier NOT NULL, | ||
349 | Shirt_Item uniqueidentifier NOT NULL, | ||
350 | Shirt_Asset uniqueidentifier NOT NULL, | ||
351 | Pants_Item uniqueidentifier NOT NULL, | ||
352 | Pants_Asset uniqueidentifier NOT NULL, | ||
353 | Shoes_Item uniqueidentifier NOT NULL, | ||
354 | Shoes_Asset uniqueidentifier NOT NULL, | ||
355 | Socks_Item uniqueidentifier NOT NULL, | ||
356 | Socks_Asset uniqueidentifier NOT NULL, | ||
357 | Jacket_Item uniqueidentifier NOT NULL, | ||
358 | Jacket_Asset uniqueidentifier NOT NULL, | ||
359 | Gloves_Item uniqueidentifier NOT NULL, | ||
360 | Gloves_Asset uniqueidentifier NOT NULL, | ||
361 | Undershirt_Item uniqueidentifier NOT NULL, | ||
362 | Undershirt_Asset uniqueidentifier NOT NULL, | ||
363 | Underpants_Item uniqueidentifier NOT NULL, | ||
364 | Underpants_Asset uniqueidentifier NOT NULL, | ||
365 | Skirt_Item uniqueidentifier NOT NULL, | ||
366 | Skirt_Asset uniqueidentifier NOT NULL | ||
367 | ) ON [PRIMARY] | ||
368 | TEXTIMAGE_ON [PRIMARY] | ||
369 | |||
370 | IF EXISTS(SELECT * FROM dbo.avatarappearance) | ||
371 | EXEC('INSERT INTO dbo.Tmp_avatarappearance (Owner, Serial, Visual_Params, Texture, Avatar_Height, Body_Item, Body_Asset, Skin_Item, Skin_Asset, Hair_Item, Hair_Asset, Eyes_Item, Eyes_Asset, Shirt_Item, Shirt_Asset, Pants_Item, Pants_Asset, Shoes_Item, Shoes_Asset, Socks_Item, Socks_Asset, Jacket_Item, Jacket_Asset, Gloves_Item, Gloves_Asset, Undershirt_Item, Undershirt_Asset, Underpants_Item, Underpants_Asset, Skirt_Item, Skirt_Asset) | ||
372 | SELECT CONVERT(uniqueidentifier, Owner), Serial, Visual_Params, Texture, Avatar_Height, CONVERT(uniqueidentifier, Body_Item), CONVERT(uniqueidentifier, Body_Asset), CONVERT(uniqueidentifier, Skin_Item), CONVERT(uniqueidentifier, Skin_Asset), CONVERT(uniqueidentifier, Hair_Item), CONVERT(uniqueidentifier, Hair_Asset), CONVERT(uniqueidentifier, Eyes_Item), CONVERT(uniqueidentifier, Eyes_Asset), CONVERT(uniqueidentifier, Shirt_Item), CONVERT(uniqueidentifier, Shirt_Asset), CONVERT(uniqueidentifier, Pants_Item), CONVERT(uniqueidentifier, Pants_Asset), CONVERT(uniqueidentifier, Shoes_Item), CONVERT(uniqueidentifier, Shoes_Asset), CONVERT(uniqueidentifier, Socks_Item), CONVERT(uniqueidentifier, Socks_Asset), CONVERT(uniqueidentifier, Jacket_Item), CONVERT(uniqueidentifier, Jacket_Asset), CONVERT(uniqueidentifier, Gloves_Item), CONVERT(uniqueidentifier, Gloves_Asset), CONVERT(uniqueidentifier, Undershirt_Item), CONVERT(uniqueidentifier, Undershirt_Asset), CONVERT(uniqueidentifier, Underpants_Item), CONVERT(uniqueidentifier, Underpants_Asset), CONVERT(uniqueidentifier, Skirt_Item), CONVERT(uniqueidentifier, Skirt_Asset) FROM dbo.avatarappearance WITH (HOLDLOCK TABLOCKX)') | ||
373 | |||
374 | DROP TABLE dbo.avatarappearance | ||
375 | |||
376 | EXECUTE sp_rename N'dbo.Tmp_avatarappearance', N'avatarappearance', 'OBJECT' | ||
377 | |||
378 | ALTER TABLE dbo.avatarappearance ADD CONSTRAINT | ||
379 | PK__avatarap__7DD115CC4E88ABD4 PRIMARY KEY CLUSTERED | ||
380 | ( | ||
381 | Owner | ||
382 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
383 | |||
384 | COMMIT | ||
385 | |||
386 | |||
387 | :VERSION 10 | ||
388 | |||
389 | BEGIN TRANSACTION | ||
390 | |||
391 | CREATE TABLE dbo.Tmp_avatarattachments | ||
392 | ( | ||
393 | UUID uniqueidentifier NOT NULL, | ||
394 | attachpoint int NOT NULL, | ||
395 | item uniqueidentifier NOT NULL, | ||
396 | asset uniqueidentifier NOT NULL | ||
397 | ) ON [PRIMARY] | ||
398 | |||
399 | IF EXISTS(SELECT * FROM dbo.avatarattachments) | ||
400 | EXEC('INSERT INTO dbo.Tmp_avatarattachments (UUID, attachpoint, item, asset) | ||
401 | SELECT CONVERT(uniqueidentifier, UUID), attachpoint, CONVERT(uniqueidentifier, item), CONVERT(uniqueidentifier, asset) FROM dbo.avatarattachments WITH (HOLDLOCK TABLOCKX)') | ||
402 | |||
403 | DROP TABLE dbo.avatarattachments | ||
404 | |||
405 | EXECUTE sp_rename N'dbo.Tmp_avatarattachments', N'avatarattachments', 'OBJECT' | ||
406 | |||
407 | CREATE NONCLUSTERED INDEX IX_avatarattachments ON dbo.avatarattachments | ||
408 | ( | ||
409 | UUID | ||
410 | ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] | ||
411 | |||
412 | COMMIT | ||
413 | |||
414 | |||
415 | :VERSION 11 | ||
416 | |||
417 | BEGIN TRANSACTION | ||
418 | |||
419 | ALTER TABLE users ADD scopeID uniqueidentifier not null default '00000000-0000-0000-0000-000000000000' | ||
420 | |||
421 | COMMIT | ||
diff --git a/OpenSim/Data/MSSQL/MSSQLAssetData.cs b/OpenSim/Data/PGSQL/PGSQLAssetData.cs index c7488d8..5d8b0a2 100644 --- a/OpenSim/Data/MSSQL/MSSQLAssetData.cs +++ b/OpenSim/Data/PGSQL/PGSQLAssetData.cs | |||
@@ -27,19 +27,20 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Data; | 29 | using System.Data; |
30 | using System.Data.SqlClient; | ||
31 | using System.Reflection; | 30 | using System.Reflection; |
32 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
33 | using OpenMetaverse; | 32 | using OpenMetaverse; |
34 | using log4net; | 33 | using log4net; |
35 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using Npgsql; | ||
36 | using NpgsqlTypes; | ||
36 | 37 | ||
37 | namespace OpenSim.Data.MSSQL | 38 | namespace OpenSim.Data.PGSQL |
38 | { | 39 | { |
39 | /// <summary> | 40 | /// <summary> |
40 | /// A MSSQL Interface for the Asset server | 41 | /// A PGSQL Interface for the Asset server |
41 | /// </summary> | 42 | /// </summary> |
42 | public class MSSQLAssetData : AssetDataBase | 43 | public class PGSQLAssetData : AssetDataBase |
43 | { | 44 | { |
44 | private const string _migrationStore = "AssetStore"; | 45 | private const string _migrationStore = "AssetStore"; |
45 | 46 | ||
@@ -48,9 +49,14 @@ namespace OpenSim.Data.MSSQL | |||
48 | /// <summary> | 49 | /// <summary> |
49 | /// Database manager | 50 | /// Database manager |
50 | /// </summary> | 51 | /// </summary> |
51 | private MSSQLManager m_database; | 52 | private PGSQLManager m_database; |
52 | private string m_connectionString; | 53 | private string m_connectionString; |
53 | 54 | ||
55 | protected virtual Assembly Assembly | ||
56 | { | ||
57 | get { return GetType().Assembly; } | ||
58 | } | ||
59 | |||
54 | #region IPlugin Members | 60 | #region IPlugin Members |
55 | 61 | ||
56 | override public void Dispose() { } | 62 | override public void Dispose() { } |
@@ -61,7 +67,7 @@ namespace OpenSim.Data.MSSQL | |||
61 | // [Obsolete("Cannot be default-initialized!")] | 67 | // [Obsolete("Cannot be default-initialized!")] |
62 | override public void Initialise() | 68 | override public void Initialise() |
63 | { | 69 | { |
64 | m_log.Info("[MSSQLAssetData]: " + Name + " cannot be default-initialized!"); | 70 | m_log.Info("[PGSQLAssetData]: " + Name + " cannot be default-initialized!"); |
65 | throw new PluginNotInitialisedException(Name); | 71 | throw new PluginNotInitialisedException(Name); |
66 | } | 72 | } |
67 | 73 | ||
@@ -76,7 +82,7 @@ namespace OpenSim.Data.MSSQL | |||
76 | { | 82 | { |
77 | m_ticksToEpoch = new System.DateTime(1970, 1, 1).Ticks; | 83 | m_ticksToEpoch = new System.DateTime(1970, 1, 1).Ticks; |
78 | 84 | ||
79 | m_database = new MSSQLManager(connectionString); | 85 | m_database = new PGSQLManager(connectionString); |
80 | m_connectionString = connectionString; | 86 | m_connectionString = connectionString; |
81 | 87 | ||
82 | //New migration to check for DB changes | 88 | //New migration to check for DB changes |
@@ -96,7 +102,7 @@ namespace OpenSim.Data.MSSQL | |||
96 | /// </summary> | 102 | /// </summary> |
97 | override public string Name | 103 | override public string Name |
98 | { | 104 | { |
99 | get { return "MSSQL Asset storage engine"; } | 105 | get { return "PGSQL Asset storage engine"; } |
100 | } | 106 | } |
101 | 107 | ||
102 | #endregion | 108 | #endregion |
@@ -110,13 +116,13 @@ namespace OpenSim.Data.MSSQL | |||
110 | /// <returns></returns> | 116 | /// <returns></returns> |
111 | override public AssetBase GetAsset(UUID assetID) | 117 | override public AssetBase GetAsset(UUID assetID) |
112 | { | 118 | { |
113 | string sql = "SELECT * FROM assets WHERE id = @id"; | 119 | string sql = "SELECT * FROM assets WHERE id = :id"; |
114 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 120 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
115 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 121 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
116 | { | 122 | { |
117 | cmd.Parameters.Add(m_database.CreateParameter("id", assetID)); | 123 | cmd.Parameters.Add(m_database.CreateParameter("id", assetID)); |
118 | conn.Open(); | 124 | conn.Open(); |
119 | using (SqlDataReader reader = cmd.ExecuteReader()) | 125 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
120 | { | 126 | { |
121 | if (reader.Read()) | 127 | if (reader.Read()) |
122 | { | 128 | { |
@@ -147,34 +153,38 @@ namespace OpenSim.Data.MSSQL | |||
147 | { | 153 | { |
148 | 154 | ||
149 | string sql = | 155 | string sql = |
150 | @"IF EXISTS(SELECT * FROM assets WHERE id=@id) | 156 | @"UPDATE assets set name = :name, description = :description, " + "\"assetType\" " + @" = :assetType, |
151 | UPDATE assets set name = @name, description = @description, assetType = @assetType, | 157 | local = :local, temporary = :temporary, creatorid = :creatorid, data = :data |
152 | local = @local, temporary = @temporary, creatorid = @creatorid, data = @data | 158 | WHERE id=:id; |
153 | WHERE id=@id | 159 | |
154 | ELSE | 160 | INSERT INTO assets |
155 | INSERT INTO assets | 161 | (id, name, description, " + "\"assetType\" " + @", local, |
156 | ([id], [name], [description], [assetType], [local], | 162 | temporary, create_time, access_time, creatorid, asset_flags, data) |
157 | [temporary], [create_time], [access_time], [creatorid], [asset_flags], [data]) | 163 | Select :id, :name, :description, :assetType, :local, |
158 | VALUES | 164 | :temporary, :create_time, :access_time, :creatorid, :asset_flags, :data |
159 | (@id, @name, @description, @assetType, @local, | 165 | Where not EXISTS(SELECT * FROM assets WHERE id=:id) |
160 | @temporary, @create_time, @access_time, @creatorid, @asset_flags, @data)"; | 166 | "; |
161 | 167 | ||
162 | string assetName = asset.Name; | 168 | string assetName = asset.Name; |
163 | if (asset.Name.Length > 64) | 169 | if (asset.Name.Length > AssetBase.MAX_ASSET_NAME) |
164 | { | 170 | { |
165 | assetName = asset.Name.Substring(0, 64); | 171 | assetName = asset.Name.Substring(0, AssetBase.MAX_ASSET_NAME); |
166 | m_log.Warn("[ASSET DB]: Name field truncated from " + asset.Name.Length + " to " + assetName.Length + " characters on add"); | 172 | m_log.WarnFormat( |
173 | "[ASSET DB]: Name '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
174 | asset.Name, asset.ID, asset.Name.Length, assetName.Length); | ||
167 | } | 175 | } |
168 | 176 | ||
169 | string assetDescription = asset.Description; | 177 | string assetDescription = asset.Description; |
170 | if (asset.Description.Length > 64) | 178 | if (asset.Description.Length > AssetBase.MAX_ASSET_DESC) |
171 | { | 179 | { |
172 | assetDescription = asset.Description.Substring(0, 64); | 180 | assetDescription = asset.Description.Substring(0, AssetBase.MAX_ASSET_DESC); |
173 | m_log.Warn("[ASSET DB]: Description field truncated from " + asset.Description.Length + " to " + assetDescription.Length + " characters on add"); | 181 | m_log.WarnFormat( |
182 | "[ASSET DB]: Description '{0}' for asset {1} truncated from {2} to {3} characters on add", | ||
183 | asset.Description, asset.ID, asset.Description.Length, assetDescription.Length); | ||
174 | } | 184 | } |
175 | 185 | ||
176 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 186 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
177 | using (SqlCommand command = new SqlCommand(sql, conn)) | 187 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
178 | { | 188 | { |
179 | int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); | 189 | int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); |
180 | command.Parameters.Add(m_database.CreateParameter("id", asset.FullID)); | 190 | command.Parameters.Add(m_database.CreateParameter("id", asset.FullID)); |
@@ -195,7 +205,7 @@ namespace OpenSim.Data.MSSQL | |||
195 | } | 205 | } |
196 | catch(Exception e) | 206 | catch(Exception e) |
197 | { | 207 | { |
198 | m_log.Error("[ASSET DB]: Error storing item :" + e.Message); | 208 | m_log.Error("[ASSET DB]: Error storing item :" + e.Message + " sql "+sql); |
199 | } | 209 | } |
200 | } | 210 | } |
201 | } | 211 | } |
@@ -204,11 +214,11 @@ namespace OpenSim.Data.MSSQL | |||
204 | // Commented out since currently unused - this probably should be called in GetAsset() | 214 | // Commented out since currently unused - this probably should be called in GetAsset() |
205 | // private void UpdateAccessTime(AssetBase asset) | 215 | // private void UpdateAccessTime(AssetBase asset) |
206 | // { | 216 | // { |
207 | // using (AutoClosingSqlCommand cmd = m_database.Query("UPDATE assets SET access_time = @access_time WHERE id=@id")) | 217 | // using (AutoClosingSqlCommand cmd = m_database.Query("UPDATE assets SET access_time = :access_time WHERE id=:id")) |
208 | // { | 218 | // { |
209 | // int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); | 219 | // int now = (int)((System.DateTime.Now.Ticks - m_ticksToEpoch) / 10000000); |
210 | // cmd.Parameters.AddWithValue("@id", asset.FullID.ToString()); | 220 | // cmd.Parameters.AddWithValue(":id", asset.FullID.ToString()); |
211 | // cmd.Parameters.AddWithValue("@access_time", now); | 221 | // cmd.Parameters.AddWithValue(":access_time", now); |
212 | // try | 222 | // try |
213 | // { | 223 | // { |
214 | // cmd.ExecuteNonQuery(); | 224 | // cmd.ExecuteNonQuery(); |
@@ -221,17 +231,38 @@ namespace OpenSim.Data.MSSQL | |||
221 | // } | 231 | // } |
222 | 232 | ||
223 | /// <summary> | 233 | /// <summary> |
224 | /// Check if asset exist in m_database | 234 | /// Check if the assets exist in the database. |
225 | /// </summary> | 235 | /// </summary> |
226 | /// <param name="uuid"></param> | 236 | /// <param name="uuids">The assets' IDs</param> |
227 | /// <returns>true if exist.</returns> | 237 | /// <returns>For each asset: true if it exists, false otherwise</returns> |
228 | override public bool ExistsAsset(UUID uuid) | 238 | public override bool[] AssetsExist(UUID[] uuids) |
229 | { | 239 | { |
230 | if (GetAsset(uuid) != null) | 240 | if (uuids.Length == 0) |
241 | return new bool[0]; | ||
242 | |||
243 | HashSet<UUID> exist = new HashSet<UUID>(); | ||
244 | |||
245 | string ids = "'" + string.Join("','", uuids) + "'"; | ||
246 | string sql = string.Format("SELECT id FROM assets WHERE id IN ({0})", ids); | ||
247 | |||
248 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | ||
249 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
231 | { | 250 | { |
232 | return true; | 251 | conn.Open(); |
252 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) | ||
253 | { | ||
254 | while (reader.Read()) | ||
255 | { | ||
256 | UUID id = DBGuid.FromDB(reader["id"]); | ||
257 | exist.Add(id); | ||
258 | } | ||
259 | } | ||
233 | } | 260 | } |
234 | return false; | 261 | |
262 | bool[] results = new bool[uuids.Length]; | ||
263 | for (int i = 0; i < uuids.Length; i++) | ||
264 | results[i] = exist.Contains(uuids[i]); | ||
265 | return results; | ||
235 | } | 266 | } |
236 | 267 | ||
237 | /// <summary> | 268 | /// <summary> |
@@ -245,23 +276,19 @@ namespace OpenSim.Data.MSSQL | |||
245 | public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count) | 276 | public override List<AssetMetadata> FetchAssetMetadataSet(int start, int count) |
246 | { | 277 | { |
247 | List<AssetMetadata> retList = new List<AssetMetadata>(count); | 278 | List<AssetMetadata> retList = new List<AssetMetadata>(count); |
248 | string sql = @"WITH OrderedAssets AS | 279 | string sql = @" SELECT id, name, description, " + "\"assetType\"" + @", temporary, creatorid |
249 | ( | 280 | FROM assets |
250 | SELECT id, name, description, assetType, temporary, creatorid, | 281 | order by id |
251 | RowNumber = ROW_NUMBER() OVER (ORDER BY id) | 282 | limit :stop |
252 | FROM assets | 283 | offset :start;"; |
253 | ) | ||
254 | SELECT * | ||
255 | FROM OrderedAssets | ||
256 | WHERE RowNumber BETWEEN @start AND @stop;"; | ||
257 | 284 | ||
258 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 285 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
259 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 286 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
260 | { | 287 | { |
261 | cmd.Parameters.Add(m_database.CreateParameter("start", start)); | 288 | cmd.Parameters.Add(m_database.CreateParameter("start", start)); |
262 | cmd.Parameters.Add(m_database.CreateParameter("stop", start + count - 1)); | 289 | cmd.Parameters.Add(m_database.CreateParameter("stop", start + count - 1)); |
263 | conn.Open(); | 290 | conn.Open(); |
264 | using (SqlDataReader reader = cmd.ExecuteReader()) | 291 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
265 | { | 292 | { |
266 | while (reader.Read()) | 293 | while (reader.Read()) |
267 | { | 294 | { |
diff --git a/OpenSim/Data/MSSQL/MSSQLAuthenticationData.cs b/OpenSim/Data/PGSQL/PGSQLAuthenticationData.cs index 1ae78c4..d174112 100644 --- a/OpenSim/Data/MSSQL/MSSQLAuthenticationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLAuthenticationData.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -28,32 +28,38 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections; | 29 | using System.Collections; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Data; | ||
32 | using OpenMetaverse; | 31 | using OpenMetaverse; |
33 | using OpenSim.Framework; | 32 | using OpenSim.Framework; |
34 | using System.Data.SqlClient; | ||
35 | using System.Reflection; | 33 | using System.Reflection; |
36 | using System.Text; | 34 | using System.Text; |
35 | using System.Data; | ||
36 | using Npgsql; | ||
37 | using NpgsqlTypes; | ||
37 | 38 | ||
38 | namespace OpenSim.Data.MSSQL | 39 | namespace OpenSim.Data.PGSQL |
39 | { | 40 | { |
40 | public class MSSQLAuthenticationData : IAuthenticationData | 41 | public class PGSQLAuthenticationData : IAuthenticationData |
41 | { | 42 | { |
42 | private string m_Realm; | 43 | private string m_Realm; |
43 | private List<string> m_ColumnNames = null; | 44 | private List<string> m_ColumnNames = null; |
44 | private int m_LastExpire = 0; | 45 | private int m_LastExpire = 0; |
45 | private string m_ConnectionString; | 46 | private string m_ConnectionString; |
46 | private MSSQLManager m_database; | 47 | private PGSQLManager m_database; |
48 | |||
49 | protected virtual Assembly Assembly | ||
50 | { | ||
51 | get { return GetType().Assembly; } | ||
52 | } | ||
47 | 53 | ||
48 | public MSSQLAuthenticationData(string connectionString, string realm) | 54 | public PGSQLAuthenticationData(string connectionString, string realm) |
49 | { | 55 | { |
50 | m_Realm = realm; | 56 | m_Realm = realm; |
51 | m_ConnectionString = connectionString; | 57 | m_ConnectionString = connectionString; |
52 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 58 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
53 | { | 59 | { |
54 | conn.Open(); | 60 | conn.Open(); |
55 | Migration m = new Migration(conn, GetType().Assembly, "AuthStore"); | 61 | Migration m = new Migration(conn, GetType().Assembly, "AuthStore"); |
56 | m_database = new MSSQLManager(m_ConnectionString); | 62 | m_database = new PGSQLManager(m_ConnectionString); |
57 | m.Update(); | 63 | m.Update(); |
58 | } | 64 | } |
59 | } | 65 | } |
@@ -63,14 +69,14 @@ namespace OpenSim.Data.MSSQL | |||
63 | AuthenticationData ret = new AuthenticationData(); | 69 | AuthenticationData ret = new AuthenticationData(); |
64 | ret.Data = new Dictionary<string, object>(); | 70 | ret.Data = new Dictionary<string, object>(); |
65 | 71 | ||
66 | string sql = string.Format("select * from {0} where UUID = @principalID", m_Realm); | 72 | string sql = string.Format("select * from {0} where uuid = :principalID", m_Realm); |
67 | 73 | ||
68 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 74 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
69 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 75 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
70 | { | 76 | { |
71 | cmd.Parameters.Add(m_database.CreateParameter("@principalID", principalID)); | 77 | cmd.Parameters.Add(m_database.CreateParameter("principalID", principalID)); |
72 | conn.Open(); | 78 | conn.Open(); |
73 | using (SqlDataReader result = cmd.ExecuteReader()) | 79 | using (NpgsqlDataReader result = cmd.ExecuteReader()) |
74 | { | 80 | { |
75 | if (result.Read()) | 81 | if (result.Read()) |
76 | { | 82 | { |
@@ -87,7 +93,7 @@ namespace OpenSim.Data.MSSQL | |||
87 | 93 | ||
88 | foreach (string s in m_ColumnNames) | 94 | foreach (string s in m_ColumnNames) |
89 | { | 95 | { |
90 | if (s == "UUID") | 96 | if (s == "UUID"||s == "uuid") |
91 | continue; | 97 | continue; |
92 | 98 | ||
93 | ret.Data[s] = result[s].ToString(); | 99 | ret.Data[s] = result[s].ToString(); |
@@ -103,12 +109,31 @@ namespace OpenSim.Data.MSSQL | |||
103 | { | 109 | { |
104 | if (data.Data.ContainsKey("UUID")) | 110 | if (data.Data.ContainsKey("UUID")) |
105 | data.Data.Remove("UUID"); | 111 | data.Data.Remove("UUID"); |
112 | if (data.Data.ContainsKey("uuid")) | ||
113 | data.Data.Remove("uuid"); | ||
114 | |||
115 | /* | ||
116 | Dictionary<string, object> oAuth = new Dictionary<string, object>(); | ||
106 | 117 | ||
118 | foreach (KeyValuePair<string, object> oDado in data.Data) | ||
119 | { | ||
120 | if (oDado.Key != oDado.Key.ToLower()) | ||
121 | { | ||
122 | oAuth.Add(oDado.Key.ToLower(), oDado.Value); | ||
123 | } | ||
124 | } | ||
125 | foreach (KeyValuePair<string, object> oDado in data.Data) | ||
126 | { | ||
127 | if (!oAuth.ContainsKey(oDado.Key.ToLower())) { | ||
128 | oAuth.Add(oDado.Key.ToLower(), oDado.Value); | ||
129 | } | ||
130 | } | ||
131 | */ | ||
107 | string[] fields = new List<string>(data.Data.Keys).ToArray(); | 132 | string[] fields = new List<string>(data.Data.Keys).ToArray(); |
108 | StringBuilder updateBuilder = new StringBuilder(); | 133 | StringBuilder updateBuilder = new StringBuilder(); |
109 | 134 | ||
110 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 135 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
111 | using (SqlCommand cmd = new SqlCommand()) | 136 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
112 | { | 137 | { |
113 | updateBuilder.AppendFormat("update {0} set ", m_Realm); | 138 | updateBuilder.AppendFormat("update {0} set ", m_Realm); |
114 | 139 | ||
@@ -117,27 +142,28 @@ namespace OpenSim.Data.MSSQL | |||
117 | { | 142 | { |
118 | if (!first) | 143 | if (!first) |
119 | updateBuilder.Append(", "); | 144 | updateBuilder.Append(", "); |
120 | updateBuilder.AppendFormat("{0} = @{0}",field); | 145 | updateBuilder.AppendFormat("\"{0}\" = :{0}",field); |
121 | 146 | ||
122 | first = false; | 147 | first = false; |
123 | cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); | 148 | |
149 | cmd.Parameters.Add(m_database.CreateParameter("" + field, data.Data[field])); | ||
124 | } | 150 | } |
125 | 151 | ||
126 | updateBuilder.Append(" where UUID = @principalID"); | 152 | updateBuilder.Append(" where uuid = :principalID"); |
127 | 153 | ||
128 | cmd.CommandText = updateBuilder.ToString(); | 154 | cmd.CommandText = updateBuilder.ToString(); |
129 | cmd.Connection = conn; | 155 | cmd.Connection = conn; |
130 | cmd.Parameters.Add(m_database.CreateParameter("@principalID", data.PrincipalID)); | 156 | cmd.Parameters.Add(m_database.CreateParameter("principalID", data.PrincipalID)); |
131 | 157 | ||
132 | conn.Open(); | 158 | conn.Open(); |
133 | if (cmd.ExecuteNonQuery() < 1) | 159 | if (cmd.ExecuteNonQuery() < 1) |
134 | { | 160 | { |
135 | StringBuilder insertBuilder = new StringBuilder(); | 161 | StringBuilder insertBuilder = new StringBuilder(); |
136 | 162 | ||
137 | insertBuilder.AppendFormat("insert into {0} (UUID, ", m_Realm); | 163 | insertBuilder.AppendFormat("insert into {0} (uuid, \"", m_Realm); |
138 | insertBuilder.Append(String.Join(", ", fields)); | 164 | insertBuilder.Append(String.Join("\", \"", fields)); |
139 | insertBuilder.Append(") values (@principalID, @"); | 165 | insertBuilder.Append("\") values (:principalID, :"); |
140 | insertBuilder.Append(String.Join(", @", fields)); | 166 | insertBuilder.Append(String.Join(", :", fields)); |
141 | insertBuilder.Append(")"); | 167 | insertBuilder.Append(")"); |
142 | 168 | ||
143 | cmd.CommandText = insertBuilder.ToString(); | 169 | cmd.CommandText = insertBuilder.ToString(); |
@@ -153,11 +179,11 @@ namespace OpenSim.Data.MSSQL | |||
153 | 179 | ||
154 | public bool SetDataItem(UUID principalID, string item, string value) | 180 | public bool SetDataItem(UUID principalID, string item, string value) |
155 | { | 181 | { |
156 | string sql = string.Format("update {0} set {1} = @{1} where UUID = @UUID", m_Realm, item); | 182 | string sql = string.Format("update {0} set {1} = :{1} where uuid = :UUID", m_Realm, item); |
157 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 183 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
158 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 184 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
159 | { | 185 | { |
160 | cmd.Parameters.Add(m_database.CreateParameter("@" + item, value)); | 186 | cmd.Parameters.Add(m_database.CreateParameter("" + item, value)); |
161 | conn.Open(); | 187 | conn.Open(); |
162 | if (cmd.ExecuteNonQuery() > 0) | 188 | if (cmd.ExecuteNonQuery() > 0) |
163 | return true; | 189 | return true; |
@@ -170,13 +196,13 @@ namespace OpenSim.Data.MSSQL | |||
170 | if (System.Environment.TickCount - m_LastExpire > 30000) | 196 | if (System.Environment.TickCount - m_LastExpire > 30000) |
171 | DoExpire(); | 197 | DoExpire(); |
172 | 198 | ||
173 | string sql = "insert into tokens (UUID, token, validity) values (@principalID, @token, @lifetime)"; | 199 | string sql = "insert into tokens (uuid, token, validity) values (:principalID, :token, :lifetime)"; |
174 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 200 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
175 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 201 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
176 | { | 202 | { |
177 | cmd.Parameters.Add(m_database.CreateParameter("@principalID", principalID)); | 203 | cmd.Parameters.Add(m_database.CreateParameter("principalID", principalID)); |
178 | cmd.Parameters.Add(m_database.CreateParameter("@token", token)); | 204 | cmd.Parameters.Add(m_database.CreateParameter("token", token)); |
179 | cmd.Parameters.Add(m_database.CreateParameter("@lifetime", DateTime.Now.AddMinutes(lifetime))); | 205 | cmd.Parameters.Add(m_database.CreateParameter("lifetime", DateTime.Now.AddMinutes(lifetime))); |
180 | conn.Open(); | 206 | conn.Open(); |
181 | 207 | ||
182 | if (cmd.ExecuteNonQuery() > 0) | 208 | if (cmd.ExecuteNonQuery() > 0) |
@@ -193,13 +219,14 @@ namespace OpenSim.Data.MSSQL | |||
193 | DoExpire(); | 219 | DoExpire(); |
194 | 220 | ||
195 | DateTime validDate = DateTime.Now.AddMinutes(lifetime); | 221 | DateTime validDate = DateTime.Now.AddMinutes(lifetime); |
196 | string sql = "update tokens set validity = @validDate where UUID = @principalID and token = @token and validity > GetDate()"; | 222 | string sql = "update tokens set validity = :validDate where uuid = :principalID and token = :token and validity > (CURRENT_DATE + CURRENT_TIME)"; |
197 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 223 | |
198 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 224 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
225 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
199 | { | 226 | { |
200 | cmd.Parameters.Add(m_database.CreateParameter("@principalID", principalID)); | 227 | cmd.Parameters.Add(m_database.CreateParameter("principalID", principalID)); |
201 | cmd.Parameters.Add(m_database.CreateParameter("@token", token)); | 228 | cmd.Parameters.Add(m_database.CreateParameter("token", token)); |
202 | cmd.Parameters.Add(m_database.CreateParameter("@validDate", validDate)); | 229 | cmd.Parameters.Add(m_database.CreateParameter("validDate", validDate)); |
203 | conn.Open(); | 230 | conn.Open(); |
204 | 231 | ||
205 | if (cmd.ExecuteNonQuery() > 0) | 232 | if (cmd.ExecuteNonQuery() > 0) |
@@ -213,12 +240,12 @@ namespace OpenSim.Data.MSSQL | |||
213 | private void DoExpire() | 240 | private void DoExpire() |
214 | { | 241 | { |
215 | DateTime currentDateTime = DateTime.Now; | 242 | DateTime currentDateTime = DateTime.Now; |
216 | string sql = "delete from tokens where validity < @currentDateTime"; | 243 | string sql = "delete from tokens where validity < :currentDateTime"; |
217 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 244 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
218 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 245 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
219 | { | 246 | { |
220 | conn.Open(); | 247 | conn.Open(); |
221 | cmd.Parameters.Add(m_database.CreateParameter("@currentDateTime", currentDateTime)); | 248 | cmd.Parameters.Add(m_database.CreateParameter("currentDateTime", currentDateTime)); |
222 | cmd.ExecuteNonQuery(); | 249 | cmd.ExecuteNonQuery(); |
223 | } | 250 | } |
224 | m_LastExpire = System.Environment.TickCount; | 251 | m_LastExpire = System.Environment.TickCount; |
diff --git a/OpenSim/Data/MSSQL/MSSQLAvatarData.cs b/OpenSim/Data/PGSQL/PGSQLAvatarData.cs index 301b424..d9c4905 100644 --- a/OpenSim/Data/MSSQL/MSSQLAvatarData.cs +++ b/OpenSim/Data/PGSQL/PGSQLAvatarData.cs | |||
@@ -27,38 +27,39 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | ||
31 | using System.Reflection; | 30 | using System.Reflection; |
32 | using System.Threading; | 31 | using System.Threading; |
33 | using log4net; | 32 | using log4net; |
34 | using OpenMetaverse; | 33 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
36 | using System.Data.SqlClient; | 35 | using Npgsql; |
36 | using NpgsqlTypes; | ||
37 | 37 | ||
38 | namespace OpenSim.Data.MSSQL | 38 | |
39 | namespace OpenSim.Data.PGSQL | ||
39 | { | 40 | { |
40 | /// <summary> | 41 | /// <summary> |
41 | /// A MSSQL Interface for Avatar Storage | 42 | /// A PGSQL Interface for Avatar Storage |
42 | /// </summary> | 43 | /// </summary> |
43 | public class MSSQLAvatarData : MSSQLGenericTableHandler<AvatarBaseData>, | 44 | public class PGSQLAvatarData : PGSQLGenericTableHandler<AvatarBaseData>, |
44 | IAvatarData | 45 | IAvatarData |
45 | { | 46 | { |
46 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 47 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
47 | 48 | ||
48 | public MSSQLAvatarData(string connectionString, string realm) : | 49 | public PGSQLAvatarData(string connectionString, string realm) : |
49 | base(connectionString, realm, "Avatar") | 50 | base(connectionString, realm, "Avatar") |
50 | { | 51 | { |
51 | } | 52 | } |
52 | 53 | ||
53 | public bool Delete(UUID principalID, string name) | 54 | public bool Delete(UUID principalID, string name) |
54 | { | 55 | { |
55 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 56 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
56 | using (SqlCommand cmd = new SqlCommand()) | 57 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
57 | { | 58 | { |
58 | 59 | ||
59 | cmd.CommandText = String.Format("DELETE FROM {0} where [PrincipalID] = @PrincipalID and [Name] = @Name", m_Realm); | 60 | cmd.CommandText = String.Format("DELETE FROM {0} where \"PrincipalID\" = :PrincipalID and \"Name\" = :Name", m_Realm); |
60 | cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString())); | 61 | cmd.Parameters.Add(m_database.CreateParameter("PrincipalID", principalID)); |
61 | cmd.Parameters.Add(m_database.CreateParameter("@Name", name)); | 62 | cmd.Parameters.Add(m_database.CreateParameter("Name", name)); |
62 | cmd.Connection = conn; | 63 | cmd.Connection = conn; |
63 | conn.Open(); | 64 | conn.Open(); |
64 | if (cmd.ExecuteNonQuery() > 0) | 65 | if (cmd.ExecuteNonQuery() > 0) |
diff --git a/OpenSim/Data/MSSQL/MSSQLEstateData.cs b/OpenSim/Data/PGSQL/PGSQLEstateData.cs index 1faa249..b5ca235 100644 --- a/OpenSim/Data/MSSQL/MSSQLEstateData.cs +++ b/OpenSim/Data/PGSQL/PGSQLEstateData.cs | |||
@@ -27,38 +27,44 @@ | |||
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | ||
31 | using System.Data.SqlClient; | ||
32 | using System.Reflection; | 30 | using System.Reflection; |
33 | using log4net; | 31 | using log4net; |
34 | using OpenMetaverse; | 32 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
36 | using OpenSim.Region.Framework.Interfaces; | 34 | using OpenSim.Region.Framework.Interfaces; |
35 | using System.Data; | ||
36 | using Npgsql; | ||
37 | using NpgsqlTypes; | ||
37 | 38 | ||
38 | namespace OpenSim.Data.MSSQL | 39 | namespace OpenSim.Data.PGSQL |
39 | { | 40 | { |
40 | public class MSSQLEstateStore : IEstateDataStore | 41 | public class PGSQLEstateStore : IEstateDataStore |
41 | { | 42 | { |
42 | private const string _migrationStore = "EstateStore"; | 43 | private const string _migrationStore = "EstateStore"; |
43 | 44 | ||
44 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 45 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 46 | ||
46 | private MSSQLManager _Database; | 47 | private PGSQLManager _Database; |
47 | private string m_connectionString; | 48 | private string m_connectionString; |
48 | private FieldInfo[] _Fields; | 49 | private FieldInfo[] _Fields; |
49 | private Dictionary<string, FieldInfo> _FieldMap = new Dictionary<string, FieldInfo>(); | 50 | private Dictionary<string, FieldInfo> _FieldMap = new Dictionary<string, FieldInfo>(); |
50 | 51 | ||
51 | #region Public methods | 52 | #region Public methods |
52 | 53 | ||
53 | public MSSQLEstateStore() | 54 | public PGSQLEstateStore() |
54 | { | 55 | { |
55 | } | 56 | } |
56 | 57 | ||
57 | public MSSQLEstateStore(string connectionString) | 58 | public PGSQLEstateStore(string connectionString) |
58 | { | 59 | { |
59 | Initialise(connectionString); | 60 | Initialise(connectionString); |
60 | } | 61 | } |
61 | 62 | ||
63 | protected virtual Assembly Assembly | ||
64 | { | ||
65 | get { return GetType().Assembly; } | ||
66 | } | ||
67 | |||
62 | /// <summary> | 68 | /// <summary> |
63 | /// Initialises the estatedata class. | 69 | /// Initialises the estatedata class. |
64 | /// </summary> | 70 | /// </summary> |
@@ -68,11 +74,11 @@ namespace OpenSim.Data.MSSQL | |||
68 | if (!string.IsNullOrEmpty(connectionString)) | 74 | if (!string.IsNullOrEmpty(connectionString)) |
69 | { | 75 | { |
70 | m_connectionString = connectionString; | 76 | m_connectionString = connectionString; |
71 | _Database = new MSSQLManager(connectionString); | 77 | _Database = new PGSQLManager(connectionString); |
72 | } | 78 | } |
73 | 79 | ||
74 | //Migration settings | 80 | //Migration settings |
75 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 81 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
76 | { | 82 | { |
77 | conn.Open(); | 83 | conn.Open(); |
78 | Migration m = new Migration(conn, GetType().Assembly, "EstateStore"); | 84 | Migration m = new Migration(conn, GetType().Assembly, "EstateStore"); |
@@ -101,15 +107,17 @@ namespace OpenSim.Data.MSSQL | |||
101 | { | 107 | { |
102 | EstateSettings es = new EstateSettings(); | 108 | EstateSettings es = new EstateSettings(); |
103 | 109 | ||
104 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_map left join estate_settings on estate_map.EstateID = estate_settings.EstateID where estate_settings.EstateID is not null and RegionID = @RegionID"; | 110 | string sql = "select estate_settings.\"" + String.Join("\",estate_settings.\"", FieldList) + |
111 | "\" from estate_map left join estate_settings on estate_map.\"EstateID\" = estate_settings.\"EstateID\" " + | ||
112 | " where estate_settings.\"EstateID\" is not null and \"RegionID\" = :RegionID"; | ||
105 | 113 | ||
106 | bool insertEstate = false; | 114 | bool insertEstate = false; |
107 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 115 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
108 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 116 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
109 | { | 117 | { |
110 | cmd.Parameters.Add(_Database.CreateParameter("@RegionID", regionID)); | 118 | cmd.Parameters.Add(_Database.CreateParameter("RegionID", regionID)); |
111 | conn.Open(); | 119 | conn.Open(); |
112 | using (SqlDataReader reader = cmd.ExecuteReader()) | 120 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
113 | { | 121 | { |
114 | if (reader.Read()) | 122 | if (reader.Read()) |
115 | { | 123 | { |
@@ -119,11 +127,15 @@ namespace OpenSim.Data.MSSQL | |||
119 | object v = reader[name]; | 127 | object v = reader[name]; |
120 | if (f.FieldType == typeof(bool)) | 128 | if (f.FieldType == typeof(bool)) |
121 | { | 129 | { |
122 | f.SetValue(es, Convert.ToInt32(v) != 0); | 130 | f.SetValue(es, v); |
123 | } | 131 | } |
124 | else if (f.FieldType == typeof(UUID)) | 132 | else if (f.FieldType == typeof(UUID)) |
125 | { | 133 | { |
126 | f.SetValue(es, new UUID((Guid)v)); // uuid); | 134 | UUID estUUID = UUID.Zero; |
135 | |||
136 | UUID.TryParse(v.ToString(), out estUUID); | ||
137 | |||
138 | f.SetValue(es, estUUID); | ||
127 | } | 139 | } |
128 | else if (f.FieldType == typeof(string)) | 140 | else if (f.FieldType == typeof(string)) |
129 | { | 141 | { |
@@ -187,25 +199,37 @@ namespace OpenSim.Data.MSSQL | |||
187 | 199 | ||
188 | names.Remove("EstateID"); | 200 | names.Remove("EstateID"); |
189 | 201 | ||
190 | string sql = string.Format("insert into estate_settings ({0}) values ( @{1})", String.Join(",", names.ToArray()), String.Join(", @", names.ToArray())); | 202 | string sql = string.Format("insert into estate_settings (\"{0}\") values ( :{1} )", String.Join("\",\"", names.ToArray()), String.Join(", :", names.ToArray())); |
191 | 203 | ||
192 | //_Log.Debug("[DB ESTATE]: SQL: " + sql); | 204 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
193 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 205 | using (NpgsqlCommand insertCommand = new NpgsqlCommand(sql, conn)) |
194 | using (SqlCommand insertCommand = new SqlCommand(sql, conn)) | ||
195 | { | 206 | { |
196 | insertCommand.CommandText = sql + " SET @ID = SCOPE_IDENTITY()"; | 207 | insertCommand.CommandText = sql; |
197 | 208 | ||
198 | foreach (string name in names) | 209 | foreach (string name in names) |
199 | { | 210 | { |
200 | insertCommand.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es))); | 211 | insertCommand.Parameters.Add(_Database.CreateParameter("" + name, _FieldMap[name].GetValue(es))); |
201 | } | 212 | } |
202 | SqlParameter idParameter = new SqlParameter("@ID", SqlDbType.Int); | 213 | //NpgsqlParameter idParameter = new NpgsqlParameter("ID", SqlDbType.Int); |
203 | idParameter.Direction = ParameterDirection.Output; | 214 | //idParameter.Direction = ParameterDirection.Output; |
204 | insertCommand.Parameters.Add(idParameter); | 215 | //insertCommand.Parameters.Add(idParameter); |
205 | conn.Open(); | 216 | conn.Open(); |
206 | insertCommand.ExecuteNonQuery(); | ||
207 | 217 | ||
208 | es.EstateID = Convert.ToUInt32(idParameter.Value); | 218 | es.EstateID = 100; |
219 | |||
220 | if (insertCommand.ExecuteNonQuery() > 0) | ||
221 | { | ||
222 | insertCommand.CommandText = "Select cast(lastval() as int) as ID ;"; | ||
223 | |||
224 | using (NpgsqlDataReader result = insertCommand.ExecuteReader()) | ||
225 | { | ||
226 | if (result.Read()) | ||
227 | { | ||
228 | es.EstateID = (uint)result.GetInt32(0); | ||
229 | } | ||
230 | } | ||
231 | } | ||
232 | |||
209 | } | 233 | } |
210 | 234 | ||
211 | //TODO check if this is needed?? | 235 | //TODO check if this is needed?? |
@@ -225,20 +249,20 @@ namespace OpenSim.Data.MSSQL | |||
225 | string sql = string.Format("UPDATE estate_settings SET "); | 249 | string sql = string.Format("UPDATE estate_settings SET "); |
226 | foreach (string name in names) | 250 | foreach (string name in names) |
227 | { | 251 | { |
228 | sql += name + " = @" + name + ", "; | 252 | sql += "\"" + name + "\" = :" + name + ", "; |
229 | } | 253 | } |
230 | sql = sql.Remove(sql.LastIndexOf(",")); | 254 | sql = sql.Remove(sql.LastIndexOf(",")); |
231 | sql += " WHERE EstateID = @EstateID"; | 255 | sql += " WHERE \"EstateID\" = :EstateID"; |
232 | 256 | ||
233 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 257 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
234 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 258 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
235 | { | 259 | { |
236 | foreach (string name in names) | 260 | foreach (string name in names) |
237 | { | 261 | { |
238 | cmd.Parameters.Add(_Database.CreateParameter("@" + name, _FieldMap[name].GetValue(es))); | 262 | cmd.Parameters.Add(_Database.CreateParameter("" + name, _FieldMap[name].GetValue(es))); |
239 | } | 263 | } |
240 | 264 | ||
241 | cmd.Parameters.Add(_Database.CreateParameter("@EstateID", es.EstateID)); | 265 | cmd.Parameters.Add(_Database.CreateParameter("EstateID", es.EstateID)); |
242 | conn.Open(); | 266 | conn.Open(); |
243 | cmd.ExecuteNonQuery(); | 267 | cmd.ExecuteNonQuery(); |
244 | } | 268 | } |
@@ -262,16 +286,16 @@ namespace OpenSim.Data.MSSQL | |||
262 | { | 286 | { |
263 | es.ClearBans(); | 287 | es.ClearBans(); |
264 | 288 | ||
265 | string sql = "select bannedUUID from estateban where EstateID = @EstateID"; | 289 | string sql = "select \"bannedUUID\" from estateban where \"EstateID\" = :EstateID"; |
266 | 290 | ||
267 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 291 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
268 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 292 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
269 | { | 293 | { |
270 | SqlParameter idParameter = new SqlParameter("@EstateID", SqlDbType.Int); | 294 | NpgsqlParameter idParameter = new NpgsqlParameter("EstateID", DbType.Int32); |
271 | idParameter.Value = es.EstateID; | 295 | idParameter.Value = es.EstateID; |
272 | cmd.Parameters.Add(idParameter); | 296 | cmd.Parameters.Add(idParameter); |
273 | conn.Open(); | 297 | conn.Open(); |
274 | using (SqlDataReader reader = cmd.ExecuteReader()) | 298 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
275 | { | 299 | { |
276 | while (reader.Read()) | 300 | while (reader.Read()) |
277 | { | 301 | { |
@@ -290,14 +314,14 @@ namespace OpenSim.Data.MSSQL | |||
290 | { | 314 | { |
291 | List<UUID> uuids = new List<UUID>(); | 315 | List<UUID> uuids = new List<UUID>(); |
292 | 316 | ||
293 | string sql = string.Format("select uuid from {0} where EstateID = @EstateID", table); | 317 | string sql = string.Format("select uuid from {0} where \"EstateID\" = :EstateID", table); |
294 | 318 | ||
295 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 319 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
296 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 320 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
297 | { | 321 | { |
298 | cmd.Parameters.Add(_Database.CreateParameter("@EstateID", estateID)); | 322 | cmd.Parameters.Add(_Database.CreateParameter("EstateID", estateID)); |
299 | conn.Open(); | 323 | conn.Open(); |
300 | using (SqlDataReader reader = cmd.ExecuteReader()) | 324 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
301 | { | 325 | { |
302 | while (reader.Read()) | 326 | while (reader.Read()) |
303 | { | 327 | { |
@@ -312,21 +336,21 @@ namespace OpenSim.Data.MSSQL | |||
312 | private void SaveBanList(EstateSettings es) | 336 | private void SaveBanList(EstateSettings es) |
313 | { | 337 | { |
314 | //Delete first | 338 | //Delete first |
315 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 339 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
316 | { | 340 | { |
317 | conn.Open(); | 341 | conn.Open(); |
318 | using (SqlCommand cmd = conn.CreateCommand()) | 342 | using (NpgsqlCommand cmd = conn.CreateCommand()) |
319 | { | 343 | { |
320 | cmd.CommandText = "delete from estateban where EstateID = @EstateID"; | 344 | cmd.CommandText = "delete from estateban where \"EstateID\" = :EstateID"; |
321 | cmd.Parameters.AddWithValue("@EstateID", (int)es.EstateID); | 345 | cmd.Parameters.AddWithValue("EstateID", (int)es.EstateID); |
322 | cmd.ExecuteNonQuery(); | 346 | cmd.ExecuteNonQuery(); |
323 | 347 | ||
324 | //Insert after | 348 | //Insert after |
325 | cmd.CommandText = "insert into estateban (EstateID, bannedUUID,bannedIp, bannedIpHostMask, bannedNameMask) values ( @EstateID, @bannedUUID, '','','' )"; | 349 | cmd.CommandText = "insert into estateban (\"EstateID\", \"bannedUUID\",\"bannedIp\", \"bannedIpHostMask\", \"bannedNameMask\") values ( :EstateID, :bannedUUID, '','','' )"; |
326 | cmd.Parameters.AddWithValue("@bannedUUID", Guid.Empty); | 350 | cmd.Parameters.AddWithValue("bannedUUID", Guid.Empty); |
327 | foreach (EstateBan b in es.EstateBans) | 351 | foreach (EstateBan b in es.EstateBans) |
328 | { | 352 | { |
329 | cmd.Parameters["@bannedUUID"].Value = b.BannedUserID.Guid; | 353 | cmd.Parameters["bannedUUID"].Value = b.BannedUserID.Guid; |
330 | cmd.ExecuteNonQuery(); | 354 | cmd.ExecuteNonQuery(); |
331 | } | 355 | } |
332 | } | 356 | } |
@@ -335,20 +359,20 @@ namespace OpenSim.Data.MSSQL | |||
335 | 359 | ||
336 | private void SaveUUIDList(uint estateID, string table, UUID[] data) | 360 | private void SaveUUIDList(uint estateID, string table, UUID[] data) |
337 | { | 361 | { |
338 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 362 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
339 | { | 363 | { |
340 | conn.Open(); | 364 | conn.Open(); |
341 | using (SqlCommand cmd = conn.CreateCommand()) | 365 | using (NpgsqlCommand cmd = conn.CreateCommand()) |
342 | { | 366 | { |
343 | cmd.Parameters.AddWithValue("@EstateID", (int)estateID); | 367 | cmd.Parameters.AddWithValue("EstateID", (int)estateID); |
344 | cmd.CommandText = string.Format("delete from {0} where EstateID = @EstateID", table); | 368 | cmd.CommandText = string.Format("delete from {0} where \"EstateID\" = :EstateID", table); |
345 | cmd.ExecuteNonQuery(); | 369 | cmd.ExecuteNonQuery(); |
346 | 370 | ||
347 | cmd.CommandText = string.Format("insert into {0} (EstateID, uuid) values ( @EstateID, @uuid )", table); | 371 | cmd.CommandText = string.Format("insert into {0} (\"EstateID\", uuid) values ( :EstateID, :uuid )", table); |
348 | cmd.Parameters.AddWithValue("@uuid", Guid.Empty); | 372 | cmd.Parameters.AddWithValue("uuid", Guid.Empty); |
349 | foreach (UUID uuid in data) | 373 | foreach (UUID uuid in data) |
350 | { | 374 | { |
351 | cmd.Parameters["@uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works | 375 | cmd.Parameters["uuid"].Value = uuid.Guid; //.ToString(); //TODO check if this works |
352 | cmd.ExecuteNonQuery(); | 376 | cmd.ExecuteNonQuery(); |
353 | } | 377 | } |
354 | } | 378 | } |
@@ -358,14 +382,14 @@ namespace OpenSim.Data.MSSQL | |||
358 | public EstateSettings LoadEstateSettings(int estateID) | 382 | public EstateSettings LoadEstateSettings(int estateID) |
359 | { | 383 | { |
360 | EstateSettings es = new EstateSettings(); | 384 | EstateSettings es = new EstateSettings(); |
361 | string sql = "select estate_settings." + String.Join(",estate_settings.", FieldList) + " from estate_settings where EstateID = @EstateID"; | 385 | string sql = "select estate_settings.\"" + String.Join("\",estate_settings.\"", FieldList) + "\" from estate_settings where \"EstateID\" = :EstateID"; |
362 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 386 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
363 | { | 387 | { |
364 | conn.Open(); | 388 | conn.Open(); |
365 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 389 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
366 | { | 390 | { |
367 | cmd.Parameters.AddWithValue("@EstateID", (int)estateID); | 391 | cmd.Parameters.AddWithValue("EstateID", (int)estateID); |
368 | using (SqlDataReader reader = cmd.ExecuteReader()) | 392 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
369 | { | 393 | { |
370 | if (reader.Read()) | 394 | if (reader.Read()) |
371 | { | 395 | { |
@@ -428,13 +452,13 @@ namespace OpenSim.Data.MSSQL | |||
428 | public List<int> GetEstates(string search) | 452 | public List<int> GetEstates(string search) |
429 | { | 453 | { |
430 | List<int> result = new List<int>(); | 454 | List<int> result = new List<int>(); |
431 | string sql = "select estateID from estate_settings where EstateName = @EstateName"; | 455 | string sql = "select \"EstateID\" from estate_settings where lower(\"EstateName\") = lower(:EstateName)"; |
432 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 456 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
433 | { | 457 | { |
434 | conn.Open(); | 458 | conn.Open(); |
435 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 459 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
436 | { | 460 | { |
437 | cmd.Parameters.AddWithValue("@EstateName", search); | 461 | cmd.Parameters.AddWithValue("EstateName", search); |
438 | 462 | ||
439 | using (IDataReader reader = cmd.ExecuteReader()) | 463 | using (IDataReader reader = cmd.ExecuteReader()) |
440 | { | 464 | { |
@@ -453,11 +477,11 @@ namespace OpenSim.Data.MSSQL | |||
453 | public List<int> GetEstatesAll() | 477 | public List<int> GetEstatesAll() |
454 | { | 478 | { |
455 | List<int> result = new List<int>(); | 479 | List<int> result = new List<int>(); |
456 | string sql = "select estateID from estate_settings"; | 480 | string sql = "select \"EstateID\" from estate_settings"; |
457 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 481 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
458 | { | 482 | { |
459 | conn.Open(); | 483 | conn.Open(); |
460 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 484 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
461 | { | 485 | { |
462 | using (IDataReader reader = cmd.ExecuteReader()) | 486 | using (IDataReader reader = cmd.ExecuteReader()) |
463 | { | 487 | { |
@@ -476,13 +500,13 @@ namespace OpenSim.Data.MSSQL | |||
476 | public List<int> GetEstatesByOwner(UUID ownerID) | 500 | public List<int> GetEstatesByOwner(UUID ownerID) |
477 | { | 501 | { |
478 | List<int> result = new List<int>(); | 502 | List<int> result = new List<int>(); |
479 | string sql = "select estateID from estate_settings where EstateOwner = @EstateOwner"; | 503 | string sql = "select \"EstateID\" from estate_settings where \"EstateOwner\" = :EstateOwner"; |
480 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 504 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
481 | { | 505 | { |
482 | conn.Open(); | 506 | conn.Open(); |
483 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 507 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
484 | { | 508 | { |
485 | cmd.Parameters.AddWithValue("@EstateOwner", ownerID); | 509 | cmd.Parameters.AddWithValue("EstateOwner", ownerID); |
486 | 510 | ||
487 | using (IDataReader reader = cmd.ExecuteReader()) | 511 | using (IDataReader reader = cmd.ExecuteReader()) |
488 | { | 512 | { |
@@ -500,28 +524,29 @@ namespace OpenSim.Data.MSSQL | |||
500 | 524 | ||
501 | public bool LinkRegion(UUID regionID, int estateID) | 525 | public bool LinkRegion(UUID regionID, int estateID) |
502 | { | 526 | { |
503 | string deleteSQL = "delete from estate_map where RegionID = @RegionID"; | 527 | string deleteSQL = "delete from estate_map where \"RegionID\" = :RegionID"; |
504 | string insertSQL = "insert into estate_map values (@RegionID, @EstateID)"; | 528 | string insertSQL = "insert into estate_map values (:RegionID, :EstateID)"; |
505 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 529 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
506 | { | 530 | { |
507 | conn.Open(); | 531 | conn.Open(); |
508 | SqlTransaction transaction = conn.BeginTransaction(); | 532 | |
533 | NpgsqlTransaction transaction = conn.BeginTransaction(); | ||
509 | 534 | ||
510 | try | 535 | try |
511 | { | 536 | { |
512 | using (SqlCommand cmd = new SqlCommand(deleteSQL, conn)) | 537 | using (NpgsqlCommand cmd = new NpgsqlCommand(deleteSQL, conn)) |
513 | { | 538 | { |
514 | cmd.Transaction = transaction; | 539 | cmd.Transaction = transaction; |
515 | cmd.Parameters.AddWithValue("@RegionID", regionID.Guid); | 540 | cmd.Parameters.AddWithValue("RegionID", regionID.Guid); |
516 | 541 | ||
517 | cmd.ExecuteNonQuery(); | 542 | cmd.ExecuteNonQuery(); |
518 | } | 543 | } |
519 | 544 | ||
520 | using (SqlCommand cmd = new SqlCommand(insertSQL, conn)) | 545 | using (NpgsqlCommand cmd = new NpgsqlCommand(insertSQL, conn)) |
521 | { | 546 | { |
522 | cmd.Transaction = transaction; | 547 | cmd.Transaction = transaction; |
523 | cmd.Parameters.AddWithValue("@RegionID", regionID.Guid); | 548 | cmd.Parameters.AddWithValue("RegionID", regionID.Guid); |
524 | cmd.Parameters.AddWithValue("@EstateID", estateID); | 549 | cmd.Parameters.AddWithValue("EstateID", estateID); |
525 | 550 | ||
526 | int ret = cmd.ExecuteNonQuery(); | 551 | int ret = cmd.ExecuteNonQuery(); |
527 | 552 | ||
@@ -545,13 +570,13 @@ namespace OpenSim.Data.MSSQL | |||
545 | public List<UUID> GetRegions(int estateID) | 570 | public List<UUID> GetRegions(int estateID) |
546 | { | 571 | { |
547 | List<UUID> result = new List<UUID>(); | 572 | List<UUID> result = new List<UUID>(); |
548 | string sql = "select RegionID from estate_map where EstateID = @EstateID"; | 573 | string sql = "select \"RegionID\" from estate_map where \"EstateID\" = :EstateID"; |
549 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 574 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
550 | { | 575 | { |
551 | conn.Open(); | 576 | conn.Open(); |
552 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 577 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
553 | { | 578 | { |
554 | cmd.Parameters.AddWithValue("@EstateID", estateID); | 579 | cmd.Parameters.AddWithValue("EstateID", estateID); |
555 | 580 | ||
556 | using (IDataReader reader = cmd.ExecuteReader()) | 581 | using (IDataReader reader = cmd.ExecuteReader()) |
557 | { | 582 | { |
diff --git a/OpenSim/Data/MSSQL/MSSQLFriendsData.cs b/OpenSim/Data/PGSQL/PGSQLFriendsData.cs index fef6978..a841353 100644 --- a/OpenSim/Data/MSSQL/MSSQLFriendsData.cs +++ b/OpenSim/Data/PGSQL/PGSQLFriendsData.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -31,18 +31,18 @@ using System.Collections.Generic; | |||
31 | using System.Data; | 31 | using System.Data; |
32 | using OpenMetaverse; | 32 | using OpenMetaverse; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using System.Data.SqlClient; | ||
35 | using System.Reflection; | 34 | using System.Reflection; |
36 | using System.Text; | 35 | using System.Text; |
36 | using Npgsql; | ||
37 | 37 | ||
38 | namespace OpenSim.Data.MSSQL | 38 | namespace OpenSim.Data.PGSQL |
39 | { | 39 | { |
40 | public class MSSQLFriendsData : MSSQLGenericTableHandler<FriendsData>, IFriendsData | 40 | public class PGSQLFriendsData : PGSQLGenericTableHandler<FriendsData>, IFriendsData |
41 | { | 41 | { |
42 | public MSSQLFriendsData(string connectionString, string realm) | 42 | public PGSQLFriendsData(string connectionString, string realm) |
43 | : base(connectionString, realm, "FriendsStore") | 43 | : base(connectionString, realm, "FriendsStore") |
44 | { | 44 | { |
45 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 45 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
46 | { | 46 | { |
47 | conn.Open(); | 47 | conn.Open(); |
48 | Migration m = new Migration(conn, GetType().Assembly, "FriendsStore"); | 48 | Migration m = new Migration(conn, GetType().Assembly, "FriendsStore"); |
@@ -50,19 +50,27 @@ namespace OpenSim.Data.MSSQL | |||
50 | } | 50 | } |
51 | } | 51 | } |
52 | 52 | ||
53 | public bool Delete(UUID principalID, string friend) | 53 | |
54 | public override bool Delete(string principalID, string friend) | ||
54 | { | 55 | { |
55 | return Delete(principalID.ToString(), friend); | 56 | UUID princUUID = UUID.Zero; |
57 | |||
58 | bool ret = UUID.TryParse(principalID, out princUUID); | ||
59 | |||
60 | if (ret) | ||
61 | return Delete(princUUID, friend); | ||
62 | else | ||
63 | return false; | ||
56 | } | 64 | } |
57 | 65 | ||
58 | public bool Delete(string principalID, string friend) | 66 | public bool Delete(UUID principalID, string friend) |
59 | { | 67 | { |
60 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 68 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
61 | using (SqlCommand cmd = new SqlCommand()) | 69 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
62 | { | 70 | { |
63 | cmd.CommandText = String.Format("delete from {0} where PrincipalID = @PrincipalID and Friend = @Friend", m_Realm); | 71 | cmd.CommandText = String.Format("delete from {0} where \"PrincipalID\" = :PrincipalID and \"Friend\" = :Friend", m_Realm); |
64 | cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString())); | 72 | cmd.Parameters.Add(m_database.CreateParameter("PrincipalID", principalID.ToString())); |
65 | cmd.Parameters.Add(m_database.CreateParameter("@Friend", friend)); | 73 | cmd.Parameters.Add(m_database.CreateParameter("Friend", friend)); |
66 | cmd.Connection = conn; | 74 | cmd.Connection = conn; |
67 | conn.Open(); | 75 | conn.Open(); |
68 | cmd.ExecuteNonQuery(); | 76 | cmd.ExecuteNonQuery(); |
@@ -71,19 +79,28 @@ namespace OpenSim.Data.MSSQL | |||
71 | } | 79 | } |
72 | } | 80 | } |
73 | 81 | ||
74 | public FriendsData[] GetFriends(UUID principalID) | 82 | public FriendsData[] GetFriends(string principalID) |
75 | { | 83 | { |
76 | return GetFriends(principalID.ToString()); | 84 | UUID princUUID = UUID.Zero; |
85 | |||
86 | bool ret = UUID.TryParse(principalID, out princUUID); | ||
87 | |||
88 | if (ret) | ||
89 | return GetFriends(princUUID); | ||
90 | else | ||
91 | return new FriendsData[0]; | ||
77 | } | 92 | } |
78 | 93 | ||
79 | public FriendsData[] GetFriends(string principalID) | 94 | public FriendsData[] GetFriends(UUID principalID) |
80 | { | 95 | { |
81 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 96 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
82 | using (SqlCommand cmd = new SqlCommand()) | 97 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
83 | { | 98 | { |
84 | 99 | ||
85 | cmd.CommandText = String.Format("select a.*,case when b.Flags is null then -1 else b.Flags end as TheirFlags from {0} as a left join {0} as b on a.PrincipalID = b.Friend and a.Friend = b.PrincipalID where a.PrincipalID = @PrincipalID", m_Realm); | 100 | cmd.CommandText = String.Format("select a.*,case when b.\"Flags\" is null then '-1' else b.\"Flags\" end as \"TheirFlags\" from {0} as a " + |
86 | cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString())); | 101 | " left join {0} as b on a.\"PrincipalID\" = b.\"Friend\" and a.\"Friend\" = b.\"PrincipalID\" " + |
102 | " where a.\"PrincipalID\" = :PrincipalID", m_Realm); | ||
103 | cmd.Parameters.Add(m_database.CreateParameter("PrincipalID", principalID.ToString())); | ||
87 | cmd.Connection = conn; | 104 | cmd.Connection = conn; |
88 | conn.Open(); | 105 | conn.Open(); |
89 | return DoQuery(cmd); | 106 | return DoQuery(cmd); |
@@ -92,7 +109,7 @@ namespace OpenSim.Data.MSSQL | |||
92 | 109 | ||
93 | public FriendsData[] GetFriends(Guid principalID) | 110 | public FriendsData[] GetFriends(Guid principalID) |
94 | { | 111 | { |
95 | return GetFriends(principalID.ToString()); | 112 | return GetFriends(principalID); |
96 | } | 113 | } |
97 | 114 | ||
98 | } | 115 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs b/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs index 4145d95..826c6fc 100644 --- a/OpenSim/Data/MSSQL/MSSQLGenericTableHandler.cs +++ b/OpenSim/Data/PGSQL/PGSQLGenericTableHandler.cs | |||
@@ -30,30 +30,38 @@ using System.Collections.Generic; | |||
30 | using System.Data; | 30 | using System.Data; |
31 | using System.Reflection; | 31 | using System.Reflection; |
32 | using log4net; | 32 | using log4net; |
33 | using System.Data.SqlClient; | ||
34 | using OpenMetaverse; | 33 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
36 | using OpenSim.Region.Framework.Interfaces; | 35 | using OpenSim.Region.Framework.Interfaces; |
37 | using System.Text; | 36 | using System.Text; |
37 | using Npgsql; | ||
38 | 38 | ||
39 | namespace OpenSim.Data.MSSQL | 39 | namespace OpenSim.Data.PGSQL |
40 | { | 40 | { |
41 | public class MSSQLGenericTableHandler<T> where T : class, new() | 41 | public class PGSQLGenericTableHandler<T> : PGSqlFramework where T : class, new() |
42 | { | 42 | { |
43 | // private static readonly ILog m_log = | 43 | private static readonly ILog m_log = |
44 | // LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 44 | LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 45 | ||
46 | protected string m_ConnectionString; | 46 | protected string m_ConnectionString; |
47 | protected MSSQLManager m_database; //used for parameter type translation | 47 | protected PGSQLManager m_database; //used for parameter type translation |
48 | protected Dictionary<string, FieldInfo> m_Fields = | 48 | protected Dictionary<string, FieldInfo> m_Fields = |
49 | new Dictionary<string, FieldInfo>(); | 49 | new Dictionary<string, FieldInfo>(); |
50 | 50 | ||
51 | protected Dictionary<string, string> m_FieldTypes = new Dictionary<string, string>(); | ||
52 | |||
51 | protected List<string> m_ColumnNames = null; | 53 | protected List<string> m_ColumnNames = null; |
52 | protected string m_Realm; | 54 | protected string m_Realm; |
53 | protected FieldInfo m_DataField = null; | 55 | protected FieldInfo m_DataField = null; |
54 | 56 | ||
55 | public MSSQLGenericTableHandler(string connectionString, | 57 | protected virtual Assembly Assembly |
58 | { | ||
59 | get { return GetType().Assembly; } | ||
60 | } | ||
61 | |||
62 | public PGSQLGenericTableHandler(string connectionString, | ||
56 | string realm, string storeName) | 63 | string realm, string storeName) |
64 | : base(connectionString) | ||
57 | { | 65 | { |
58 | m_Realm = realm; | 66 | m_Realm = realm; |
59 | 67 | ||
@@ -61,7 +69,7 @@ namespace OpenSim.Data.MSSQL | |||
61 | 69 | ||
62 | if (storeName != String.Empty) | 70 | if (storeName != String.Empty) |
63 | { | 71 | { |
64 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 72 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
65 | { | 73 | { |
66 | conn.Open(); | 74 | conn.Open(); |
67 | Migration m = new Migration(conn, GetType().Assembly, storeName); | 75 | Migration m = new Migration(conn, GetType().Assembly, storeName); |
@@ -69,13 +77,15 @@ namespace OpenSim.Data.MSSQL | |||
69 | } | 77 | } |
70 | 78 | ||
71 | } | 79 | } |
72 | m_database = new MSSQLManager(m_ConnectionString); | 80 | m_database = new PGSQLManager(m_ConnectionString); |
73 | 81 | ||
74 | Type t = typeof(T); | 82 | Type t = typeof(T); |
75 | FieldInfo[] fields = t.GetFields(BindingFlags.Public | | 83 | FieldInfo[] fields = t.GetFields(BindingFlags.Public | |
76 | BindingFlags.Instance | | 84 | BindingFlags.Instance | |
77 | BindingFlags.DeclaredOnly); | 85 | BindingFlags.DeclaredOnly); |
78 | 86 | ||
87 | LoadFieldTypes(); | ||
88 | |||
79 | if (fields.Length == 0) | 89 | if (fields.Length == 0) |
80 | return; | 90 | return; |
81 | 91 | ||
@@ -89,7 +99,31 @@ namespace OpenSim.Data.MSSQL | |||
89 | 99 | ||
90 | } | 100 | } |
91 | 101 | ||
92 | private void CheckColumnNames(SqlDataReader reader) | 102 | private void LoadFieldTypes() |
103 | { | ||
104 | m_FieldTypes = new Dictionary<string, string>(); | ||
105 | |||
106 | string query = string.Format(@"select column_name,data_type | ||
107 | from INFORMATION_SCHEMA.COLUMNS | ||
108 | where table_name = lower('{0}'); | ||
109 | |||
110 | ", m_Realm); | ||
111 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) | ||
112 | using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn)) | ||
113 | { | ||
114 | conn.Open(); | ||
115 | using (NpgsqlDataReader rdr = cmd.ExecuteReader()) | ||
116 | { | ||
117 | while (rdr.Read()) | ||
118 | { | ||
119 | // query produces 0 to many rows of single column, so always add the first item in each row | ||
120 | m_FieldTypes.Add((string)rdr[0], (string)rdr[1]); | ||
121 | } | ||
122 | } | ||
123 | } | ||
124 | } | ||
125 | |||
126 | private void CheckColumnNames(NpgsqlDataReader reader) | ||
93 | { | 127 | { |
94 | if (m_ColumnNames != null) | 128 | if (m_ColumnNames != null) |
95 | return; | 129 | return; |
@@ -97,6 +131,7 @@ namespace OpenSim.Data.MSSQL | |||
97 | m_ColumnNames = new List<string>(); | 131 | m_ColumnNames = new List<string>(); |
98 | 132 | ||
99 | DataTable schemaTable = reader.GetSchemaTable(); | 133 | DataTable schemaTable = reader.GetSchemaTable(); |
134 | |||
100 | foreach (DataRow row in schemaTable.Rows) | 135 | foreach (DataRow row in schemaTable.Rows) |
101 | { | 136 | { |
102 | if (row["ColumnName"] != null && | 137 | if (row["ColumnName"] != null && |
@@ -106,21 +141,37 @@ namespace OpenSim.Data.MSSQL | |||
106 | } | 141 | } |
107 | } | 142 | } |
108 | 143 | ||
144 | // TODO GET CONSTRAINTS FROM POSTGRESQL | ||
109 | private List<string> GetConstraints() | 145 | private List<string> GetConstraints() |
110 | { | 146 | { |
111 | List<string> constraints = new List<string>(); | 147 | List<string> constraints = new List<string>(); |
112 | string query = string.Format(@"SELECT | 148 | string query = string.Format(@"SELECT kcu.column_name |
113 | COL_NAME(ic.object_id,ic.column_id) AS column_name | 149 | FROM information_schema.table_constraints tc |
114 | FROM sys.indexes AS i | 150 | LEFT JOIN information_schema.key_column_usage kcu |
115 | INNER JOIN sys.index_columns AS ic | 151 | ON tc.constraint_catalog = kcu.constraint_catalog |
116 | ON i.object_id = ic.object_id AND i.index_id = ic.index_id | 152 | AND tc.constraint_schema = kcu.constraint_schema |
117 | WHERE i.is_primary_key = 1 | 153 | AND tc.constraint_name = kcu.constraint_name |
118 | AND i.object_id = OBJECT_ID('{0}');", m_Realm); | 154 | |
119 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 155 | LEFT JOIN information_schema.referential_constraints rc |
120 | using (SqlCommand cmd = new SqlCommand(query, conn)) | 156 | ON tc.constraint_catalog = rc.constraint_catalog |
157 | AND tc.constraint_schema = rc.constraint_schema | ||
158 | AND tc.constraint_name = rc.constraint_name | ||
159 | |||
160 | LEFT JOIN information_schema.constraint_column_usage ccu | ||
161 | ON rc.unique_constraint_catalog = ccu.constraint_catalog | ||
162 | AND rc.unique_constraint_schema = ccu.constraint_schema | ||
163 | AND rc.unique_constraint_name = ccu.constraint_name | ||
164 | |||
165 | where tc.table_name = lower('{0}') | ||
166 | and lower(tc.constraint_type) in ('primary key') | ||
167 | and kcu.column_name is not null | ||
168 | ;", m_Realm); | ||
169 | |||
170 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) | ||
171 | using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn)) | ||
121 | { | 172 | { |
122 | conn.Open(); | 173 | conn.Open(); |
123 | using (SqlDataReader rdr = cmd.ExecuteReader()) | 174 | using (NpgsqlDataReader rdr = cmd.ExecuteReader()) |
124 | { | 175 | { |
125 | while (rdr.Read()) | 176 | while (rdr.Read()) |
126 | { | 177 | { |
@@ -144,14 +195,18 @@ namespace OpenSim.Data.MSSQL | |||
144 | 195 | ||
145 | List<string> terms = new List<string>(); | 196 | List<string> terms = new List<string>(); |
146 | 197 | ||
147 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 198 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
148 | using (SqlCommand cmd = new SqlCommand()) | 199 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
149 | { | 200 | { |
150 | 201 | ||
151 | for (int i = 0; i < fields.Length; i++) | 202 | for (int i = 0; i < fields.Length; i++) |
152 | { | 203 | { |
153 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i])); | 204 | if ( m_FieldTypes.ContainsKey(fields[i]) ) |
154 | terms.Add("[" + fields[i] + "] = @" + fields[i]); | 205 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i], m_FieldTypes[fields[i]])); |
206 | else | ||
207 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i])); | ||
208 | |||
209 | terms.Add(" \"" + fields[i] + "\" = :" + fields[i]); | ||
155 | } | 210 | } |
156 | 211 | ||
157 | string where = String.Join(" AND ", terms.ToArray()); | 212 | string where = String.Join(" AND ", terms.ToArray()); |
@@ -166,10 +221,18 @@ namespace OpenSim.Data.MSSQL | |||
166 | } | 221 | } |
167 | } | 222 | } |
168 | 223 | ||
169 | protected T[] DoQuery(SqlCommand cmd) | 224 | protected T[] DoQuery(NpgsqlCommand cmd) |
170 | { | 225 | { |
171 | List<T> result = new List<T>(); | 226 | List<T> result = new List<T>(); |
172 | using (SqlDataReader reader = cmd.ExecuteReader()) | 227 | if (cmd.Connection == null) |
228 | { | ||
229 | cmd.Connection = new NpgsqlConnection(m_connectionString); | ||
230 | } | ||
231 | if (cmd.Connection.State == ConnectionState.Closed) | ||
232 | { | ||
233 | cmd.Connection.Open(); | ||
234 | } | ||
235 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) | ||
173 | { | 236 | { |
174 | if (reader == null) | 237 | if (reader == null) |
175 | return new T[0]; | 238 | return new T[0]; |
@@ -213,6 +276,7 @@ namespace OpenSim.Data.MSSQL | |||
213 | foreach (string col in m_ColumnNames) | 276 | foreach (string col in m_ColumnNames) |
214 | { | 277 | { |
215 | data[col] = reader[col].ToString(); | 278 | data[col] = reader[col].ToString(); |
279 | |||
216 | if (data[col] == null) | 280 | if (data[col] == null) |
217 | data[col] = String.Empty; | 281 | data[col] = String.Empty; |
218 | } | 282 | } |
@@ -228,16 +292,34 @@ namespace OpenSim.Data.MSSQL | |||
228 | 292 | ||
229 | public virtual T[] Get(string where) | 293 | public virtual T[] Get(string where) |
230 | { | 294 | { |
231 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 295 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
232 | using (SqlCommand cmd = new SqlCommand()) | 296 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
233 | { | 297 | { |
234 | 298 | ||
235 | string query = String.Format("SELECT * FROM {0} WHERE {1}", | 299 | string query = String.Format("SELECT * FROM {0} WHERE {1}", |
236 | m_Realm, where); | 300 | m_Realm, where); |
237 | cmd.Connection = conn; | 301 | cmd.Connection = conn; |
238 | cmd.CommandText = query; | 302 | cmd.CommandText = query; |
303 | //m_log.WarnFormat("[PGSQLGenericTable]: SELECT {0} WHERE {1}", m_Realm, where); | ||
239 | 304 | ||
240 | //m_log.WarnFormat("[MSSQLGenericTable]: SELECT {0} WHERE {1}", m_Realm, where); | 305 | conn.Open(); |
306 | return DoQuery(cmd); | ||
307 | } | ||
308 | } | ||
309 | |||
310 | public virtual T[] Get(string where, NpgsqlParameter parameter) | ||
311 | { | ||
312 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) | ||
313 | using (NpgsqlCommand cmd = new NpgsqlCommand()) | ||
314 | { | ||
315 | |||
316 | string query = String.Format("SELECT * FROM {0} WHERE {1}", | ||
317 | m_Realm, where); | ||
318 | cmd.Connection = conn; | ||
319 | cmd.CommandText = query; | ||
320 | //m_log.WarnFormat("[PGSQLGenericTable]: SELECT {0} WHERE {1}", m_Realm, where); | ||
321 | |||
322 | cmd.Parameters.Add(parameter); | ||
241 | 323 | ||
242 | conn.Open(); | 324 | conn.Open(); |
243 | return DoQuery(cmd); | 325 | return DoQuery(cmd); |
@@ -249,8 +331,8 @@ namespace OpenSim.Data.MSSQL | |||
249 | List<string> constraintFields = GetConstraints(); | 331 | List<string> constraintFields = GetConstraints(); |
250 | List<KeyValuePair<string, string>> constraints = new List<KeyValuePair<string, string>>(); | 332 | List<KeyValuePair<string, string>> constraints = new List<KeyValuePair<string, string>>(); |
251 | 333 | ||
252 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 334 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
253 | using (SqlCommand cmd = new SqlCommand()) | 335 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
254 | { | 336 | { |
255 | 337 | ||
256 | StringBuilder query = new StringBuilder(); | 338 | StringBuilder query = new StringBuilder(); |
@@ -260,21 +342,24 @@ namespace OpenSim.Data.MSSQL | |||
260 | foreach (FieldInfo fi in m_Fields.Values) | 342 | foreach (FieldInfo fi in m_Fields.Values) |
261 | { | 343 | { |
262 | names.Add(fi.Name); | 344 | names.Add(fi.Name); |
263 | values.Add("@" + fi.Name); | 345 | values.Add(":" + fi.Name); |
264 | // Temporarily return more information about what field is unexpectedly null for | 346 | // Temporarily return more information about what field is unexpectedly null for |
265 | // http://opensimulator.org/mantis/view.php?id=5403. This might be due to a bug in the | 347 | // http://opensimulator.org/mantis/view.php?id=5403. This might be due to a bug in the |
266 | // InventoryTransferModule or we may be required to substitute a DBNull here. | 348 | // InventoryTransferModule or we may be required to substitute a DBNull here. |
267 | if (fi.GetValue(row) == null) | 349 | if (fi.GetValue(row) == null) |
268 | throw new NullReferenceException( | 350 | throw new NullReferenceException( |
269 | string.Format( | 351 | string.Format( |
270 | "[MSSQL GENERIC TABLE HANDLER]: Trying to store field {0} for {1} which is unexpectedly null", | 352 | "[PGSQL GENERIC TABLE HANDLER]: Trying to store field {0} for {1} which is unexpectedly null", |
271 | fi.Name, row)); | 353 | fi.Name, row)); |
272 | 354 | ||
273 | if (constraintFields.Count > 0 && constraintFields.Contains(fi.Name)) | 355 | if (constraintFields.Count > 0 && constraintFields.Contains(fi.Name)) |
274 | { | 356 | { |
275 | constraints.Add(new KeyValuePair<string, string>(fi.Name, fi.GetValue(row).ToString())); | 357 | constraints.Add(new KeyValuePair<string, string>(fi.Name, fi.GetValue(row).ToString() )); |
276 | } | 358 | } |
277 | cmd.Parameters.Add(m_database.CreateParameter(fi.Name, fi.GetValue(row).ToString())); | 359 | if (m_FieldTypes.ContainsKey(fi.Name)) |
360 | cmd.Parameters.Add(m_database.CreateParameter(fi.Name, fi.GetValue(row), m_FieldTypes[fi.Name])); | ||
361 | else | ||
362 | cmd.Parameters.Add(m_database.CreateParameter(fi.Name, fi.GetValue(row))); | ||
278 | } | 363 | } |
279 | 364 | ||
280 | if (m_DataField != null) | 365 | if (m_DataField != null) |
@@ -289,8 +374,12 @@ namespace OpenSim.Data.MSSQL | |||
289 | constraints.Add(new KeyValuePair<string, string>(kvp.Key, kvp.Key)); | 374 | constraints.Add(new KeyValuePair<string, string>(kvp.Key, kvp.Key)); |
290 | } | 375 | } |
291 | names.Add(kvp.Key); | 376 | names.Add(kvp.Key); |
292 | values.Add("@" + kvp.Key); | 377 | values.Add(":" + kvp.Key); |
293 | cmd.Parameters.Add(m_database.CreateParameter("@" + kvp.Key, kvp.Value)); | 378 | |
379 | if (m_FieldTypes.ContainsKey(kvp.Key)) | ||
380 | cmd.Parameters.Add(m_database.CreateParameter("" + kvp.Key, kvp.Value, m_FieldTypes[kvp.Key])); | ||
381 | else | ||
382 | cmd.Parameters.Add(m_database.CreateParameter("" + kvp.Key, kvp.Value)); | ||
294 | } | 383 | } |
295 | 384 | ||
296 | } | 385 | } |
@@ -299,15 +388,15 @@ namespace OpenSim.Data.MSSQL | |||
299 | int i = 0; | 388 | int i = 0; |
300 | for (i = 0; i < names.Count - 1; i++) | 389 | for (i = 0; i < names.Count - 1; i++) |
301 | { | 390 | { |
302 | query.AppendFormat("[{0}] = {1}, ", names[i], values[i]); | 391 | query.AppendFormat("\"{0}\" = {1}, ", names[i], values[i]); |
303 | } | 392 | } |
304 | query.AppendFormat("[{0}] = {1} ", names[i], values[i]); | 393 | query.AppendFormat("\"{0}\" = {1} ", names[i], values[i]); |
305 | if (constraints.Count > 0) | 394 | if (constraints.Count > 0) |
306 | { | 395 | { |
307 | List<string> terms = new List<string>(); | 396 | List<string> terms = new List<string>(); |
308 | for (int j = 0; j < constraints.Count; j++) | 397 | for (int j = 0; j < constraints.Count; j++) |
309 | { | 398 | { |
310 | terms.Add(" [" + constraints[j].Key + "] = @" + constraints[j].Key); | 399 | terms.Add(String.Format(" \"{0}\" = :{0}", constraints[j].Key)); |
311 | } | 400 | } |
312 | string where = String.Join(" AND ", terms.ToArray()); | 401 | string where = String.Join(" AND ", terms.ToArray()); |
313 | query.AppendFormat(" WHERE {0} ", where); | 402 | query.AppendFormat(" WHERE {0} ", where); |
@@ -319,7 +408,7 @@ namespace OpenSim.Data.MSSQL | |||
319 | conn.Open(); | 408 | conn.Open(); |
320 | if (cmd.ExecuteNonQuery() > 0) | 409 | if (cmd.ExecuteNonQuery() > 0) |
321 | { | 410 | { |
322 | //m_log.WarnFormat("[MSSQLGenericTable]: Updating {0}", m_Realm); | 411 | //m_log.WarnFormat("[PGSQLGenericTable]: Updating {0}", m_Realm); |
323 | return true; | 412 | return true; |
324 | } | 413 | } |
325 | else | 414 | else |
@@ -327,12 +416,14 @@ namespace OpenSim.Data.MSSQL | |||
327 | // assume record has not yet been inserted | 416 | // assume record has not yet been inserted |
328 | 417 | ||
329 | query = new StringBuilder(); | 418 | query = new StringBuilder(); |
330 | query.AppendFormat("INSERT INTO {0} ([", m_Realm); | 419 | query.AppendFormat("INSERT INTO {0} (\"", m_Realm); |
331 | query.Append(String.Join("],[", names.ToArray())); | 420 | query.Append(String.Join("\",\"", names.ToArray())); |
332 | query.Append("]) values (" + String.Join(",", values.ToArray()) + ")"); | 421 | query.Append("\") values (" + String.Join(",", values.ToArray()) + ")"); |
333 | cmd.Connection = conn; | 422 | cmd.Connection = conn; |
334 | cmd.CommandText = query.ToString(); | 423 | cmd.CommandText = query.ToString(); |
335 | //m_log.WarnFormat("[MSSQLGenericTable]: Inserting into {0}", m_Realm); | 424 | |
425 | // m_log.WarnFormat("[PGSQLGenericTable]: Inserting into {0} sql {1}", m_Realm, cmd.CommandText); | ||
426 | |||
336 | if (conn.State != ConnectionState.Open) | 427 | if (conn.State != ConnectionState.Open) |
337 | conn.Open(); | 428 | conn.Open(); |
338 | if (cmd.ExecuteNonQuery() > 0) | 429 | if (cmd.ExecuteNonQuery() > 0) |
@@ -355,13 +446,17 @@ namespace OpenSim.Data.MSSQL | |||
355 | 446 | ||
356 | List<string> terms = new List<string>(); | 447 | List<string> terms = new List<string>(); |
357 | 448 | ||
358 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 449 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
359 | using (SqlCommand cmd = new SqlCommand()) | 450 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
360 | { | 451 | { |
361 | for (int i = 0; i < fields.Length; i++) | 452 | for (int i = 0; i < fields.Length; i++) |
362 | { | 453 | { |
363 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i])); | 454 | if (m_FieldTypes.ContainsKey(fields[i])) |
364 | terms.Add("[" + fields[i] + "] = @" + fields[i]); | 455 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i], m_FieldTypes[fields[i]])); |
456 | else | ||
457 | cmd.Parameters.Add(m_database.CreateParameter(fields[i], keys[i])); | ||
458 | |||
459 | terms.Add(" \"" + fields[i] + "\" = :" + fields[i]); | ||
365 | } | 460 | } |
366 | 461 | ||
367 | string where = String.Join(" AND ", terms.ToArray()); | 462 | string where = String.Join(" AND ", terms.ToArray()); |
@@ -374,11 +469,69 @@ namespace OpenSim.Data.MSSQL | |||
374 | 469 | ||
375 | if (cmd.ExecuteNonQuery() > 0) | 470 | if (cmd.ExecuteNonQuery() > 0) |
376 | { | 471 | { |
377 | //m_log.Warn("[MSSQLGenericTable]: " + deleteCommand); | 472 | //m_log.Warn("[PGSQLGenericTable]: " + deleteCommand); |
378 | return true; | 473 | return true; |
379 | } | 474 | } |
380 | return false; | 475 | return false; |
381 | } | 476 | } |
382 | } | 477 | } |
478 | public long GetCount(string field, string key) | ||
479 | { | ||
480 | return GetCount(new string[] { field }, new string[] { key }); | ||
481 | } | ||
482 | |||
483 | public long GetCount(string[] fields, string[] keys) | ||
484 | { | ||
485 | if (fields.Length != keys.Length) | ||
486 | return 0; | ||
487 | |||
488 | List<string> terms = new List<string>(); | ||
489 | |||
490 | using (NpgsqlCommand cmd = new NpgsqlCommand()) | ||
491 | { | ||
492 | for (int i = 0; i < fields.Length; i++) | ||
493 | { | ||
494 | cmd.Parameters.AddWithValue(fields[i], keys[i]); | ||
495 | terms.Add("\"" + fields[i] + "\" = :" + fields[i]); | ||
496 | } | ||
497 | |||
498 | string where = String.Join(" and ", terms.ToArray()); | ||
499 | |||
500 | string query = String.Format("select count(*) from {0} where {1}", | ||
501 | m_Realm, where); | ||
502 | |||
503 | cmd.CommandText = query; | ||
504 | |||
505 | Object result = DoQueryScalar(cmd); | ||
506 | |||
507 | return Convert.ToInt64(result); | ||
508 | } | ||
509 | } | ||
510 | |||
511 | public long GetCount(string where) | ||
512 | { | ||
513 | using (NpgsqlCommand cmd = new NpgsqlCommand()) | ||
514 | { | ||
515 | string query = String.Format("select count(*) from {0} where {1}", | ||
516 | m_Realm, where); | ||
517 | |||
518 | cmd.CommandText = query; | ||
519 | |||
520 | object result = DoQueryScalar(cmd); | ||
521 | |||
522 | return Convert.ToInt64(result); | ||
523 | } | ||
524 | } | ||
525 | |||
526 | public object DoQueryScalar(NpgsqlCommand cmd) | ||
527 | { | ||
528 | using (NpgsqlConnection dbcon = new NpgsqlConnection(m_ConnectionString)) | ||
529 | { | ||
530 | dbcon.Open(); | ||
531 | cmd.Connection = dbcon; | ||
532 | |||
533 | return cmd.ExecuteScalar(); | ||
534 | } | ||
535 | } | ||
383 | } | 536 | } |
384 | } | 537 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLGridUserData.cs b/OpenSim/Data/PGSQL/PGSQLGridUserData.cs index 9e215f9..89319f3 100644 --- a/OpenSim/Data/MSSQL/MSSQLGridUserData.cs +++ b/OpenSim/Data/PGSQL/PGSQLGridUserData.cs | |||
@@ -33,24 +33,23 @@ using System.Threading; | |||
33 | using log4net; | 33 | using log4net; |
34 | using OpenMetaverse; | 34 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using System.Data.SqlClient; | ||
37 | 36 | ||
38 | namespace OpenSim.Data.MSSQL | 37 | namespace OpenSim.Data.PGSQL |
39 | { | 38 | { |
40 | /// <summary> | 39 | /// <summary> |
41 | /// A MSSQL Interface for Avatar Storage | 40 | /// A PGSQL Interface for Avatar Storage |
42 | /// </summary> | 41 | /// </summary> |
43 | public class MSSQLGridUserData : MSSQLGenericTableHandler<GridUserData>, | 42 | public class PGSQLGridUserData : PGSQLGenericTableHandler<GridUserData>, |
44 | IGridUserData | 43 | IGridUserData |
45 | { | 44 | { |
46 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 45 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
47 | 46 | ||
48 | public MSSQLGridUserData(string connectionString, string realm) : | 47 | public PGSQLGridUserData(string connectionString, string realm) : |
49 | base(connectionString, realm, "GridUserStore") | 48 | base(connectionString, realm, "GridUserStore") |
50 | { | 49 | { |
51 | } | 50 | } |
52 | 51 | ||
53 | public GridUserData Get(string userID) | 52 | public new GridUserData Get(string userID) |
54 | { | 53 | { |
55 | GridUserData[] ret = Get("UserID", userID); | 54 | GridUserData[] ret = Get("UserID", userID); |
56 | 55 | ||
@@ -60,5 +59,10 @@ namespace OpenSim.Data.MSSQL | |||
60 | return ret[0]; | 59 | return ret[0]; |
61 | } | 60 | } |
62 | 61 | ||
62 | public GridUserData[] GetAll(string userID) | ||
63 | { | ||
64 | return base.Get(String.Format("\"UserID\" LIKE '{0}%'", userID)); | ||
65 | } | ||
66 | |||
63 | } | 67 | } |
64 | } | 68 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLInventoryData.cs b/OpenSim/Data/PGSQL/PGSQLInventoryData.cs index 961593f..c999433 100644 --- a/OpenSim/Data/MSSQL/MSSQLInventoryData.cs +++ b/OpenSim/Data/PGSQL/PGSQLInventoryData.cs | |||
@@ -28,18 +28,18 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | 30 | using System.Data; |
31 | using System.Data.SqlClient; | ||
32 | using System.Reflection; | 31 | using System.Reflection; |
33 | using log4net; | 32 | using log4net; |
34 | using OpenMetaverse; | 33 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 34 | using OpenSim.Framework; |
35 | using Npgsql; | ||
36 | 36 | ||
37 | namespace OpenSim.Data.MSSQL | 37 | namespace OpenSim.Data.PGSQL |
38 | { | 38 | { |
39 | /// <summary> | 39 | /// <summary> |
40 | /// A MSSQL interface for the inventory server | 40 | /// A PGSQL interface for the inventory server |
41 | /// </summary> | 41 | /// </summary> |
42 | public class MSSQLInventoryData : IInventoryDataPlugin | 42 | public class PGSQLInventoryData : IInventoryDataPlugin |
43 | { | 43 | { |
44 | private const string _migrationStore = "InventoryStore"; | 44 | private const string _migrationStore = "InventoryStore"; |
45 | 45 | ||
@@ -48,7 +48,7 @@ namespace OpenSim.Data.MSSQL | |||
48 | /// <summary> | 48 | /// <summary> |
49 | /// The database manager | 49 | /// The database manager |
50 | /// </summary> | 50 | /// </summary> |
51 | private MSSQLManager database; | 51 | private PGSQLManager database; |
52 | private string m_connectionString; | 52 | private string m_connectionString; |
53 | 53 | ||
54 | #region IPlugin members | 54 | #region IPlugin members |
@@ -56,19 +56,19 @@ namespace OpenSim.Data.MSSQL | |||
56 | [Obsolete("Cannot be default-initialized!")] | 56 | [Obsolete("Cannot be default-initialized!")] |
57 | public void Initialise() | 57 | public void Initialise() |
58 | { | 58 | { |
59 | m_log.Info("[MSSQLInventoryData]: " + Name + " cannot be default-initialized!"); | 59 | m_log.Info("[PGSQLInventoryData]: " + Name + " cannot be default-initialized!"); |
60 | throw new PluginNotInitialisedException(Name); | 60 | throw new PluginNotInitialisedException(Name); |
61 | } | 61 | } |
62 | 62 | ||
63 | /// <summary> | 63 | /// <summary> |
64 | /// Loads and initialises the MSSQL inventory storage interface | 64 | /// Loads and initialises the PGSQL inventory storage interface |
65 | /// </summary> | 65 | /// </summary> |
66 | /// <param name="connectionString">connect string</param> | 66 | /// <param name="connectionString">connect string</param> |
67 | /// <remarks>use mssql_connection.ini</remarks> | 67 | /// <remarks>use PGSQL_connection.ini</remarks> |
68 | public void Initialise(string connectionString) | 68 | public void Initialise(string connectionString) |
69 | { | 69 | { |
70 | m_connectionString = connectionString; | 70 | m_connectionString = connectionString; |
71 | database = new MSSQLManager(connectionString); | 71 | database = new PGSQLManager(connectionString); |
72 | 72 | ||
73 | //New migrations check of store | 73 | //New migrations check of store |
74 | database.CheckMigration(_migrationStore); | 74 | database.CheckMigration(_migrationStore); |
@@ -80,7 +80,7 @@ namespace OpenSim.Data.MSSQL | |||
80 | /// <returns>A string containing the name of the DB provider</returns> | 80 | /// <returns>A string containing the name of the DB provider</returns> |
81 | public string Name | 81 | public string Name |
82 | { | 82 | { |
83 | get { return "MSSQL Inventory Data Interface"; } | 83 | get { return "PGSQL Inventory Data Interface"; } |
84 | } | 84 | } |
85 | 85 | ||
86 | /// <summary> | 86 | /// <summary> |
@@ -158,13 +158,13 @@ namespace OpenSim.Data.MSSQL | |||
158 | /// <returns>A folder class</returns> | 158 | /// <returns>A folder class</returns> |
159 | public InventoryFolderBase getInventoryFolder(UUID folderID) | 159 | public InventoryFolderBase getInventoryFolder(UUID folderID) |
160 | { | 160 | { |
161 | string sql = "SELECT * FROM inventoryfolders WHERE folderID = @folderID"; | 161 | string sql = "SELECT * FROM inventoryfolders WHERE \"folderID\" = :folderID"; |
162 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 162 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
163 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 163 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
164 | { | 164 | { |
165 | cmd.Parameters.Add(database.CreateParameter("folderID", folderID)); | 165 | cmd.Parameters.Add(database.CreateParameter("folderID", folderID)); |
166 | conn.Open(); | 166 | conn.Open(); |
167 | using (SqlDataReader reader = cmd.ExecuteReader()) | 167 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
168 | { | 168 | { |
169 | if (reader.Read()) | 169 | if (reader.Read()) |
170 | { | 170 | { |
@@ -200,11 +200,11 @@ namespace OpenSim.Data.MSSQL | |||
200 | if (parentID == UUID.Zero) | 200 | if (parentID == UUID.Zero) |
201 | return folders; | 201 | return folders; |
202 | 202 | ||
203 | string sql = "SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID"; | 203 | string sql = "SELECT * FROM inventoryfolders WHERE \"parentFolderID\" = :parentID"; |
204 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 204 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
205 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 205 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
206 | { | 206 | { |
207 | cmd.Parameters.Add(database.CreateParameter("@parentID", parentID)); | 207 | cmd.Parameters.Add(database.CreateParameter("parentID", parentID)); |
208 | conn.Open(); | 208 | conn.Open(); |
209 | folders.AddRange(getInventoryFolders(cmd)); | 209 | folders.AddRange(getInventoryFolders(cmd)); |
210 | 210 | ||
@@ -228,8 +228,8 @@ namespace OpenSim.Data.MSSQL | |||
228 | /// <param name="folder">Folder to create</param> | 228 | /// <param name="folder">Folder to create</param> |
229 | public void addInventoryFolder(InventoryFolderBase folder) | 229 | public void addInventoryFolder(InventoryFolderBase folder) |
230 | { | 230 | { |
231 | string sql = @"INSERT INTO inventoryfolders ([folderID], [agentID], [parentFolderID], [folderName], [type], [version]) | 231 | string sql = "INSERT INTO inventoryfolders (\"folderID\", \"agentID\", \"parentFolderID\", \"folderName\", type, version) " + |
232 | VALUES (@folderID, @agentID, @parentFolderID, @folderName, @type, @version);"; | 232 | " VALUES (:folderID, :agentID, :parentFolderID, :folderName, :type, :version);"; |
233 | 233 | ||
234 | string folderName = folder.Name; | 234 | string folderName = folder.Name; |
235 | if (folderName.Length > 64) | 235 | if (folderName.Length > 64) |
@@ -237,8 +237,8 @@ namespace OpenSim.Data.MSSQL | |||
237 | folderName = folderName.Substring(0, 64); | 237 | folderName = folderName.Substring(0, 64); |
238 | m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length.ToString() + " to " + folderName.Length + " characters on add"); | 238 | m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length.ToString() + " to " + folderName.Length + " characters on add"); |
239 | } | 239 | } |
240 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 240 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
241 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 241 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
242 | { | 242 | { |
243 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); | 243 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); |
244 | cmd.Parameters.Add(database.CreateParameter("agentID", folder.Owner)); | 244 | cmd.Parameters.Add(database.CreateParameter("agentID", folder.Owner)); |
@@ -264,12 +264,12 @@ namespace OpenSim.Data.MSSQL | |||
264 | /// <param name="folder">Folder to update</param> | 264 | /// <param name="folder">Folder to update</param> |
265 | public void updateInventoryFolder(InventoryFolderBase folder) | 265 | public void updateInventoryFolder(InventoryFolderBase folder) |
266 | { | 266 | { |
267 | string sql = @"UPDATE inventoryfolders SET agentID = @agentID, | 267 | string sql = @"UPDATE inventoryfolders SET ""agentID"" = :agentID, |
268 | parentFolderID = @parentFolderID, | 268 | ""parentFolderID"" = :parentFolderID, |
269 | folderName = @folderName, | 269 | ""folderName"" = :folderName, |
270 | type = @type, | 270 | type = :type, |
271 | version = @version | 271 | version = :version |
272 | WHERE folderID = @folderID"; | 272 | WHERE folderID = :folderID"; |
273 | 273 | ||
274 | string folderName = folder.Name; | 274 | string folderName = folder.Name; |
275 | if (folderName.Length > 64) | 275 | if (folderName.Length > 64) |
@@ -277,8 +277,8 @@ namespace OpenSim.Data.MSSQL | |||
277 | folderName = folderName.Substring(0, 64); | 277 | folderName = folderName.Substring(0, 64); |
278 | m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length.ToString() + " to " + folderName.Length + " characters on update"); | 278 | m_log.Warn("[INVENTORY DB]: Name field truncated from " + folder.Name.Length.ToString() + " to " + folderName.Length + " characters on update"); |
279 | } | 279 | } |
280 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 280 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
281 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 281 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
282 | { | 282 | { |
283 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); | 283 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); |
284 | cmd.Parameters.Add(database.CreateParameter("agentID", folder.Owner)); | 284 | cmd.Parameters.Add(database.CreateParameter("agentID", folder.Owner)); |
@@ -304,9 +304,9 @@ namespace OpenSim.Data.MSSQL | |||
304 | /// <param name="folder">Folder to update</param> | 304 | /// <param name="folder">Folder to update</param> |
305 | public void moveInventoryFolder(InventoryFolderBase folder) | 305 | public void moveInventoryFolder(InventoryFolderBase folder) |
306 | { | 306 | { |
307 | string sql = @"UPDATE inventoryfolders SET parentFolderID = @parentFolderID WHERE folderID = @folderID"; | 307 | string sql = @"UPDATE inventoryfolders SET ""parentFolderID"" = :parentFolderID WHERE ""folderID"" = :folderID"; |
308 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 308 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
309 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 309 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
310 | { | 310 | { |
311 | cmd.Parameters.Add(database.CreateParameter("parentFolderID", folder.ParentID)); | 311 | cmd.Parameters.Add(database.CreateParameter("parentFolderID", folder.ParentID)); |
312 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); | 312 | cmd.Parameters.Add(database.CreateParameter("folderID", folder.ID)); |
@@ -328,13 +328,13 @@ namespace OpenSim.Data.MSSQL | |||
328 | /// <param name="folderID">Id of folder to delete</param> | 328 | /// <param name="folderID">Id of folder to delete</param> |
329 | public void deleteInventoryFolder(UUID folderID) | 329 | public void deleteInventoryFolder(UUID folderID) |
330 | { | 330 | { |
331 | string sql = "SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID"; | 331 | string sql = @"SELECT * FROM inventoryfolders WHERE ""parentFolderID"" = :parentID"; |
332 | 332 | ||
333 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 333 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
334 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 334 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
335 | { | 335 | { |
336 | List<InventoryFolderBase> subFolders; | 336 | List<InventoryFolderBase> subFolders; |
337 | cmd.Parameters.Add(database.CreateParameter("@parentID", UUID.Zero)); | 337 | cmd.Parameters.Add(database.CreateParameter("parentID", UUID.Zero)); |
338 | conn.Open(); | 338 | conn.Open(); |
339 | subFolders = getFolderHierarchy(folderID, cmd); | 339 | subFolders = getFolderHierarchy(folderID, cmd); |
340 | 340 | ||
@@ -363,15 +363,15 @@ namespace OpenSim.Data.MSSQL | |||
363 | /// <returns>A list containing inventory items</returns> | 363 | /// <returns>A list containing inventory items</returns> |
364 | public List<InventoryItemBase> getInventoryInFolder(UUID folderID) | 364 | public List<InventoryItemBase> getInventoryInFolder(UUID folderID) |
365 | { | 365 | { |
366 | string sql = "SELECT * FROM inventoryitems WHERE parentFolderID = @parentFolderID"; | 366 | string sql = @"SELECT * FROM inventoryitems WHERE ""parentFolderID"" = :parentFolderID"; |
367 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 367 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
368 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 368 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
369 | { | 369 | { |
370 | cmd.Parameters.Add(database.CreateParameter("parentFolderID", folderID)); | 370 | cmd.Parameters.Add(database.CreateParameter("parentFolderID", folderID)); |
371 | conn.Open(); | 371 | conn.Open(); |
372 | List<InventoryItemBase> items = new List<InventoryItemBase>(); | 372 | List<InventoryItemBase> items = new List<InventoryItemBase>(); |
373 | 373 | ||
374 | using (SqlDataReader reader = cmd.ExecuteReader()) | 374 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
375 | { | 375 | { |
376 | while (reader.Read()) | 376 | while (reader.Read()) |
377 | { | 377 | { |
@@ -389,13 +389,13 @@ namespace OpenSim.Data.MSSQL | |||
389 | /// <returns>An inventory item</returns> | 389 | /// <returns>An inventory item</returns> |
390 | public InventoryItemBase getInventoryItem(UUID itemID) | 390 | public InventoryItemBase getInventoryItem(UUID itemID) |
391 | { | 391 | { |
392 | string sql = "SELECT * FROM inventoryitems WHERE inventoryID = @inventoryID"; | 392 | string sql = @"SELECT * FROM inventoryitems WHERE ""inventoryID"" = :inventoryID"; |
393 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 393 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
394 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 394 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
395 | { | 395 | { |
396 | cmd.Parameters.Add(database.CreateParameter("inventoryID", itemID)); | 396 | cmd.Parameters.Add(database.CreateParameter("inventoryID", itemID)); |
397 | conn.Open(); | 397 | conn.Open(); |
398 | using (SqlDataReader reader = cmd.ExecuteReader()) | 398 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
399 | { | 399 | { |
400 | if (reader.Read()) | 400 | if (reader.Read()) |
401 | { | 401 | { |
@@ -421,15 +421,15 @@ namespace OpenSim.Data.MSSQL | |||
421 | } | 421 | } |
422 | 422 | ||
423 | string sql = @"INSERT INTO inventoryitems | 423 | string sql = @"INSERT INTO inventoryitems |
424 | ([inventoryID], [assetID], [assetType], [parentFolderID], [avatarID], [inventoryName], | 424 | (""inventoryID"", ""assetID"", ""assetType"", ""parentFolderID"", ""avatarID"", ""inventoryName"", |
425 | [inventoryDescription], [inventoryNextPermissions], [inventoryCurrentPermissions], | 425 | ""inventoryDescription"", ""inventoryNextPermissions"", ""inventoryCurrentPermissions"", |
426 | [invType], [creatorID], [inventoryBasePermissions], [inventoryEveryOnePermissions], [inventoryGroupPermissions], | 426 | ""invType"", ""creatorID"", ""inventoryBasePermissions"", ""inventoryEveryOnePermissions"", ""inventoryGroupPermissions"", |
427 | [salePrice], [saleType], [creationDate], [groupID], [groupOwned], [flags]) | 427 | ""salePrice"", ""SaleType"", ""creationDate"", ""groupID"", ""groupOwned"", flags) |
428 | VALUES | 428 | VALUES |
429 | (@inventoryID, @assetID, @assetType, @parentFolderID, @avatarID, @inventoryName, @inventoryDescription, | 429 | (:inventoryID, :assetID, :assetType, :parentFolderID, :avatarID, :inventoryName, :inventoryDescription, |
430 | @inventoryNextPermissions, @inventoryCurrentPermissions, @invType, @creatorID, | 430 | :inventoryNextPermissions, :inventoryCurrentPermissions, :invType, :creatorID, |
431 | @inventoryBasePermissions, @inventoryEveryOnePermissions, @inventoryGroupPermissions, @salePrice, @saleType, | 431 | :inventoryBasePermissions, :inventoryEveryOnePermissions, :inventoryGroupPermissions, :SalePrice, :SaleType, |
432 | @creationDate, @groupID, @groupOwned, @flags)"; | 432 | :creationDate, :groupID, :groupOwned, :flags)"; |
433 | 433 | ||
434 | string itemName = item.Name; | 434 | string itemName = item.Name; |
435 | if (item.Name.Length > 64) | 435 | if (item.Name.Length > 64) |
@@ -445,8 +445,8 @@ namespace OpenSim.Data.MSSQL | |||
445 | m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters"); | 445 | m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters"); |
446 | } | 446 | } |
447 | 447 | ||
448 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 448 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
449 | using (SqlCommand command = new SqlCommand(sql, conn)) | 449 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
450 | { | 450 | { |
451 | command.Parameters.Add(database.CreateParameter("inventoryID", item.ID)); | 451 | command.Parameters.Add(database.CreateParameter("inventoryID", item.ID)); |
452 | command.Parameters.Add(database.CreateParameter("assetID", item.AssetID)); | 452 | command.Parameters.Add(database.CreateParameter("assetID", item.AssetID)); |
@@ -462,8 +462,8 @@ namespace OpenSim.Data.MSSQL | |||
462 | command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions)); | 462 | command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions)); |
463 | command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions)); | 463 | command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions)); |
464 | command.Parameters.Add(database.CreateParameter("inventoryGroupPermissions", item.GroupPermissions)); | 464 | command.Parameters.Add(database.CreateParameter("inventoryGroupPermissions", item.GroupPermissions)); |
465 | command.Parameters.Add(database.CreateParameter("salePrice", item.SalePrice)); | 465 | command.Parameters.Add(database.CreateParameter("SalePrice", item.SalePrice)); |
466 | command.Parameters.Add(database.CreateParameter("saleType", item.SaleType)); | 466 | command.Parameters.Add(database.CreateParameter("SaleType", item.SaleType)); |
467 | command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate)); | 467 | command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate)); |
468 | command.Parameters.Add(database.CreateParameter("groupID", item.GroupID)); | 468 | command.Parameters.Add(database.CreateParameter("groupID", item.GroupID)); |
469 | command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned)); | 469 | command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned)); |
@@ -479,9 +479,9 @@ namespace OpenSim.Data.MSSQL | |||
479 | } | 479 | } |
480 | } | 480 | } |
481 | 481 | ||
482 | sql = "UPDATE inventoryfolders SET version = version + 1 WHERE folderID = @folderID"; | 482 | sql = @"UPDATE inventoryfolders SET version = version + 1 WHERE ""folderID"" = @folderID"; |
483 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 483 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
484 | using (SqlCommand command = new SqlCommand(sql, conn)) | 484 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
485 | { | 485 | { |
486 | command.Parameters.Add(database.CreateParameter("folderID", item.Folder.ToString())); | 486 | command.Parameters.Add(database.CreateParameter("folderID", item.Folder.ToString())); |
487 | conn.Open(); | 487 | conn.Open(); |
@@ -502,26 +502,26 @@ namespace OpenSim.Data.MSSQL | |||
502 | /// <param name="item">Inventory item to update</param> | 502 | /// <param name="item">Inventory item to update</param> |
503 | public void updateInventoryItem(InventoryItemBase item) | 503 | public void updateInventoryItem(InventoryItemBase item) |
504 | { | 504 | { |
505 | string sql = @"UPDATE inventoryitems SET assetID = @assetID, | 505 | string sql = @"UPDATE inventoryitems SET ""assetID"" = :assetID, |
506 | assetType = @assetType, | 506 | ""assetType"" = :assetType, |
507 | parentFolderID = @parentFolderID, | 507 | ""parentFolderID"" = :parentFolderID, |
508 | avatarID = @avatarID, | 508 | ""avatarID"" = :avatarID, |
509 | inventoryName = @inventoryName, | 509 | ""inventoryName"" = :inventoryName, |
510 | inventoryDescription = @inventoryDescription, | 510 | ""inventoryDescription"" = :inventoryDescription, |
511 | inventoryNextPermissions = @inventoryNextPermissions, | 511 | ""inventoryNextPermissions"" = :inventoryNextPermissions, |
512 | inventoryCurrentPermissions = @inventoryCurrentPermissions, | 512 | ""inventoryCurrentPermissions"" = :inventoryCurrentPermissions, |
513 | invType = @invType, | 513 | ""invType"" = :invType, |
514 | creatorID = @creatorID, | 514 | ""creatorID"" = :creatorID, |
515 | inventoryBasePermissions = @inventoryBasePermissions, | 515 | ""inventoryBasePermissions"" = :inventoryBasePermissions, |
516 | inventoryEveryOnePermissions = @inventoryEveryOnePermissions, | 516 | ""inventoryEveryOnePermissions"" = :inventoryEveryOnePermissions, |
517 | inventoryGroupPermissions = @inventoryGroupPermissions, | 517 | ""inventoryGroupPermissions"" = :inventoryGroupPermissions, |
518 | salePrice = @salePrice, | 518 | ""salePrice"" = :SalePrice, |
519 | saleType = @saleType, | 519 | ""saleType"" = :SaleType, |
520 | creationDate = @creationDate, | 520 | ""creationDate"" = :creationDate, |
521 | groupID = @groupID, | 521 | ""groupID"" = :groupID, |
522 | groupOwned = @groupOwned, | 522 | ""groupOwned"" = :groupOwned, |
523 | flags = @flags | 523 | flags = :flags |
524 | WHERE inventoryID = @inventoryID"; | 524 | WHERE ""inventoryID"" = :inventoryID"; |
525 | 525 | ||
526 | string itemName = item.Name; | 526 | string itemName = item.Name; |
527 | if (item.Name.Length > 64) | 527 | if (item.Name.Length > 64) |
@@ -537,8 +537,8 @@ namespace OpenSim.Data.MSSQL | |||
537 | m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters on update"); | 537 | m_log.Warn("[INVENTORY DB]: Description field truncated from " + item.Description.Length.ToString() + " to " + itemDesc.Length.ToString() + " characters on update"); |
538 | } | 538 | } |
539 | 539 | ||
540 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 540 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
541 | using (SqlCommand command = new SqlCommand(sql, conn)) | 541 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
542 | { | 542 | { |
543 | command.Parameters.Add(database.CreateParameter("inventoryID", item.ID)); | 543 | command.Parameters.Add(database.CreateParameter("inventoryID", item.ID)); |
544 | command.Parameters.Add(database.CreateParameter("assetID", item.AssetID)); | 544 | command.Parameters.Add(database.CreateParameter("assetID", item.AssetID)); |
@@ -554,8 +554,8 @@ namespace OpenSim.Data.MSSQL | |||
554 | command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions)); | 554 | command.Parameters.Add(database.CreateParameter("inventoryBasePermissions", item.BasePermissions)); |
555 | command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions)); | 555 | command.Parameters.Add(database.CreateParameter("inventoryEveryOnePermissions", item.EveryOnePermissions)); |
556 | command.Parameters.Add(database.CreateParameter("inventoryGroupPermissions", item.GroupPermissions)); | 556 | command.Parameters.Add(database.CreateParameter("inventoryGroupPermissions", item.GroupPermissions)); |
557 | command.Parameters.Add(database.CreateParameter("salePrice", item.SalePrice)); | 557 | command.Parameters.Add(database.CreateParameter("SalePrice", item.SalePrice)); |
558 | command.Parameters.Add(database.CreateParameter("saleType", item.SaleType)); | 558 | command.Parameters.Add(database.CreateParameter("SaleType", item.SaleType)); |
559 | command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate)); | 559 | command.Parameters.Add(database.CreateParameter("creationDate", item.CreationDate)); |
560 | command.Parameters.Add(database.CreateParameter("groupID", item.GroupID)); | 560 | command.Parameters.Add(database.CreateParameter("groupID", item.GroupID)); |
561 | command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned)); | 561 | command.Parameters.Add(database.CreateParameter("groupOwned", item.GroupOwned)); |
@@ -580,9 +580,9 @@ namespace OpenSim.Data.MSSQL | |||
580 | /// <param name="itemID">the item UUID</param> | 580 | /// <param name="itemID">the item UUID</param> |
581 | public void deleteInventoryItem(UUID itemID) | 581 | public void deleteInventoryItem(UUID itemID) |
582 | { | 582 | { |
583 | string sql = "DELETE FROM inventoryitems WHERE inventoryID=@inventoryID"; | 583 | string sql = @"DELETE FROM inventoryitems WHERE ""inventoryID""=:inventoryID"; |
584 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 584 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
585 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 585 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
586 | { | 586 | { |
587 | cmd.Parameters.Add(database.CreateParameter("inventoryID", itemID)); | 587 | cmd.Parameters.Add(database.CreateParameter("inventoryID", itemID)); |
588 | try | 588 | try |
@@ -616,14 +616,14 @@ namespace OpenSim.Data.MSSQL | |||
616 | /// </returns> | 616 | /// </returns> |
617 | public List<InventoryItemBase> fetchActiveGestures(UUID avatarID) | 617 | public List<InventoryItemBase> fetchActiveGestures(UUID avatarID) |
618 | { | 618 | { |
619 | string sql = "SELECT * FROM inventoryitems WHERE avatarId = @uuid AND assetType = @assetType and flags = 1"; | 619 | string sql = @"SELECT * FROM inventoryitems WHERE ""avatarID"" = :uuid AND ""assetType"" = :assetType and flags = 1"; |
620 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 620 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
621 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 621 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
622 | { | 622 | { |
623 | cmd.Parameters.Add(database.CreateParameter("uuid", avatarID)); | 623 | cmd.Parameters.Add(database.CreateParameter("uuid", avatarID)); |
624 | cmd.Parameters.Add(database.CreateParameter("assetType", (int)AssetType.Gesture)); | 624 | cmd.Parameters.Add(database.CreateParameter("assetType", (int)AssetType.Gesture)); |
625 | conn.Open(); | 625 | conn.Open(); |
626 | using (SqlDataReader reader = cmd.ExecuteReader()) | 626 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
627 | { | 627 | { |
628 | List<InventoryItemBase> gestureList = new List<InventoryItemBase>(); | 628 | List<InventoryItemBase> gestureList = new List<InventoryItemBase>(); |
629 | while (reader.Read()) | 629 | while (reader.Read()) |
@@ -644,9 +644,9 @@ namespace OpenSim.Data.MSSQL | |||
644 | /// </summary> | 644 | /// </summary> |
645 | /// <param name="folderID">the item ID</param> | 645 | /// <param name="folderID">the item ID</param> |
646 | /// <param name="connection">connection to the database</param> | 646 | /// <param name="connection">connection to the database</param> |
647 | private void DeleteItemsInFolder(UUID folderID, SqlConnection connection) | 647 | private void DeleteItemsInFolder(UUID folderID, NpgsqlConnection connection) |
648 | { | 648 | { |
649 | using (SqlCommand command = new SqlCommand("DELETE FROM inventoryitems WHERE folderID=@folderID", connection)) | 649 | using (NpgsqlCommand command = new NpgsqlCommand(@"DELETE FROM inventoryitems WHERE ""folderID""=:folderID", connection)) |
650 | { | 650 | { |
651 | command.Parameters.Add(database.CreateParameter("folderID", folderID)); | 651 | command.Parameters.Add(database.CreateParameter("folderID", folderID)); |
652 | 652 | ||
@@ -667,9 +667,9 @@ namespace OpenSim.Data.MSSQL | |||
667 | /// <param name="parentID">parent ID.</param> | 667 | /// <param name="parentID">parent ID.</param> |
668 | /// <param name="command">SQL command/connection to database</param> | 668 | /// <param name="command">SQL command/connection to database</param> |
669 | /// <returns></returns> | 669 | /// <returns></returns> |
670 | private static List<InventoryFolderBase> getFolderHierarchy(UUID parentID, SqlCommand command) | 670 | private static List<InventoryFolderBase> getFolderHierarchy(UUID parentID, NpgsqlCommand command) |
671 | { | 671 | { |
672 | command.Parameters["@parentID"].Value = parentID.Guid; //.ToString(); | 672 | command.Parameters["parentID"].Value = parentID.Guid; //.ToString(); |
673 | 673 | ||
674 | List<InventoryFolderBase> folders = getInventoryFolders(command); | 674 | List<InventoryFolderBase> folders = getInventoryFolders(command); |
675 | 675 | ||
@@ -698,9 +698,9 @@ namespace OpenSim.Data.MSSQL | |||
698 | /// <returns></returns> | 698 | /// <returns></returns> |
699 | private List<InventoryFolderBase> getInventoryFolders(UUID parentID, UUID user) | 699 | private List<InventoryFolderBase> getInventoryFolders(UUID parentID, UUID user) |
700 | { | 700 | { |
701 | string sql = "SELECT * FROM inventoryfolders WHERE parentFolderID = @parentID AND agentID LIKE @uuid"; | 701 | string sql = @"SELECT * FROM inventoryfolders WHERE ""parentFolderID"" = :parentID AND ""agentID"" = :uuid"; |
702 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 702 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
703 | using (SqlCommand command = new SqlCommand(sql, conn)) | 703 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
704 | { | 704 | { |
705 | if (user == UUID.Zero) | 705 | if (user == UUID.Zero) |
706 | { | 706 | { |
@@ -721,9 +721,9 @@ namespace OpenSim.Data.MSSQL | |||
721 | /// </summary> | 721 | /// </summary> |
722 | /// <param name="command">SQLcommand.</param> | 722 | /// <param name="command">SQLcommand.</param> |
723 | /// <returns></returns> | 723 | /// <returns></returns> |
724 | private static List<InventoryFolderBase> getInventoryFolders(SqlCommand command) | 724 | private static List<InventoryFolderBase> getInventoryFolders(NpgsqlCommand command) |
725 | { | 725 | { |
726 | using (SqlDataReader reader = command.ExecuteReader()) | 726 | using (NpgsqlDataReader reader = command.ExecuteReader()) |
727 | { | 727 | { |
728 | 728 | ||
729 | List<InventoryFolderBase> items = new List<InventoryFolderBase>(); | 729 | List<InventoryFolderBase> items = new List<InventoryFolderBase>(); |
@@ -738,9 +738,9 @@ namespace OpenSim.Data.MSSQL | |||
738 | /// <summary> | 738 | /// <summary> |
739 | /// Reads a list of inventory folders returned by a query. | 739 | /// Reads a list of inventory folders returned by a query. |
740 | /// </summary> | 740 | /// </summary> |
741 | /// <param name="reader">A MSSQL Data Reader</param> | 741 | /// <param name="reader">A PGSQL Data Reader</param> |
742 | /// <returns>A List containing inventory folders</returns> | 742 | /// <returns>A List containing inventory folders</returns> |
743 | protected static InventoryFolderBase readInventoryFolder(SqlDataReader reader) | 743 | protected static InventoryFolderBase readInventoryFolder(NpgsqlDataReader reader) |
744 | { | 744 | { |
745 | try | 745 | try |
746 | { | 746 | { |
@@ -796,7 +796,7 @@ namespace OpenSim.Data.MSSQL | |||
796 | 796 | ||
797 | return item; | 797 | return item; |
798 | } | 798 | } |
799 | catch (SqlException e) | 799 | catch (NpgsqlException e) |
800 | { | 800 | { |
801 | m_log.Error("[INVENTORY DB]: Error reading inventory item :" + e.Message); | 801 | m_log.Error("[INVENTORY DB]: Error reading inventory item :" + e.Message); |
802 | } | 802 | } |
@@ -809,18 +809,18 @@ namespace OpenSim.Data.MSSQL | |||
809 | /// </summary> | 809 | /// </summary> |
810 | /// <param name="folderID">the folder UUID</param> | 810 | /// <param name="folderID">the folder UUID</param> |
811 | /// <param name="connection">connection to database</param> | 811 | /// <param name="connection">connection to database</param> |
812 | private void DeleteOneFolder(UUID folderID, SqlConnection connection) | 812 | private void DeleteOneFolder(UUID folderID, NpgsqlConnection connection) |
813 | { | 813 | { |
814 | try | 814 | try |
815 | { | 815 | { |
816 | using (SqlCommand command = new SqlCommand("DELETE FROM inventoryfolders WHERE folderID=@folderID and type=-1", connection)) | 816 | using (NpgsqlCommand command = new NpgsqlCommand(@"DELETE FROM inventoryfolders WHERE ""folderID""=:folderID and type=-1", connection)) |
817 | { | 817 | { |
818 | command.Parameters.Add(database.CreateParameter("folderID", folderID)); | 818 | command.Parameters.Add(database.CreateParameter("folderID", folderID)); |
819 | 819 | ||
820 | command.ExecuteNonQuery(); | 820 | command.ExecuteNonQuery(); |
821 | } | 821 | } |
822 | } | 822 | } |
823 | catch (SqlException e) | 823 | catch (NpgsqlException e) |
824 | { | 824 | { |
825 | m_log.Error("[INVENTORY DB]: Error deleting folder :" + e.Message); | 825 | m_log.Error("[INVENTORY DB]: Error deleting folder :" + e.Message); |
826 | } | 826 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLManager.cs b/OpenSim/Data/PGSQL/PGSQLManager.cs index 9a0015c..46f835a 100644 --- a/OpenSim/Data/MSSQL/MSSQLManager.cs +++ b/OpenSim/Data/PGSQL/PGSQLManager.cs | |||
@@ -28,18 +28,20 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | 30 | using System.Data; |
31 | using System.Data.SqlClient; | ||
32 | using System.IO; | 31 | using System.IO; |
33 | using System.Reflection; | 32 | using System.Reflection; |
33 | using OpenSim.Framework; | ||
34 | using log4net; | 34 | using log4net; |
35 | using OpenMetaverse; | 35 | using OpenMetaverse; |
36 | using Npgsql; | ||
37 | using NpgsqlTypes; | ||
36 | 38 | ||
37 | namespace OpenSim.Data.MSSQL | 39 | namespace OpenSim.Data.PGSQL |
38 | { | 40 | { |
39 | /// <summary> | 41 | /// <summary> |
40 | /// A management class for the MS SQL Storage Engine | 42 | /// A management class for the MS SQL Storage Engine |
41 | /// </summary> | 43 | /// </summary> |
42 | public class MSSQLManager | 44 | public class PGSQLManager |
43 | { | 45 | { |
44 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 46 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
45 | 47 | ||
@@ -52,9 +54,37 @@ namespace OpenSim.Data.MSSQL | |||
52 | /// Initialize the manager and set the connectionstring | 54 | /// Initialize the manager and set the connectionstring |
53 | /// </summary> | 55 | /// </summary> |
54 | /// <param name="connection"></param> | 56 | /// <param name="connection"></param> |
55 | public MSSQLManager(string connection) | 57 | public PGSQLManager(string connection) |
56 | { | 58 | { |
57 | connectionString = connection; | 59 | connectionString = connection; |
60 | InitializeMonoSecurity(); | ||
61 | } | ||
62 | |||
63 | public void InitializeMonoSecurity() | ||
64 | { | ||
65 | if (!Util.IsPlatformMono) | ||
66 | { | ||
67 | if (AppDomain.CurrentDomain.GetData("MonoSecurityPostgresAdded") == null) | ||
68 | { | ||
69 | AppDomain.CurrentDomain.SetData("MonoSecurityPostgresAdded", "true"); | ||
70 | |||
71 | AppDomain currentDomain = AppDomain.CurrentDomain; | ||
72 | currentDomain.AssemblyResolve += new ResolveEventHandler(ResolveEventHandlerMonoSec); | ||
73 | } | ||
74 | } | ||
75 | } | ||
76 | |||
77 | private System.Reflection.Assembly ResolveEventHandlerMonoSec(object sender, ResolveEventArgs args) | ||
78 | { | ||
79 | Assembly MyAssembly = null; | ||
80 | |||
81 | if (args.Name.Substring(0, args.Name.IndexOf(",")) == "Mono.Security") | ||
82 | { | ||
83 | MyAssembly = Assembly.LoadFrom("lib/NET/Mono.Security.dll"); | ||
84 | } | ||
85 | |||
86 | //Return the loaded assembly. | ||
87 | return MyAssembly; | ||
58 | } | 88 | } |
59 | 89 | ||
60 | /// <summary> | 90 | /// <summary> |
@@ -62,54 +92,97 @@ namespace OpenSim.Data.MSSQL | |||
62 | /// </summary> | 92 | /// </summary> |
63 | /// <param name="type"></param> | 93 | /// <param name="type"></param> |
64 | /// <returns></returns> | 94 | /// <returns></returns> |
65 | internal SqlDbType DbtypeFromType(Type type) | 95 | internal NpgsqlDbType DbtypeFromType(Type type) |
66 | { | 96 | { |
67 | if (type == typeof(string)) | 97 | if (type == typeof(string)) |
68 | { | 98 | { |
69 | return SqlDbType.VarChar; | 99 | return NpgsqlDbType.Varchar; |
70 | } | 100 | } |
71 | if (type == typeof(double)) | 101 | if (type == typeof(double)) |
72 | { | 102 | { |
73 | return SqlDbType.Float; | 103 | return NpgsqlDbType.Double; |
74 | } | 104 | } |
75 | if (type == typeof(Single)) | 105 | if (type == typeof(Single)) |
76 | { | 106 | { |
77 | return SqlDbType.Float; | 107 | return NpgsqlDbType.Double; |
78 | } | 108 | } |
79 | if (type == typeof(int)) | 109 | if (type == typeof(int)) |
80 | { | 110 | { |
81 | return SqlDbType.Int; | 111 | return NpgsqlDbType.Integer; |
82 | } | 112 | } |
83 | if (type == typeof(bool)) | 113 | if (type == typeof(bool)) |
84 | { | 114 | { |
85 | return SqlDbType.Bit; | 115 | return NpgsqlDbType.Boolean; |
86 | } | 116 | } |
87 | if (type == typeof(UUID)) | 117 | if (type == typeof(UUID)) |
88 | { | 118 | { |
89 | return SqlDbType.UniqueIdentifier; | 119 | return NpgsqlDbType.Uuid; |
120 | } | ||
121 | if (type == typeof(byte)) | ||
122 | { | ||
123 | return NpgsqlDbType.Smallint; | ||
90 | } | 124 | } |
91 | if (type == typeof(sbyte)) | 125 | if (type == typeof(sbyte)) |
92 | { | 126 | { |
93 | return SqlDbType.Int; | 127 | return NpgsqlDbType.Integer; |
94 | } | 128 | } |
95 | if (type == typeof(Byte[])) | 129 | if (type == typeof(Byte[])) |
96 | { | 130 | { |
97 | return SqlDbType.Image; | 131 | return NpgsqlDbType.Bytea; |
98 | } | 132 | } |
99 | if (type == typeof(uint) || type == typeof(ushort)) | 133 | if (type == typeof(uint) || type == typeof(ushort)) |
100 | { | 134 | { |
101 | return SqlDbType.Int; | 135 | return NpgsqlDbType.Integer; |
102 | } | 136 | } |
103 | if (type == typeof(ulong)) | 137 | if (type == typeof(ulong)) |
104 | { | 138 | { |
105 | return SqlDbType.BigInt; | 139 | return NpgsqlDbType.Bigint; |
106 | } | 140 | } |
107 | if (type == typeof(DateTime)) | 141 | if (type == typeof(DateTime)) |
108 | { | 142 | { |
109 | return SqlDbType.DateTime; | 143 | return NpgsqlDbType.Timestamp; |
110 | } | 144 | } |
111 | 145 | ||
112 | return SqlDbType.VarChar; | 146 | return NpgsqlDbType.Varchar; |
147 | } | ||
148 | |||
149 | internal NpgsqlDbType DbtypeFromString(Type type, string PGFieldType) | ||
150 | { | ||
151 | if (PGFieldType == "") | ||
152 | { | ||
153 | return DbtypeFromType(type); | ||
154 | } | ||
155 | |||
156 | if (PGFieldType == "character varying") | ||
157 | { | ||
158 | return NpgsqlDbType.Varchar; | ||
159 | } | ||
160 | if (PGFieldType == "double precision") | ||
161 | { | ||
162 | return NpgsqlDbType.Double; | ||
163 | } | ||
164 | if (PGFieldType == "integer") | ||
165 | { | ||
166 | return NpgsqlDbType.Integer; | ||
167 | } | ||
168 | if (PGFieldType == "smallint") | ||
169 | { | ||
170 | return NpgsqlDbType.Smallint; | ||
171 | } | ||
172 | if (PGFieldType == "boolean") | ||
173 | { | ||
174 | return NpgsqlDbType.Boolean; | ||
175 | } | ||
176 | if (PGFieldType == "uuid") | ||
177 | { | ||
178 | return NpgsqlDbType.Uuid; | ||
179 | } | ||
180 | if (PGFieldType == "bytea") | ||
181 | { | ||
182 | return NpgsqlDbType.Bytea; | ||
183 | } | ||
184 | |||
185 | return DbtypeFromType(type); | ||
113 | } | 186 | } |
114 | 187 | ||
115 | /// <summary> | 188 | /// <summary> |
@@ -131,7 +204,7 @@ namespace OpenSim.Data.MSSQL | |||
131 | } | 204 | } |
132 | if (valueType == typeof(bool)) | 205 | if (valueType == typeof(bool)) |
133 | { | 206 | { |
134 | return (bool)value ? 1 : 0; | 207 | return (bool)value; |
135 | } | 208 | } |
136 | if (valueType == typeof(Byte[])) | 209 | if (valueType == typeof(Byte[])) |
137 | { | 210 | { |
@@ -145,12 +218,51 @@ namespace OpenSim.Data.MSSQL | |||
145 | } | 218 | } |
146 | 219 | ||
147 | /// <summary> | 220 | /// <summary> |
221 | /// Create value for parameter based on PGSQL Schema | ||
222 | /// </summary> | ||
223 | /// <param name="value"></param> | ||
224 | /// <param name="PGFieldType"></param> | ||
225 | /// <returns></returns> | ||
226 | internal static object CreateParameterValue(object value, string PGFieldType) | ||
227 | { | ||
228 | if (PGFieldType == "uuid") | ||
229 | { | ||
230 | UUID uidout; | ||
231 | UUID.TryParse(value.ToString(), out uidout); | ||
232 | return uidout; | ||
233 | } | ||
234 | if (PGFieldType == "integer") | ||
235 | { | ||
236 | int intout; | ||
237 | int.TryParse(value.ToString(), out intout); | ||
238 | return intout; | ||
239 | } | ||
240 | if (PGFieldType == "boolean") | ||
241 | { | ||
242 | return (value.ToString() == "true"); | ||
243 | } | ||
244 | if (PGFieldType == "timestamp with time zone") | ||
245 | { | ||
246 | return (DateTime)value; | ||
247 | } | ||
248 | if (PGFieldType == "timestamp without time zone") | ||
249 | { | ||
250 | return (DateTime)value; | ||
251 | } | ||
252 | if (PGFieldType == "double precision") | ||
253 | { | ||
254 | return (Double)value; | ||
255 | } | ||
256 | return CreateParameterValue(value); | ||
257 | } | ||
258 | |||
259 | /// <summary> | ||
148 | /// Create a parameter for a command | 260 | /// Create a parameter for a command |
149 | /// </summary> | 261 | /// </summary> |
150 | /// <param name="parameterName">Name of the parameter.</param> | 262 | /// <param name="parameterName">Name of the parameter.</param> |
151 | /// <param name="parameterObject">parameter object.</param> | 263 | /// <param name="parameterObject">parameter object.</param> |
152 | /// <returns></returns> | 264 | /// <returns></returns> |
153 | internal SqlParameter CreateParameter(string parameterName, object parameterObject) | 265 | internal NpgsqlParameter CreateParameter(string parameterName, object parameterObject) |
154 | { | 266 | { |
155 | return CreateParameter(parameterName, parameterObject, false); | 267 | return CreateParameter(parameterName, parameterObject, false); |
156 | } | 268 | } |
@@ -162,15 +274,15 @@ namespace OpenSim.Data.MSSQL | |||
162 | /// <param name="parameterObject">parameter object.</param> | 274 | /// <param name="parameterObject">parameter object.</param> |
163 | /// <param name="parameterOut">if set to <c>true</c> parameter is a output parameter</param> | 275 | /// <param name="parameterOut">if set to <c>true</c> parameter is a output parameter</param> |
164 | /// <returns></returns> | 276 | /// <returns></returns> |
165 | internal SqlParameter CreateParameter(string parameterName, object parameterObject, bool parameterOut) | 277 | internal NpgsqlParameter CreateParameter(string parameterName, object parameterObject, bool parameterOut) |
166 | { | 278 | { |
167 | //Tweak so we dont always have to add @ sign | 279 | //Tweak so we dont always have to add : sign |
168 | if (!parameterName.StartsWith("@")) parameterName = "@" + parameterName; | 280 | if (parameterName.StartsWith(":")) parameterName = parameterName.Replace(":",""); |
169 | 281 | ||
170 | //HACK if object is null, it is turned into a string, there are no nullable type till now | 282 | //HACK if object is null, it is turned into a string, there are no nullable type till now |
171 | if (parameterObject == null) parameterObject = ""; | 283 | if (parameterObject == null) parameterObject = ""; |
172 | 284 | ||
173 | SqlParameter parameter = new SqlParameter(parameterName, DbtypeFromType(parameterObject.GetType())); | 285 | NpgsqlParameter parameter = new NpgsqlParameter(parameterName, DbtypeFromType(parameterObject.GetType())); |
174 | 286 | ||
175 | if (parameterOut) | 287 | if (parameterOut) |
176 | { | 288 | { |
@@ -186,16 +298,39 @@ namespace OpenSim.Data.MSSQL | |||
186 | } | 298 | } |
187 | 299 | ||
188 | /// <summary> | 300 | /// <summary> |
301 | /// Create a parameter with PGSQL schema type | ||
302 | /// </summary> | ||
303 | /// <param name="parameterName"></param> | ||
304 | /// <param name="parameterObject"></param> | ||
305 | /// <param name="PGFieldType"></param> | ||
306 | /// <returns></returns> | ||
307 | internal NpgsqlParameter CreateParameter(string parameterName, object parameterObject, string PGFieldType) | ||
308 | { | ||
309 | //Tweak so we dont always have to add : sign | ||
310 | if (parameterName.StartsWith(":")) parameterName = parameterName.Replace(":", ""); | ||
311 | |||
312 | //HACK if object is null, it is turned into a string, there are no nullable type till now | ||
313 | if (parameterObject == null) parameterObject = ""; | ||
314 | |||
315 | NpgsqlParameter parameter = new NpgsqlParameter(parameterName, DbtypeFromString(parameterObject.GetType(), PGFieldType)); | ||
316 | |||
317 | parameter.Direction = ParameterDirection.Input; | ||
318 | parameter.Value = CreateParameterValue(parameterObject, PGFieldType); | ||
319 | |||
320 | return parameter; | ||
321 | } | ||
322 | |||
323 | /// <summary> | ||
189 | /// Checks if we need to do some migrations to the database | 324 | /// Checks if we need to do some migrations to the database |
190 | /// </summary> | 325 | /// </summary> |
191 | /// <param name="migrationStore">migrationStore.</param> | 326 | /// <param name="migrationStore">migrationStore.</param> |
192 | public void CheckMigration(string migrationStore) | 327 | public void CheckMigration(string migrationStore) |
193 | { | 328 | { |
194 | using (SqlConnection connection = new SqlConnection(connectionString)) | 329 | using (NpgsqlConnection connection = new NpgsqlConnection(connectionString)) |
195 | { | 330 | { |
196 | connection.Open(); | 331 | connection.Open(); |
197 | Assembly assem = GetType().Assembly; | 332 | Assembly assem = GetType().Assembly; |
198 | MSSQLMigration migration = new MSSQLMigration(connection, assem, migrationStore); | 333 | PGSQLMigration migration = new PGSQLMigration(connection, assem, migrationStore); |
199 | 334 | ||
200 | migration.Update(); | 335 | migration.Update(); |
201 | } | 336 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLMigration.cs b/OpenSim/Data/PGSQL/PGSQLMigration.cs index c2fecef..709fde0 100644 --- a/OpenSim/Data/MSSQL/MSSQLMigration.cs +++ b/OpenSim/Data/PGSQL/PGSQLMigration.cs | |||
@@ -25,22 +25,22 @@ | |||
25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 | * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 | */ | 26 | */ |
27 | 27 | ||
28 | using Npgsql; | ||
28 | using System; | 29 | using System; |
29 | using System.Data; | 30 | using System.Data; |
30 | using System.Data.Common; | 31 | using System.Data.Common; |
31 | using System.Reflection; | 32 | using System.Reflection; |
32 | using System.Data.SqlClient; | ||
33 | 33 | ||
34 | namespace OpenSim.Data.MSSQL | 34 | namespace OpenSim.Data.PGSQL |
35 | { | 35 | { |
36 | public class MSSQLMigration : Migration | 36 | public class PGSQLMigration : Migration |
37 | { | 37 | { |
38 | public MSSQLMigration(DbConnection conn, Assembly assem, string type) | 38 | public PGSQLMigration(NpgsqlConnection conn, Assembly assem, string type) |
39 | : base(conn, assem, type) | 39 | : base(conn, assem, type) |
40 | { | 40 | { |
41 | } | 41 | } |
42 | 42 | ||
43 | public MSSQLMigration(DbConnection conn, Assembly assem, string subtype, string type) | 43 | public PGSQLMigration(NpgsqlConnection conn, Assembly assem, string subtype, string type) |
44 | : base(conn, assem, subtype, type) | 44 | : base(conn, assem, subtype, type) |
45 | { | 45 | { |
46 | } | 46 | } |
@@ -48,12 +48,15 @@ namespace OpenSim.Data.MSSQL | |||
48 | protected override int FindVersion(DbConnection conn, string type) | 48 | protected override int FindVersion(DbConnection conn, string type) |
49 | { | 49 | { |
50 | int version = 0; | 50 | int version = 0; |
51 | using (DbCommand cmd = conn.CreateCommand()) | 51 | NpgsqlConnection lcConn = (NpgsqlConnection)conn; |
52 | |||
53 | using (NpgsqlCommand cmd = lcConn.CreateCommand()) | ||
52 | { | 54 | { |
53 | try | 55 | try |
54 | { | 56 | { |
55 | cmd.CommandText = "select top 1 version from migrations where name = '" + type + "' order by version desc"; //Must be | 57 | cmd.CommandText = "select version from migrations where name = '" + type + "' " + |
56 | using (IDataReader reader = cmd.ExecuteReader()) | 58 | " order by version desc limit 1"; //Must be |
59 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) | ||
57 | { | 60 | { |
58 | if (reader.Read()) | 61 | if (reader.Read()) |
59 | { | 62 | { |
@@ -73,7 +76,7 @@ namespace OpenSim.Data.MSSQL | |||
73 | 76 | ||
74 | protected override void ExecuteScript(DbConnection conn, string[] script) | 77 | protected override void ExecuteScript(DbConnection conn, string[] script) |
75 | { | 78 | { |
76 | if (!(conn is SqlConnection)) | 79 | if (!(conn is NpgsqlConnection)) |
77 | { | 80 | { |
78 | base.ExecuteScript(conn, script); | 81 | base.ExecuteScript(conn, script); |
79 | return; | 82 | return; |
@@ -83,7 +86,7 @@ namespace OpenSim.Data.MSSQL | |||
83 | { | 86 | { |
84 | try | 87 | try |
85 | { | 88 | { |
86 | using (SqlCommand cmd = new SqlCommand(sql, (SqlConnection)conn)) | 89 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, (NpgsqlConnection)conn)) |
87 | { | 90 | { |
88 | cmd.ExecuteNonQuery(); | 91 | cmd.ExecuteNonQuery(); |
89 | } | 92 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs b/OpenSim/Data/PGSQL/PGSQLPresenceData.cs index 0c71e79..0376585 100644..100755 --- a/OpenSim/Data/MSSQL/MSSQLPresenceData.cs +++ b/OpenSim/Data/PGSQL/PGSQLPresenceData.cs | |||
@@ -33,27 +33,26 @@ using System.Threading; | |||
33 | using log4net; | 33 | using log4net; |
34 | using OpenMetaverse; | 34 | using OpenMetaverse; |
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using System.Data.SqlClient; | 36 | using Npgsql; |
37 | 37 | ||
38 | namespace OpenSim.Data.MSSQL | 38 | namespace OpenSim.Data.PGSQL |
39 | { | 39 | { |
40 | /// <summary> | 40 | /// <summary> |
41 | /// A MySQL Interface for the Presence Server | 41 | /// A PGSQL Interface for the Presence Server |
42 | /// </summary> | 42 | /// </summary> |
43 | public class MSSQLPresenceData : MSSQLGenericTableHandler<PresenceData>, | 43 | public class PGSQLPresenceData : PGSQLGenericTableHandler<PresenceData>, |
44 | IPresenceData | 44 | IPresenceData |
45 | { | 45 | { |
46 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 46 | // private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
47 | 47 | ||
48 | public MSSQLPresenceData(string connectionString, string realm) : | 48 | public PGSQLPresenceData(string connectionString, string realm) : |
49 | base(connectionString, realm, "Presence") | 49 | base(connectionString, realm, "Presence") |
50 | { | 50 | { |
51 | } | 51 | } |
52 | 52 | ||
53 | public PresenceData Get(UUID sessionID) | 53 | public PresenceData Get(UUID sessionID) |
54 | { | 54 | { |
55 | PresenceData[] ret = Get("SessionID", | 55 | PresenceData[] ret = Get("SessionID", sessionID.ToString()); |
56 | sessionID.ToString()); | ||
57 | 56 | ||
58 | if (ret.Length == 0) | 57 | if (ret.Length == 0) |
59 | return null; | 58 | return null; |
@@ -63,13 +62,13 @@ namespace OpenSim.Data.MSSQL | |||
63 | 62 | ||
64 | public void LogoutRegionAgents(UUID regionID) | 63 | public void LogoutRegionAgents(UUID regionID) |
65 | { | 64 | { |
66 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 65 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
67 | using (SqlCommand cmd = new SqlCommand()) | 66 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
68 | { | 67 | { |
69 | 68 | ||
70 | cmd.CommandText = String.Format("DELETE FROM {0} WHERE [RegionID]=@RegionID", m_Realm); | 69 | cmd.CommandText = String.Format("DELETE FROM {0} WHERE \"RegionID\" = :regionID", m_Realm); |
71 | 70 | ||
72 | cmd.Parameters.Add(m_database.CreateParameter("@RegionID", regionID.ToString())); | 71 | cmd.Parameters.Add(m_database.CreateParameter("RegionID", regionID)); |
73 | cmd.Connection = conn; | 72 | cmd.Connection = conn; |
74 | conn.Open(); | 73 | conn.Open(); |
75 | cmd.ExecuteNonQuery(); | 74 | cmd.ExecuteNonQuery(); |
@@ -81,17 +80,18 @@ namespace OpenSim.Data.MSSQL | |||
81 | PresenceData[] pd = Get("SessionID", sessionID.ToString()); | 80 | PresenceData[] pd = Get("SessionID", sessionID.ToString()); |
82 | if (pd.Length == 0) | 81 | if (pd.Length == 0) |
83 | return false; | 82 | return false; |
83 | |||
84 | if (regionID == UUID.Zero) | ||
85 | return false; | ||
84 | 86 | ||
85 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 87 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
86 | using (SqlCommand cmd = new SqlCommand()) | 88 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
87 | { | 89 | { |
88 | 90 | ||
89 | cmd.CommandText = String.Format(@"UPDATE {0} SET | 91 | cmd.CommandText = String.Format("UPDATE {0} SET \"RegionID\" = :regionID, \"LastSeen\" = now() WHERE \"SessionID\" = :sessionID", m_Realm); |
90 | [RegionID] = @RegionID | ||
91 | WHERE [SessionID] = @SessionID", m_Realm); | ||
92 | 92 | ||
93 | cmd.Parameters.Add(m_database.CreateParameter("@SessionID", sessionID.ToString())); | 93 | cmd.Parameters.Add(m_database.CreateParameter("SessionID", sessionID)); |
94 | cmd.Parameters.Add(m_database.CreateParameter("@RegionID", regionID.ToString())); | 94 | cmd.Parameters.Add(m_database.CreateParameter("RegionID", regionID)); |
95 | cmd.Connection = conn; | 95 | cmd.Connection = conn; |
96 | conn.Open(); | 96 | conn.Open(); |
97 | if (cmd.ExecuteNonQuery() == 0) | 97 | if (cmd.ExecuteNonQuery() == 0) |
@@ -102,8 +102,7 @@ namespace OpenSim.Data.MSSQL | |||
102 | 102 | ||
103 | public bool VerifyAgent(UUID agentId, UUID secureSessionID) | 103 | public bool VerifyAgent(UUID agentId, UUID secureSessionID) |
104 | { | 104 | { |
105 | PresenceData[] ret = Get("SecureSessionID", | 105 | PresenceData[] ret = Get("SecureSessionID", secureSessionID.ToString()); |
106 | secureSessionID.ToString()); | ||
107 | 106 | ||
108 | if (ret.Length == 0) | 107 | if (ret.Length == 0) |
109 | return false; | 108 | return false; |
diff --git a/OpenSim/Data/MSSQL/MSSQLRegionData.cs b/OpenSim/Data/PGSQL/PGSQLRegionData.cs index 0d89706..b3076f0 100644 --- a/OpenSim/Data/MSSQL/MSSQLRegionData.cs +++ b/OpenSim/Data/PGSQL/PGSQLRegionData.cs | |||
@@ -28,7 +28,6 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | 30 | using System.Data; |
31 | using System.Data.SqlClient; | ||
32 | using System.Drawing; | 31 | using System.Drawing; |
33 | using System.IO; | 32 | using System.IO; |
34 | using System.Reflection; | 33 | using System.Reflection; |
@@ -38,45 +37,80 @@ using OpenSim.Framework; | |||
38 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
39 | using OpenSim.Region.Framework.Scenes; | 38 | using OpenSim.Region.Framework.Scenes; |
40 | using RegionFlags = OpenSim.Framework.RegionFlags; | 39 | using RegionFlags = OpenSim.Framework.RegionFlags; |
40 | using Npgsql; | ||
41 | 41 | ||
42 | namespace OpenSim.Data.MSSQL | 42 | namespace OpenSim.Data.PGSQL |
43 | { | 43 | { |
44 | /// <summary> | 44 | /// <summary> |
45 | /// A MSSQL Interface for the Region Server. | 45 | /// A PGSQL Interface for the Region Server. |
46 | /// </summary> | 46 | /// </summary> |
47 | public class MSSQLRegionData : IRegionData | 47 | public class PGSQLRegionData : IRegionData |
48 | { | 48 | { |
49 | private string m_Realm; | 49 | private string m_Realm; |
50 | private List<string> m_ColumnNames = null; | 50 | private List<string> m_ColumnNames = null; |
51 | private string m_ConnectionString; | 51 | private string m_ConnectionString; |
52 | private MSSQLManager m_database; | 52 | private PGSQLManager m_database; |
53 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 53 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
54 | 54 | ||
55 | public MSSQLRegionData(string connectionString, string realm) | 55 | protected Dictionary<string, string> m_FieldTypes = new Dictionary<string, string>(); |
56 | |||
57 | protected virtual Assembly Assembly | ||
58 | { | ||
59 | get { return GetType().Assembly; } | ||
60 | } | ||
61 | |||
62 | public PGSQLRegionData(string connectionString, string realm) | ||
56 | { | 63 | { |
57 | m_Realm = realm; | 64 | m_Realm = realm; |
58 | m_ConnectionString = connectionString; | 65 | m_ConnectionString = connectionString; |
59 | m_database = new MSSQLManager(connectionString); | 66 | m_database = new PGSQLManager(connectionString); |
60 | 67 | ||
61 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 68 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
62 | { | 69 | { |
63 | conn.Open(); | 70 | conn.Open(); |
64 | Migration m = new Migration(conn, GetType().Assembly, "GridStore"); | 71 | Migration m = new Migration(conn, GetType().Assembly, "GridStore"); |
65 | m.Update(); | 72 | m.Update(); |
66 | } | 73 | } |
74 | LoadFieldTypes(); | ||
67 | } | 75 | } |
68 | 76 | ||
77 | private void LoadFieldTypes() | ||
78 | { | ||
79 | m_FieldTypes = new Dictionary<string, string>(); | ||
80 | |||
81 | string query = string.Format(@"select column_name,data_type | ||
82 | from INFORMATION_SCHEMA.COLUMNS | ||
83 | where table_name = lower('{0}'); | ||
84 | |||
85 | ", m_Realm); | ||
86 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) | ||
87 | using (NpgsqlCommand cmd = new NpgsqlCommand(query, conn)) | ||
88 | { | ||
89 | conn.Open(); | ||
90 | using (NpgsqlDataReader rdr = cmd.ExecuteReader()) | ||
91 | { | ||
92 | while (rdr.Read()) | ||
93 | { | ||
94 | // query produces 0 to many rows of single column, so always add the first item in each row | ||
95 | m_FieldTypes.Add((string)rdr[0], (string)rdr[1]); | ||
96 | } | ||
97 | } | ||
98 | } | ||
99 | } | ||
100 | |||
69 | public List<RegionData> Get(string regionName, UUID scopeID) | 101 | public List<RegionData> Get(string regionName, UUID scopeID) |
70 | { | 102 | { |
71 | string sql = "select * from ["+m_Realm+"] where regionName like @regionName"; | 103 | string sql = "select * from "+m_Realm+" where lower(\"regionName\") like lower(:regionName) "; |
72 | if (scopeID != UUID.Zero) | 104 | if (scopeID != UUID.Zero) |
73 | sql += " and ScopeID = @scopeID"; | 105 | sql += " and \"ScopeID\" = :scopeID"; |
74 | sql += " order by regionName"; | 106 | sql += " order by lower(\"regionName\")"; |
75 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 107 | |
76 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 108 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
109 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
77 | { | 110 | { |
78 | cmd.Parameters.Add(m_database.CreateParameter("@regionName", regionName)); | 111 | cmd.Parameters.Add(m_database.CreateParameter("regionName", regionName)); |
79 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | 112 | if (scopeID != UUID.Zero) |
113 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", scopeID)); | ||
80 | conn.Open(); | 114 | conn.Open(); |
81 | return RunCommand(cmd); | 115 | return RunCommand(cmd); |
82 | } | 116 | } |
@@ -84,16 +118,17 @@ namespace OpenSim.Data.MSSQL | |||
84 | 118 | ||
85 | public RegionData Get(int posX, int posY, UUID scopeID) | 119 | public RegionData Get(int posX, int posY, UUID scopeID) |
86 | { | 120 | { |
87 | string sql = "select * from ["+m_Realm+"] where locX = @posX and locY = @posY"; | 121 | string sql = "select * from "+m_Realm+" where \"locX\" = :posX and \"locY\" = :posY"; |
88 | if (scopeID != UUID.Zero) | 122 | if (scopeID != UUID.Zero) |
89 | sql += " and ScopeID = @scopeID"; | 123 | sql += " and \"ScopeID\" = :scopeID"; |
90 | 124 | ||
91 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 125 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
92 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 126 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
93 | { | 127 | { |
94 | cmd.Parameters.Add(m_database.CreateParameter("@posX", posX.ToString())); | 128 | cmd.Parameters.Add(m_database.CreateParameter("posX", posX)); |
95 | cmd.Parameters.Add(m_database.CreateParameter("@posY", posY.ToString())); | 129 | cmd.Parameters.Add(m_database.CreateParameter("posY", posY)); |
96 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | 130 | if (scopeID != UUID.Zero) |
131 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", scopeID)); | ||
97 | conn.Open(); | 132 | conn.Open(); |
98 | List<RegionData> ret = RunCommand(cmd); | 133 | List<RegionData> ret = RunCommand(cmd); |
99 | if (ret.Count == 0) | 134 | if (ret.Count == 0) |
@@ -105,14 +140,15 @@ namespace OpenSim.Data.MSSQL | |||
105 | 140 | ||
106 | public RegionData Get(UUID regionID, UUID scopeID) | 141 | public RegionData Get(UUID regionID, UUID scopeID) |
107 | { | 142 | { |
108 | string sql = "select * from ["+m_Realm+"] where uuid = @regionID"; | 143 | string sql = "select * from "+m_Realm+" where uuid = :regionID"; |
109 | if (scopeID != UUID.Zero) | 144 | if (scopeID != UUID.Zero) |
110 | sql += " and ScopeID = @scopeID"; | 145 | sql += " and \"ScopeID\" = :scopeID"; |
111 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 146 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
112 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 147 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
113 | { | 148 | { |
114 | cmd.Parameters.Add(m_database.CreateParameter("@regionID", regionID)); | 149 | cmd.Parameters.Add(m_database.CreateParameter("regionID", regionID)); |
115 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | 150 | if (scopeID != UUID.Zero) |
151 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", scopeID)); | ||
116 | conn.Open(); | 152 | conn.Open(); |
117 | List<RegionData> ret = RunCommand(cmd); | 153 | List<RegionData> ret = RunCommand(cmd); |
118 | if (ret.Count == 0) | 154 | if (ret.Count == 0) |
@@ -124,28 +160,28 @@ namespace OpenSim.Data.MSSQL | |||
124 | 160 | ||
125 | public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID) | 161 | public List<RegionData> Get(int startX, int startY, int endX, int endY, UUID scopeID) |
126 | { | 162 | { |
127 | string sql = "select * from ["+m_Realm+"] where locX between @startX and @endX and locY between @startY and @endY"; | 163 | string sql = "select * from "+m_Realm+" where \"locX\" between :startX and :endX and \"locY\" between :startY and :endY"; |
128 | if (scopeID != UUID.Zero) | 164 | if (scopeID != UUID.Zero) |
129 | sql += " and ScopeID = @scopeID"; | 165 | sql += " and \"ScopeID\" = :scopeID"; |
130 | 166 | ||
131 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 167 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
132 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 168 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
133 | { | 169 | { |
134 | cmd.Parameters.Add(m_database.CreateParameter("@startX", startX)); | 170 | cmd.Parameters.Add(m_database.CreateParameter("startX", startX)); |
135 | cmd.Parameters.Add(m_database.CreateParameter("@startY", startY)); | 171 | cmd.Parameters.Add(m_database.CreateParameter("startY", startY)); |
136 | cmd.Parameters.Add(m_database.CreateParameter("@endX", endX)); | 172 | cmd.Parameters.Add(m_database.CreateParameter("endX", endX)); |
137 | cmd.Parameters.Add(m_database.CreateParameter("@endY", endY)); | 173 | cmd.Parameters.Add(m_database.CreateParameter("endY", endY)); |
138 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | 174 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", scopeID)); |
139 | conn.Open(); | 175 | conn.Open(); |
140 | return RunCommand(cmd); | 176 | return RunCommand(cmd); |
141 | } | 177 | } |
142 | } | 178 | } |
143 | 179 | ||
144 | public List<RegionData> RunCommand(SqlCommand cmd) | 180 | public List<RegionData> RunCommand(NpgsqlCommand cmd) |
145 | { | 181 | { |
146 | List<RegionData> retList = new List<RegionData>(); | 182 | List<RegionData> retList = new List<RegionData>(); |
147 | 183 | ||
148 | SqlDataReader result = cmd.ExecuteReader(); | 184 | NpgsqlDataReader result = cmd.ExecuteReader(); |
149 | 185 | ||
150 | while (result.Read()) | 186 | while (result.Read()) |
151 | { | 187 | { |
@@ -217,43 +253,46 @@ namespace OpenSim.Data.MSSQL | |||
217 | 253 | ||
218 | string[] fields = new List<string>(data.Data.Keys).ToArray(); | 254 | string[] fields = new List<string>(data.Data.Keys).ToArray(); |
219 | 255 | ||
220 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 256 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
221 | using (SqlCommand cmd = new SqlCommand()) | 257 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
222 | { | 258 | { |
223 | 259 | ||
224 | string update = "update [" + m_Realm + "] set locX=@posX, locY=@posY, sizeX=@sizeX, sizeY=@sizeY "; | 260 | string update = "update " + m_Realm + " set \"locX\"=:posX, \"locY\"=:posY, \"sizeX\"=:sizeX, \"sizeY\"=:sizeY "; |
225 | 261 | ||
226 | foreach (string field in fields) | 262 | foreach (string field in fields) |
227 | { | 263 | { |
228 | 264 | ||
229 | update += ", "; | 265 | update += ", "; |
230 | update += "[" + field + "] = @" + field; | 266 | update += " \"" + field + "\" = :" + field; |
231 | 267 | ||
232 | cmd.Parameters.Add(m_database.CreateParameter("@" + field, data.Data[field])); | 268 | if (m_FieldTypes.ContainsKey(field)) |
269 | cmd.Parameters.Add(m_database.CreateParameter(field, data.Data[field], m_FieldTypes[field])); | ||
270 | else | ||
271 | cmd.Parameters.Add(m_database.CreateParameter(field, data.Data[field])); | ||
233 | } | 272 | } |
234 | 273 | ||
235 | update += " where uuid = @regionID"; | 274 | update += " where uuid = :regionID"; |
236 | 275 | ||
237 | if (data.ScopeID != UUID.Zero) | 276 | if (data.ScopeID != UUID.Zero) |
238 | update += " and ScopeID = @scopeID"; | 277 | update += " and \"ScopeID\" = :scopeID"; |
239 | 278 | ||
240 | cmd.CommandText = update; | 279 | cmd.CommandText = update; |
241 | cmd.Connection = conn; | 280 | cmd.Connection = conn; |
242 | cmd.Parameters.Add(m_database.CreateParameter("@regionID", data.RegionID)); | 281 | cmd.Parameters.Add(m_database.CreateParameter("regionID", data.RegionID)); |
243 | cmd.Parameters.Add(m_database.CreateParameter("@regionName", data.RegionName)); | 282 | cmd.Parameters.Add(m_database.CreateParameter("regionName", data.RegionName)); |
244 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", data.ScopeID)); | 283 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", data.ScopeID)); |
245 | cmd.Parameters.Add(m_database.CreateParameter("@posX", data.posX)); | 284 | cmd.Parameters.Add(m_database.CreateParameter("posX", data.posX)); |
246 | cmd.Parameters.Add(m_database.CreateParameter("@posY", data.posY)); | 285 | cmd.Parameters.Add(m_database.CreateParameter("posY", data.posY)); |
247 | cmd.Parameters.Add(m_database.CreateParameter("@sizeX", data.sizeX)); | 286 | cmd.Parameters.Add(m_database.CreateParameter("sizeX", data.sizeX)); |
248 | cmd.Parameters.Add(m_database.CreateParameter("@sizeY", data.sizeY)); | 287 | cmd.Parameters.Add(m_database.CreateParameter("sizeY", data.sizeY)); |
249 | conn.Open(); | 288 | conn.Open(); |
250 | try | 289 | try |
251 | { | 290 | { |
252 | if (cmd.ExecuteNonQuery() < 1) | 291 | if (cmd.ExecuteNonQuery() < 1) |
253 | { | 292 | { |
254 | string insert = "insert into [" + m_Realm + "] ([uuid], [ScopeID], [locX], [locY], [sizeX], [sizeY], [regionName], [" + | 293 | string insert = "insert into " + m_Realm + " (uuid, \"ScopeID\", \"locX\", \"locY\", \"sizeX\", \"sizeY\", \"regionName\", \"" + |
255 | String.Join("], [", fields) + | 294 | String.Join("\", \"", fields) + |
256 | "]) values (@regionID, @scopeID, @posX, @posY, @sizeX, @sizeY, @regionName, @" + String.Join(", @", fields) + ")"; | 295 | "\") values (:regionID, :scopeID, :posX, :posY, :sizeX, :sizeY, :regionName, :" + String.Join(", :", fields) + ")"; |
257 | 296 | ||
258 | cmd.CommandText = insert; | 297 | cmd.CommandText = insert; |
259 | 298 | ||
@@ -266,13 +305,13 @@ namespace OpenSim.Data.MSSQL | |||
266 | } | 305 | } |
267 | catch (Exception ex) | 306 | catch (Exception ex) |
268 | { | 307 | { |
269 | m_log.Warn("[MSSQL Grid]: Error inserting into Regions table: " + ex.Message + ", INSERT sql: " + insert); | 308 | m_log.Warn("[PGSQL Grid]: Error inserting into Regions table: " + ex.Message + ", INSERT sql: " + insert); |
270 | } | 309 | } |
271 | } | 310 | } |
272 | } | 311 | } |
273 | catch (Exception ex) | 312 | catch (Exception ex) |
274 | { | 313 | { |
275 | m_log.Warn("[MSSQL Grid]: Error updating Regions table: " + ex.Message + ", UPDATE sql: " + update); | 314 | m_log.Warn("[PGSQL Grid]: Error updating Regions table: " + ex.Message + ", UPDATE sql: " + update); |
276 | } | 315 | } |
277 | } | 316 | } |
278 | 317 | ||
@@ -281,13 +320,14 @@ namespace OpenSim.Data.MSSQL | |||
281 | 320 | ||
282 | public bool SetDataItem(UUID regionID, string item, string value) | 321 | public bool SetDataItem(UUID regionID, string item, string value) |
283 | { | 322 | { |
284 | string sql = "update [" + m_Realm + | 323 | string sql = "update " + m_Realm + |
285 | "] set [" + item + "] = @" + item + " where uuid = @UUID"; | 324 | " set \"" + item + "\" = :" + item + " where uuid = :UUID"; |
286 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 325 | |
287 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 326 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
327 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
288 | { | 328 | { |
289 | cmd.Parameters.Add(m_database.CreateParameter("@" + item, value)); | 329 | cmd.Parameters.Add(m_database.CreateParameter("" + item, value)); |
290 | cmd.Parameters.Add(m_database.CreateParameter("@UUID", regionID)); | 330 | cmd.Parameters.Add(m_database.CreateParameter("UUID", regionID)); |
291 | conn.Open(); | 331 | conn.Open(); |
292 | if (cmd.ExecuteNonQuery() > 0) | 332 | if (cmd.ExecuteNonQuery() > 0) |
293 | return true; | 333 | return true; |
@@ -297,12 +337,12 @@ namespace OpenSim.Data.MSSQL | |||
297 | 337 | ||
298 | public bool Delete(UUID regionID) | 338 | public bool Delete(UUID regionID) |
299 | { | 339 | { |
300 | string sql = "delete from [" + m_Realm + | 340 | string sql = "delete from " + m_Realm + |
301 | "] where uuid = @UUID"; | 341 | " where uuid = :UUID"; |
302 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 342 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
303 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 343 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
304 | { | 344 | { |
305 | cmd.Parameters.Add(m_database.CreateParameter("@UUID", regionID)); | 345 | cmd.Parameters.Add(m_database.CreateParameter("UUID", regionID)); |
306 | conn.Open(); | 346 | conn.Open(); |
307 | if (cmd.ExecuteNonQuery() > 0) | 347 | if (cmd.ExecuteNonQuery() > 0) |
308 | return true; | 348 | return true; |
@@ -315,6 +355,11 @@ namespace OpenSim.Data.MSSQL | |||
315 | return Get((int)RegionFlags.DefaultRegion, scopeID); | 355 | return Get((int)RegionFlags.DefaultRegion, scopeID); |
316 | } | 356 | } |
317 | 357 | ||
358 | public List<RegionData> GetDefaultHypergridRegions(UUID scopeID) | ||
359 | { | ||
360 | return Get((int)RegionFlags.DefaultHGRegion, scopeID); | ||
361 | } | ||
362 | |||
318 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) | 363 | public List<RegionData> GetFallbackRegions(UUID scopeID, int x, int y) |
319 | { | 364 | { |
320 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); | 365 | List<RegionData> regions = Get((int)RegionFlags.FallbackRegion, scopeID); |
@@ -331,14 +376,14 @@ namespace OpenSim.Data.MSSQL | |||
331 | 376 | ||
332 | private List<RegionData> Get(int regionFlags, UUID scopeID) | 377 | private List<RegionData> Get(int regionFlags, UUID scopeID) |
333 | { | 378 | { |
334 | string sql = "SELECT * FROM [" + m_Realm + "] WHERE (flags & " + regionFlags.ToString() + ") <> 0"; | 379 | string sql = "SELECT * FROM " + m_Realm + " WHERE (\"flags\" & " + regionFlags.ToString() + ") <> 0"; |
335 | if (scopeID != UUID.Zero) | 380 | if (scopeID != UUID.Zero) |
336 | sql += " AND ScopeID = @scopeID"; | 381 | sql += " AND \"ScopeID\" = :scopeID"; |
337 | 382 | ||
338 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 383 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
339 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 384 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
340 | { | 385 | { |
341 | cmd.Parameters.Add(m_database.CreateParameter("@scopeID", scopeID)); | 386 | cmd.Parameters.Add(m_database.CreateParameter("scopeID", scopeID)); |
342 | conn.Open(); | 387 | conn.Open(); |
343 | return RunCommand(cmd); | 388 | return RunCommand(cmd); |
344 | } | 389 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index 17f42e1..77d87d4 100644 --- a/OpenSim/Data/MSSQL/MSSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs | |||
@@ -28,7 +28,6 @@ | |||
28 | using System; | 28 | using System; |
29 | using System.Collections.Generic; | 29 | using System.Collections.Generic; |
30 | using System.Data; | 30 | using System.Data; |
31 | using System.Data.SqlClient; | ||
32 | using System.Drawing; | 31 | using System.Drawing; |
33 | using System.IO; | 32 | using System.IO; |
34 | using System.Reflection; | 33 | using System.Reflection; |
@@ -37,15 +36,17 @@ using OpenMetaverse; | |||
37 | using OpenSim.Framework; | 36 | using OpenSim.Framework; |
38 | using OpenSim.Region.Framework.Interfaces; | 37 | using OpenSim.Region.Framework.Interfaces; |
39 | using OpenSim.Region.Framework.Scenes; | 38 | using OpenSim.Region.Framework.Scenes; |
39 | using Npgsql; | ||
40 | 40 | ||
41 | namespace OpenSim.Data.MSSQL | 41 | namespace OpenSim.Data.PGSQL |
42 | { | 42 | { |
43 | /// <summary> | 43 | /// <summary> |
44 | /// A MSSQL Interface for the Region Server. | 44 | /// A PGSQL Interface for the Region Server. |
45 | /// </summary> | 45 | /// </summary> |
46 | public class MSSQLSimulationData : ISimulationDataStore | 46 | public class PGSQLSimulationData : ISimulationDataStore |
47 | { | 47 | { |
48 | private const string _migrationStore = "RegionStore"; | 48 | private const string _migrationStore = "RegionStore"; |
49 | private const string LogHeader = "[REGION DB PGSQL]"; | ||
49 | 50 | ||
50 | // private static FileSystemDataStore Instance = new FileSystemDataStore(); | 51 | // private static FileSystemDataStore Instance = new FileSystemDataStore(); |
51 | private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 52 | private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
@@ -53,18 +54,18 @@ namespace OpenSim.Data.MSSQL | |||
53 | /// <summary> | 54 | /// <summary> |
54 | /// The database manager | 55 | /// The database manager |
55 | /// </summary> | 56 | /// </summary> |
56 | private MSSQLManager _Database; | 57 | private PGSQLManager _Database; |
57 | private string m_connectionString; | 58 | private string m_connectionString; |
58 | protected virtual Assembly Assembly | 59 | protected virtual Assembly Assembly |
59 | { | 60 | { |
60 | get { return GetType().Assembly; } | 61 | get { return GetType().Assembly; } |
61 | } | 62 | } |
62 | 63 | ||
63 | public MSSQLSimulationData() | 64 | public PGSQLSimulationData() |
64 | { | 65 | { |
65 | } | 66 | } |
66 | 67 | ||
67 | public MSSQLSimulationData(string connectionString) | 68 | public PGSQLSimulationData(string connectionString) |
68 | { | 69 | { |
69 | Initialise(connectionString); | 70 | Initialise(connectionString); |
70 | } | 71 | } |
@@ -76,9 +77,9 @@ namespace OpenSim.Data.MSSQL | |||
76 | public void Initialise(string connectionString) | 77 | public void Initialise(string connectionString) |
77 | { | 78 | { |
78 | m_connectionString = connectionString; | 79 | m_connectionString = connectionString; |
79 | _Database = new MSSQLManager(connectionString); | 80 | _Database = new PGSQLManager(connectionString); |
80 | 81 | ||
81 | using (SqlConnection conn = new SqlConnection(connectionString)) | 82 | using (NpgsqlConnection conn = new NpgsqlConnection(connectionString)) |
82 | { | 83 | { |
83 | conn.Open(); | 84 | conn.Open(); |
84 | //New Migration settings | 85 | //New Migration settings |
@@ -107,19 +108,19 @@ namespace OpenSim.Data.MSSQL | |||
107 | Dictionary<UUID, SceneObjectGroup> objects = new Dictionary<UUID, SceneObjectGroup>(); | 108 | Dictionary<UUID, SceneObjectGroup> objects = new Dictionary<UUID, SceneObjectGroup>(); |
108 | SceneObjectGroup grp = null; | 109 | SceneObjectGroup grp = null; |
109 | 110 | ||
110 | string sql = "SELECT *, " + | 111 | string sql = @"SELECT *, |
111 | "sort = CASE WHEN prims.UUID = prims.SceneGroupID THEN 0 ELSE 1 END " + | 112 | CASE WHEN prims.""UUID"" = prims.""SceneGroupID"" THEN 0 ELSE 1 END as sort |
112 | "FROM prims " + | 113 | FROM prims |
113 | "LEFT JOIN primshapes ON prims.UUID = primshapes.UUID " + | 114 | LEFT JOIN primshapes ON prims.""UUID"" = primshapes.""UUID"" |
114 | "WHERE RegionUUID = @RegionUUID " + | 115 | WHERE ""RegionUUID"" = :RegionUUID |
115 | "ORDER BY SceneGroupID asc, sort asc, LinkNumber asc"; | 116 | ORDER BY ""SceneGroupID"" asc, sort asc, ""LinkNumber"" asc"; |
116 | 117 | ||
117 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 118 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
118 | using (SqlCommand command = new SqlCommand(sql, conn)) | 119 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
119 | { | 120 | { |
120 | command.Parameters.Add(_Database.CreateParameter("@regionUUID", regionUUID)); | 121 | command.Parameters.Add(_Database.CreateParameter("regionUUID", regionUUID)); |
121 | conn.Open(); | 122 | conn.Open(); |
122 | using (SqlDataReader reader = command.ExecuteReader()) | 123 | using (NpgsqlDataReader reader = command.ExecuteReader()) |
123 | { | 124 | { |
124 | while (reader.Read()) | 125 | while (reader.Read()) |
125 | { | 126 | { |
@@ -179,12 +180,12 @@ namespace OpenSim.Data.MSSQL | |||
179 | // list from DB of all prims which have items and | 180 | // list from DB of all prims which have items and |
180 | // LoadItems only on those | 181 | // LoadItems only on those |
181 | List<SceneObjectPart> primsWithInventory = new List<SceneObjectPart>(); | 182 | List<SceneObjectPart> primsWithInventory = new List<SceneObjectPart>(); |
182 | string qry = "select distinct primID from primitems"; | 183 | string qry = "select distinct \"primID\" from primitems"; |
183 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 184 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
184 | using (SqlCommand command = new SqlCommand(qry, conn)) | 185 | using (NpgsqlCommand command = new NpgsqlCommand(qry, conn)) |
185 | { | 186 | { |
186 | conn.Open(); | 187 | conn.Open(); |
187 | using (SqlDataReader itemReader = command.ExecuteReader()) | 188 | using (NpgsqlDataReader itemReader = command.ExecuteReader()) |
188 | { | 189 | { |
189 | while (itemReader.Read()) | 190 | while (itemReader.Read()) |
190 | { | 191 | { |
@@ -213,19 +214,19 @@ namespace OpenSim.Data.MSSQL | |||
213 | /// <param name="allPrims">all prims with inventory on a region</param> | 214 | /// <param name="allPrims">all prims with inventory on a region</param> |
214 | private void LoadItems(List<SceneObjectPart> allPrimsWithInventory) | 215 | private void LoadItems(List<SceneObjectPart> allPrimsWithInventory) |
215 | { | 216 | { |
216 | string sql = "SELECT * FROM primitems WHERE PrimID = @PrimID"; | 217 | string sql = @"SELECT * FROM primitems WHERE ""primID"" = :PrimID"; |
217 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 218 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
218 | using (SqlCommand command = new SqlCommand(sql, conn)) | 219 | using (NpgsqlCommand command = new NpgsqlCommand(sql, conn)) |
219 | { | 220 | { |
220 | conn.Open(); | 221 | conn.Open(); |
221 | foreach (SceneObjectPart objectPart in allPrimsWithInventory) | 222 | foreach (SceneObjectPart objectPart in allPrimsWithInventory) |
222 | { | 223 | { |
223 | command.Parameters.Clear(); | 224 | command.Parameters.Clear(); |
224 | command.Parameters.Add(_Database.CreateParameter("@PrimID", objectPart.UUID)); | 225 | command.Parameters.Add(_Database.CreateParameter("PrimID", objectPart.UUID)); |
225 | 226 | ||
226 | List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); | 227 | List<TaskInventoryItem> inventory = new List<TaskInventoryItem>(); |
227 | 228 | ||
228 | using (SqlDataReader reader = command.ExecuteReader()) | 229 | using (NpgsqlDataReader reader = command.ExecuteReader()) |
229 | { | 230 | { |
230 | while (reader.Read()) | 231 | while (reader.Read()) |
231 | { | 232 | { |
@@ -257,43 +258,43 @@ namespace OpenSim.Data.MSSQL | |||
257 | if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0) | 258 | if ((flags & (uint)PrimFlags.TemporaryOnRez) != 0) |
258 | return; | 259 | return; |
259 | 260 | ||
260 | _Log.DebugFormat("[MSSQL]: Adding/Changing SceneObjectGroup: {0} to region: {1}, object has {2} prims.", obj.UUID, regionUUID, obj.Parts.Length); | 261 | //_Log.DebugFormat("[PGSQL]: Adding/Changing SceneObjectGroup: {0} to region: {1}, object has {2} prims.", obj.UUID, regionUUID, obj.Parts.Length); |
261 | 262 | ||
262 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 263 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
263 | { | 264 | { |
264 | conn.Open(); | 265 | conn.Open(); |
265 | SqlTransaction transaction = conn.BeginTransaction(); | 266 | NpgsqlTransaction transaction = conn.BeginTransaction(); |
266 | 267 | ||
267 | try | 268 | try |
268 | { | 269 | { |
269 | foreach (SceneObjectPart sceneObjectPart in obj.Parts) | 270 | foreach (SceneObjectPart sceneObjectPart in obj.Parts) |
270 | { | 271 | { |
271 | //Update prim | 272 | //Update prim |
272 | using (SqlCommand sqlCommand = conn.CreateCommand()) | 273 | using (NpgsqlCommand sqlCommand = conn.CreateCommand()) |
273 | { | 274 | { |
274 | sqlCommand.Transaction = transaction; | 275 | sqlCommand.Transaction = transaction; |
275 | try | 276 | try |
276 | { | 277 | { |
277 | StoreSceneObjectPrim(sceneObjectPart, sqlCommand, obj.UUID, regionUUID); | 278 | StoreSceneObjectPrim(sceneObjectPart, sqlCommand, obj.UUID, regionUUID); |
278 | } | 279 | } |
279 | catch (SqlException sqlEx) | 280 | catch (NpgsqlException sqlEx) |
280 | { | 281 | { |
281 | _Log.ErrorFormat("[REGION DB]: Store SceneObjectPrim SQL error: {0} at line {1}", sqlEx.Message, sqlEx.LineNumber); | 282 | _Log.ErrorFormat("[REGION DB]: Store SceneObjectPrim SQL error: {0} at line {1}", sqlEx.Message, sqlEx.Line); |
282 | throw; | 283 | throw; |
283 | } | 284 | } |
284 | } | 285 | } |
285 | 286 | ||
286 | //Update primshapes | 287 | //Update primshapes |
287 | using (SqlCommand sqlCommand = conn.CreateCommand()) | 288 | using (NpgsqlCommand sqlCommand = conn.CreateCommand()) |
288 | { | 289 | { |
289 | sqlCommand.Transaction = transaction; | 290 | sqlCommand.Transaction = transaction; |
290 | try | 291 | try |
291 | { | 292 | { |
292 | StoreSceneObjectPrimShapes(sceneObjectPart, sqlCommand, obj.UUID, regionUUID); | 293 | StoreSceneObjectPrimShapes(sceneObjectPart, sqlCommand, obj.UUID, regionUUID); |
293 | } | 294 | } |
294 | catch (SqlException sqlEx) | 295 | catch (NpgsqlException sqlEx) |
295 | { | 296 | { |
296 | _Log.ErrorFormat("[REGION DB]: Store SceneObjectPrimShapes SQL error: {0} at line {1}", sqlEx.Message, sqlEx.LineNumber); | 297 | _Log.ErrorFormat("[REGION DB]: Store SceneObjectPrimShapes SQL error: {0} at line {1}", sqlEx.Message, sqlEx.Line); |
297 | throw; | 298 | throw; |
298 | } | 299 | } |
299 | } | 300 | } |
@@ -325,60 +326,59 @@ namespace OpenSim.Data.MSSQL | |||
325 | /// <param name="sqlCommand">The SQL command with the transaction.</param> | 326 | /// <param name="sqlCommand">The SQL command with the transaction.</param> |
326 | /// <param name="sceneGroupID">The scenegroup UUID.</param> | 327 | /// <param name="sceneGroupID">The scenegroup UUID.</param> |
327 | /// <param name="regionUUID">The region UUID.</param> | 328 | /// <param name="regionUUID">The region UUID.</param> |
328 | private void StoreSceneObjectPrim(SceneObjectPart sceneObjectPart, SqlCommand sqlCommand, UUID sceneGroupID, UUID regionUUID) | 329 | private void StoreSceneObjectPrim(SceneObjectPart sceneObjectPart, NpgsqlCommand sqlCommand, UUID sceneGroupID, UUID regionUUID) |
329 | { | 330 | { |
330 | //Big query to update or insert a new prim. | 331 | //Big query to update or insert a new prim. |
331 | //Note for SQL Server 2008 this could be simplified | 332 | |
332 | string queryPrims = @" | 333 | string queryPrims = @" |
333 | IF EXISTS (SELECT UUID FROM prims WHERE UUID = @UUID) | ||
334 | BEGIN | ||
335 | UPDATE prims SET | 334 | UPDATE prims SET |
336 | CreationDate = @CreationDate, Name = @Name, Text = @Text, Description = @Description, SitName = @SitName, | 335 | ""CreationDate"" = :CreationDate, ""Name"" = :Name, ""Text"" = :Text, ""Description"" = :Description, ""SitName"" = :SitName, |
337 | TouchName = @TouchName, ObjectFlags = @ObjectFlags, OwnerMask = @OwnerMask, NextOwnerMask = @NextOwnerMask, GroupMask = @GroupMask, | 336 | ""TouchName"" = :TouchName, ""ObjectFlags"" = :ObjectFlags, ""OwnerMask"" = :OwnerMask, ""NextOwnerMask"" = :NextOwnerMask, ""GroupMask"" = :GroupMask, |
338 | EveryoneMask = @EveryoneMask, BaseMask = @BaseMask, PositionX = @PositionX, PositionY = @PositionY, PositionZ = @PositionZ, | 337 | ""EveryoneMask"" = :EveryoneMask, ""BaseMask"" = :BaseMask, ""PositionX"" = :PositionX, ""PositionY"" = :PositionY, ""PositionZ"" = :PositionZ, |
339 | GroupPositionX = @GroupPositionX, GroupPositionY = @GroupPositionY, GroupPositionZ = @GroupPositionZ, VelocityX = @VelocityX, | 338 | ""GroupPositionX"" = :GroupPositionX, ""GroupPositionY"" = :GroupPositionY, ""GroupPositionZ"" = :GroupPositionZ, ""VelocityX"" = :VelocityX, |
340 | VelocityY = @VelocityY, VelocityZ = @VelocityZ, AngularVelocityX = @AngularVelocityX, AngularVelocityY = @AngularVelocityY, | 339 | ""VelocityY"" = :VelocityY, ""VelocityZ"" = :VelocityZ, ""AngularVelocityX"" = :AngularVelocityX, ""AngularVelocityY"" = :AngularVelocityY, |
341 | AngularVelocityZ = @AngularVelocityZ, AccelerationX = @AccelerationX, AccelerationY = @AccelerationY, | 340 | ""AngularVelocityZ"" = :AngularVelocityZ, ""AccelerationX"" = :AccelerationX, ""AccelerationY"" = :AccelerationY, |
342 | AccelerationZ = @AccelerationZ, RotationX = @RotationX, RotationY = @RotationY, RotationZ = @RotationZ, RotationW = @RotationW, | 341 | ""AccelerationZ"" = :AccelerationZ, ""RotationX"" = :RotationX, ""RotationY"" = :RotationY, ""RotationZ"" = :RotationZ, ""RotationW"" = :RotationW, |
343 | SitTargetOffsetX = @SitTargetOffsetX, SitTargetOffsetY = @SitTargetOffsetY, SitTargetOffsetZ = @SitTargetOffsetZ, | 342 | ""SitTargetOffsetX"" = :SitTargetOffsetX, ""SitTargetOffsetY"" = :SitTargetOffsetY, ""SitTargetOffsetZ"" = :SitTargetOffsetZ, |
344 | SitTargetOrientW = @SitTargetOrientW, SitTargetOrientX = @SitTargetOrientX, SitTargetOrientY = @SitTargetOrientY, | 343 | ""SitTargetOrientW"" = :SitTargetOrientW, ""SitTargetOrientX"" = :SitTargetOrientX, ""SitTargetOrientY"" = :SitTargetOrientY, |
345 | SitTargetOrientZ = @SitTargetOrientZ, RegionUUID = @RegionUUID, CreatorID = @CreatorID, OwnerID = @OwnerID, GroupID = @GroupID, | 344 | ""SitTargetOrientZ"" = :SitTargetOrientZ, ""RegionUUID"" = :RegionUUID, ""CreatorID"" = :CreatorID, ""OwnerID"" = :OwnerID, ""GroupID"" = :GroupID, |
346 | LastOwnerID = @LastOwnerID, SceneGroupID = @SceneGroupID, PayPrice = @PayPrice, PayButton1 = @PayButton1, PayButton2 = @PayButton2, | 345 | ""LastOwnerID"" = :LastOwnerID, ""SceneGroupID"" = :SceneGroupID, ""PayPrice"" = :PayPrice, ""PayButton1"" = :PayButton1, ""PayButton2"" = :PayButton2, |
347 | PayButton3 = @PayButton3, PayButton4 = @PayButton4, LoopedSound = @LoopedSound, LoopedSoundGain = @LoopedSoundGain, | 346 | ""PayButton3"" = :PayButton3, ""PayButton4"" = :PayButton4, ""LoopedSound"" = :LoopedSound, ""LoopedSoundGain"" = :LoopedSoundGain, |
348 | TextureAnimation = @TextureAnimation, OmegaX = @OmegaX, OmegaY = @OmegaY, OmegaZ = @OmegaZ, CameraEyeOffsetX = @CameraEyeOffsetX, | 347 | ""TextureAnimation"" = :TextureAnimation, ""OmegaX"" = :OmegaX, ""OmegaY"" = :OmegaY, ""OmegaZ"" = :OmegaZ, ""CameraEyeOffsetX"" = :CameraEyeOffsetX, |
349 | CameraEyeOffsetY = @CameraEyeOffsetY, CameraEyeOffsetZ = @CameraEyeOffsetZ, CameraAtOffsetX = @CameraAtOffsetX, | 348 | ""CameraEyeOffsetY"" = :CameraEyeOffsetY, ""CameraEyeOffsetZ"" = :CameraEyeOffsetZ, ""CameraAtOffsetX"" = :CameraAtOffsetX, |
350 | CameraAtOffsetY = @CameraAtOffsetY, CameraAtOffsetZ = @CameraAtOffsetZ, ForceMouselook = @ForceMouselook, | 349 | ""CameraAtOffsetY"" = :CameraAtOffsetY, ""CameraAtOffsetZ"" = :CameraAtOffsetZ, ""ForceMouselook"" = :ForceMouselook, |
351 | ScriptAccessPin = @ScriptAccessPin, AllowedDrop = @AllowedDrop, DieAtEdge = @DieAtEdge, SalePrice = @SalePrice, | 350 | ""ScriptAccessPin"" = :ScriptAccessPin, ""AllowedDrop"" = :AllowedDrop, ""DieAtEdge"" = :DieAtEdge, ""SalePrice"" = :SalePrice, |
352 | SaleType = @SaleType, ColorR = @ColorR, ColorG = @ColorG, ColorB = @ColorB, ColorA = @ColorA, ParticleSystem = @ParticleSystem, | 351 | ""SaleType"" = :SaleType, ""ColorR"" = :ColorR, ""ColorG"" = :ColorG, ""ColorB"" = :ColorB, ""ColorA"" = :ColorA, ""ParticleSystem"" = :ParticleSystem, |
353 | ClickAction = @ClickAction, Material = @Material, CollisionSound = @CollisionSound, CollisionSoundVolume = @CollisionSoundVolume, PassTouches = @PassTouches, | 352 | ""ClickAction"" = :ClickAction, ""Material"" = :Material, ""CollisionSound"" = :CollisionSound, ""CollisionSoundVolume"" = :CollisionSoundVolume, ""PassTouches"" = :PassTouches, |
354 | LinkNumber = @LinkNumber, MediaURL = @MediaURL | 353 | ""LinkNumber"" = :LinkNumber, ""MediaURL"" = :MediaURL, ""DynAttrs"" = :DynAttrs, |
355 | WHERE UUID = @UUID | 354 | ""PhysicsShapeType"" = :PhysicsShapeType, ""Density"" = :Density, ""GravityModifier"" = :GravityModifier, ""Friction"" = :Friction, ""Restitution"" = :Restitution |
356 | END | 355 | WHERE ""UUID"" = :UUID ; |
357 | ELSE | 356 | |
358 | BEGIN | ||
359 | INSERT INTO | 357 | INSERT INTO |
360 | prims ( | 358 | prims ( |
361 | UUID, CreationDate, Name, Text, Description, SitName, TouchName, ObjectFlags, OwnerMask, NextOwnerMask, GroupMask, | 359 | ""UUID"", ""CreationDate"", ""Name"", ""Text"", ""Description"", ""SitName"", ""TouchName"", ""ObjectFlags"", ""OwnerMask"", ""NextOwnerMask"", ""GroupMask"", |
362 | EveryoneMask, BaseMask, PositionX, PositionY, PositionZ, GroupPositionX, GroupPositionY, GroupPositionZ, VelocityX, | 360 | ""EveryoneMask"", ""BaseMask"", ""PositionX"", ""PositionY"", ""PositionZ"", ""GroupPositionX"", ""GroupPositionY"", ""GroupPositionZ"", ""VelocityX"", |
363 | VelocityY, VelocityZ, AngularVelocityX, AngularVelocityY, AngularVelocityZ, AccelerationX, AccelerationY, AccelerationZ, | 361 | ""VelocityY"", ""VelocityZ"", ""AngularVelocityX"", ""AngularVelocityY"", ""AngularVelocityZ"", ""AccelerationX"", ""AccelerationY"", ""AccelerationZ"", |
364 | RotationX, RotationY, RotationZ, RotationW, SitTargetOffsetX, SitTargetOffsetY, SitTargetOffsetZ, SitTargetOrientW, | 362 | ""RotationX"", ""RotationY"", ""RotationZ"", ""RotationW"", ""SitTargetOffsetX"", ""SitTargetOffsetY"", ""SitTargetOffsetZ"", ""SitTargetOrientW"", |
365 | SitTargetOrientX, SitTargetOrientY, SitTargetOrientZ, RegionUUID, CreatorID, OwnerID, GroupID, LastOwnerID, SceneGroupID, | 363 | ""SitTargetOrientX"", ""SitTargetOrientY"", ""SitTargetOrientZ"", ""RegionUUID"", ""CreatorID"", ""OwnerID"", ""GroupID"", ""LastOwnerID"", ""SceneGroupID"", |
366 | PayPrice, PayButton1, PayButton2, PayButton3, PayButton4, LoopedSound, LoopedSoundGain, TextureAnimation, OmegaX, | 364 | ""PayPrice"", ""PayButton1"", ""PayButton2"", ""PayButton3"", ""PayButton4"", ""LoopedSound"", ""LoopedSoundGain"", ""TextureAnimation"", ""OmegaX"", |
367 | OmegaY, OmegaZ, CameraEyeOffsetX, CameraEyeOffsetY, CameraEyeOffsetZ, CameraAtOffsetX, CameraAtOffsetY, CameraAtOffsetZ, | 365 | ""OmegaY"", ""OmegaZ"", ""CameraEyeOffsetX"", ""CameraEyeOffsetY"", ""CameraEyeOffsetZ"", ""CameraAtOffsetX"", ""CameraAtOffsetY"", ""CameraAtOffsetZ"", |
368 | ForceMouselook, ScriptAccessPin, AllowedDrop, DieAtEdge, SalePrice, SaleType, ColorR, ColorG, ColorB, ColorA, | 366 | ""ForceMouselook"", ""ScriptAccessPin"", ""AllowedDrop"", ""DieAtEdge"", ""SalePrice"", ""SaleType"", ""ColorR"", ""ColorG"", ""ColorB"", ""ColorA"", |
369 | ParticleSystem, ClickAction, Material, CollisionSound, CollisionSoundVolume, PassTouches, LinkNumber, MediaURL | 367 | ""ParticleSystem"", ""ClickAction"", ""Material"", ""CollisionSound"", ""CollisionSoundVolume"", ""PassTouches"", ""LinkNumber"", ""MediaURL"", ""DynAttrs"", |
370 | ) VALUES ( | 368 | ""PhysicsShapeType"", ""Density"", ""GravityModifier"", ""Friction"", ""Restitution"" |
371 | @UUID, @CreationDate, @Name, @Text, @Description, @SitName, @TouchName, @ObjectFlags, @OwnerMask, @NextOwnerMask, @GroupMask, | 369 | ) Select |
372 | @EveryoneMask, @BaseMask, @PositionX, @PositionY, @PositionZ, @GroupPositionX, @GroupPositionY, @GroupPositionZ, @VelocityX, | 370 | :UUID, :CreationDate, :Name, :Text, :Description, :SitName, :TouchName, :ObjectFlags, :OwnerMask, :NextOwnerMask, :GroupMask, |
373 | @VelocityY, @VelocityZ, @AngularVelocityX, @AngularVelocityY, @AngularVelocityZ, @AccelerationX, @AccelerationY, @AccelerationZ, | 371 | :EveryoneMask, :BaseMask, :PositionX, :PositionY, :PositionZ, :GroupPositionX, :GroupPositionY, :GroupPositionZ, :VelocityX, |
374 | @RotationX, @RotationY, @RotationZ, @RotationW, @SitTargetOffsetX, @SitTargetOffsetY, @SitTargetOffsetZ, @SitTargetOrientW, | 372 | :VelocityY, :VelocityZ, :AngularVelocityX, :AngularVelocityY, :AngularVelocityZ, :AccelerationX, :AccelerationY, :AccelerationZ, |
375 | @SitTargetOrientX, @SitTargetOrientY, @SitTargetOrientZ, @RegionUUID, @CreatorID, @OwnerID, @GroupID, @LastOwnerID, @SceneGroupID, | 373 | :RotationX, :RotationY, :RotationZ, :RotationW, :SitTargetOffsetX, :SitTargetOffsetY, :SitTargetOffsetZ, :SitTargetOrientW, |
376 | @PayPrice, @PayButton1, @PayButton2, @PayButton3, @PayButton4, @LoopedSound, @LoopedSoundGain, @TextureAnimation, @OmegaX, | 374 | :SitTargetOrientX, :SitTargetOrientY, :SitTargetOrientZ, :RegionUUID, :CreatorID, :OwnerID, :GroupID, :LastOwnerID, :SceneGroupID, |
377 | @OmegaY, @OmegaZ, @CameraEyeOffsetX, @CameraEyeOffsetY, @CameraEyeOffsetZ, @CameraAtOffsetX, @CameraAtOffsetY, @CameraAtOffsetZ, | 375 | :PayPrice, :PayButton1, :PayButton2, :PayButton3, :PayButton4, :LoopedSound, :LoopedSoundGain, :TextureAnimation, :OmegaX, |
378 | @ForceMouselook, @ScriptAccessPin, @AllowedDrop, @DieAtEdge, @SalePrice, @SaleType, @ColorR, @ColorG, @ColorB, @ColorA, | 376 | :OmegaY, :OmegaZ, :CameraEyeOffsetX, :CameraEyeOffsetY, :CameraEyeOffsetZ, :CameraAtOffsetX, :CameraAtOffsetY, :CameraAtOffsetZ, |
379 | @ParticleSystem, @ClickAction, @Material, @CollisionSound, @CollisionSoundVolume, @PassTouches, @LinkNumber, @MediaURL | 377 | :ForceMouselook, :ScriptAccessPin, :AllowedDrop, :DieAtEdge, :SalePrice, :SaleType, :ColorR, :ColorG, :ColorB, :ColorA, |
380 | ) | 378 | :ParticleSystem, :ClickAction, :Material, :CollisionSound, :CollisionSoundVolume, :PassTouches, :LinkNumber, :MediaURL, :DynAttrs, |
381 | END"; | 379 | :PhysicsShapeType, :Density, :GravityModifier, :Friction, :Restitution |
380 | where not EXISTS (SELECT ""UUID"" FROM prims WHERE ""UUID"" = :UUID); | ||
381 | "; | ||
382 | 382 | ||
383 | //Set commandtext. | 383 | //Set commandtext. |
384 | sqlCommand.CommandText = queryPrims; | 384 | sqlCommand.CommandText = queryPrims; |
@@ -396,35 +396,32 @@ ELSE | |||
396 | /// <param name="sqlCommand">The SQL command with the transaction.</param> | 396 | /// <param name="sqlCommand">The SQL command with the transaction.</param> |
397 | /// <param name="sceneGroupID">The scenegroup UUID.</param> | 397 | /// <param name="sceneGroupID">The scenegroup UUID.</param> |
398 | /// <param name="regionUUID">The region UUID.</param> | 398 | /// <param name="regionUUID">The region UUID.</param> |
399 | private void StoreSceneObjectPrimShapes(SceneObjectPart sceneObjectPart, SqlCommand sqlCommand, UUID sceneGroupID, UUID regionUUID) | 399 | private void StoreSceneObjectPrimShapes(SceneObjectPart sceneObjectPart, NpgsqlCommand sqlCommand, UUID sceneGroupID, UUID regionUUID) |
400 | { | 400 | { |
401 | //Big query to or insert or update primshapes | 401 | //Big query to or insert or update primshapes |
402 | //Note for SQL Server 2008 this can be simplified | 402 | |
403 | string queryPrimShapes = @" | 403 | string queryPrimShapes = @" |
404 | IF EXISTS (SELECT UUID FROM primshapes WHERE UUID = @UUID) | ||
405 | BEGIN | ||
406 | UPDATE primshapes SET | 404 | UPDATE primshapes SET |
407 | Shape = @Shape, ScaleX = @ScaleX, ScaleY = @ScaleY, ScaleZ = @ScaleZ, PCode = @PCode, PathBegin = @PathBegin, | 405 | ""Shape"" = :Shape, ""ScaleX"" = :ScaleX, ""ScaleY"" = :ScaleY, ""ScaleZ"" = :ScaleZ, ""PCode"" = :PCode, ""PathBegin"" = :PathBegin, |
408 | PathEnd = @PathEnd, PathScaleX = @PathScaleX, PathScaleY = @PathScaleY, PathShearX = @PathShearX, PathShearY = @PathShearY, | 406 | ""PathEnd"" = :PathEnd, ""PathScaleX"" = :PathScaleX, ""PathScaleY"" = :PathScaleY, ""PathShearX"" = :PathShearX, ""PathShearY"" = :PathShearY, |
409 | PathSkew = @PathSkew, PathCurve = @PathCurve, PathRadiusOffset = @PathRadiusOffset, PathRevolutions = @PathRevolutions, | 407 | ""PathSkew"" = :PathSkew, ""PathCurve"" = :PathCurve, ""PathRadiusOffset"" = :PathRadiusOffset, ""PathRevolutions"" = :PathRevolutions, |
410 | PathTaperX = @PathTaperX, PathTaperY = @PathTaperY, PathTwist = @PathTwist, PathTwistBegin = @PathTwistBegin, | 408 | ""PathTaperX"" = :PathTaperX, ""PathTaperY"" = :PathTaperY, ""PathTwist"" = :PathTwist, ""PathTwistBegin"" = :PathTwistBegin, |
411 | ProfileBegin = @ProfileBegin, ProfileEnd = @ProfileEnd, ProfileCurve = @ProfileCurve, ProfileHollow = @ProfileHollow, | 409 | ""ProfileBegin"" = :ProfileBegin, ""ProfileEnd"" = :ProfileEnd, ""ProfileCurve"" = :ProfileCurve, ""ProfileHollow"" = :ProfileHollow, |
412 | Texture = @Texture, ExtraParams = @ExtraParams, State = @State, Media = @Media | 410 | ""Texture"" = :Texture, ""ExtraParams"" = :ExtraParams, ""State"" = :State, ""Media"" = :Media |
413 | WHERE UUID = @UUID | 411 | WHERE ""UUID"" = :UUID ; |
414 | END | 412 | |
415 | ELSE | ||
416 | BEGIN | ||
417 | INSERT INTO | 413 | INSERT INTO |
418 | primshapes ( | 414 | primshapes ( |
419 | UUID, Shape, ScaleX, ScaleY, ScaleZ, PCode, PathBegin, PathEnd, PathScaleX, PathScaleY, PathShearX, PathShearY, | 415 | ""UUID"", ""Shape"", ""ScaleX"", ""ScaleY"", ""ScaleZ"", ""PCode"", ""PathBegin"", ""PathEnd"", ""PathScaleX"", ""PathScaleY"", ""PathShearX"", ""PathShearY"", |
420 | PathSkew, PathCurve, PathRadiusOffset, PathRevolutions, PathTaperX, PathTaperY, PathTwist, PathTwistBegin, ProfileBegin, | 416 | ""PathSkew"", ""PathCurve"", ""PathRadiusOffset"", ""PathRevolutions"", ""PathTaperX"", ""PathTaperY"", ""PathTwist"", ""PathTwistBegin"", ""ProfileBegin"", |
421 | ProfileEnd, ProfileCurve, ProfileHollow, Texture, ExtraParams, State, Media | 417 | ""ProfileEnd"", ""ProfileCurve"", ""ProfileHollow"", ""Texture"", ""ExtraParams"", ""State"", ""Media"" |
422 | ) VALUES ( | 418 | ) |
423 | @UUID, @Shape, @ScaleX, @ScaleY, @ScaleZ, @PCode, @PathBegin, @PathEnd, @PathScaleX, @PathScaleY, @PathShearX, @PathShearY, | 419 | Select |
424 | @PathSkew, @PathCurve, @PathRadiusOffset, @PathRevolutions, @PathTaperX, @PathTaperY, @PathTwist, @PathTwistBegin, @ProfileBegin, | 420 | :UUID, :Shape, :ScaleX, :ScaleY, :ScaleZ, :PCode, :PathBegin, :PathEnd, :PathScaleX, :PathScaleY, :PathShearX, :PathShearY, |
425 | @ProfileEnd, @ProfileCurve, @ProfileHollow, @Texture, @ExtraParams, @State, @Media | 421 | :PathSkew, :PathCurve, :PathRadiusOffset, :PathRevolutions, :PathTaperX, :PathTaperY, :PathTwist, :PathTwistBegin, :ProfileBegin, |
426 | ) | 422 | :ProfileEnd, :ProfileCurve, :ProfileHollow, :Texture, :ExtraParams, :State, :Media |
427 | END"; | 423 | where not EXISTS (SELECT ""UUID"" FROM primshapes WHERE ""UUID"" = :UUID); |
424 | "; | ||
428 | 425 | ||
429 | //Set commandtext. | 426 | //Set commandtext. |
430 | sqlCommand.CommandText = queryPrimShapes; | 427 | sqlCommand.CommandText = queryPrimShapes; |
@@ -445,18 +442,18 @@ ELSE | |||
445 | /// <param name="regionUUID">regionUUID (is this used anyway</param> | 442 | /// <param name="regionUUID">regionUUID (is this used anyway</param> |
446 | public void RemoveObject(UUID objectID, UUID regionUUID) | 443 | public void RemoveObject(UUID objectID, UUID regionUUID) |
447 | { | 444 | { |
448 | _Log.InfoFormat("[MSSQL]: Removing obj: {0} from region: {1}", objectID, regionUUID); | 445 | //_Log.InfoFormat("[PGSQL]: Removing obj: {0} from region: {1}", objectID, regionUUID); |
449 | 446 | ||
450 | //Remove from prims and primsitem table | 447 | //Remove from prims and primsitem table |
451 | string sqlPrims = "DELETE FROM PRIMS WHERE SceneGroupID = @objectID"; | 448 | string sqlPrims = @"DELETE FROM PRIMS WHERE ""SceneGroupID"" = :objectID"; |
452 | string sqlPrimItems = "DELETE FROM PRIMITEMS WHERE primID in (SELECT UUID FROM PRIMS WHERE SceneGroupID = @objectID)"; | 449 | string sqlPrimItems = @"DELETE FROM PRIMITEMS WHERE ""primID"" in (SELECT ""UUID"" FROM PRIMS WHERE ""SceneGroupID"" = :objectID)"; |
453 | string sqlPrimShapes = "DELETE FROM PRIMSHAPES WHERE uuid in (SELECT UUID FROM PRIMS WHERE SceneGroupID = @objectID)"; | 450 | string sqlPrimShapes = @"DELETE FROM PRIMSHAPES WHERE ""UUID"" in (SELECT ""UUID"" FROM PRIMS WHERE ""SceneGroupID"" = :objectID)"; |
454 | 451 | ||
455 | lock (_Database) | 452 | lock (_Database) |
456 | { | 453 | { |
457 | //Using the non transaction mode. | 454 | //Using the non transaction mode. |
458 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 455 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
459 | using (SqlCommand cmd = new SqlCommand()) | 456 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
460 | { | 457 | { |
461 | cmd.Connection = conn; | 458 | cmd.Connection = conn; |
462 | cmd.CommandText = sqlPrimShapes; | 459 | cmd.CommandText = sqlPrimShapes; |
@@ -482,31 +479,31 @@ ELSE | |||
482 | { | 479 | { |
483 | //_Log.InfoFormat("[REGION DB: Persisting Prim Inventory with prim ID {0}", primID); | 480 | //_Log.InfoFormat("[REGION DB: Persisting Prim Inventory with prim ID {0}", primID); |
484 | 481 | ||
485 | //Statement from MySQL section! | 482 | //Statement from PGSQL section! |
486 | // For now, we're just going to crudely remove all the previous inventory items | 483 | // For now, we're just going to crudely remove all the previous inventory items |
487 | // no matter whether they have changed or not, and replace them with the current set. | 484 | // no matter whether they have changed or not, and replace them with the current set. |
488 | 485 | ||
489 | //Delete everything from PrimID | 486 | //Delete everything from PrimID |
490 | //TODO add index on PrimID in DB, if not already exist | 487 | //TODO add index on PrimID in DB, if not already exist |
491 | 488 | ||
492 | string sql = "DELETE PRIMITEMS WHERE primID = @primID"; | 489 | string sql = @"delete from primitems where ""primID"" = :primID"; |
493 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 490 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
494 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 491 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
495 | { | 492 | { |
496 | cmd.Parameters.Add(_Database.CreateParameter("@primID", primID)); | 493 | cmd.Parameters.Add(_Database.CreateParameter("primID", primID)); |
497 | conn.Open(); | 494 | conn.Open(); |
498 | cmd.ExecuteNonQuery(); | 495 | cmd.ExecuteNonQuery(); |
499 | } | 496 | } |
500 | 497 | ||
501 | sql = | 498 | sql = |
502 | @"INSERT INTO primitems ( | 499 | @"INSERT INTO primitems ( |
503 | itemID,primID,assetID,parentFolderID,invType,assetType,name,description,creationDate,creatorID,ownerID,lastOwnerID,groupID, | 500 | ""itemID"",""primID"",""assetID"",""parentFolderID"",""invType"",""assetType"",""name"",""description"",""creationDate"",""creatorID"",""ownerID"",""lastOwnerID"",""groupID"", |
504 | nextPermissions,currentPermissions,basePermissions,everyonePermissions,groupPermissions,flags) | 501 | ""nextPermissions"",""currentPermissions"",""basePermissions"",""everyonePermissions"",""groupPermissions"",""flags"") |
505 | VALUES (@itemID,@primID,@assetID,@parentFolderID,@invType,@assetType,@name,@description,@creationDate,@creatorID,@ownerID, | 502 | VALUES (:itemID,:primID,:assetID,:parentFolderID,:invType,:assetType,:name,:description,:creationDate,:creatorID,:ownerID, |
506 | @lastOwnerID,@groupID,@nextPermissions,@currentPermissions,@basePermissions,@everyonePermissions,@groupPermissions,@flags)"; | 503 | :lastOwnerID,:groupID,:nextPermissions,:currentPermissions,:basePermissions,:everyonePermissions,:groupPermissions,:flags)"; |
507 | 504 | ||
508 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 505 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
509 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 506 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
510 | { | 507 | { |
511 | conn.Open(); | 508 | conn.Open(); |
512 | foreach (TaskInventoryItem taskItem in items) | 509 | foreach (TaskInventoryItem taskItem in items) |
@@ -527,43 +524,54 @@ ELSE | |||
527 | /// <returns></returns> | 524 | /// <returns></returns> |
528 | public double[,] LoadTerrain(UUID regionID) | 525 | public double[,] LoadTerrain(UUID regionID) |
529 | { | 526 | { |
530 | double[,] terrain = new double[(int)Constants.RegionSize, (int)Constants.RegionSize]; | 527 | double[,] ret = null; |
531 | terrain.Initialize(); | 528 | TerrainData terrData = LoadTerrain(regionID, (int)Constants.RegionSize, (int)Constants.RegionSize, (int)Constants.RegionHeight); |
529 | if (terrData != null) | ||
530 | ret = terrData.GetDoubles(); | ||
531 | return ret; | ||
532 | } | ||
533 | |||
534 | // Returns 'null' if region not found | ||
535 | public TerrainData LoadTerrain(UUID regionID, int pSizeX, int pSizeY, int pSizeZ) | ||
536 | { | ||
537 | TerrainData terrData = null; | ||
532 | 538 | ||
533 | string sql = "select top 1 RegionUUID, Revision, Heightfield from terrain where RegionUUID = @RegionUUID order by Revision desc"; | 539 | string sql = @"select ""RegionUUID"", ""Revision"", ""Heightfield"" from terrain |
540 | where ""RegionUUID"" = :RegionUUID order by ""Revision"" desc limit 1; "; | ||
534 | 541 | ||
535 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 542 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
536 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
537 | { | 543 | { |
538 | // MySqlParameter param = new MySqlParameter(); | 544 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
539 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID)); | ||
540 | conn.Open(); | ||
541 | using (SqlDataReader reader = cmd.ExecuteReader()) | ||
542 | { | 545 | { |
543 | int rev; | 546 | // PGSqlParameter param = new PGSqlParameter(); |
544 | if (reader.Read()) | 547 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", regionID)); |
548 | conn.Open(); | ||
549 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) | ||
545 | { | 550 | { |
546 | MemoryStream str = new MemoryStream((byte[])reader["Heightfield"]); | 551 | int rev; |
547 | BinaryReader br = new BinaryReader(str); | 552 | if (reader.Read()) |
548 | for (int x = 0; x < (int)Constants.RegionSize; x++) | ||
549 | { | 553 | { |
550 | for (int y = 0; y < (int)Constants.RegionSize; y++) | 554 | rev = Convert.ToInt32(reader["Revision"]); |
551 | { | 555 | byte[] blob = (byte[])reader["Heightfield"]; |
552 | terrain[x, y] = br.ReadDouble(); | 556 | terrData = TerrainData.CreateFromDatabaseBlobFactory(pSizeX, pSizeY, pSizeZ, rev, blob); |
553 | } | ||
554 | } | 557 | } |
555 | rev = (int)reader["Revision"]; | 558 | else |
556 | } | 559 | { |
557 | else | 560 | _Log.Info("[REGION DB]: No terrain found for region"); |
558 | { | 561 | return null; |
559 | _Log.Info("[REGION DB]: No terrain found for region"); | 562 | } |
560 | return null; | 563 | _Log.Info("[REGION DB]: Loaded terrain revision r" + rev); |
561 | } | 564 | } |
562 | _Log.Info("[REGION DB]: Loaded terrain revision r" + rev); | ||
563 | } | 565 | } |
564 | } | 566 | } |
565 | 567 | ||
566 | return terrain; | 568 | return terrData; |
569 | } | ||
570 | |||
571 | // Legacy entry point for when terrain was always a 256x256 heightmap | ||
572 | public void StoreTerrain(double[,] terrain, UUID regionID) | ||
573 | { | ||
574 | StoreTerrain(new HeightmapTerrainData(terrain), regionID); | ||
567 | } | 575 | } |
568 | 576 | ||
569 | /// <summary> | 577 | /// <summary> |
@@ -571,33 +579,43 @@ ELSE | |||
571 | /// </summary> | 579 | /// </summary> |
572 | /// <param name="terrain">terrain map data.</param> | 580 | /// <param name="terrain">terrain map data.</param> |
573 | /// <param name="regionID">regionID.</param> | 581 | /// <param name="regionID">regionID.</param> |
574 | public void StoreTerrain(double[,] terrain, UUID regionID) | 582 | public void StoreTerrain(TerrainData terrData, UUID regionID) |
575 | { | 583 | { |
576 | int revision = Util.UnixTimeSinceEpoch(); | ||
577 | |||
578 | //Delete old terrain map | 584 | //Delete old terrain map |
579 | string sql = "delete from terrain where RegionUUID=@RegionUUID"; | 585 | string sql = @"delete from terrain where ""RegionUUID""=:RegionUUID"; |
580 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 586 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
581 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
582 | { | 587 | { |
583 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID)); | 588 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
584 | conn.Open(); | 589 | { |
585 | cmd.ExecuteNonQuery(); | 590 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", regionID)); |
591 | conn.Open(); | ||
592 | cmd.ExecuteNonQuery(); | ||
593 | |||
594 | _Log.InfoFormat("{0} Deleted terrain revision id = {1}", LogHeader, regionID); | ||
595 | } | ||
586 | } | 596 | } |
587 | 597 | ||
588 | sql = "insert into terrain(RegionUUID, Revision, Heightfield) values(@RegionUUID, @Revision, @Heightfield)"; | 598 | int terrainDBRevision; |
599 | Array terrainDBblob; | ||
600 | terrData.GetDatabaseBlob(out terrainDBRevision, out terrainDBblob); | ||
601 | |||
602 | sql = @"insert into terrain(""RegionUUID"", ""Revision"", ""Heightfield"") values(:RegionUUID, :Revision, :Heightfield)"; | ||
589 | 603 | ||
590 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 604 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
591 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | ||
592 | { | 605 | { |
593 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionID)); | 606 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
594 | cmd.Parameters.Add(_Database.CreateParameter("@Revision", revision)); | 607 | { |
595 | cmd.Parameters.Add(_Database.CreateParameter("@Heightfield", serializeTerrain(terrain))); | 608 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", regionID)); |
596 | conn.Open(); | 609 | cmd.Parameters.Add(_Database.CreateParameter("Revision", terrainDBRevision)); |
597 | cmd.ExecuteNonQuery(); | 610 | cmd.Parameters.Add(_Database.CreateParameter("Heightfield", terrainDBblob)); |
611 | conn.Open(); | ||
612 | cmd.ExecuteNonQuery(); | ||
613 | |||
614 | _Log.InfoFormat("{0} Stored terrain id = {1}, terrainSize = <{2},{3}>", | ||
615 | LogHeader, regionID, terrData.SizeX, terrData.SizeY); | ||
616 | } | ||
598 | } | 617 | } |
599 | 618 | ||
600 | _Log.Info("[REGION DB]: Stored terrain revision r " + revision); | ||
601 | } | 619 | } |
602 | 620 | ||
603 | /// <summary> | 621 | /// <summary> |
@@ -609,15 +627,15 @@ ELSE | |||
609 | { | 627 | { |
610 | List<LandData> LandDataForRegion = new List<LandData>(); | 628 | List<LandData> LandDataForRegion = new List<LandData>(); |
611 | 629 | ||
612 | string sql = "select * from land where RegionUUID = @RegionUUID"; | 630 | string sql = @"select * from land where ""RegionUUID"" = :RegionUUID"; |
613 | 631 | ||
614 | //Retrieve all land data from region | 632 | //Retrieve all land data from region |
615 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 633 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
616 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 634 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
617 | { | 635 | { |
618 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", regionUUID)); | 636 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", regionUUID)); |
619 | conn.Open(); | 637 | conn.Open(); |
620 | using (SqlDataReader readerLandData = cmd.ExecuteReader()) | 638 | using (NpgsqlDataReader readerLandData = cmd.ExecuteReader()) |
621 | { | 639 | { |
622 | while (readerLandData.Read()) | 640 | while (readerLandData.Read()) |
623 | { | 641 | { |
@@ -629,13 +647,13 @@ ELSE | |||
629 | //Retrieve all accesslist data for all landdata | 647 | //Retrieve all accesslist data for all landdata |
630 | foreach (LandData LandData in LandDataForRegion) | 648 | foreach (LandData LandData in LandDataForRegion) |
631 | { | 649 | { |
632 | sql = "select * from landaccesslist where LandUUID = @LandUUID"; | 650 | sql = @"select * from landaccesslist where ""LandUUID"" = :LandUUID"; |
633 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 651 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
634 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 652 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
635 | { | 653 | { |
636 | cmd.Parameters.Add(_Database.CreateParameter("@LandUUID", LandData.GlobalID)); | 654 | cmd.Parameters.Add(_Database.CreateParameter("LandUUID", LandData.GlobalID)); |
637 | conn.Open(); | 655 | conn.Open(); |
638 | using (SqlDataReader readerAccessList = cmd.ExecuteReader()) | 656 | using (NpgsqlDataReader readerAccessList = cmd.ExecuteReader()) |
639 | { | 657 | { |
640 | while (readerAccessList.Read()) | 658 | while (readerAccessList.Read()) |
641 | { | 659 | { |
@@ -656,29 +674,33 @@ ELSE | |||
656 | public void StoreLandObject(ILandObject parcel) | 674 | public void StoreLandObject(ILandObject parcel) |
657 | { | 675 | { |
658 | //As this is only one record in land table I just delete all and then add a new record. | 676 | //As this is only one record in land table I just delete all and then add a new record. |
659 | //As the delete landaccess is already in the mysql code | 677 | //As the delete landaccess is already in the pgsql code |
660 | 678 | ||
661 | //Delete old values | 679 | //Delete old values |
662 | RemoveLandObject(parcel.LandData.GlobalID); | 680 | RemoveLandObject(parcel.LandData.GlobalID); |
663 | 681 | ||
664 | //Insert new values | 682 | //Insert new values |
665 | string sql = @"INSERT INTO [land] | 683 | string sql = @"INSERT INTO land |
666 | ([UUID],[RegionUUID],[LocalLandID],[Bitmap],[Name],[Description],[OwnerUUID],[IsGroupOwned],[Area],[AuctionID],[Category],[ClaimDate],[ClaimPrice],[GroupUUID],[SalePrice],[LandStatus],[LandFlags],[LandingType],[MediaAutoScale],[MediaTextureUUID],[MediaURL],[MusicURL],[PassHours],[PassPrice],[SnapshotUUID],[UserLocationX],[UserLocationY],[UserLocationZ],[UserLookAtX],[UserLookAtY],[UserLookAtZ],[AuthbuyerID],[OtherCleanTime]) | 684 | (""UUID"",""RegionUUID"",""LocalLandID"",""Bitmap"",""Name"",""Description"",""OwnerUUID"",""IsGroupOwned"",""Area"",""AuctionID"",""Category"",""ClaimDate"",""ClaimPrice"", |
667 | VALUES | 685 | ""GroupUUID"",""SalePrice"",""LandStatus"",""LandFlags"",""LandingType"",""MediaAutoScale"",""MediaTextureUUID"",""MediaURL"",""MusicURL"",""PassHours"",""PassPrice"", |
668 | (@UUID,@RegionUUID,@LocalLandID,@Bitmap,@Name,@Description,@OwnerUUID,@IsGroupOwned,@Area,@AuctionID,@Category,@ClaimDate,@ClaimPrice,@GroupUUID,@SalePrice,@LandStatus,@LandFlags,@LandingType,@MediaAutoScale,@MediaTextureUUID,@MediaURL,@MusicURL,@PassHours,@PassPrice,@SnapshotUUID,@UserLocationX,@UserLocationY,@UserLocationZ,@UserLookAtX,@UserLookAtY,@UserLookAtZ,@AuthbuyerID,@OtherCleanTime)"; | 686 | ""SnapshotUUID"",""UserLocationX"",""UserLocationY"",""UserLocationZ"",""UserLookAtX"",""UserLookAtY"",""UserLookAtZ"",""AuthbuyerID"",""OtherCleanTime"") |
669 | 687 | VALUES | |
670 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 688 | (:UUID,:RegionUUID,:LocalLandID,:Bitmap,:Name,:Description,:OwnerUUID,:IsGroupOwned,:Area,:AuctionID,:Category,:ClaimDate,:ClaimPrice, |
671 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 689 | :GroupUUID,:SalePrice,:LandStatus,:LandFlags,:LandingType,:MediaAutoScale,:MediaTextureUUID,:MediaURL,:MusicURL,:PassHours,:PassPrice, |
690 | :SnapshotUUID,:UserLocationX,:UserLocationY,:UserLocationZ,:UserLookAtX,:UserLookAtY,:UserLookAtZ,:AuthbuyerID,:OtherCleanTime)"; | ||
691 | |||
692 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | ||
693 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
672 | { | 694 | { |
673 | cmd.Parameters.AddRange(CreateLandParameters(parcel.LandData, parcel.RegionUUID)); | 695 | cmd.Parameters.AddRange(CreateLandParameters(parcel.LandData, parcel.RegionUUID)); |
674 | conn.Open(); | 696 | conn.Open(); |
675 | cmd.ExecuteNonQuery(); | 697 | cmd.ExecuteNonQuery(); |
676 | } | 698 | } |
677 | 699 | ||
678 | sql = "INSERT INTO [landaccesslist] ([LandUUID],[AccessUUID],[Flags],[Expires]) VALUES (@LandUUID,@AccessUUID,@Flags,@Expires)"; | 700 | sql = @"INSERT INTO landaccesslist (""LandUUID"",""AccessUUID"",""LandFlags"",""Expires"") VALUES (:LandUUID,:AccessUUID,:Flags,:Expires)"; |
679 | 701 | ||
680 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 702 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
681 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 703 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
682 | { | 704 | { |
683 | conn.Open(); | 705 | conn.Open(); |
684 | foreach (LandAccessEntry parcelAccessEntry in parcel.LandData.ParcelAccessList) | 706 | foreach (LandAccessEntry parcelAccessEntry in parcel.LandData.ParcelAccessList) |
@@ -697,19 +719,19 @@ VALUES | |||
697 | /// <param name="globalID">UUID of landobject</param> | 719 | /// <param name="globalID">UUID of landobject</param> |
698 | public void RemoveLandObject(UUID globalID) | 720 | public void RemoveLandObject(UUID globalID) |
699 | { | 721 | { |
700 | string sql = "delete from land where UUID=@UUID"; | 722 | string sql = @"delete from land where ""UUID""=:UUID"; |
701 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 723 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
702 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 724 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
703 | { | 725 | { |
704 | cmd.Parameters.Add(_Database.CreateParameter("@UUID", globalID)); | 726 | cmd.Parameters.Add(_Database.CreateParameter("UUID", globalID)); |
705 | conn.Open(); | 727 | conn.Open(); |
706 | cmd.ExecuteNonQuery(); | 728 | cmd.ExecuteNonQuery(); |
707 | } | 729 | } |
708 | sql = "delete from landaccesslist where LandUUID=@UUID"; | 730 | sql = @"delete from landaccesslist where ""LandUUID""=:UUID"; |
709 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 731 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
710 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 732 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
711 | { | 733 | { |
712 | cmd.Parameters.Add(_Database.CreateParameter("@UUID", globalID)); | 734 | cmd.Parameters.Add(_Database.CreateParameter("UUID", globalID)); |
713 | conn.Open(); | 735 | conn.Open(); |
714 | cmd.ExecuteNonQuery(); | 736 | cmd.ExecuteNonQuery(); |
715 | } | 737 | } |
@@ -718,13 +740,15 @@ VALUES | |||
718 | { | 740 | { |
719 | RegionLightShareData nWP = new RegionLightShareData(); | 741 | RegionLightShareData nWP = new RegionLightShareData(); |
720 | nWP.OnSave += StoreRegionWindlightSettings; | 742 | nWP.OnSave += StoreRegionWindlightSettings; |
721 | string sql = "select * from [regionwindlight] where region_id = @regionID"; | 743 | |
722 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 744 | string sql = @"select * from regionwindlight where ""region_id"" = :regionID"; |
723 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 745 | |
746 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | ||
747 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
724 | { | 748 | { |
725 | cmd.Parameters.Add(_Database.CreateParameter("@regionID", regionUUID)); | 749 | cmd.Parameters.Add(_Database.CreateParameter("regionID", regionUUID.ToString() )); |
726 | conn.Open(); | 750 | conn.Open(); |
727 | using (SqlDataReader result = cmd.ExecuteReader()) | 751 | using (NpgsqlDataReader result = cmd.ExecuteReader()) |
728 | { | 752 | { |
729 | if (!result.Read()) | 753 | if (!result.Read()) |
730 | { | 754 | { |
@@ -807,27 +831,28 @@ VALUES | |||
807 | 831 | ||
808 | public void RemoveRegionWindlightSettings(UUID regionID) | 832 | public void RemoveRegionWindlightSettings(UUID regionID) |
809 | { | 833 | { |
810 | string sql = "delete from [regionwindlight] where region_id = @region_id"; | 834 | string sql = @"delete from regionwindlight where ""region_id"" = :region_id"; |
811 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 835 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
812 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 836 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
813 | { | 837 | { |
814 | conn.Open(); | 838 | conn.Open(); |
815 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionID)); | 839 | cmd.Parameters.Add(_Database.CreateParameter("region_id", regionID.ToString())); |
816 | cmd.ExecuteNonQuery(); | 840 | cmd.ExecuteNonQuery(); |
817 | } | 841 | } |
818 | } | 842 | } |
819 | 843 | ||
820 | public void StoreRegionWindlightSettings(RegionLightShareData wl) | 844 | public void StoreRegionWindlightSettings(RegionLightShareData wl) |
821 | { | 845 | { |
822 | string sql = "select count (region_id) from regionwindlight where region_id = @region_id"; | 846 | string sql = @"select region_id from regionwindlight where ""region_id"" = :region_id limit 1;"; |
823 | bool exists = false; | 847 | bool exists = false; |
824 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 848 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
825 | { | 849 | { |
826 | conn.Open(); | 850 | conn.Open(); |
827 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 851 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
828 | { | 852 | { |
829 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", wl.regionID)); | 853 | cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID.ToString() )); |
830 | exists = (int)cmd.ExecuteScalar() > 0; | 854 | NpgsqlDataReader dr = cmd.ExecuteReader(); |
855 | exists = dr.Read(); | ||
831 | } | 856 | } |
832 | } | 857 | } |
833 | if (exists) | 858 | if (exists) |
@@ -836,140 +861,141 @@ VALUES | |||
836 | } | 861 | } |
837 | 862 | ||
838 | // sql insert | 863 | // sql insert |
839 | sql = @"INSERT INTO [regionwindlight] | 864 | sql = @"INSERT INTO regionwindlight |
840 | ([region_id] | 865 | (region_id |
841 | ,[water_color_r] | 866 | ,water_color_r |
842 | ,[water_color_g] | 867 | ,water_color_g |
843 | ,[water_color_b] | 868 | ,water_color_b |
844 | ,[water_fog_density_exponent] | 869 | ,water_fog_density_exponent |
845 | ,[underwater_fog_modifier] | 870 | ,underwater_fog_modifier |
846 | ,[reflection_wavelet_scale_1] | 871 | ,reflection_wavelet_scale_1 |
847 | ,[reflection_wavelet_scale_2] | 872 | ,reflection_wavelet_scale_2 |
848 | ,[reflection_wavelet_scale_3] | 873 | ,reflection_wavelet_scale_3 |
849 | ,[fresnel_scale] | 874 | ,fresnel_scale |
850 | ,[fresnel_offset] | 875 | ,fresnel_offset |
851 | ,[refract_scale_above] | 876 | ,refract_scale_above |
852 | ,[refract_scale_below] | 877 | ,refract_scale_below |
853 | ,[blur_multiplier] | 878 | ,blur_multiplier |
854 | ,[big_wave_direction_x] | 879 | ,big_wave_direction_x |
855 | ,[big_wave_direction_y] | 880 | ,big_wave_direction_y |
856 | ,[little_wave_direction_x] | 881 | ,little_wave_direction_x |
857 | ,[little_wave_direction_y] | 882 | ,little_wave_direction_y |
858 | ,[normal_map_texture] | 883 | ,normal_map_texture |
859 | ,[horizon_r] | 884 | ,horizon_r |
860 | ,[horizon_g] | 885 | ,horizon_g |
861 | ,[horizon_b] | 886 | ,horizon_b |
862 | ,[horizon_i] | 887 | ,horizon_i |
863 | ,[haze_horizon] | 888 | ,haze_horizon |
864 | ,[blue_density_r] | 889 | ,blue_density_r |
865 | ,[blue_density_g] | 890 | ,blue_density_g |
866 | ,[blue_density_b] | 891 | ,blue_density_b |
867 | ,[blue_density_i] | 892 | ,blue_density_i |
868 | ,[haze_density] | 893 | ,haze_density |
869 | ,[density_multiplier] | 894 | ,density_multiplier |
870 | ,[distance_multiplier] | 895 | ,distance_multiplier |
871 | ,[max_altitude] | 896 | ,max_altitude |
872 | ,[sun_moon_color_r] | 897 | ,sun_moon_color_r |
873 | ,[sun_moon_color_g] | 898 | ,sun_moon_color_g |
874 | ,[sun_moon_color_b] | 899 | ,sun_moon_color_b |
875 | ,[sun_moon_color_i] | 900 | ,sun_moon_color_i |
876 | ,[sun_moon_position] | 901 | ,sun_moon_position |
877 | ,[ambient_r] | 902 | ,ambient_r |
878 | ,[ambient_g] | 903 | ,ambient_g |
879 | ,[ambient_b] | 904 | ,ambient_b |
880 | ,[ambient_i] | 905 | ,ambient_i |
881 | ,[east_angle] | 906 | ,east_angle |
882 | ,[sun_glow_focus] | 907 | ,sun_glow_focus |
883 | ,[sun_glow_size] | 908 | ,sun_glow_size |
884 | ,[scene_gamma] | 909 | ,scene_gamma |
885 | ,[star_brightness] | 910 | ,star_brightness |
886 | ,[cloud_color_r] | 911 | ,cloud_color_r |
887 | ,[cloud_color_g] | 912 | ,cloud_color_g |
888 | ,[cloud_color_b] | 913 | ,cloud_color_b |
889 | ,[cloud_color_i] | 914 | ,cloud_color_i |
890 | ,[cloud_x] | 915 | ,cloud_x |
891 | ,[cloud_y] | 916 | ,cloud_y |
892 | ,[cloud_density] | 917 | ,cloud_density |
893 | ,[cloud_coverage] | 918 | ,cloud_coverage |
894 | ,[cloud_scale] | 919 | ,cloud_scale |
895 | ,[cloud_detail_x] | 920 | ,cloud_detail_x |
896 | ,[cloud_detail_y] | 921 | ,cloud_detail_y |
897 | ,[cloud_detail_density] | 922 | ,cloud_detail_density |
898 | ,[cloud_scroll_x] | 923 | ,cloud_scroll_x |
899 | ,[cloud_scroll_x_lock] | 924 | ,cloud_scroll_x_lock |
900 | ,[cloud_scroll_y] | 925 | ,cloud_scroll_y |
901 | ,[cloud_scroll_y_lock] | 926 | ,cloud_scroll_y_lock |
902 | ,[draw_classic_clouds]) | 927 | ,draw_classic_clouds) |
903 | VALUES | 928 | VALUES |
904 | (@region_id | 929 | (:region_id |
905 | ,@water_color_r | 930 | ,:water_color_r |
906 | ,@water_color_g | 931 | ,:water_color_g |
907 | ,@water_color_b | 932 | ,:water_color_b |
908 | ,@water_fog_density_exponent | 933 | ,:water_fog_density_exponent |
909 | ,@underwater_fog_modifier | 934 | ,:underwater_fog_modifier |
910 | ,@reflection_wavelet_scale_1 | 935 | ,:reflection_wavelet_scale_1 |
911 | ,@reflection_wavelet_scale_2 | 936 | ,:reflection_wavelet_scale_2 |
912 | ,@reflection_wavelet_scale_3 | 937 | ,:reflection_wavelet_scale_3 |
913 | ,@fresnel_scale | 938 | ,:fresnel_scale |
914 | ,@fresnel_offset | 939 | ,:fresnel_offset |
915 | ,@refract_scale_above | 940 | ,:refract_scale_above |
916 | ,@refract_scale_below | 941 | ,:refract_scale_below |
917 | ,@blur_multiplier | 942 | ,:blur_multiplier |
918 | ,@big_wave_direction_x | 943 | ,:big_wave_direction_x |
919 | ,@big_wave_direction_y | 944 | ,:big_wave_direction_y |
920 | ,@little_wave_direction_x | 945 | ,:little_wave_direction_x |
921 | ,@little_wave_direction_y | 946 | ,:little_wave_direction_y |
922 | ,@normal_map_texture | 947 | ,:normal_map_texture |
923 | ,@horizon_r | 948 | ,:horizon_r |
924 | ,@horizon_g | 949 | ,:horizon_g |
925 | ,@horizon_b | 950 | ,:horizon_b |
926 | ,@horizon_i | 951 | ,:horizon_i |
927 | ,@haze_horizon | 952 | ,:haze_horizon |
928 | ,@blue_density_r | 953 | ,:blue_density_r |
929 | ,@blue_density_g | 954 | ,:blue_density_g |
930 | ,@blue_density_b | 955 | ,:blue_density_b |
931 | ,@blue_density_i | 956 | ,:blue_density_i |
932 | ,@haze_density | 957 | ,:haze_density |
933 | ,@density_multiplier | 958 | ,:density_multiplier |
934 | ,@distance_multiplier | 959 | ,:distance_multiplier |
935 | ,@max_altitude | 960 | ,:max_altitude |
936 | ,@sun_moon_color_r | 961 | ,:sun_moon_color_r |
937 | ,@sun_moon_color_g | 962 | ,:sun_moon_color_g |
938 | ,@sun_moon_color_b | 963 | ,:sun_moon_color_b |
939 | ,@sun_moon_color_i | 964 | ,:sun_moon_color_i |
940 | ,@sun_moon_position | 965 | ,:sun_moon_position |
941 | ,@ambient_r | 966 | ,:ambient_r |
942 | ,@ambient_g | 967 | ,:ambient_g |
943 | ,@ambient_b | 968 | ,:ambient_b |
944 | ,@ambient_i | 969 | ,:ambient_i |
945 | ,@east_angle | 970 | ,:east_angle |
946 | ,@sun_glow_focus | 971 | ,:sun_glow_focus |
947 | ,@sun_glow_size | 972 | ,:sun_glow_size |
948 | ,@scene_gamma | 973 | ,:scene_gamma |
949 | ,@star_brightness | 974 | ,:star_brightness |
950 | ,@cloud_color_r | 975 | ,:cloud_color_r |
951 | ,@cloud_color_g | 976 | ,:cloud_color_g |
952 | ,@cloud_color_b | 977 | ,:cloud_color_b |
953 | ,@cloud_color_i | 978 | ,:cloud_color_i |
954 | ,@cloud_x | 979 | ,:cloud_x |
955 | ,@cloud_y | 980 | ,:cloud_y |
956 | ,@cloud_density | 981 | ,:cloud_density |
957 | ,@cloud_coverage | 982 | ,:cloud_coverage |
958 | ,@cloud_scale | 983 | ,:cloud_scale |
959 | ,@cloud_detail_x | 984 | ,:cloud_detail_x |
960 | ,@cloud_detail_y | 985 | ,:cloud_detail_y |
961 | ,@cloud_detail_density | 986 | ,:cloud_detail_density |
962 | ,@cloud_scroll_x | 987 | ,:cloud_scroll_x |
963 | ,@cloud_scroll_x_lock | 988 | ,:cloud_scroll_x_lock |
964 | ,@cloud_scroll_y | 989 | ,:cloud_scroll_y |
965 | ,@cloud_scroll_y_lock | 990 | ,:cloud_scroll_y_lock |
966 | ,@draw_classic_clouds)"; | 991 | ,:draw_classic_clouds);"; |
967 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 992 | |
993 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | ||
968 | { | 994 | { |
969 | conn.Open(); | 995 | conn.Open(); |
970 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 996 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
971 | { | 997 | { |
972 | cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID)); | 998 | cmd.Parameters.Add(_Database.CreateParameter("region_id", wl.regionID.ToString())); |
973 | cmd.Parameters.Add(_Database.CreateParameter("water_color_r", wl.waterColor.X)); | 999 | cmd.Parameters.Add(_Database.CreateParameter("water_color_r", wl.waterColor.X)); |
974 | cmd.Parameters.Add(_Database.CreateParameter("water_color_g", wl.waterColor.Y)); | 1000 | cmd.Parameters.Add(_Database.CreateParameter("water_color_g", wl.waterColor.Y)); |
975 | cmd.Parameters.Add(_Database.CreateParameter("water_color_b", wl.waterColor.Z)); | 1001 | cmd.Parameters.Add(_Database.CreateParameter("water_color_b", wl.waterColor.Z)); |
@@ -987,7 +1013,7 @@ VALUES | |||
987 | cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_y", wl.bigWaveDirection.Y)); | 1013 | cmd.Parameters.Add(_Database.CreateParameter("big_wave_direction_y", wl.bigWaveDirection.Y)); |
988 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_x", wl.littleWaveDirection.X)); | 1014 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_x", wl.littleWaveDirection.X)); |
989 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_y", wl.littleWaveDirection.Y)); | 1015 | cmd.Parameters.Add(_Database.CreateParameter("little_wave_direction_y", wl.littleWaveDirection.Y)); |
990 | cmd.Parameters.Add(_Database.CreateParameter("normal_map_texture", wl.normalMapTexture)); | 1016 | cmd.Parameters.Add(_Database.CreateParameter("normal_map_texture", wl.normalMapTexture.ToString())); |
991 | cmd.Parameters.Add(_Database.CreateParameter("horizon_r", wl.horizon.X)); | 1017 | cmd.Parameters.Add(_Database.CreateParameter("horizon_r", wl.horizon.X)); |
992 | cmd.Parameters.Add(_Database.CreateParameter("horizon_g", wl.horizon.Y)); | 1018 | cmd.Parameters.Add(_Database.CreateParameter("horizon_g", wl.horizon.Y)); |
993 | cmd.Parameters.Add(_Database.CreateParameter("horizon_b", wl.horizon.Z)); | 1019 | cmd.Parameters.Add(_Database.CreateParameter("horizon_b", wl.horizon.Z)); |
@@ -1185,13 +1211,13 @@ VALUES | |||
1185 | #region Environment Settings | 1211 | #region Environment Settings |
1186 | public string LoadRegionEnvironmentSettings(UUID regionUUID) | 1212 | public string LoadRegionEnvironmentSettings(UUID regionUUID) |
1187 | { | 1213 | { |
1188 | string sql = "select * from [regionenvironment] where region_id = @region_id"; | 1214 | string sql = "select * from regionenvironment where region_id = :region_id"; |
1189 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1215 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1190 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1216 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
1191 | { | 1217 | { |
1192 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID)); | 1218 | cmd.Parameters.Add(_Database.CreateParameter("region_id", regionUUID)); |
1193 | conn.Open(); | 1219 | conn.Open(); |
1194 | using (SqlDataReader result = cmd.ExecuteReader()) | 1220 | using (NpgsqlDataReader result = cmd.ExecuteReader()) |
1195 | { | 1221 | { |
1196 | if (!result.Read()) | 1222 | if (!result.Read()) |
1197 | { | 1223 | { |
@@ -1208,24 +1234,23 @@ VALUES | |||
1208 | public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings) | 1234 | public void StoreRegionEnvironmentSettings(UUID regionUUID, string settings) |
1209 | { | 1235 | { |
1210 | { | 1236 | { |
1211 | string sql = "DELETE FROM [regionenvironment] WHERE region_id = @region_id"; | 1237 | string sql = "DELETE FROM regionenvironment WHERE region_id = :region_id ;"; |
1212 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1238 | |
1213 | 1239 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | |
1214 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1240 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
1215 | { | 1241 | { |
1216 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID)); | 1242 | cmd.Parameters.Add(_Database.CreateParameter("region_id", regionUUID)); |
1217 | conn.Open(); | 1243 | conn.Open(); |
1218 | cmd.ExecuteNonQuery(); | 1244 | cmd.ExecuteNonQuery(); |
1219 | } | 1245 | } |
1220 | 1246 | ||
1221 | sql = "INSERT INTO [regionenvironment] (region_id, llsd_settings) VALUES (@region_id, @llsd_settings)"; | 1247 | sql = "INSERT INTO regionenvironment (region_id, llsd_settings) VALUES (:region_id, :llsd_settings) ;"; |
1222 | |||
1223 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | ||
1224 | 1248 | ||
1225 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1249 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1250 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
1226 | { | 1251 | { |
1227 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID)); | 1252 | cmd.Parameters.Add(_Database.CreateParameter("region_id", regionUUID)); |
1228 | cmd.Parameters.Add(_Database.CreateParameter("@llsd_settings", settings)); | 1253 | cmd.Parameters.Add(_Database.CreateParameter("llsd_settings", settings)); |
1229 | 1254 | ||
1230 | conn.Open(); | 1255 | conn.Open(); |
1231 | cmd.ExecuteNonQuery(); | 1256 | cmd.ExecuteNonQuery(); |
@@ -1235,11 +1260,11 @@ VALUES | |||
1235 | 1260 | ||
1236 | public void RemoveRegionEnvironmentSettings(UUID regionUUID) | 1261 | public void RemoveRegionEnvironmentSettings(UUID regionUUID) |
1237 | { | 1262 | { |
1238 | string sql = "delete from [regionenvironment] where region_id = @region_id"; | 1263 | string sql = "delete from regionenvironment where region_id = :region_id ;"; |
1239 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1264 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1240 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1265 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
1241 | { | 1266 | { |
1242 | cmd.Parameters.Add(_Database.CreateParameter("@region_id", regionUUID)); | 1267 | cmd.Parameters.Add(_Database.CreateParameter("region_id", regionUUID)); |
1243 | 1268 | ||
1244 | conn.Open(); | 1269 | conn.Open(); |
1245 | cmd.ExecuteNonQuery(); | 1270 | cmd.ExecuteNonQuery(); |
@@ -1254,14 +1279,14 @@ VALUES | |||
1254 | /// <returns></returns> | 1279 | /// <returns></returns> |
1255 | public RegionSettings LoadRegionSettings(UUID regionUUID) | 1280 | public RegionSettings LoadRegionSettings(UUID regionUUID) |
1256 | { | 1281 | { |
1257 | string sql = "select * from regionsettings where regionUUID = @regionUUID"; | 1282 | string sql = @"select * from regionsettings where ""regionUUID"" = :regionUUID"; |
1258 | RegionSettings regionSettings; | 1283 | RegionSettings regionSettings; |
1259 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1284 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1260 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1285 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
1261 | { | 1286 | { |
1262 | cmd.Parameters.Add(_Database.CreateParameter("@regionUUID", regionUUID)); | 1287 | cmd.Parameters.Add(_Database.CreateParameter("regionUUID", regionUUID)); |
1263 | conn.Open(); | 1288 | conn.Open(); |
1264 | using (SqlDataReader reader = cmd.ExecuteReader()) | 1289 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
1265 | { | 1290 | { |
1266 | if (reader.Read()) | 1291 | if (reader.Read()) |
1267 | { | 1292 | { |
@@ -1294,11 +1319,11 @@ VALUES | |||
1294 | { | 1319 | { |
1295 | //Little check if regionUUID already exist in DB | 1320 | //Little check if regionUUID already exist in DB |
1296 | string regionUUID; | 1321 | string regionUUID; |
1297 | string sql = "SELECT regionUUID FROM regionsettings WHERE regionUUID = @regionUUID"; | 1322 | string sql = @"SELECT ""regionUUID"" FROM regionsettings WHERE ""regionUUID"" = :regionUUID"; |
1298 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1323 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1299 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1324 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
1300 | { | 1325 | { |
1301 | cmd.Parameters.Add(_Database.CreateParameter("@regionUUID", regionSettings.RegionUUID)); | 1326 | cmd.Parameters.Add(_Database.CreateParameter("regionUUID", regionSettings.RegionUUID)); |
1302 | conn.Open(); | 1327 | conn.Open(); |
1303 | regionUUID = cmd.ExecuteScalar().ToString(); | 1328 | regionUUID = cmd.ExecuteScalar().ToString(); |
1304 | } | 1329 | } |
@@ -1311,20 +1336,22 @@ VALUES | |||
1311 | { | 1336 | { |
1312 | //This method only updates region settings!!! First call LoadRegionSettings to create new region settings in DB | 1337 | //This method only updates region settings!!! First call LoadRegionSettings to create new region settings in DB |
1313 | sql = | 1338 | sql = |
1314 | @"UPDATE [regionsettings] SET [block_terraform] = @block_terraform ,[block_fly] = @block_fly ,[allow_damage] = @allow_damage | 1339 | @"UPDATE regionsettings SET block_terraform = :block_terraform ,block_fly = :block_fly ,allow_damage = :allow_damage |
1315 | ,[restrict_pushing] = @restrict_pushing ,[allow_land_resell] = @allow_land_resell ,[allow_land_join_divide] = @allow_land_join_divide | 1340 | ,restrict_pushing = :restrict_pushing ,allow_land_resell = :allow_land_resell ,allow_land_join_divide = :allow_land_join_divide |
1316 | ,[block_show_in_search] = @block_show_in_search ,[agent_limit] = @agent_limit ,[object_bonus] = @object_bonus ,[maturity] = @maturity | 1341 | ,block_show_in_search = :block_show_in_search ,agent_limit = :agent_limit ,object_bonus = :object_bonus ,maturity = :maturity |
1317 | ,[disable_scripts] = @disable_scripts ,[disable_collisions] = @disable_collisions ,[disable_physics] = @disable_physics | 1342 | ,disable_scripts = :disable_scripts ,disable_collisions = :disable_collisions ,disable_physics = :disable_physics |
1318 | ,[terrain_texture_1] = @terrain_texture_1 ,[terrain_texture_2] = @terrain_texture_2 ,[terrain_texture_3] = @terrain_texture_3 | 1343 | ,terrain_texture_1 = :terrain_texture_1 ,terrain_texture_2 = :terrain_texture_2 ,terrain_texture_3 = :terrain_texture_3 |
1319 | ,[terrain_texture_4] = @terrain_texture_4 ,[elevation_1_nw] = @elevation_1_nw ,[elevation_2_nw] = @elevation_2_nw | 1344 | ,terrain_texture_4 = :terrain_texture_4 ,elevation_1_nw = :elevation_1_nw ,elevation_2_nw = :elevation_2_nw |
1320 | ,[elevation_1_ne] = @elevation_1_ne ,[elevation_2_ne] = @elevation_2_ne ,[elevation_1_se] = @elevation_1_se ,[elevation_2_se] = @elevation_2_se | 1345 | ,elevation_1_ne = :elevation_1_ne ,elevation_2_ne = :elevation_2_ne ,elevation_1_se = :elevation_1_se ,elevation_2_se = :elevation_2_se |
1321 | ,[elevation_1_sw] = @elevation_1_sw ,[elevation_2_sw] = @elevation_2_sw ,[water_height] = @water_height ,[terrain_raise_limit] = @terrain_raise_limit | 1346 | ,elevation_1_sw = :elevation_1_sw ,elevation_2_sw = :elevation_2_sw ,water_height = :water_height ,terrain_raise_limit = :terrain_raise_limit |
1322 | ,[terrain_lower_limit] = @terrain_lower_limit ,[use_estate_sun] = @use_estate_sun ,[fixed_sun] = @fixed_sun ,[sun_position] = @sun_position | 1347 | ,terrain_lower_limit = :terrain_lower_limit ,use_estate_sun = :use_estate_sun ,fixed_sun = :fixed_sun ,sun_position = :sun_position |
1323 | ,[covenant] = @covenant ,[covenant_datetime] = @covenant_datetime, [sunvectorx] = @sunvectorx, [sunvectory] = @sunvectory, [sunvectorz] = @sunvectorz, [Sandbox] = @Sandbox, [loaded_creation_datetime] = @loaded_creation_datetime, [loaded_creation_id] = @loaded_creation_id, [map_tile_id] = @TerrainImageID, [telehubobject] = @telehubobject, [parcel_tile_id] = @ParcelImageID | 1348 | ,covenant = :covenant ,covenant_datetime = :covenant_datetime, sunvectorx = :sunvectorx, sunvectory = :sunvectory, sunvectorz = :sunvectorz, |
1324 | WHERE [regionUUID] = @regionUUID"; | 1349 | ""Sandbox"" = :Sandbox, loaded_creation_datetime = :loaded_creation_datetime, loaded_creation_id = :loaded_creation_id, ""map_tile_ID"" = :TerrainImageID, |
1325 | 1350 | ""TelehubObject"" = :telehubobject, ""parcel_tile_ID"" = :ParcelImageID | |
1326 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1351 | WHERE ""regionUUID"" = :regionUUID"; |
1327 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1352 | |
1353 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) | ||
1354 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
1328 | { | 1355 | { |
1329 | cmd.Parameters.AddRange(CreateRegionSettingParameters(regionSettings)); | 1356 | cmd.Parameters.AddRange(CreateRegionSettingParameters(regionSettings)); |
1330 | conn.Open(); | 1357 | conn.Open(); |
@@ -1342,51 +1369,29 @@ VALUES | |||
1342 | #region Private Methods | 1369 | #region Private Methods |
1343 | 1370 | ||
1344 | /// <summary> | 1371 | /// <summary> |
1345 | /// Serializes the terrain data for storage in DB. | ||
1346 | /// </summary> | ||
1347 | /// <param name="val">terrain data</param> | ||
1348 | /// <returns></returns> | ||
1349 | private static Array serializeTerrain(double[,] val) | ||
1350 | { | ||
1351 | MemoryStream str = new MemoryStream(((int)Constants.RegionSize * (int)Constants.RegionSize) * sizeof(double)); | ||
1352 | BinaryWriter bw = new BinaryWriter(str); | ||
1353 | |||
1354 | // TODO: COMPATIBILITY - Add byte-order conversions | ||
1355 | for (int x = 0; x < (int)Constants.RegionSize; x++) | ||
1356 | for (int y = 0; y < (int)Constants.RegionSize; y++) | ||
1357 | { | ||
1358 | double height = val[x, y]; | ||
1359 | if (height == 0.0) | ||
1360 | height = double.Epsilon; | ||
1361 | |||
1362 | bw.Write(height); | ||
1363 | } | ||
1364 | |||
1365 | return str.ToArray(); | ||
1366 | } | ||
1367 | |||
1368 | /// <summary> | ||
1369 | /// Stores new regionsettings. | 1372 | /// Stores new regionsettings. |
1370 | /// </summary> | 1373 | /// </summary> |
1371 | /// <param name="regionSettings">The region settings.</param> | 1374 | /// <param name="regionSettings">The region settings.</param> |
1372 | private void StoreNewRegionSettings(RegionSettings regionSettings) | 1375 | private void StoreNewRegionSettings(RegionSettings regionSettings) |
1373 | { | 1376 | { |
1374 | string sql = @"INSERT INTO [regionsettings] | 1377 | string sql = @"INSERT INTO regionsettings |
1375 | ([regionUUID],[block_terraform],[block_fly],[allow_damage],[restrict_pushing],[allow_land_resell],[allow_land_join_divide], | 1378 | (""regionUUID"",block_terraform,block_fly,allow_damage,restrict_pushing,allow_land_resell,allow_land_join_divide, |
1376 | [block_show_in_search],[agent_limit],[object_bonus],[maturity],[disable_scripts],[disable_collisions],[disable_physics], | 1379 | block_show_in_search,agent_limit,object_bonus,maturity,disable_scripts,disable_collisions,disable_physics, |
1377 | [terrain_texture_1],[terrain_texture_2],[terrain_texture_3],[terrain_texture_4],[elevation_1_nw],[elevation_2_nw],[elevation_1_ne], | 1380 | terrain_texture_1,terrain_texture_2,terrain_texture_3,terrain_texture_4,elevation_1_nw,elevation_2_nw,elevation_1_ne, |
1378 | [elevation_2_ne],[elevation_1_se],[elevation_2_se],[elevation_1_sw],[elevation_2_sw],[water_height],[terrain_raise_limit], | 1381 | elevation_2_ne,elevation_1_se,elevation_2_se,elevation_1_sw,elevation_2_sw,water_height,terrain_raise_limit, |
1379 | [terrain_lower_limit],[use_estate_sun],[fixed_sun],[sun_position],[covenant],[covenant_datetime],[sunvectorx], [sunvectory], [sunvectorz],[Sandbox], [loaded_creation_datetime], [loaded_creation_id] | 1382 | terrain_lower_limit,use_estate_sun,fixed_sun,sun_position,covenant,covenant_datetime,sunvectorx, sunvectory, sunvectorz, |
1380 | ) | 1383 | ""Sandbox"", loaded_creation_datetime, loaded_creation_id |
1384 | ) | ||
1381 | VALUES | 1385 | VALUES |
1382 | (@regionUUID,@block_terraform,@block_fly,@allow_damage,@restrict_pushing,@allow_land_resell,@allow_land_join_divide, | 1386 | (:regionUUID,:block_terraform,:block_fly,:allow_damage,:restrict_pushing,:allow_land_resell,:allow_land_join_divide, |
1383 | @block_show_in_search,@agent_limit,@object_bonus,@maturity,@disable_scripts,@disable_collisions,@disable_physics, | 1387 | :block_show_in_search,:agent_limit,:object_bonus,:maturity,:disable_scripts,:disable_collisions,:disable_physics, |
1384 | @terrain_texture_1,@terrain_texture_2,@terrain_texture_3,@terrain_texture_4,@elevation_1_nw,@elevation_2_nw,@elevation_1_ne, | 1388 | :terrain_texture_1,:terrain_texture_2,:terrain_texture_3,:terrain_texture_4,:elevation_1_nw,:elevation_2_nw,:elevation_1_ne, |
1385 | @elevation_2_ne,@elevation_1_se,@elevation_2_se,@elevation_1_sw,@elevation_2_sw,@water_height,@terrain_raise_limit, | 1389 | :elevation_2_ne,:elevation_1_se,:elevation_2_se,:elevation_1_sw,:elevation_2_sw,:water_height,:terrain_raise_limit, |
1386 | @terrain_lower_limit,@use_estate_sun,@fixed_sun,@sun_position,@covenant, @covenant_datetime, @sunvectorx,@sunvectory, @sunvectorz, @Sandbox, @loaded_creation_datetime, @loaded_creation_id)"; | 1390 | :terrain_lower_limit,:use_estate_sun,:fixed_sun,:sun_position,:covenant, :covenant_datetime, :sunvectorx,:sunvectory, |
1387 | 1391 | :sunvectorz, :Sandbox, :loaded_creation_datetime, :loaded_creation_id )"; | |
1388 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 1392 | |
1389 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 1393 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
1394 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
1390 | { | 1395 | { |
1391 | cmd.Parameters.AddRange(CreateRegionSettingParameters(regionSettings)); | 1396 | cmd.Parameters.AddRange(CreateRegionSettingParameters(regionSettings)); |
1392 | conn.Open(); | 1397 | conn.Open(); |
@@ -1578,8 +1583,8 @@ VALUES | |||
1578 | prim.TouchName = (string)primRow["TouchName"]; | 1583 | prim.TouchName = (string)primRow["TouchName"]; |
1579 | // permissions | 1584 | // permissions |
1580 | prim.Flags = (PrimFlags)Convert.ToUInt32(primRow["ObjectFlags"]); | 1585 | prim.Flags = (PrimFlags)Convert.ToUInt32(primRow["ObjectFlags"]); |
1581 | //prim.CreatorID = new UUID((Guid)primRow["CreatorID"]); | 1586 | //prim.creatorID = new UUID((Guid)primRow["creatorID"]); |
1582 | prim.CreatorIdentification = (string)primRow["CreatorID"]; | 1587 | prim.CreatorIdentification = (string)primRow["CreatorID"].ToString(); |
1583 | prim.OwnerID = new UUID((Guid)primRow["OwnerID"]); | 1588 | prim.OwnerID = new UUID((Guid)primRow["OwnerID"]); |
1584 | prim.GroupID = new UUID((Guid)primRow["GroupID"]); | 1589 | prim.GroupID = new UUID((Guid)primRow["GroupID"]); |
1585 | prim.LastOwnerID = new UUID((Guid)primRow["LastOwnerID"]); | 1590 | prim.LastOwnerID = new UUID((Guid)primRow["LastOwnerID"]); |
@@ -1685,13 +1690,23 @@ VALUES | |||
1685 | 1690 | ||
1686 | prim.CollisionSound = new UUID((Guid)primRow["CollisionSound"]); | 1691 | prim.CollisionSound = new UUID((Guid)primRow["CollisionSound"]); |
1687 | prim.CollisionSoundVolume = Convert.ToSingle(primRow["CollisionSoundVolume"]); | 1692 | prim.CollisionSoundVolume = Convert.ToSingle(primRow["CollisionSoundVolume"]); |
1688 | if (Convert.ToInt16(primRow["PassTouches"]) != 0) | 1693 | |
1689 | prim.PassTouches = true; | 1694 | prim.PassTouches = (bool)primRow["PassTouches"]; |
1690 | prim.LinkNum = Convert.ToInt32(primRow["LinkNumber"]); | ||
1691 | 1695 | ||
1692 | if (!(primRow["MediaURL"] is System.DBNull)) | 1696 | if (!(primRow["MediaURL"] is System.DBNull)) |
1693 | prim.MediaUrl = (string)primRow["MediaURL"]; | 1697 | prim.MediaUrl = (string)primRow["MediaURL"]; |
1694 | 1698 | ||
1699 | if (!(primRow["DynAttrs"] is System.DBNull) && (string)primRow["DynAttrs"] != "") | ||
1700 | prim.DynAttrs = DAMap.FromXml((string)primRow["DynAttrs"]); | ||
1701 | else | ||
1702 | prim.DynAttrs = new DAMap(); | ||
1703 | |||
1704 | prim.PhysicsShapeType = Convert.ToByte(primRow["PhysicsShapeType"]); | ||
1705 | prim.Density = Convert.ToSingle(primRow["Density"]); | ||
1706 | prim.GravityModifier = Convert.ToSingle(primRow["GravityModifier"]); | ||
1707 | prim.Friction = Convert.ToSingle(primRow["Friction"]); | ||
1708 | prim.Restitution = Convert.ToSingle(primRow["Restitution"]); | ||
1709 | |||
1695 | return prim; | 1710 | return prim; |
1696 | } | 1711 | } |
1697 | 1712 | ||
@@ -1749,7 +1764,6 @@ VALUES | |||
1749 | baseShape.Media = PrimitiveBaseShape.MediaList.FromXml((string)shapeRow["Media"]); | 1764 | baseShape.Media = PrimitiveBaseShape.MediaList.FromXml((string)shapeRow["Media"]); |
1750 | } | 1765 | } |
1751 | 1766 | ||
1752 | |||
1753 | return baseShape; | 1767 | return baseShape; |
1754 | } | 1768 | } |
1755 | 1769 | ||
@@ -1773,8 +1787,8 @@ VALUES | |||
1773 | taskItem.Name = (string)inventoryRow["name"]; | 1787 | taskItem.Name = (string)inventoryRow["name"]; |
1774 | taskItem.Description = (string)inventoryRow["description"]; | 1788 | taskItem.Description = (string)inventoryRow["description"]; |
1775 | taskItem.CreationDate = Convert.ToUInt32(inventoryRow["creationDate"]); | 1789 | taskItem.CreationDate = Convert.ToUInt32(inventoryRow["creationDate"]); |
1776 | //taskItem.CreatorID = new UUID((Guid)inventoryRow["creatorID"]); | 1790 | //taskItem.creatorID = new UUID((Guid)inventoryRow["creatorID"]); |
1777 | taskItem.CreatorIdentification = (string)inventoryRow["creatorID"]; | 1791 | taskItem.CreatorIdentification = (string)inventoryRow["creatorID"].ToString(); |
1778 | taskItem.OwnerID = new UUID((Guid)inventoryRow["ownerID"]); | 1792 | taskItem.OwnerID = new UUID((Guid)inventoryRow["ownerID"]); |
1779 | taskItem.LastOwnerID = new UUID((Guid)inventoryRow["lastOwnerID"]); | 1793 | taskItem.LastOwnerID = new UUID((Guid)inventoryRow["lastOwnerID"]); |
1780 | taskItem.GroupID = new UUID((Guid)inventoryRow["groupID"]); | 1794 | taskItem.GroupID = new UUID((Guid)inventoryRow["groupID"]); |
@@ -1798,9 +1812,9 @@ VALUES | |||
1798 | /// </summary> | 1812 | /// </summary> |
1799 | /// <param name="taskItem">item in inventory.</param> | 1813 | /// <param name="taskItem">item in inventory.</param> |
1800 | /// <returns></returns> | 1814 | /// <returns></returns> |
1801 | private SqlParameter[] CreatePrimInventoryParameters(TaskInventoryItem taskItem) | 1815 | private NpgsqlParameter[] CreatePrimInventoryParameters(TaskInventoryItem taskItem) |
1802 | { | 1816 | { |
1803 | List<SqlParameter> parameters = new List<SqlParameter>(); | 1817 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
1804 | 1818 | ||
1805 | parameters.Add(_Database.CreateParameter("itemID", taskItem.ItemID)); | 1819 | parameters.Add(_Database.CreateParameter("itemID", taskItem.ItemID)); |
1806 | parameters.Add(_Database.CreateParameter("primID", taskItem.ParentPartID)); | 1820 | parameters.Add(_Database.CreateParameter("primID", taskItem.ParentPartID)); |
@@ -1831,9 +1845,9 @@ VALUES | |||
1831 | /// </summary> | 1845 | /// </summary> |
1832 | /// <param name="settings">regionsettings.</param> | 1846 | /// <param name="settings">regionsettings.</param> |
1833 | /// <returns></returns> | 1847 | /// <returns></returns> |
1834 | private SqlParameter[] CreateRegionSettingParameters(RegionSettings settings) | 1848 | private NpgsqlParameter[] CreateRegionSettingParameters(RegionSettings settings) |
1835 | { | 1849 | { |
1836 | List<SqlParameter> parameters = new List<SqlParameter>(); | 1850 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
1837 | 1851 | ||
1838 | parameters.Add(_Database.CreateParameter("regionUUID", settings.RegionUUID)); | 1852 | parameters.Add(_Database.CreateParameter("regionUUID", settings.RegionUUID)); |
1839 | parameters.Add(_Database.CreateParameter("block_terraform", settings.BlockTerraform)); | 1853 | parameters.Add(_Database.CreateParameter("block_terraform", settings.BlockTerraform)); |
@@ -1888,9 +1902,9 @@ VALUES | |||
1888 | /// <param name="land">land parameters.</param> | 1902 | /// <param name="land">land parameters.</param> |
1889 | /// <param name="regionUUID">region UUID.</param> | 1903 | /// <param name="regionUUID">region UUID.</param> |
1890 | /// <returns></returns> | 1904 | /// <returns></returns> |
1891 | private SqlParameter[] CreateLandParameters(LandData land, UUID regionUUID) | 1905 | private NpgsqlParameter[] CreateLandParameters(LandData land, UUID regionUUID) |
1892 | { | 1906 | { |
1893 | List<SqlParameter> parameters = new List<SqlParameter>(); | 1907 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
1894 | 1908 | ||
1895 | parameters.Add(_Database.CreateParameter("UUID", land.GlobalID)); | 1909 | parameters.Add(_Database.CreateParameter("UUID", land.GlobalID)); |
1896 | parameters.Add(_Database.CreateParameter("RegionUUID", regionUUID)); | 1910 | parameters.Add(_Database.CreateParameter("RegionUUID", regionUUID)); |
@@ -1912,8 +1926,8 @@ VALUES | |||
1912 | parameters.Add(_Database.CreateParameter("SalePrice", land.SalePrice)); | 1926 | parameters.Add(_Database.CreateParameter("SalePrice", land.SalePrice)); |
1913 | parameters.Add(_Database.CreateParameter("LandStatus", (int)land.Status)); //Enum. libsecondlife.Parcel.ParcelStatus | 1927 | parameters.Add(_Database.CreateParameter("LandStatus", (int)land.Status)); //Enum. libsecondlife.Parcel.ParcelStatus |
1914 | parameters.Add(_Database.CreateParameter("LandFlags", land.Flags)); | 1928 | parameters.Add(_Database.CreateParameter("LandFlags", land.Flags)); |
1915 | parameters.Add(_Database.CreateParameter("LandingType", land.LandingType)); | 1929 | parameters.Add(_Database.CreateParameter("LandingType", Convert.ToInt32( land.LandingType) )); |
1916 | parameters.Add(_Database.CreateParameter("MediaAutoScale", land.MediaAutoScale)); | 1930 | parameters.Add(_Database.CreateParameter("MediaAutoScale", Convert.ToInt32( land.MediaAutoScale ))); |
1917 | parameters.Add(_Database.CreateParameter("MediaTextureUUID", land.MediaID)); | 1931 | parameters.Add(_Database.CreateParameter("MediaTextureUUID", land.MediaID)); |
1918 | parameters.Add(_Database.CreateParameter("MediaURL", land.MediaURL)); | 1932 | parameters.Add(_Database.CreateParameter("MediaURL", land.MediaURL)); |
1919 | parameters.Add(_Database.CreateParameter("MusicURL", land.MusicURL)); | 1933 | parameters.Add(_Database.CreateParameter("MusicURL", land.MusicURL)); |
@@ -1938,9 +1952,9 @@ VALUES | |||
1938 | /// <param name="parcelAccessEntry">parcel access entry.</param> | 1952 | /// <param name="parcelAccessEntry">parcel access entry.</param> |
1939 | /// <param name="parcelID">parcel ID.</param> | 1953 | /// <param name="parcelID">parcel ID.</param> |
1940 | /// <returns></returns> | 1954 | /// <returns></returns> |
1941 | private SqlParameter[] CreateLandAccessParameters(LandAccessEntry parcelAccessEntry, UUID parcelID) | 1955 | private NpgsqlParameter[] CreateLandAccessParameters(LandAccessEntry parcelAccessEntry, UUID parcelID) |
1942 | { | 1956 | { |
1943 | List<SqlParameter> parameters = new List<SqlParameter>(); | 1957 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
1944 | 1958 | ||
1945 | parameters.Add(_Database.CreateParameter("LandUUID", parcelID)); | 1959 | parameters.Add(_Database.CreateParameter("LandUUID", parcelID)); |
1946 | parameters.Add(_Database.CreateParameter("AccessUUID", parcelAccessEntry.AgentID)); | 1960 | parameters.Add(_Database.CreateParameter("AccessUUID", parcelAccessEntry.AgentID)); |
@@ -1957,9 +1971,9 @@ VALUES | |||
1957 | /// <param name="sceneGroupID">The scenegroup ID.</param> | 1971 | /// <param name="sceneGroupID">The scenegroup ID.</param> |
1958 | /// <param name="regionUUID">The region ID.</param> | 1972 | /// <param name="regionUUID">The region ID.</param> |
1959 | /// <returns></returns> | 1973 | /// <returns></returns> |
1960 | private SqlParameter[] CreatePrimParameters(SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) | 1974 | private NpgsqlParameter[] CreatePrimParameters(SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) |
1961 | { | 1975 | { |
1962 | List<SqlParameter> parameters = new List<SqlParameter>(); | 1976 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
1963 | 1977 | ||
1964 | parameters.Add(_Database.CreateParameter("UUID", prim.UUID)); | 1978 | parameters.Add(_Database.CreateParameter("UUID", prim.UUID)); |
1965 | parameters.Add(_Database.CreateParameter("RegionUUID", regionUUID)); | 1979 | parameters.Add(_Database.CreateParameter("RegionUUID", regionUUID)); |
@@ -2080,12 +2094,22 @@ VALUES | |||
2080 | 2094 | ||
2081 | parameters.Add(_Database.CreateParameter("CollisionSound", prim.CollisionSound)); | 2095 | parameters.Add(_Database.CreateParameter("CollisionSound", prim.CollisionSound)); |
2082 | parameters.Add(_Database.CreateParameter("CollisionSoundVolume", prim.CollisionSoundVolume)); | 2096 | parameters.Add(_Database.CreateParameter("CollisionSoundVolume", prim.CollisionSoundVolume)); |
2083 | if (prim.PassTouches) | 2097 | |
2084 | parameters.Add(_Database.CreateParameter("PassTouches", 1)); | 2098 | parameters.Add(_Database.CreateParameter("PassTouches", prim.PassTouches)); |
2085 | else | 2099 | |
2086 | parameters.Add(_Database.CreateParameter("PassTouches", 0)); | ||
2087 | parameters.Add(_Database.CreateParameter("LinkNumber", prim.LinkNum)); | 2100 | parameters.Add(_Database.CreateParameter("LinkNumber", prim.LinkNum)); |
2088 | parameters.Add(_Database.CreateParameter("MediaURL", prim.MediaUrl)); | 2101 | parameters.Add(_Database.CreateParameter("MediaURL", prim.MediaUrl)); |
2102 | |||
2103 | if (prim.DynAttrs.CountNamespaces > 0) | ||
2104 | parameters.Add(_Database.CreateParameter("DynAttrs", prim.DynAttrs.ToXml())); | ||
2105 | else | ||
2106 | parameters.Add(_Database.CreateParameter("DynAttrs", null)); | ||
2107 | |||
2108 | parameters.Add(_Database.CreateParameter("PhysicsShapeType", prim.PhysicsShapeType)); | ||
2109 | parameters.Add(_Database.CreateParameter("Density", (double)prim.Density)); | ||
2110 | parameters.Add(_Database.CreateParameter("GravityModifier", (double)prim.GravityModifier)); | ||
2111 | parameters.Add(_Database.CreateParameter("Friction", (double)prim.Friction)); | ||
2112 | parameters.Add(_Database.CreateParameter("Restitution", (double)prim.Restitution)); | ||
2089 | 2113 | ||
2090 | return parameters.ToArray(); | 2114 | return parameters.ToArray(); |
2091 | } | 2115 | } |
@@ -2097,9 +2121,9 @@ VALUES | |||
2097 | /// <param name="sceneGroupID">The scene group ID.</param> | 2121 | /// <param name="sceneGroupID">The scene group ID.</param> |
2098 | /// <param name="regionUUID">The region UUID.</param> | 2122 | /// <param name="regionUUID">The region UUID.</param> |
2099 | /// <returns></returns> | 2123 | /// <returns></returns> |
2100 | private SqlParameter[] CreatePrimShapeParameters(SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) | 2124 | private NpgsqlParameter[] CreatePrimShapeParameters(SceneObjectPart prim, UUID sceneGroupID, UUID regionUUID) |
2101 | { | 2125 | { |
2102 | List<SqlParameter> parameters = new List<SqlParameter>(); | 2126 | List<NpgsqlParameter> parameters = new List<NpgsqlParameter>(); |
2103 | 2127 | ||
2104 | PrimitiveBaseShape s = prim.Shape; | 2128 | PrimitiveBaseShape s = prim.Shape; |
2105 | parameters.Add(_Database.CreateParameter("UUID", prim.UUID)); | 2129 | parameters.Add(_Database.CreateParameter("UUID", prim.UUID)); |
@@ -2143,7 +2167,6 @@ VALUES | |||
2143 | parameters.Add(_Database.CreateParameter("Media", s.Media.ToXml())); | 2167 | parameters.Add(_Database.CreateParameter("Media", s.Media.ToXml())); |
2144 | } | 2168 | } |
2145 | 2169 | ||
2146 | |||
2147 | return parameters.ToArray(); | 2170 | return parameters.ToArray(); |
2148 | } | 2171 | } |
2149 | 2172 | ||
@@ -2155,13 +2178,14 @@ VALUES | |||
2155 | { | 2178 | { |
2156 | rs.ClearSpawnPoints(); | 2179 | rs.ClearSpawnPoints(); |
2157 | 2180 | ||
2158 | string sql = "SELECT Yaw, Pitch, Distance FROM spawn_points WHERE RegionUUID = @RegionUUID"; | 2181 | string sql = @"SELECT ""Yaw"", ""Pitch"", ""Distance"" FROM spawn_points WHERE ""RegionUUID"" = :RegionUUID"; |
2159 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 2182 | |
2160 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 2183 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
2184 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) | ||
2161 | { | 2185 | { |
2162 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID.ToString())); | 2186 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", rs.RegionUUID)); |
2163 | conn.Open(); | 2187 | conn.Open(); |
2164 | using (SqlDataReader reader = cmd.ExecuteReader()) | 2188 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
2165 | { | 2189 | { |
2166 | if (reader.Read()) | 2190 | if (reader.Read()) |
2167 | { | 2191 | { |
@@ -2179,24 +2203,24 @@ VALUES | |||
2179 | 2203 | ||
2180 | private void SaveSpawnPoints(RegionSettings rs) | 2204 | private void SaveSpawnPoints(RegionSettings rs) |
2181 | { | 2205 | { |
2182 | string sql = "DELETE FROM spawn_points WHERE RegionUUID = @RegionUUID"; | 2206 | string sql = @"DELETE FROM spawn_points WHERE ""RegionUUID"" = :RegionUUID"; |
2183 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 2207 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
2184 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 2208 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
2185 | { | 2209 | { |
2186 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID)); | 2210 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", rs.RegionUUID)); |
2187 | conn.Open(); | 2211 | conn.Open(); |
2188 | cmd.ExecuteNonQuery(); | 2212 | cmd.ExecuteNonQuery(); |
2189 | } | 2213 | } |
2190 | foreach (SpawnPoint p in rs.SpawnPoints()) | 2214 | foreach (SpawnPoint p in rs.SpawnPoints()) |
2191 | { | 2215 | { |
2192 | sql = "INSERT INTO spawn_points (RegionUUID, Yaw, Pitch, Distance) VALUES (@RegionUUID, @Yaw, @Pitch, @Distance)"; | 2216 | sql = @"INSERT INTO spawn_points (""RegionUUID"", ""Yaw"", ""Pitch"", ""Distance"") VALUES (:RegionUUID, :Yaw, :Pitch, :Distance)"; |
2193 | using (SqlConnection conn = new SqlConnection(m_connectionString)) | 2217 | using (NpgsqlConnection conn = new NpgsqlConnection(m_connectionString)) |
2194 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 2218 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
2195 | { | 2219 | { |
2196 | cmd.Parameters.Add(_Database.CreateParameter("@RegionUUID", rs.RegionUUID)); | 2220 | cmd.Parameters.Add(_Database.CreateParameter("RegionUUID", rs.RegionUUID)); |
2197 | cmd.Parameters.Add(_Database.CreateParameter("@Yaw", p.Yaw)); | 2221 | cmd.Parameters.Add(_Database.CreateParameter("Yaw", p.Yaw)); |
2198 | cmd.Parameters.Add(_Database.CreateParameter("@Pitch", p.Pitch)); | 2222 | cmd.Parameters.Add(_Database.CreateParameter("Pitch", p.Pitch)); |
2199 | cmd.Parameters.Add(_Database.CreateParameter("@Distance", p.Distance)); | 2223 | cmd.Parameters.Add(_Database.CreateParameter("Distance", p.Distance)); |
2200 | conn.Open(); | 2224 | conn.Open(); |
2201 | cmd.ExecuteNonQuery(); | 2225 | cmd.ExecuteNonQuery(); |
2202 | } | 2226 | } |
diff --git a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs b/OpenSim/Data/PGSQL/PGSQLXInventoryData.cs index 9164ffe..a22b882 100644 --- a/OpenSim/Data/MSSQL/MSSQLXInventoryData.cs +++ b/OpenSim/Data/PGSQL/PGSQLXInventoryData.cs | |||
@@ -1,4 +1,4 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) Contributors, http://opensimulator.org/ | 2 | * Copyright (c) Contributors, http://opensimulator.org/ |
3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. | 3 | * See CONTRIBUTORS.TXT for a full list of copyright holders. |
4 | * | 4 | * |
@@ -31,29 +31,39 @@ using System.Collections.Generic; | |||
31 | using System.Data; | 31 | using System.Data; |
32 | using OpenMetaverse; | 32 | using OpenMetaverse; |
33 | using OpenSim.Framework; | 33 | using OpenSim.Framework; |
34 | using System.Data.SqlClient; | ||
35 | using System.Reflection; | 34 | using System.Reflection; |
36 | using System.Text; | 35 | using System.Text; |
37 | using log4net; | 36 | using log4net; |
37 | using Npgsql; | ||
38 | using NpgsqlTypes; | ||
38 | 39 | ||
39 | namespace OpenSim.Data.MSSQL | 40 | namespace OpenSim.Data.PGSQL |
40 | { | 41 | { |
41 | public class MSSQLXInventoryData : IXInventoryData | 42 | public class PGSQLXInventoryData : IXInventoryData |
42 | { | 43 | { |
43 | // private static readonly ILog m_log = LogManager.GetLogger( | 44 | // private static readonly ILog m_log = LogManager.GetLogger( |
44 | // MethodBase.GetCurrentMethod().DeclaringType); | 45 | // MethodBase.GetCurrentMethod().DeclaringType); |
45 | 46 | ||
46 | private MSSQLFolderHandler m_Folders; | 47 | private PGSQLFolderHandler m_Folders; |
47 | private MSSQLItemHandler m_Items; | 48 | private PGSQLItemHandler m_Items; |
48 | 49 | ||
49 | public MSSQLXInventoryData(string conn, string realm) | 50 | public PGSQLXInventoryData(string conn, string realm) |
50 | { | 51 | { |
51 | m_Folders = new MSSQLFolderHandler( | 52 | m_Folders = new PGSQLFolderHandler( |
52 | conn, "inventoryfolders", "InventoryStore"); | 53 | conn, "inventoryfolders", "InventoryStore"); |
53 | m_Items = new MSSQLItemHandler( | 54 | m_Items = new PGSQLItemHandler( |
54 | conn, "inventoryitems", String.Empty); | 55 | conn, "inventoryitems", String.Empty); |
55 | } | 56 | } |
56 | 57 | ||
58 | public static UUID str2UUID(string strUUID) | ||
59 | { | ||
60 | UUID newUUID = UUID.Zero; | ||
61 | |||
62 | UUID.TryParse(strUUID, out newUUID); | ||
63 | |||
64 | return newUUID; | ||
65 | } | ||
66 | |||
57 | public XInventoryFolder[] GetFolders(string[] fields, string[] vals) | 67 | public XInventoryFolder[] GetFolders(string[] fields, string[] vals) |
58 | { | 68 | { |
59 | return m_Folders.Get(fields, vals); | 69 | return m_Folders.Get(fields, vals); |
@@ -113,7 +123,7 @@ namespace OpenSim.Data.MSSQL | |||
113 | 123 | ||
114 | public XInventoryItem[] GetActiveGestures(UUID principalID) | 124 | public XInventoryItem[] GetActiveGestures(UUID principalID) |
115 | { | 125 | { |
116 | return m_Items.GetActiveGestures(principalID); | 126 | return m_Items.GetActiveGestures(principalID.ToString()); |
117 | } | 127 | } |
118 | 128 | ||
119 | public int GetAssetPermissions(UUID principalID, UUID assetID) | 129 | public int GetAssetPermissions(UUID principalID, UUID assetID) |
@@ -122,9 +132,9 @@ namespace OpenSim.Data.MSSQL | |||
122 | } | 132 | } |
123 | } | 133 | } |
124 | 134 | ||
125 | public class MSSQLItemHandler : MSSQLInventoryHandler<XInventoryItem> | 135 | public class PGSQLItemHandler : PGSQLInventoryHandler<XInventoryItem> |
126 | { | 136 | { |
127 | public MSSQLItemHandler(string c, string t, string m) : | 137 | public PGSQLItemHandler(string c, string t, string m) : |
128 | base(c, t, m) | 138 | base(c, t, m) |
129 | { | 139 | { |
130 | } | 140 | } |
@@ -137,14 +147,13 @@ namespace OpenSim.Data.MSSQL | |||
137 | 147 | ||
138 | UUID oldParent = retrievedItems[0].parentFolderID; | 148 | UUID oldParent = retrievedItems[0].parentFolderID; |
139 | 149 | ||
140 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 150 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
141 | { | 151 | { |
142 | using (SqlCommand cmd = new SqlCommand()) | 152 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
143 | { | 153 | { |
144 | 154 | cmd.CommandText = String.Format(@"update {0} set ""parentFolderID"" = :ParentFolderID where ""inventoryID"" = :InventoryID", m_Realm); | |
145 | cmd.CommandText = String.Format("update {0} set parentFolderID = @ParentFolderID where inventoryID = @InventoryID", m_Realm); | 155 | cmd.Parameters.Add(m_database.CreateParameter("ParentFolderID", newParent)); |
146 | cmd.Parameters.Add(m_database.CreateParameter("@ParentFolderID", newParent)); | 156 | cmd.Parameters.Add(m_database.CreateParameter("InventoryID", id )); |
147 | cmd.Parameters.Add(m_database.CreateParameter("@InventoryID", id)); | ||
148 | cmd.Connection = conn; | 157 | cmd.Connection = conn; |
149 | conn.Open(); | 158 | conn.Open(); |
150 | 159 | ||
@@ -159,16 +168,19 @@ namespace OpenSim.Data.MSSQL | |||
159 | return true; | 168 | return true; |
160 | } | 169 | } |
161 | 170 | ||
162 | public XInventoryItem[] GetActiveGestures(UUID principalID) | 171 | public XInventoryItem[] GetActiveGestures(string principalID) |
163 | { | 172 | { |
164 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 173 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
165 | { | 174 | { |
166 | using (SqlCommand cmd = new SqlCommand()) | 175 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
167 | { | 176 | { |
168 | cmd.CommandText = String.Format("select * from inventoryitems where avatarId = @uuid and assetType = @type and flags = 1", m_Realm); | 177 | cmd.CommandText = String.Format(@"select * from inventoryitems where ""avatarID"" = :uuid and ""assetType"" = :type and ""flags"" = 1", m_Realm); |
178 | |||
179 | UUID princID = UUID.Zero; | ||
180 | UUID.TryParse(principalID, out princID); | ||
169 | 181 | ||
170 | cmd.Parameters.Add(m_database.CreateParameter("@uuid", principalID.ToString())); | 182 | cmd.Parameters.Add(m_database.CreateParameter("uuid", principalID)); |
171 | cmd.Parameters.Add(m_database.CreateParameter("@type", (int)AssetType.Gesture)); | 183 | cmd.Parameters.Add(m_database.CreateParameter("type", (int)AssetType.Gesture)); |
172 | cmd.Connection = conn; | 184 | cmd.Connection = conn; |
173 | conn.Open(); | 185 | conn.Open(); |
174 | return DoQuery(cmd); | 186 | return DoQuery(cmd); |
@@ -178,16 +190,21 @@ namespace OpenSim.Data.MSSQL | |||
178 | 190 | ||
179 | public int GetAssetPermissions(UUID principalID, UUID assetID) | 191 | public int GetAssetPermissions(UUID principalID, UUID assetID) |
180 | { | 192 | { |
181 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 193 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
182 | { | 194 | { |
183 | using (SqlCommand cmd = new SqlCommand()) | 195 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
184 | { | 196 | { |
185 | cmd.CommandText = String.Format("select bit_or(inventoryCurrentPermissions) as inventoryCurrentPermissions from inventoryitems where avatarID = @PrincipalID and assetID = @AssetID group by assetID", m_Realm); | 197 | cmd.CommandText = String.Format(@"select bit_or(""inventoryCurrentPermissions"") as ""inventoryCurrentPermissions"" |
186 | cmd.Parameters.Add(m_database.CreateParameter("@PrincipalID", principalID.ToString())); | 198 | from inventoryitems |
187 | cmd.Parameters.Add(m_database.CreateParameter("@AssetID", assetID.ToString())); | 199 | where ""avatarID"" = :PrincipalID |
200 | and ""assetID"" = :AssetID | ||
201 | group by ""assetID"" ", m_Realm); | ||
202 | |||
203 | cmd.Parameters.Add(m_database.CreateParameter("PrincipalID", principalID)); | ||
204 | cmd.Parameters.Add(m_database.CreateParameter("AssetID", assetID)); | ||
188 | cmd.Connection = conn; | 205 | cmd.Connection = conn; |
189 | conn.Open(); | 206 | conn.Open(); |
190 | using (SqlDataReader reader = cmd.ExecuteReader()) | 207 | using (NpgsqlDataReader reader = cmd.ExecuteReader()) |
191 | { | 208 | { |
192 | 209 | ||
193 | int perms = 0; | 210 | int perms = 0; |
@@ -215,9 +232,9 @@ namespace OpenSim.Data.MSSQL | |||
215 | } | 232 | } |
216 | } | 233 | } |
217 | 234 | ||
218 | public class MSSQLFolderHandler : MSSQLInventoryHandler<XInventoryFolder> | 235 | public class PGSQLFolderHandler : PGSQLInventoryHandler<XInventoryFolder> |
219 | { | 236 | { |
220 | public MSSQLFolderHandler(string c, string t, string m) : | 237 | public PGSQLFolderHandler(string c, string t, string m) : |
221 | base(c, t, m) | 238 | base(c, t, m) |
222 | { | 239 | { |
223 | } | 240 | } |
@@ -231,14 +248,19 @@ namespace OpenSim.Data.MSSQL | |||
231 | 248 | ||
232 | UUID oldParentFolderUUID = folders[0].parentFolderID; | 249 | UUID oldParentFolderUUID = folders[0].parentFolderID; |
233 | 250 | ||
234 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 251 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
235 | { | 252 | { |
236 | using (SqlCommand cmd = new SqlCommand()) | 253 | using (NpgsqlCommand cmd = new NpgsqlCommand()) |
237 | { | 254 | { |
255 | UUID foldID = UUID.Zero; | ||
256 | UUID.TryParse(id, out foldID); | ||
257 | |||
258 | UUID newPar = UUID.Zero; | ||
259 | UUID.TryParse(newParentFolderID, out newPar); | ||
238 | 260 | ||
239 | cmd.CommandText = String.Format("update {0} set parentFolderID = @ParentFolderID where folderID = @folderID", m_Realm); | 261 | cmd.CommandText = String.Format(@"update {0} set ""parentFolderID"" = :ParentFolderID where ""folderID"" = :folderID", m_Realm); |
240 | cmd.Parameters.Add(m_database.CreateParameter("@ParentFolderID", newParentFolderID)); | 262 | cmd.Parameters.Add(m_database.CreateParameter("ParentFolderID", newPar)); |
241 | cmd.Parameters.Add(m_database.CreateParameter("@folderID", id)); | 263 | cmd.Parameters.Add(m_database.CreateParameter("folderID", foldID)); |
242 | cmd.Connection = conn; | 264 | cmd.Connection = conn; |
243 | conn.Open(); | 265 | conn.Open(); |
244 | 266 | ||
@@ -264,9 +286,9 @@ namespace OpenSim.Data.MSSQL | |||
264 | } | 286 | } |
265 | } | 287 | } |
266 | 288 | ||
267 | public class MSSQLInventoryHandler<T> : MSSQLGenericTableHandler<T> where T: class, new() | 289 | public class PGSQLInventoryHandler<T> : PGSQLGenericTableHandler<T> where T: class, new() |
268 | { | 290 | { |
269 | public MSSQLInventoryHandler(string c, string t, string m) : base(c, t, m) {} | 291 | public PGSQLInventoryHandler(string c, string t, string m) : base(c, t, m) {} |
270 | 292 | ||
271 | protected bool IncrementFolderVersion(UUID folderID) | 293 | protected bool IncrementFolderVersion(UUID folderID) |
272 | { | 294 | { |
@@ -275,18 +297,21 @@ namespace OpenSim.Data.MSSQL | |||
275 | 297 | ||
276 | protected bool IncrementFolderVersion(string folderID) | 298 | protected bool IncrementFolderVersion(string folderID) |
277 | { | 299 | { |
278 | // m_log.DebugFormat("[MYSQL ITEM HANDLER]: Incrementing version on folder {0}", folderID); | 300 | // m_log.DebugFormat("[PGSQL ITEM HANDLER]: Incrementing version on folder {0}", folderID); |
279 | // Util.PrintCallStack(); | 301 | // Util.PrintCallStack(); |
280 | 302 | ||
281 | string sql = "update inventoryfolders set version=version+1 where folderID = ?folderID"; | 303 | string sql = @"update inventoryfolders set version=version+1 where ""folderID"" = :folderID"; |
282 | 304 | ||
283 | using (SqlConnection conn = new SqlConnection(m_ConnectionString)) | 305 | using (NpgsqlConnection conn = new NpgsqlConnection(m_ConnectionString)) |
284 | { | 306 | { |
285 | using (SqlCommand cmd = new SqlCommand(sql, conn)) | 307 | using (NpgsqlCommand cmd = new NpgsqlCommand(sql, conn)) |
286 | { | 308 | { |
309 | UUID foldID = UUID.Zero; | ||
310 | UUID.TryParse(folderID, out foldID); | ||
311 | |||
287 | conn.Open(); | 312 | conn.Open(); |
288 | 313 | ||
289 | cmd.Parameters.AddWithValue("@folderID", folderID); | 314 | cmd.Parameters.Add( m_database.CreateParameter("folderID", foldID) ); |
290 | 315 | ||
291 | try | 316 | try |
292 | { | 317 | { |
@@ -302,4 +327,4 @@ namespace OpenSim.Data.MSSQL | |||
302 | return true; | 327 | return true; |
303 | } | 328 | } |
304 | } | 329 | } |
305 | } \ No newline at end of file | 330 | } |
diff --git a/OpenSim/Data/MSSQL/Properties/AssemblyInfo.cs b/OpenSim/Data/PGSQL/Properties/AssemblyInfo.cs index 1a67e70..1e88b2c 100644 --- a/OpenSim/Data/MSSQL/Properties/AssemblyInfo.cs +++ b/OpenSim/Data/PGSQL/Properties/AssemblyInfo.cs | |||
@@ -32,11 +32,11 @@ using System.Runtime.InteropServices; | |||
32 | // set of attributes. Change these attribute values to modify the information | 32 | // set of attributes. Change these attribute values to modify the information |
33 | // associated with an assembly. | 33 | // associated with an assembly. |
34 | 34 | ||
35 | [assembly : AssemblyTitle("OpenSim.Data.MSSQL")] | 35 | [assembly : AssemblyTitle("OpenSim.Data.PGSQL")] |
36 | [assembly : AssemblyDescription("")] | 36 | [assembly : AssemblyDescription("")] |
37 | [assembly : AssemblyConfiguration("")] | 37 | [assembly : AssemblyConfiguration("")] |
38 | [assembly : AssemblyCompany("http://opensimulator.org")] | 38 | [assembly : AssemblyCompany("http://opensimulator.org")] |
39 | [assembly : AssemblyProduct("OpenSim.Data.MSSQL")] | 39 | [assembly : AssemblyProduct("OpenSim.Data.PGSQL")] |
40 | [assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")] | 40 | [assembly : AssemblyCopyright("Copyright (c) OpenSimulator.org Developers 2007-2009")] |
41 | [assembly : AssemblyTrademark("")] | 41 | [assembly : AssemblyTrademark("")] |
42 | [assembly : AssemblyCulture("")] | 42 | [assembly : AssemblyCulture("")] |
@@ -61,5 +61,5 @@ using System.Runtime.InteropServices; | |||
61 | // You can specify all the values or you can default the Revision and Build Numbers | 61 | // You can specify all the values or you can default the Revision and Build Numbers |
62 | // by using the '*' as shown below: | 62 | // by using the '*' as shown below: |
63 | 63 | ||
64 | [assembly : AssemblyVersion("0.7.5.*")] | 64 | [assembly : AssemblyVersion("0.8.2.*")] |
65 | [assembly : AssemblyFileVersion("0.6.5.0")] | 65 | |