Fix PgSQL adapter for UserProfiles

mb-throttle-test
BlueWall 2014-10-15 09:08:25 -04:00
parent a6f8f9d003
commit 1812cecdb7
2 changed files with 256 additions and 178 deletions

View File

@ -40,6 +40,8 @@ namespace OpenSim.Data.PGSQL
public class UserProfilesData: IProfilesData public class UserProfilesData: IProfilesData
{ {
static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
protected PGSQLManager m_database;
#region Properites #region Properites
string ConnectionString string ConnectionString
@ -74,6 +76,7 @@ namespace OpenSim.Data.PGSQL
Migration m = new Migration(dbcon, Assembly, "UserProfiles"); Migration m = new Migration(dbcon, Assembly, "UserProfiles");
m.Update(); m.Update();
m_database = new PGSQLManager(ConnectionString);
} }
} }
#endregion Member Functions #endregion Member Functions
@ -94,11 +97,11 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlConnection dbcon = new NpgsqlConnection(ConnectionString)) using (NpgsqlConnection dbcon = new NpgsqlConnection(ConnectionString))
{ {
string query = @"SELECT ""classifieduuid"", ""name"" FROM classifieds WHERE ""creatoruuid"" = :Id"; string query = @"SELECT classifieduuid, name FROM classifieds WHERE creatoruuid = :Id";
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", creatorId); cmd.Parameters.Add(m_database.CreateParameter("Id", creatorId));
using( NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default)) using( NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.Default))
{ {
if(reader.HasRows) if(reader.HasRows)
@ -111,7 +114,7 @@ namespace OpenSim.Data.PGSQL
string Name = null; string Name = null;
try try
{ {
UUID.TryParse(Convert.ToString( reader["classifieduuid"]), out Id); Id = DBGuid.FromDB(reader["classifieduuid"]);
Name = Convert.ToString(reader["name"]); Name = Convert.ToString(reader["name"]);
} }
catch (Exception e) catch (Exception e)
@ -132,28 +135,25 @@ namespace OpenSim.Data.PGSQL
public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result) public bool UpdateClassifiedRecord(UserClassifiedAdd ad, ref string result)
{ {
string query = @"INSERT INTO classifieds ( ""classifieduuid"",""creatoruuid"", ""creationdate"", ""expirationdate"", ""category"", string query = string.Empty;
""name"", ""description"", ""parceluuid"", ""parentestate"", ""snapshotuuid"", ""simname"",
""posglobal"", ""parcelname"", ""classifiedflags"", ""priceforlisting"") query = @"WITH upsert AS (
Select :ClassifiedId, :CreatorId, :CreatedDate, :ExpirationDate, :Category, UPDATE classifieds SET
:Name, :Description, :ParcelId, :ParentEstate, :SnapshotId, :SimName classifieduuid = :ClassifiedId, creatoruuid = :CreatorId, creationdate = :CreatedDate,
:GlobalPos, :ParcelName, :Flags, :ListingPrice expirationdate = :ExpirationDate,category =:Category, name = :Name, description = :Description,
Where not exists( Select ""classifieduuid"" from classifieds where ""classifieduuid"" = :ClassifiedId ); parceluuid = :ParcelId, parentestate = :ParentEstate, snapshotuuid = :SnapshotId,
simname = :SimName, posglobal = :GlobalPos, parcelname = :ParcelName, classifiedflags = :Flags,
priceforlisting = :ListingPrice
RETURNING * )
INSERT INTO classifieds (classifieduuid,creatoruuid,creationdate,expirationdate,category,name,
description,parceluuid,parentestate,snapshotuuid,simname,posglobal,parcelname,classifiedflags,
priceforlisting)
SELECT
:ClassifiedId,:CreatorId,:CreatedDate,:ExpirationDate,:Category,:Name,:Description,
:ParcelId,:ParentEstate,:SnapshotId,:SimName,:GlobalPos,:ParcelName,:Flags,:ListingPrice
WHERE NOT EXISTS (
SELECT * FROM upsert )";
update classifieds
set category =:Category,
expirationdate = :ExpirationDate,
name = :Name,
description = :Description,
parentestate = :ParentEstate,
posglobal = :GlobalPos,
parcelname = :ParcelName,
classifiedflags = :Flags,
priceforlisting = :ListingPrice,
snapshotuuid = :SnapshotId
where classifieduuid = :ClassifiedId ;
";
if(string.IsNullOrEmpty(ad.ParcelName)) if(string.IsNullOrEmpty(ad.ParcelName))
ad.ParcelName = "Unknown"; ad.ParcelName = "Unknown";
if(ad.ParcelId == null) if(ad.ParcelId == null)
@ -190,21 +190,21 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("ClassifiedId", ad.ClassifiedId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ClassifiedId", ad.ClassifiedId));
cmd.Parameters.AddWithValue("CreatorId", ad.CreatorId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("CreatorId", ad.CreatorId));
cmd.Parameters.AddWithValue("CreatedDate", ad.CreationDate.ToString()); cmd.Parameters.Add(m_database.CreateParameter("CreatedDate", (int)ad.CreationDate));
cmd.Parameters.AddWithValue("ExpirationDate", ad.ExpirationDate.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ExpirationDate", (int)ad.ExpirationDate));
cmd.Parameters.AddWithValue("Category", ad.Category.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Category", ad.Category.ToString()));
cmd.Parameters.AddWithValue("Name", ad.Name.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Name", ad.Name.ToString()));
cmd.Parameters.AddWithValue("Description", ad.Description.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Description", ad.Description.ToString()));
cmd.Parameters.AddWithValue("ParcelId", ad.ParcelId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ParcelId", ad.ParcelId));
cmd.Parameters.AddWithValue("ParentEstate", ad.ParentEstate.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ParentEstate", (int)ad.ParentEstate));
cmd.Parameters.AddWithValue("SnapshotId", ad.SnapshotId.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("SnapshotId", ad.SnapshotId));
cmd.Parameters.AddWithValue("SimName", ad.SimName.ToString()); cmd.Parameters.Add(m_database.CreateParameter("SimName", ad.SimName.ToString()));
cmd.Parameters.AddWithValue("GlobalPos", ad.GlobalPos.ToString()); cmd.Parameters.Add(m_database.CreateParameter("GlobalPos", ad.GlobalPos.ToString()));
cmd.Parameters.AddWithValue("ParcelName", ad.ParcelName.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ParcelName", ad.ParcelName.ToString()));
cmd.Parameters.AddWithValue("Flags", ad.Flags.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Flags", (int)Convert.ToInt32(ad.Flags)));
cmd.Parameters.AddWithValue("ListingPrice", ad.Price.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("ListingPrice", (int)Convert.ToInt32(ad.Price)));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -235,7 +235,7 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("ClassifiedId", recordId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ClassifiedId", recordId));
lock(Lock) lock(Lock)
{ {
@ -267,15 +267,18 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("AdId", ad.ClassifiedId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("AdId", ad.ClassifiedId));
using (NpgsqlDataReader reader = cmd.ExecuteReader()) using (NpgsqlDataReader reader = cmd.ExecuteReader())
{ {
if(reader.Read ()) if(reader.Read ())
{ {
ad.CreatorId = GetUUID(reader["creatoruuid"]); // ad.CreatorId = GetUUID(reader["creatoruuid"]);
ad.ParcelId = GetUUID(reader["parceluuid"]); ad.CreatorId = DBGuid.FromDB(reader["creatoruuid"]);
ad.SnapshotId = GetUUID(reader["snapshotuuid"]); // ad.ParcelId = GetUUID(reader["parceluuid"]);
ad.ParcelId = DBGuid.FromDB(reader["parceluuid"]);
// ad.SnapshotId = GetUUID(reader["snapshotuuid"]);
ad.SnapshotId = DBGuid.FromDB(reader["snapshotuuid"]);
ad.CreationDate = Convert.ToInt32(reader["creationdate"]); ad.CreationDate = Convert.ToInt32(reader["creationdate"]);
ad.ExpirationDate = Convert.ToInt32(reader["expirationdate"]); ad.ExpirationDate = Convert.ToInt32(reader["expirationdate"]);
ad.ParentEstate = Convert.ToInt32(reader["parentestate"]); ad.ParentEstate = Convert.ToInt32(reader["parentestate"]);
@ -297,7 +300,7 @@ namespace OpenSim.Data.PGSQL
catch (Exception e) catch (Exception e)
{ {
m_log.DebugFormat("[PROFILES_DATA]" + m_log.DebugFormat("[PROFILES_DATA]" +
": GetPickInfo exception {0}", e.Message); ": GetClassifiedInfo exception {0}", e.Message);
} }
return true; return true;
} }
@ -330,7 +333,7 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", avatarId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", avatarId));
using (NpgsqlDataReader reader = cmd.ExecuteReader()) using (NpgsqlDataReader reader = cmd.ExecuteReader())
{ {
@ -340,7 +343,7 @@ namespace OpenSim.Data.PGSQL
{ {
OSDMap record = new OSDMap(); OSDMap record = new OSDMap();
record.Add("pickuuid",OSD.FromString((string)reader["pickuuid"])); record.Add("pickuuid",OSD.FromUUID(DBGuid.FromDB(reader["pickuuid"])));
record.Add("name",OSD.FromString((string)reader["name"])); record.Add("name",OSD.FromString((string)reader["name"]));
data.Add(record); data.Add(record);
} }
@ -373,8 +376,8 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("CreatorId", avatarId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("CreatorId", avatarId));
cmd.Parameters.AddWithValue("PickId", pickId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("PickId", pickId));
using (NpgsqlDataReader reader = cmd.ExecuteReader()) using (NpgsqlDataReader reader = cmd.ExecuteReader())
{ {
@ -387,18 +390,18 @@ namespace OpenSim.Data.PGSQL
if (string.IsNullOrEmpty(description)) if (string.IsNullOrEmpty(description))
description = "No description given."; description = "No description given.";
UUID.TryParse((string)reader["pickuuid"], out pick.PickId); pick.PickId = DBGuid.FromDB(reader["pickuuid"]);
UUID.TryParse((string)reader["creatoruuid"], out pick.CreatorId); pick.CreatorId = DBGuid.FromDB(reader["creatoruuid"]);
UUID.TryParse((string)reader["parceluuid"], out pick.ParcelId); pick.ParcelId = DBGuid.FromDB(reader["parceluuid"]);
UUID.TryParse((string)reader["snapshotuuid"], out pick.SnapshotId); pick.SnapshotId = DBGuid.FromDB(reader["snapshotuuid"]);
pick.GlobalPos = (string)reader["posglobal"]; pick.GlobalPos = (string)reader["posglobal"].ToString();
bool.TryParse((string)reader["toppick"], out pick.TopPick); pick.TopPick = Convert.ToBoolean(reader["toppick"]);
bool.TryParse((string)reader["enabled"], out pick.Enabled); pick.Enabled = Convert.ToBoolean(reader["enabled"]);
pick.Name = (string)reader["name"]; pick.Name = reader["name"].ToString ();
pick.Desc = description; pick.Desc = reader["description"].ToString();
pick.User = (string)reader["user"]; pick.User = reader["user"].ToString();
pick.OriginalName = (string)reader["originalname"]; pick.OriginalName = reader["originalname"].ToString();
pick.SimName = (string)reader["simname"]; pick.SimName = reader["simname"].ToString();
pick.SortOrder = (int)reader["sortorder"]; pick.SortOrder = (int)reader["sortorder"];
} }
} }
@ -418,19 +421,22 @@ namespace OpenSim.Data.PGSQL
{ {
string query = string.Empty; string query = string.Empty;
query = @"INSERT INTO userpicks VALUES ( :PickId, :CreatorId, :TopPick, :ParcelId,:Name, :Desc, :SnapshotId,:User,
:Original, :SimName, :GlobalPos, :SortOrder, :Enabled)
where not exists ( select pickid from userpicks where pickid = :pickid);
Update userpicks query = @"WITH upsert AS (
set parceluuid = :ParcelId, UPDATE userpicks SET
name = :Name, pickuuid = :PickId, creatoruuid = :CreatorId, toppick = :TopPick, parceluuid = :ParcelId,
description = :Desc, name = :Name, description = :Desc, snapshotuuid = :SnapshotId, ""user"" = :User,
snapshotuuid = :SnapshotId, originalname = :Original, simname = :SimName, posglobal = :GlobalPos,
pickuuid = :PickId, sortorder = :SortOrder, enabled = :Enabled
posglobal = :GlobalPos RETURNING * )
where pickid = :PickId; INSERT INTO userpicks (pickuuid,creatoruuid,toppick,parceluuid,name,description,
"; snapshotuuid,""user"",originalname,simname,posglobal,sortorder,enabled)
SELECT
:PickId,:CreatorId,:TopPick,:ParcelId,:Name,:Desc,:SnapshotId,:User,
:Original,:SimName,:GlobalPos,:SortOrder,:Enabled
WHERE NOT EXISTS (
SELECT * FROM upsert )";
try try
{ {
@ -439,19 +445,19 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("PickId", pick.PickId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("PickId", pick.PickId));
cmd.Parameters.AddWithValue("CreatorId", pick.CreatorId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("CreatorId", pick.CreatorId));
cmd.Parameters.AddWithValue("TopPick", pick.TopPick.ToString()); cmd.Parameters.Add(m_database.CreateParameter("TopPick", pick.TopPick));
cmd.Parameters.AddWithValue("ParcelId", pick.ParcelId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("ParcelId", pick.ParcelId));
cmd.Parameters.AddWithValue("Name", pick.Name.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Name", pick.Name));
cmd.Parameters.AddWithValue("Desc", pick.Desc.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Desc", pick.Desc));
cmd.Parameters.AddWithValue("SnapshotId", pick.SnapshotId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("SnapshotId", pick.SnapshotId));
cmd.Parameters.AddWithValue("User", pick.User.ToString()); cmd.Parameters.Add(m_database.CreateParameter("User", pick.User));
cmd.Parameters.AddWithValue("Original", pick.OriginalName.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Original", pick.OriginalName));
cmd.Parameters.AddWithValue("SimName",pick.SimName.ToString()); cmd.Parameters.Add(m_database.CreateParameter("SimName",pick.SimName));
cmd.Parameters.AddWithValue("GlobalPos", pick.GlobalPos); cmd.Parameters.Add(m_database.CreateParameter("GlobalPos", pick.GlobalPos));
cmd.Parameters.AddWithValue("SortOrder", pick.SortOrder.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("SortOrder", pick.SortOrder));
cmd.Parameters.AddWithValue("Enabled", pick.Enabled.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Enabled", pick.Enabled));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -481,7 +487,7 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("PickId", pickId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("PickId", pickId));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -514,8 +520,8 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", notes.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", notes.UserId));
cmd.Parameters.AddWithValue("TargetId", notes.TargetId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("TargetId", notes.TargetId));
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -551,14 +557,25 @@ namespace OpenSim.Data.PGSQL
else else
{ {
remove = false; remove = false;
query = @"INSERT INTO usernotes VALUES ( :UserId, :TargetId, :Notes ) // query = @"INSERT INTO usernotes VALUES ( :UserId, :TargetId, :Notes )
where not exists ( Select useruuid from usernotes where useruuid = :UserId and targetuuid = :TargetId ); // where not exists ( Select useruuid from usernotes where useruuid = :UserId and targetuuid = :TargetId );
//
// update usernotes
// set notes = :Notes
// where useruuid = :UserId
// and targetuuid = :TargetId;
// ";
query = @"WITH upsert AS (
UPDATE usernotes SET notes = :Notes, useruuid = :UserId, targetuuid = :TargetId RETURNING * )
INSERT INTO usernotes (notes,useruuid,targetuuid)
SELECT :Notes,:UserId,:TargetId
WHERE NOT EXISTS (
SELECT * FROM upsert
)";
update usernotes
set notes = :Notes
where useruuid = :UserId
and targetuuid = :TargetId;
";
} }
try try
@ -569,9 +586,9 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
if(!remove) if(!remove)
cmd.Parameters.AddWithValue("Notes", note.Notes); cmd.Parameters.Add(m_database.CreateParameter("Notes", note.Notes));
cmd.Parameters.AddWithValue("TargetId", note.TargetId.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("TargetId", note.TargetId));
cmd.Parameters.AddWithValue("UserId", note.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("UserId", note.UserId));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -603,7 +620,8 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", props.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", props.UserId));
m_log.InfoFormat("Profile Data {0}", props.ToString());
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -612,12 +630,15 @@ namespace OpenSim.Data.PGSQL
m_log.DebugFormat("[PROFILES_DATA]" + m_log.DebugFormat("[PROFILES_DATA]" +
": Getting data for {0}.", props.UserId); ": Getting data for {0}.", props.UserId);
reader.Read(); reader.Read();
props.WebUrl = (string)reader["profileURL"]; props.WebUrl = (string)reader["profileURL"].ToString();
UUID.TryParse((string)reader["profileImage"], out props.ImageId); m_log.DebugFormat("[PROFILES_DATA]: WebURL {0} ", props.WebUrl);
// UUID.TryParse((string)reader["profileImage"], out props.ImageId);
props.ImageId = DBGuid.FromDB(reader["profileImage"]);
m_log.DebugFormat("[PROFILES_DATA]: profileImage {0} ", props.ImageId);
props.AboutText = (string)reader["profileAboutText"]; props.AboutText = (string)reader["profileAboutText"];
UUID.TryParse((string)reader["profileFirstImage"], out props.FirstLifeImageId); props.FirstLifeImageId = DBGuid.FromDB(reader["profileFirstImage"]);
props.FirstLifeText = (string)reader["profileFirstText"]; props.FirstLifeText = (string)reader["profileFirstText"];
UUID.TryParse((string)reader["profilePartner"], out props.PartnerId); props.PartnerId = DBGuid.FromDB(reader["profilePartner"]);
props.WantToMask = (int)reader["profileWantToMask"]; props.WantToMask = (int)reader["profileWantToMask"];
props.WantToText = (string)reader["profileWantToText"]; props.WantToText = (string)reader["profileWantToText"];
props.SkillsMask = (int)reader["profileSkillsMask"]; props.SkillsMask = (int)reader["profileSkillsMask"];
@ -645,19 +666,19 @@ namespace OpenSim.Data.PGSQL
query = "INSERT INTO userprofile ("; query = "INSERT INTO userprofile (";
query += "useruuid, "; query += "useruuid, ";
query += "profilePartner, "; query += "\"profilePartner\", ";
query += "profileAllowPublish, "; query += "\"profileAllowPublish\", ";
query += "profileMaturePublish, "; query += "\"profileMaturePublish\", ";
query += "profileURL, "; query += "\"profileURL\", ";
query += "profileWantToMask, "; query += "\"profileWantToMask\", ";
query += "profileWantToText, "; query += "\"profileWantToText\", ";
query += "profileSkillsMask, "; query += "\"profileSkillsMask\", ";
query += "profileSkillsText, "; query += "\"profileSkillsText\", ";
query += "profileLanguages, "; query += "\"profileLanguages\", ";
query += "profileImage, "; query += "\"profileImage\", ";
query += "profileAboutText, "; query += "\"profileAboutText\", ";
query += "profileFirstImage, "; query += "\"profileFirstImage\", ";
query += "profileFirstText) VALUES ("; query += "\"profileFirstText\") VALUES (";
query += ":userId, "; query += ":userId, ";
query += ":profilePartner, "; query += ":profilePartner, ";
query += ":profileAllowPublish, "; query += ":profileAllowPublish, ";
@ -678,20 +699,23 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand put = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand put = new NpgsqlCommand(query, dbcon))
{ {
put.Parameters.AddWithValue("userId", props.UserId.ToString()); m_log.DebugFormat("[PROFILES_DATA]" +
put.Parameters.AddWithValue("profilePartner", props.PartnerId.ToString()); ": Adding new data for {0}", props.UserId);
put.Parameters.AddWithValue("profileAllowPublish", props.PublishProfile);
put.Parameters.AddWithValue("profileMaturePublish", props.PublishMature); put.Parameters.Add(m_database.CreateParameter("userId", props.UserId));
put.Parameters.AddWithValue("profileURL", props.WebUrl); put.Parameters.Add(m_database.CreateParameter("profilePartner", props.PartnerId));
put.Parameters.AddWithValue("profileWantToMask", props.WantToMask); put.Parameters.Add(m_database.CreateParameter("profileAllowPublish", props.PublishProfile));
put.Parameters.AddWithValue("profileWantToText", props.WantToText); put.Parameters.Add(m_database.CreateParameter("profileMaturePublish", props.PublishMature));
put.Parameters.AddWithValue("profileSkillsMask", props.SkillsMask); put.Parameters.Add(m_database.CreateParameter("profileURL", props.WebUrl));
put.Parameters.AddWithValue("profileSkillsText", props.SkillsText); put.Parameters.Add(m_database.CreateParameter("profileWantToMask", props.WantToMask));
put.Parameters.AddWithValue("profileLanguages", props.Language); put.Parameters.Add(m_database.CreateParameter("profileWantToText", props.WantToText));
put.Parameters.AddWithValue("profileImage", props.ImageId.ToString()); put.Parameters.Add(m_database.CreateParameter("profileSkillsMask", props.SkillsMask));
put.Parameters.AddWithValue("profileAboutText", props.AboutText); put.Parameters.Add(m_database.CreateParameter("profileSkillsText", props.SkillsText));
put.Parameters.AddWithValue("profileFirstImage", props.FirstLifeImageId.ToString()); put.Parameters.Add(m_database.CreateParameter("profileLanguages", props.Language));
put.Parameters.AddWithValue("profileFirstText", props.FirstLifeText); put.Parameters.Add(m_database.CreateParameter("profileImage", props.ImageId));
put.Parameters.Add(m_database.CreateParameter("profileAboutText", props.AboutText));
put.Parameters.Add(m_database.CreateParameter("profileFirstImage", props.FirstLifeImageId));
put.Parameters.Add(m_database.CreateParameter("profileFirstText", props.FirstLifeText));
put.ExecuteNonQuery(); put.ExecuteNonQuery();
} }
@ -703,7 +727,7 @@ namespace OpenSim.Data.PGSQL
catch (Exception e) catch (Exception e)
{ {
m_log.DebugFormat("[PROFILES_DATA]" + m_log.DebugFormat("[PROFILES_DATA]" +
": Requst properties exception {0}", e.Message); ": Requst properties exception {0} {1}", e.Message, e.StackTrace);
result = e.Message; result = e.Message;
return false; return false;
} }
@ -715,12 +739,12 @@ namespace OpenSim.Data.PGSQL
string query = string.Empty; string query = string.Empty;
query += "UPDATE userprofile SET "; query += "UPDATE userprofile SET ";
query += "profileURL=:profileURL, "; query += "\"profileURL\"=:profileURL, ";
query += "profileImage=:image, "; query += "\"profileImage\"=:image, ";
query += "profileAboutText=:abouttext,"; query += "\"profileAboutText\"=:abouttext,";
query += "profileFirstImage=:firstlifeimage,"; query += "\"profileFirstImage\"=:firstlifeimage,";
query += "profileFirstText=:firstlifetext "; query += "\"profileFirstText\"=:firstlifetext ";
query += "WHERE useruuid=:uuid"; query += "WHERE \"useruuid\"=:uuid";
try try
{ {
@ -729,12 +753,12 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("profileURL", props.WebUrl); cmd.Parameters.Add(m_database.CreateParameter("profileURL", props.WebUrl));
cmd.Parameters.AddWithValue("image", props.ImageId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("image", props.ImageId));
cmd.Parameters.AddWithValue("abouttext", props.AboutText); cmd.Parameters.Add(m_database.CreateParameter("abouttext", props.AboutText));
cmd.Parameters.AddWithValue("firstlifeimage", props.FirstLifeImageId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("firstlifeimage", props.FirstLifeImageId));
cmd.Parameters.AddWithValue("firstlifetext", props.FirstLifeText); cmd.Parameters.Add(m_database.CreateParameter("firstlifetext", props.FirstLifeText));
cmd.Parameters.AddWithValue("uuid", props.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("uuid", props.UserId));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -757,12 +781,12 @@ namespace OpenSim.Data.PGSQL
string query = string.Empty; string query = string.Empty;
query += "UPDATE userprofile SET "; query += "UPDATE userprofile SET ";
query += "profileWantToMask=:WantMask, "; query += "\"profileWantToMask\"=:WantMask, ";
query += "profileWantToText=:WantText,"; query += "\"profileWantToText\"=:WantText,";
query += "profileSkillsMask=:SkillsMask,"; query += "\"profileSkillsMask\"=:SkillsMask,";
query += "profileSkillsText=:SkillsText, "; query += "\"profileSkillsText\"=:SkillsText, ";
query += "profileLanguages=:Languages "; query += "\"profileLanguages\"=:Languages ";
query += "WHERE useruuid=:uuid"; query += "WHERE \"useruuid\"=:uuid";
try try
{ {
@ -771,12 +795,12 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("WantMask", up.WantToMask); cmd.Parameters.Add(m_database.CreateParameter("WantMask", up.WantToMask));
cmd.Parameters.AddWithValue("WantText", up.WantToText); cmd.Parameters.Add(m_database.CreateParameter("WantText", up.WantToText));
cmd.Parameters.AddWithValue("SkillsMask", up.SkillsMask); cmd.Parameters.Add(m_database.CreateParameter("SkillsMask", up.SkillsMask));
cmd.Parameters.AddWithValue("SkillsText", up.SkillsText); cmd.Parameters.Add(m_database.CreateParameter("SkillsText", up.SkillsText));
cmd.Parameters.AddWithValue("Languages", up.Language); cmd.Parameters.Add(m_database.CreateParameter("Languages", up.Language));
cmd.Parameters.AddWithValue("uuid", up.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("uuid", up.UserId));
cmd.ExecuteNonQuery(); cmd.ExecuteNonQuery();
} }
@ -809,7 +833,7 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"classifieds\""), dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"classifieds\""), dbcon))
{ {
cmd.Parameters.AddWithValue("Id", avatarId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", avatarId));
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -817,7 +841,7 @@ namespace OpenSim.Data.PGSQL
{ {
while (reader.Read()) while (reader.Read())
{ {
data.Add(new OSDString((string)reader["snapshotuuid"].ToString ())); data.Add(new OSDString((string)reader["snapshotuuid"]));
} }
} }
} }
@ -828,7 +852,7 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"userpicks\""), dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"userpicks\""), dbcon))
{ {
cmd.Parameters.AddWithValue("Id", avatarId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", avatarId));
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -836,7 +860,7 @@ namespace OpenSim.Data.PGSQL
{ {
while (reader.Read()) while (reader.Read())
{ {
data.Add(new OSDString((string)reader["snapshotuuid"].ToString ())); data.Add(new OSDString((string)reader["snapshotuuid"]));
} }
} }
} }
@ -849,7 +873,7 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"userpicks\""), dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(string.Format (query,"\"userpicks\""), dbcon))
{ {
cmd.Parameters.AddWithValue("Id", avatarId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", avatarId));
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -857,8 +881,8 @@ namespace OpenSim.Data.PGSQL
{ {
while (reader.Read()) while (reader.Read())
{ {
data.Add(new OSDString((string)reader["profileImage"].ToString ())); data.Add(new OSDString((string)reader["profileImage"]));
data.Add(new OSDString((string)reader["profileFirstImage"].ToString ())); data.Add(new OSDString((string)reader["profileFirstImage"]));
} }
} }
} }
@ -891,7 +915,7 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", pref.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", pref.UserId));
using (NpgsqlDataReader reader = cmd.ExecuteReader()) using (NpgsqlDataReader reader = cmd.ExecuteReader())
{ {
@ -944,9 +968,9 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("ImViaEmail", pref.IMViaEmail.ToString().ToLower ()); cmd.Parameters.Add(m_database.CreateParameter("ImViaEmail", pref.IMViaEmail.ToString().ToLower ()));
cmd.Parameters.AddWithValue("Visible", pref.Visible.ToString().ToLower ()); cmd.Parameters.Add(m_database.CreateParameter("Visible", pref.Visible.ToString().ToLower ()));
cmd.Parameters.AddWithValue("uuid", pref.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("uuid", pref.UserId.ToString()));
lock(Lock) lock(Lock)
{ {
@ -982,8 +1006,8 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("Id", props.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("Id", props.UserId));
cmd.Parameters.AddWithValue (":TagId", props.TagId.ToString()); cmd.Parameters.Add(m_database.CreateParameter(":TagId", props.TagId));
using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow)) using (NpgsqlDataReader reader = cmd.ExecuteReader(CommandBehavior.SingleRow))
{ {
@ -1003,10 +1027,10 @@ namespace OpenSim.Data.PGSQL
using (NpgsqlCommand put = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand put = new NpgsqlCommand(query, dbcon))
{ {
put.Parameters.AddWithValue("Id", props.UserId.ToString()); put.Parameters.Add(m_database.CreateParameter("Id", props.UserId));
put.Parameters.AddWithValue("TagId", props.TagId.ToString()); put.Parameters.Add(m_database.CreateParameter("TagId", props.TagId));
put.Parameters.AddWithValue("DataKey", props.DataKey.ToString()); put.Parameters.Add(m_database.CreateParameter("DataKey", props.DataKey.ToString()));
put.Parameters.AddWithValue("DataVal", props.DataVal.ToString()); put.Parameters.Add(m_database.CreateParameter("DataVal", props.DataVal.ToString()));
lock(Lock) lock(Lock)
{ {
@ -1046,10 +1070,10 @@ namespace OpenSim.Data.PGSQL
dbcon.Open(); dbcon.Open();
using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon)) using (NpgsqlCommand cmd = new NpgsqlCommand(query, dbcon))
{ {
cmd.Parameters.AddWithValue("UserId", props.UserId.ToString()); cmd.Parameters.Add(m_database.CreateParameter("UserId", props.UserId.ToString()));
cmd.Parameters.AddWithValue("TagId", props.TagId.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("TagId", props.TagId.ToString ()));
cmd.Parameters.AddWithValue("DataKey", props.DataKey.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("DataKey", props.DataKey.ToString ()));
cmd.Parameters.AddWithValue("DataVal", props.DataKey.ToString ()); cmd.Parameters.Add(m_database.CreateParameter("DataVal", props.DataKey.ToString ()));
lock(Lock) lock(Lock)
{ {

View File

@ -89,4 +89,58 @@ CREATE TABLE usersettings (
"visible" bytea NOT NULL, "visible" bytea NOT NULL,
PRIMARY KEY ("useruuid") PRIMARY KEY ("useruuid")
); );
commit; commit;
:VERSION 4
BEGIN;
-- Classifieds
ALTER TABLE classifieds DROP CONSTRAINT classifiedspk;
ALTER TABLE classifieds ALTER COLUMN classifieduuid SET DATA TYPE uuid using classifieduuid::uuid;
ALTER TABLE classifieds ALTER COLUMN creatoruuid SET DATA TYPE uuid using creatoruuid::uuid;
ALTER TABLE classifieds ALTER COLUMN parceluuid SET DATA TYPE uuid using parceluuid::uuid;
ALTER TABLE classifieds ALTER COLUMN snapshotuuid SET DATA TYPE uuid using snapshotuuid::uuid;
ALTER TABLE classifieds ADD CONSTRAINT classifiedspk PRIMARY KEY (classifieduuid);
-- Notes
ALTER TABLE usernotes DROP CONSTRAINT usernoteuk;
ALTER TABLE usernotes ALTER COLUMN useruuid SET DATA TYPE uuid USING useruuid::uuid;
ALTER TABLE usernotes ALTER COLUMN targetuuid SET DATA TYPE uuid USING targetuuid::uuid;
ALTER TABLE usernotes ADD CONSTRAINT usernoteuk UNIQUE (useruuid,targetuuid);
-- Userpicks
ALTER TABLE userpicks DROP CONSTRAINT userpicks_pkey;
ALTER TABLE userpicks ALTER COLUMN pickuuid SET DATA TYPE uuid USING pickuuid::uuid;
ALTER TABLE userpicks ALTER COLUMN creatoruuid SET DATA TYPE uuid USING creatoruuid::uuid;
ALTER TABLE userpicks ALTER COLUMN parceluuid SET DATA TYPE uuid USING parceluuid::uuid;
ALTER TABLE userpicks ALTER COLUMN parceluuid SET DATA TYPE uuid USING parceluuid::uuid;
ALTER TABLE userpicks ADD PRIMARY KEY (pickuuid);
-- Userprofile
ALTER TABLE userprofile DROP CONSTRAINT userprofile_pkey;
ALTER TABLE userprofile ALTER COLUMN useruuid SET DATA TYPE uuid USING useruuid::uuid;
ALTER TABLE userprofile ALTER COLUMN "profilePartner" SET DATA TYPE uuid USING "profilePartner"::uuid;
-- Force column conversions
ALTER TABLE userprofile ALTER COLUMN "profileAllowPublish" SET DATA TYPE boolean USING CASE WHEN false THEN false ELSE true END;
ALTER TABLE userprofile ALTER COLUMN "profileMaturePublish" SET DATA TYPE boolean USING CASE WHEN false THEN false ELSE true END;
ALTER TABLE userprofile ALTER COLUMN "profileImage" SET DATA TYPE uuid USING "profileImage"::uuid;
ALTER TABLE userprofile ALTER COLUMN "profileFirstImage" SET DATA TYPE uuid USING "profileFirstImage"::uuid;
ALTER TABLE userprofile ADD PRIMARY KEY (useruuid);
-- Userdata
ALTER TABLE userdata DROP CONSTRAINT userdata_pkey;
ALTER TABLE userdata ALTER COLUMN "UserId" SET DATA TYPE uuid USING "UserId"::uuid;
ALTER TABLE userdata ALTER COLUMN "UserId" SET DATA TYPE uuid USING "UserId"::uuid;
ALTER TABLE userdata ADD PRIMARY KEY ("UserId","TagId");
-- Usersettings
ALTER TABLE usersettings DROP CONSTRAINT usersettings_pkey;
ALTER TABLE usersettings ALTER COLUMN useruuid SET DATA TYPE uuid USING useruuid::uuid;
ALTER TABLE usersettings ALTER COLUMN visible SET DATA TYPE boolean USING CASE WHEN false THEN false ELSE true END;
ALTER TABLE usersettings ADD COLUMN email varchar(254) NOT NULL;
ALTER TABLE usersettings ADD PRIMARY KEY (useruuid);
COMMIT;