diff options
author | lbsa71 | 2008-02-13 13:39:51 +0000 |
---|---|---|
committer | lbsa71 | 2008-02-13 13:39:51 +0000 |
commit | 4880bd121e737e0a5c384fddf61bd220c77ef88a (patch) | |
tree | c3597cb34642611869ff26c559708a45956fa4cc | |
parent | * Added openlifegrid.com to testers and patchers (diff) | |
download | opensim-SC-4880bd121e737e0a5c384fddf61bd220c77ef88a.zip opensim-SC-4880bd121e737e0a5c384fddf61bd220c77ef88a.tar.gz opensim-SC-4880bd121e737e0a5c384fddf61bd220c77ef88a.tar.bz2 opensim-SC-4880bd121e737e0a5c384fddf61bd220c77ef88a.tar.xz |
* Split out MSSQLManager Test/Init into each provider.
* Made regions table name configurable (MSSQL only)
* Added a note in ini.example pointing out that the sql resources have to change if you change table names
* Removed duplicate picker method from GridData interface
[Provided by openlifegrid.com]
-rw-r--r-- | OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs | 127 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs | 15 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MSSQL/MSSQLManager.cs | 67 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs | 54 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MSSQL/Resources/Mssql-regions.sql | 41 | ||||
-rw-r--r-- | OpenSim/Framework/Data.MySQL/MySQLGridData.cs | 86 | ||||
-rw-r--r-- | OpenSim/Framework/Data/GridData.cs | 3 | ||||
-rw-r--r-- | bin/mssql_connection.ini.example | 4 | ||||
-rw-r--r-- | bin/mysql_connection.ini.example | 1 |
9 files changed, 142 insertions, 256 deletions
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs index 28eec3e..0df88b6 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLGridData.cs | |||
@@ -47,21 +47,48 @@ namespace OpenSim.Framework.Data.MSSQL | |||
47 | /// </summary> | 47 | /// </summary> |
48 | private MSSQLManager database; | 48 | private MSSQLManager database; |
49 | 49 | ||
50 | private string m_regionsTableName; | ||
51 | |||
50 | /// <summary> | 52 | /// <summary> |
51 | /// Initialises the Grid Interface | 53 | /// Initialises the Grid Interface |
52 | /// </summary> | 54 | /// </summary> |
53 | public void Initialise() | 55 | public void Initialise() |
54 | { | 56 | { |
55 | IniFile GridDataMySqlFile = new IniFile("mssql_connection.ini"); | 57 | IniFile iniFile = new IniFile("mssql_connection.ini"); |
56 | string settingDataSource = GridDataMySqlFile.ParseFileReadValue("data_source"); | 58 | |
57 | string settingInitialCatalog = GridDataMySqlFile.ParseFileReadValue("initial_catalog"); | 59 | string settingDataSource = iniFile.ParseFileReadValue("data_source"); |
58 | string settingPersistSecurityInfo = GridDataMySqlFile.ParseFileReadValue("persist_security_info"); | 60 | string settingInitialCatalog = iniFile.ParseFileReadValue("initial_catalog"); |
59 | string settingUserId = GridDataMySqlFile.ParseFileReadValue("user_id"); | 61 | string settingPersistSecurityInfo = iniFile.ParseFileReadValue("persist_security_info"); |
60 | string settingPassword = GridDataMySqlFile.ParseFileReadValue("password"); | 62 | string settingUserId = iniFile.ParseFileReadValue("user_id"); |
63 | string settingPassword = iniFile.ParseFileReadValue("password"); | ||
64 | |||
65 | m_regionsTableName = iniFile.ParseFileReadValue("regionstablename"); | ||
66 | if (m_regionsTableName == null) | ||
67 | { | ||
68 | m_regionsTableName = "regions"; | ||
69 | } | ||
61 | 70 | ||
62 | database = | 71 | database = |
63 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, | 72 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, |
64 | settingPassword); | 73 | settingPassword); |
74 | |||
75 | TestTables(); | ||
76 | } | ||
77 | |||
78 | private void TestTables() | ||
79 | { | ||
80 | IDbCommand cmd = database.Query("SELECT * FROM "+m_regionsTableName, new Dictionary<string, string>()); | ||
81 | |||
82 | try | ||
83 | { | ||
84 | cmd.ExecuteNonQuery(); | ||
85 | cmd.Dispose(); | ||
86 | } | ||
87 | catch (Exception) | ||
88 | { | ||
89 | m_log.Info("[DATASTORE]: MSSQL Database doesn't exist... creating"); | ||
90 | database.ExecuteResourceSql("Mssql-regions.sql"); | ||
91 | } | ||
65 | } | 92 | } |
66 | 93 | ||
67 | /// <summary> | 94 | /// <summary> |
@@ -115,7 +142,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
115 | { | 142 | { |
116 | Dictionary<string, string> param = new Dictionary<string, string>(); | 143 | Dictionary<string, string> param = new Dictionary<string, string>(); |
117 | param["handle"] = handle.ToString(); | 144 | param["handle"] = handle.ToString(); |
118 | IDbCommand result = database.Query("SELECT * FROM regions WHERE regionHandle = @handle", param); | 145 | IDbCommand result = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE regionHandle = @handle", param); |
119 | reader = result.ExecuteReader(); | 146 | reader = result.ExecuteReader(); |
120 | 147 | ||
121 | RegionProfileData row = database.getRegionRow(reader); | 148 | RegionProfileData row = database.getRegionRow(reader); |
@@ -134,89 +161,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
134 | return null; | 161 | return null; |
135 | } | 162 | } |
136 | 163 | ||
137 | /// <summary> | 164 | |
138 | /// // Returns a list of avatar and UUIDs that match the query | ||
139 | /// </summary> | ||
140 | public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) | ||
141 | { | ||
142 | List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>(); | ||
143 | string[] querysplit; | ||
144 | querysplit = query.Split(' '); | ||
145 | if (querysplit.Length == 2) | ||
146 | { | ||
147 | try | ||
148 | { | ||
149 | lock (database) | ||
150 | { | ||
151 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
152 | param["first"] = querysplit[0]; | ||
153 | param["second"] = querysplit[1]; | ||
154 | |||
155 | IDbCommand result = | ||
156 | database.Query( | ||
157 | "SELECT UUID,username,surname FROM users WHERE username = @first AND lastname = @second", | ||
158 | param); | ||
159 | IDataReader reader = result.ExecuteReader(); | ||
160 | |||
161 | |||
162 | while (reader.Read()) | ||
163 | { | ||
164 | AvatarPickerAvatar user = new AvatarPickerAvatar(); | ||
165 | user.AvatarID = new LLUUID((string) reader["UUID"]); | ||
166 | user.firstName = (string) reader["username"]; | ||
167 | user.lastName = (string) reader["surname"]; | ||
168 | returnlist.Add(user); | ||
169 | } | ||
170 | reader.Close(); | ||
171 | result.Dispose(); | ||
172 | } | ||
173 | } | ||
174 | catch (Exception e) | ||
175 | { | ||
176 | database.Reconnect(); | ||
177 | m_log.Error(e.ToString()); | ||
178 | return returnlist; | ||
179 | } | ||
180 | } | ||
181 | else if (querysplit.Length == 1) | ||
182 | { | ||
183 | try | ||
184 | { | ||
185 | lock (database) | ||
186 | { | ||
187 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
188 | param["first"] = querysplit[0]; | ||
189 | param["second"] = querysplit[1]; | ||
190 | |||
191 | IDbCommand result = | ||
192 | database.Query( | ||
193 | "SELECT UUID,username,surname FROM users WHERE username = @first OR lastname = @second", | ||
194 | param); | ||
195 | IDataReader reader = result.ExecuteReader(); | ||
196 | |||
197 | |||
198 | while (reader.Read()) | ||
199 | { | ||
200 | AvatarPickerAvatar user = new AvatarPickerAvatar(); | ||
201 | user.AvatarID = new LLUUID((string) reader["UUID"]); | ||
202 | user.firstName = (string) reader["username"]; | ||
203 | user.lastName = (string) reader["surname"]; | ||
204 | returnlist.Add(user); | ||
205 | } | ||
206 | reader.Close(); | ||
207 | result.Dispose(); | ||
208 | } | ||
209 | } | ||
210 | catch (Exception e) | ||
211 | { | ||
212 | database.Reconnect(); | ||
213 | m_log.Error(e.ToString()); | ||
214 | return returnlist; | ||
215 | } | ||
216 | } | ||
217 | return returnlist; | ||
218 | } | ||
219 | |||
220 | /// <summary> | 165 | /// <summary> |
221 | /// Returns a sim profile from it's UUID | 166 | /// Returns a sim profile from it's UUID |
222 | /// </summary> | 167 | /// </summary> |
@@ -226,7 +171,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
226 | { | 171 | { |
227 | Dictionary<string, string> param = new Dictionary<string, string>(); | 172 | Dictionary<string, string> param = new Dictionary<string, string>(); |
228 | param["uuid"] = uuid.ToString(); | 173 | param["uuid"] = uuid.ToString(); |
229 | IDbCommand result = database.Query("SELECT * FROM regions WHERE uuid = @uuid", param); | 174 | IDbCommand result = database.Query("SELECT * FROM " + m_regionsTableName + " WHERE uuid = @uuid", param); |
230 | IDataReader reader = result.ExecuteReader(); | 175 | IDataReader reader = result.ExecuteReader(); |
231 | 176 | ||
232 | RegionProfileData row = database.getRegionRow(reader); | 177 | RegionProfileData row = database.getRegionRow(reader); |
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs index c3ec7c6..1e83496 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLLogData.cs | |||
@@ -25,6 +25,9 @@ | |||
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 System.Collections.Generic; | ||
29 | using System.Data; | ||
30 | |||
28 | namespace OpenSim.Framework.Data.MSSQL | 31 | namespace OpenSim.Framework.Data.MSSQL |
29 | { | 32 | { |
30 | /// <summary> | 33 | /// <summary> |
@@ -52,6 +55,18 @@ namespace OpenSim.Framework.Data.MSSQL | |||
52 | database = | 55 | database = |
53 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, | 56 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, |
54 | settingPassword); | 57 | settingPassword); |
58 | |||
59 | IDbCommand cmd = database.Query("select top 1 * from logs", new Dictionary<string, string>()); | ||
60 | try | ||
61 | { | ||
62 | cmd.ExecuteNonQuery(); | ||
63 | cmd.Dispose(); | ||
64 | } | ||
65 | catch | ||
66 | { | ||
67 | database.ExecuteResourceSql("Mssql-logs.sql"); | ||
68 | } | ||
69 | |||
55 | } | 70 | } |
56 | 71 | ||
57 | /// <summary> | 72 | /// <summary> |
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs index e54cde1..5c3e94f 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLManager.cs | |||
@@ -52,16 +52,8 @@ namespace OpenSim.Framework.Data.MSSQL | |||
52 | /// <summary> | 52 | /// <summary> |
53 | /// Connection string for ADO.net | 53 | /// Connection string for ADO.net |
54 | /// </summary> | 54 | /// </summary> |
55 | private string connectionString; | 55 | private readonly string connectionString; |
56 | 56 | ||
57 | /// <summary> | ||
58 | /// Initialises and creates a new Sql connection and maintains it. | ||
59 | /// </summary> | ||
60 | /// <param name="hostname">The Sql server being connected to</param> | ||
61 | /// <param name="database">The name of the Sql database being used</param> | ||
62 | /// <param name="username">The username logging into the database</param> | ||
63 | /// <param name="password">The password for the user logging in</param> | ||
64 | /// <param name="cpooling">Whether to use connection pooling or not, can be one of the following: 'yes', 'true', 'no' or 'false', if unsure use 'false'.</param> | ||
65 | public MSSQLManager(string dataSource, string initialCatalog, string persistSecurityInfo, string userId, | 57 | public MSSQLManager(string dataSource, string initialCatalog, string persistSecurityInfo, string userId, |
66 | string password) | 58 | string password) |
67 | { | 59 | { |
@@ -71,7 +63,6 @@ namespace OpenSim.Framework.Data.MSSQL | |||
71 | ";Persist Security Info=" + persistSecurityInfo + ";User ID=" + userId + ";Password=" + | 63 | ";Persist Security Info=" + persistSecurityInfo + ";User ID=" + userId + ";Password=" + |
72 | password + ";"; | 64 | password + ";"; |
73 | dbcon = new SqlConnection(connectionString); | 65 | dbcon = new SqlConnection(connectionString); |
74 | TestTables(dbcon); | ||
75 | dbcon.Open(); | 66 | dbcon.Open(); |
76 | } | 67 | } |
77 | catch (Exception e) | 68 | catch (Exception e) |
@@ -80,61 +71,6 @@ namespace OpenSim.Framework.Data.MSSQL | |||
80 | } | 71 | } |
81 | } | 72 | } |
82 | 73 | ||
83 | private bool TestTables(IDbConnection conn) | ||
84 | { | ||
85 | IDbCommand cmd = Query("SELECT * FROM regions", new Dictionary<string, string>()); | ||
86 | //SqlCommand cmd = (SqlCommand)dbcon.CreateCommand(); | ||
87 | //cmd.CommandText = "SELECT * FROM regions"; | ||
88 | try | ||
89 | { | ||
90 | conn.Open(); | ||
91 | cmd.ExecuteNonQuery(); | ||
92 | cmd.Dispose(); | ||
93 | conn.Close(); | ||
94 | } | ||
95 | catch (Exception) | ||
96 | { | ||
97 | m_log.Info("[DATASTORE]: MSSQL Database doesn't exist... creating"); | ||
98 | InitDB(conn); | ||
99 | } | ||
100 | cmd = Query("select top 1 webLoginKey from users", new Dictionary<string, string>()); | ||
101 | try | ||
102 | { | ||
103 | conn.Open(); | ||
104 | cmd.ExecuteNonQuery(); | ||
105 | cmd.Dispose(); | ||
106 | conn.Close(); | ||
107 | } | ||
108 | catch (Exception) | ||
109 | { | ||
110 | conn.Open(); | ||
111 | cmd = Query("alter table users add column [webLoginKey] varchar(36) default NULL", new Dictionary<string, string>()); | ||
112 | cmd.ExecuteNonQuery(); | ||
113 | cmd.Dispose(); | ||
114 | conn.Close(); | ||
115 | } | ||
116 | return true; | ||
117 | } | ||
118 | |||
119 | private void InitDB(IDbConnection conn) | ||
120 | { | ||
121 | string createRegions = defineTable(createRegionsTable()); | ||
122 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
123 | IDbCommand pcmd = Query(createRegions, param); | ||
124 | if (conn.State == ConnectionState.Closed) | ||
125 | { | ||
126 | conn.Open(); | ||
127 | } | ||
128 | pcmd.ExecuteNonQuery(); | ||
129 | pcmd.Dispose(); | ||
130 | |||
131 | ExecuteResourceSql("Mssql-users.sql"); | ||
132 | ExecuteResourceSql("Mssql-agents.sql"); | ||
133 | ExecuteResourceSql("Mssql-logs.sql"); | ||
134 | |||
135 | conn.Close(); | ||
136 | } | ||
137 | |||
138 | private DataTable createRegionsTable() | 74 | private DataTable createRegionsTable() |
139 | { | 75 | { |
140 | DataTable regions = new DataTable("regions"); | 76 | DataTable regions = new DataTable("regions"); |
@@ -253,7 +189,6 @@ namespace OpenSim.Framework.Data.MSSQL | |||
253 | { | 189 | { |
254 | try | 190 | try |
255 | { | 191 | { |
256 | //string connectionString = "Data Source=WRK-OU-738\\SQLEXPRESS;Initial Catalog=rex;Persist Security Info=True;User ID=sa;Password=rex"; | ||
257 | // Close the DB connection | 192 | // Close the DB connection |
258 | dbcon.Close(); | 193 | dbcon.Close(); |
259 | // Try reopen it | 194 | // Try reopen it |
diff --git a/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs b/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs index 60e6df4..aacbb2d 100644 --- a/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs +++ b/OpenSim/Framework/Data.MSSQL/MSSQLUserData.cs | |||
@@ -85,8 +85,42 @@ namespace OpenSim.Framework.Data.MSSQL | |||
85 | database = | 85 | database = |
86 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, | 86 | new MSSQLManager(settingDataSource, settingInitialCatalog, settingPersistSecurityInfo, settingUserId, |
87 | settingPassword); | 87 | settingPassword); |
88 | |||
89 | if (!TestTables()) | ||
90 | { | ||
91 | database.ExecuteResourceSql("Mssql-agents.sql"); | ||
92 | database.ExecuteResourceSql("Mssql-users.sql"); | ||
93 | database.ExecuteResourceSql("Mssql-userfriends.sql"); | ||
94 | } | ||
88 | } | 95 | } |
89 | 96 | ||
97 | private bool TestTables() | ||
98 | { | ||
99 | IDbCommand cmd = database.Query("select top 1 webLoginKey from "+m_usersTableName, new Dictionary<string, string>()); | ||
100 | try | ||
101 | { | ||
102 | cmd.ExecuteNonQuery(); | ||
103 | cmd.Dispose(); | ||
104 | } | ||
105 | catch | ||
106 | { | ||
107 | database.Query("alter table "+m_usersTableName+" add column [webLoginKey] varchar(36) default NULL", new Dictionary<string, string>()); | ||
108 | cmd.ExecuteNonQuery(); | ||
109 | cmd.Dispose(); | ||
110 | } | ||
111 | |||
112 | cmd = database.Query("select top 1 * from "+m_usersTableName, new Dictionary<string, string>()); | ||
113 | try | ||
114 | { | ||
115 | cmd.ExecuteNonQuery(); | ||
116 | } | ||
117 | catch | ||
118 | { | ||
119 | return false; | ||
120 | } | ||
121 | |||
122 | return true; | ||
123 | } | ||
90 | /// <summary> | 124 | /// <summary> |
91 | /// Searches the database for a specified user profile by name components | 125 | /// Searches the database for a specified user profile by name components |
92 | /// </summary> | 126 | /// </summary> |
@@ -104,7 +138,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
104 | param["second"] = last; | 138 | param["second"] = last; |
105 | 139 | ||
106 | IDbCommand result = | 140 | IDbCommand result = |
107 | database.Query("SELECT * FROM "+m_usersTableName+" WHERE username = @first AND lastname = @second", param); | 141 | database.Query("SELECT * FROM " + m_usersTableName + " WHERE username = @first AND lastname = @second", param); |
108 | IDataReader reader = result.ExecuteReader(); | 142 | IDataReader reader = result.ExecuteReader(); |
109 | 143 | ||
110 | UserProfileData row = database.readUserRow(reader); | 144 | UserProfileData row = database.readUserRow(reader); |
@@ -153,7 +187,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
153 | m_log.Info("[USER]: Stub UpdateUserCUrrentRegion called"); | 187 | m_log.Info("[USER]: Stub UpdateUserCUrrentRegion called"); |
154 | } | 188 | } |
155 | 189 | ||
156 | 190 | ||
157 | 191 | ||
158 | public List<Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) | 192 | public List<Framework.AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) |
159 | { | 193 | { |
@@ -180,9 +214,9 @@ namespace OpenSim.Framework.Data.MSSQL | |||
180 | while (reader.Read()) | 214 | while (reader.Read()) |
181 | { | 215 | { |
182 | Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar(); | 216 | Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar(); |
183 | user.AvatarID = new LLUUID((string) reader["UUID"]); | 217 | user.AvatarID = new LLUUID((string)reader["UUID"]); |
184 | user.firstName = (string) reader["username"]; | 218 | user.firstName = (string)reader["username"]; |
185 | user.lastName = (string) reader["surname"]; | 219 | user.lastName = (string)reader["surname"]; |
186 | returnlist.Add(user); | 220 | returnlist.Add(user); |
187 | } | 221 | } |
188 | reader.Close(); | 222 | reader.Close(); |
@@ -216,9 +250,9 @@ namespace OpenSim.Framework.Data.MSSQL | |||
216 | while (reader.Read()) | 250 | while (reader.Read()) |
217 | { | 251 | { |
218 | Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar(); | 252 | Framework.AvatarPickerAvatar user = new Framework.AvatarPickerAvatar(); |
219 | user.AvatarID = new LLUUID((string) reader["UUID"]); | 253 | user.AvatarID = new LLUUID((string)reader["UUID"]); |
220 | user.firstName = (string) reader["username"]; | 254 | user.firstName = (string)reader["username"]; |
221 | user.lastName = (string) reader["surname"]; | 255 | user.lastName = (string)reader["surname"]; |
222 | returnlist.Add(user); | 256 | returnlist.Add(user); |
223 | } | 257 | } |
224 | reader.Close(); | 258 | reader.Close(); |
@@ -323,7 +357,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
323 | UserProfileData user = GetUserByUUID(AgentID); | 357 | UserProfileData user = GetUserByUUID(AgentID); |
324 | user.webLoginKey = WebLoginKey; | 358 | user.webLoginKey = WebLoginKey; |
325 | UpdateUserProfile(user); | 359 | UpdateUserProfile(user); |
326 | 360 | ||
327 | } | 361 | } |
328 | /// <summary> | 362 | /// <summary> |
329 | /// Creates a new users profile | 363 | /// Creates a new users profile |
@@ -342,7 +376,7 @@ namespace OpenSim.Framework.Data.MSSQL | |||
342 | user.lastLogin, user.userInventoryURI, user.userAssetURI, | 376 | user.lastLogin, user.userInventoryURI, user.userAssetURI, |
343 | user.profileCanDoMask, user.profileWantDoMask, | 377 | user.profileCanDoMask, user.profileWantDoMask, |
344 | user.profileAboutText, user.profileFirstText, user.profileImage, | 378 | user.profileAboutText, user.profileFirstText, user.profileImage, |
345 | user.profileFirstImage,user.webLoginKey); | 379 | user.profileFirstImage, user.webLoginKey); |
346 | } | 380 | } |
347 | } | 381 | } |
348 | catch (Exception e) | 382 | catch (Exception e) |
diff --git a/OpenSim/Framework/Data.MSSQL/Resources/Mssql-regions.sql b/OpenSim/Framework/Data.MSSQL/Resources/Mssql-regions.sql new file mode 100644 index 0000000..b46da16 --- /dev/null +++ b/OpenSim/Framework/Data.MSSQL/Resources/Mssql-regions.sql | |||
@@ -0,0 +1,41 @@ | |||
1 | SET ANSI_NULLS ON | ||
2 | GO | ||
3 | SET QUOTED_IDENTIFIER ON | ||
4 | GO | ||
5 | SET ANSI_PADDING ON | ||
6 | GO | ||
7 | CREATE TABLE [db_owner].[regions]( | ||
8 | [regionHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
9 | [regionName] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
10 | [uuid] [varchar](255) COLLATE Latin1_General_CI_AS NOT NULL, | ||
11 | [regionRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
12 | [regionSecret] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
13 | [regionSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
14 | [regionDataURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
15 | [serverIP] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
16 | [serverPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
17 | [serverURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
18 | [locX] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
19 | [locY] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
20 | [locZ] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
21 | [eastOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
22 | [westOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
23 | [southOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
24 | [northOverrideHandle] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
25 | [regionAssetURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
26 | [regionAssetRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
27 | [regionAssetSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
28 | [regionUserURI] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
29 | [regionUserRecvKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
30 | [regionUserSendKey] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
31 | [regionMapTexture] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
32 | [serverHttpPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
33 | [serverRemotingPort] [varchar](255) COLLATE Latin1_General_CI_AS NULL, | ||
34 | PRIMARY KEY CLUSTERED | ||
35 | ( | ||
36 | [uuid] ASC | ||
37 | )WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] | ||
38 | ) ON [PRIMARY] | ||
39 | |||
40 | GO | ||
41 | SET ANSI_PADDING OFF | ||
diff --git a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs index d62c286..3737e48 100644 --- a/OpenSim/Framework/Data.MySQL/MySQLGridData.cs +++ b/OpenSim/Framework/Data.MySQL/MySQLGridData.cs | |||
@@ -206,91 +206,7 @@ namespace OpenSim.Framework.Data.MySQL | |||
206 | return null; | 206 | return null; |
207 | } | 207 | } |
208 | } | 208 | } |
209 | 209 | ||
210 | /// <summary> | ||
211 | /// // Returns a list of avatar and UUIDs that match the query | ||
212 | /// </summary> | ||
213 | public List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query) | ||
214 | { | ||
215 | List<AvatarPickerAvatar> returnlist = new List<AvatarPickerAvatar>(); | ||
216 | |||
217 | Regex objAlphaNumericPattern = new Regex("[^a-zA-Z0-9]"); | ||
218 | |||
219 | string[] querysplit; | ||
220 | querysplit = query.Split(' '); | ||
221 | if (querysplit.Length == 2) | ||
222 | { | ||
223 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
224 | param["?first"] = objAlphaNumericPattern.Replace(querysplit[0], String.Empty) + "%"; | ||
225 | param["?second"] = objAlphaNumericPattern.Replace(querysplit[1], String.Empty) + "%"; | ||
226 | try | ||
227 | { | ||
228 | lock (database) | ||
229 | { | ||
230 | IDbCommand result = | ||
231 | database.Query( | ||
232 | "SELECT UUID,username,surname FROM users WHERE username like ?first AND lastname like ?second LIMIT 100", | ||
233 | param); | ||
234 | IDataReader reader = result.ExecuteReader(); | ||
235 | |||
236 | |||
237 | while (reader.Read()) | ||
238 | { | ||
239 | AvatarPickerAvatar user = new AvatarPickerAvatar(); | ||
240 | user.AvatarID = new LLUUID((string) reader["UUID"]); | ||
241 | user.firstName = (string) reader["username"]; | ||
242 | user.lastName = (string) reader["surname"]; | ||
243 | returnlist.Add(user); | ||
244 | } | ||
245 | reader.Close(); | ||
246 | result.Dispose(); | ||
247 | } | ||
248 | } | ||
249 | catch (Exception e) | ||
250 | { | ||
251 | database.Reconnect(); | ||
252 | m_log.Error(e.ToString()); | ||
253 | return returnlist; | ||
254 | } | ||
255 | } | ||
256 | else if (querysplit.Length == 1) | ||
257 | { | ||
258 | try | ||
259 | { | ||
260 | lock (database) | ||
261 | { | ||
262 | Dictionary<string, string> param = new Dictionary<string, string>(); | ||
263 | param["?first"] = objAlphaNumericPattern.Replace(querysplit[0], System.String.Empty) + "%"; | ||
264 | |||
265 | IDbCommand result = | ||
266 | database.Query( | ||
267 | "SELECT UUID,username,surname FROM users WHERE username like ?first OR lastname like ?second", | ||
268 | param); | ||
269 | IDataReader reader = result.ExecuteReader(); | ||
270 | |||
271 | |||
272 | while (reader.Read()) | ||
273 | { | ||
274 | AvatarPickerAvatar user = new AvatarPickerAvatar(); | ||
275 | user.AvatarID = new LLUUID((string) reader["UUID"]); | ||
276 | user.firstName = (string) reader["username"]; | ||
277 | user.lastName = (string) reader["surname"]; | ||
278 | returnlist.Add(user); | ||
279 | } | ||
280 | reader.Close(); | ||
281 | result.Dispose(); | ||
282 | } | ||
283 | } | ||
284 | catch (Exception e) | ||
285 | { | ||
286 | database.Reconnect(); | ||
287 | m_log.Error(e.ToString()); | ||
288 | return returnlist; | ||
289 | } | ||
290 | } | ||
291 | return returnlist; | ||
292 | } | ||
293 | |||
294 | /// <summary> | 210 | /// <summary> |
295 | /// Returns a sim profile from it's UUID | 211 | /// Returns a sim profile from it's UUID |
296 | /// </summary> | 212 | /// </summary> |
diff --git a/OpenSim/Framework/Data/GridData.cs b/OpenSim/Framework/Data/GridData.cs index 6072600..ee6f18a 100644 --- a/OpenSim/Framework/Data/GridData.cs +++ b/OpenSim/Framework/Data/GridData.cs | |||
@@ -78,9 +78,6 @@ namespace OpenSim.Framework.Data | |||
78 | /// <returns>An array containing all the sim profiles in the specified range</returns> | 78 | /// <returns>An array containing all the sim profiles in the specified range</returns> |
79 | RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); | 79 | RegionProfileData[] GetProfilesInRange(uint Xmin, uint Ymin, uint Xmax, uint Ymax); |
80 | 80 | ||
81 | |||
82 | List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query); | ||
83 | |||
84 | /// <summary> | 81 | /// <summary> |
85 | /// Authenticates a sim by use of its recv key. | 82 | /// Authenticates a sim by use of its recv key. |
86 | /// WARNING: Insecure | 83 | /// WARNING: Insecure |
diff --git a/bin/mssql_connection.ini.example b/bin/mssql_connection.ini.example index ceb277f..e0ae7ba 100644 --- a/bin/mssql_connection.ini.example +++ b/bin/mssql_connection.ini.example | |||
@@ -9,8 +9,10 @@ user_id=username | |||
9 | password=password | 9 | password=password |
10 | 10 | ||
11 | ; These entries are only for if you, for some reason, wish to customize your user server table names. | 11 | ; These entries are only for if you, for some reason, wish to customize your user server table names. |
12 | ; Do note that if you change the table names, you might have to change the sql resources too manually | ||
12 | ; If ommitted, default values will be used. | 13 | ; If ommitted, default values will be used. |
13 | 14 | ||
14 | userstablename=users | 15 | userstablename=users |
15 | userfriendstablename=userfriends | 16 | userfriendstablename=userfriends |
16 | agentstablename=agents \ No newline at end of file | 17 | agentstablename=agents |
18 | regionstablename=regions | ||
diff --git a/bin/mysql_connection.ini.example b/bin/mysql_connection.ini.example index 2fe469c..4ad43dd 100644 --- a/bin/mysql_connection.ini.example +++ b/bin/mysql_connection.ini.example | |||
@@ -10,6 +10,7 @@ pooling=false | |||
10 | port=3306 | 10 | port=3306 |
11 | 11 | ||
12 | ; These entries are only for if you, for some reason, wish to customize your user server table names. | 12 | ; These entries are only for if you, for some reason, wish to customize your user server table names. |
13 | ; Do note that if you change the table names, you might have to change the sql resources too manually | ||
13 | ; If ommitted, default values will be used. | 14 | ; If ommitted, default values will be used. |
14 | 15 | ||
15 | userstablename=users | 16 | userstablename=users |