From fa8c0d7683d567743f5138813f08a502aff8e3d0 Mon Sep 17 00:00:00 2001 From: Sean Dague Date: Wed, 15 Oct 2008 18:15:43 +0000 Subject: - Makes MySQL reject inserting UUID 0 - Makes SQLite mimick MySQL default behavior on first and last name already on db: it does not insert the new record. - Added tests for UUID 0 and for new UUID with existing first and last name. --- OpenSim/Data/SQLite/SQLiteUserData.cs | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'OpenSim/Data/SQLite') diff --git a/OpenSim/Data/SQLite/SQLiteUserData.cs b/OpenSim/Data/SQLite/SQLiteUserData.cs index 420b6e5..448ef85 100644 --- a/OpenSim/Data/SQLite/SQLiteUserData.cs +++ b/OpenSim/Data/SQLite/SQLiteUserData.cs @@ -481,6 +481,37 @@ namespace OpenSim.Data.SQLite } + private bool ExistsFirstLastName(String fname, String lname) + { + string FindUser = "select * from users where (username=:username and surname=:surname)"; + using (SqliteCommand cmd = new SqliteCommand(FindUser, g_conn)) + { + cmd.Parameters.Add(new SqliteParameter(":username", fname)); + cmd.Parameters.Add(new SqliteParameter(":surname", lname)); + try + { + using (IDataReader reader = cmd.ExecuteReader()) + { + if(reader.Read()) + { + reader.Close(); + return true; + } + else + { + reader.Close(); + return false; + } + } + } + catch (Exception ex) + { + m_log.Error("[USER DB]: Exception searching for user's first and last name: " + ex.ToString()); + return false; + } + } + } + /// /// Creates a new user profile /// @@ -488,6 +519,10 @@ namespace OpenSim.Data.SQLite override public void AddNewUserProfile(UserProfileData user) { DataTable users = ds.Tables["users"]; + UUID zero = UUID.Zero; + if (ExistsFirstLastName(user.FirstName, user.SurName) || user.ID == zero) + return; + lock (ds) { DataRow row = users.Rows.Find(Util.ToRawUuidString(user.ID)); -- cgit v1.1