diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/PGSQL/PGSQLXInventoryData.cs (renamed from OpenSim/Data/MSSQL/MSSQLXInventoryData.cs) | 117 |
1 files changed, 71 insertions, 46 deletions
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 | } |