aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Data/PGSQL/PGSQLXInventoryData.cs
diff options
context:
space:
mode:
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;
31using System.Data; 31using System.Data;
32using OpenMetaverse; 32using OpenMetaverse;
33using OpenSim.Framework; 33using OpenSim.Framework;
34using System.Data.SqlClient;
35using System.Reflection; 34using System.Reflection;
36using System.Text; 35using System.Text;
37using log4net; 36using log4net;
37using Npgsql;
38using NpgsqlTypes;
38 39
39namespace OpenSim.Data.MSSQL 40namespace 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}