diff options
author | John Hurliman | 2009-10-04 13:57:51 -0700 |
---|---|---|
committer | John Hurliman | 2009-10-04 13:57:51 -0700 |
commit | 29a4614529bbda02b9c690d2d1812be1d1e7bbae (patch) | |
tree | 89725829b37d502158a114c862a56a075b005b1b /OpenSim/Data/Migration.cs | |
parent | Guarding a line that is sometimes throwing a null pointer exception. (diff) | |
download | opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.zip opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.gz opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.bz2 opensim-SC-29a4614529bbda02b9c690d2d1812be1d1e7bbae.tar.xz |
* MySQL data tests now pass by fixing a bad fix for a bad cast on the asset Local member in MySQLAssetData
* First pass at applying the using(){} pattern to IDisposable objects. Always use the using pattern on IDisposable objects whenever possible, do not manually call .Close() or .Dispose() unless there is no other way to write the code. This pass mostly covers OpenSim.Data.MySQL, and should have no functional change (tests still pass)
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/Migration.cs | 79 |
1 files changed, 41 insertions, 38 deletions
diff --git a/OpenSim/Data/Migration.cs b/OpenSim/Data/Migration.cs index e51dc22..7a99d4a 100644 --- a/OpenSim/Data/Migration.cs +++ b/OpenSim/Data/Migration.cs | |||
@@ -131,25 +131,26 @@ namespace OpenSim.Data | |||
131 | m_log.InfoFormat("[MIGRATIONS] Upgrading {0} to latest revision.", _type); | 131 | m_log.InfoFormat("[MIGRATIONS] Upgrading {0} to latest revision.", _type); |
132 | m_log.Info("[MIGRATIONS] NOTE: this may take a while, don't interupt this process!"); | 132 | m_log.Info("[MIGRATIONS] NOTE: this may take a while, don't interupt this process!"); |
133 | 133 | ||
134 | DbCommand cmd = _conn.CreateCommand(); | 134 | using (DbCommand cmd = _conn.CreateCommand()) |
135 | foreach (KeyValuePair<int, string> kvp in migrations) | ||
136 | { | 135 | { |
137 | int newversion = kvp.Key; | 136 | foreach (KeyValuePair<int, string> kvp in migrations) |
138 | cmd.CommandText = kvp.Value; | ||
139 | // we need to up the command timeout to infinite as we might be doing long migrations. | ||
140 | cmd.CommandTimeout = 0; | ||
141 | cmd.ExecuteNonQuery(); | ||
142 | |||
143 | if (version == 0) | ||
144 | { | ||
145 | InsertVersion(_type, newversion); | ||
146 | } | ||
147 | else | ||
148 | { | 137 | { |
149 | UpdateVersion(_type, newversion); | 138 | int newversion = kvp.Key; |
139 | cmd.CommandText = kvp.Value; | ||
140 | // we need to up the command timeout to infinite as we might be doing long migrations. | ||
141 | cmd.CommandTimeout = 0; | ||
142 | cmd.ExecuteNonQuery(); | ||
143 | |||
144 | if (version == 0) | ||
145 | { | ||
146 | InsertVersion(_type, newversion); | ||
147 | } | ||
148 | else | ||
149 | { | ||
150 | UpdateVersion(_type, newversion); | ||
151 | } | ||
152 | version = newversion; | ||
150 | } | 153 | } |
151 | version = newversion; | ||
152 | cmd.Dispose(); | ||
153 | } | 154 | } |
154 | } | 155 | } |
155 | 156 | ||
@@ -189,43 +190,45 @@ namespace OpenSim.Data | |||
189 | protected virtual int FindVersion(DbConnection conn, string type) | 190 | protected virtual int FindVersion(DbConnection conn, string type) |
190 | { | 191 | { |
191 | int version = 0; | 192 | int version = 0; |
192 | DbCommand cmd = conn.CreateCommand(); | 193 | |
193 | try | 194 | using (DbCommand cmd = conn.CreateCommand()) |
194 | { | 195 | { |
195 | cmd.CommandText = "select version from migrations where name='" + type +"' order by version desc"; | 196 | try |
196 | using (IDataReader reader = cmd.ExecuteReader()) | ||
197 | { | 197 | { |
198 | if (reader.Read()) | 198 | cmd.CommandText = "select version from migrations where name='" + type + "' order by version desc"; |
199 | using (IDataReader reader = cmd.ExecuteReader()) | ||
199 | { | 200 | { |
200 | version = Convert.ToInt32(reader["version"]); | 201 | if (reader.Read()) |
202 | version = Convert.ToInt32(reader["version"]); | ||
201 | } | 203 | } |
202 | reader.Close(); | 204 | } |
205 | catch | ||
206 | { | ||
207 | // Something went wrong, so we're version 0 | ||
203 | } | 208 | } |
204 | } | 209 | } |
205 | catch | 210 | |
206 | { | ||
207 | // Something went wrong, so we're version 0 | ||
208 | } | ||
209 | cmd.Dispose(); | ||
210 | return version; | 211 | return version; |
211 | } | 212 | } |
212 | 213 | ||
213 | private void InsertVersion(string type, int version) | 214 | private void InsertVersion(string type, int version) |
214 | { | 215 | { |
215 | DbCommand cmd = _conn.CreateCommand(); | 216 | using (DbCommand cmd = _conn.CreateCommand()) |
216 | cmd.CommandText = "insert into migrations(name, version) values('" + type + "', " + version + ")"; | 217 | { |
217 | m_log.InfoFormat("[MIGRATIONS]: Creating {0} at version {1}", type, version); | 218 | cmd.CommandText = "insert into migrations(name, version) values('" + type + "', " + version + ")"; |
218 | cmd.ExecuteNonQuery(); | 219 | m_log.InfoFormat("[MIGRATIONS]: Creating {0} at version {1}", type, version); |
219 | cmd.Dispose(); | 220 | cmd.ExecuteNonQuery(); |
221 | } | ||
220 | } | 222 | } |
221 | 223 | ||
222 | private void UpdateVersion(string type, int version) | 224 | private void UpdateVersion(string type, int version) |
223 | { | 225 | { |
224 | DbCommand cmd = _conn.CreateCommand(); | 226 | using (DbCommand cmd = _conn.CreateCommand()) |
225 | cmd.CommandText = "update migrations set version=" + version + " where name='" + type + "'"; | 227 | { |
226 | m_log.InfoFormat("[MIGRATIONS]: Updating {0} to version {1}", type, version); | 228 | cmd.CommandText = "update migrations set version=" + version + " where name='" + type + "'"; |
227 | cmd.ExecuteNonQuery(); | 229 | m_log.InfoFormat("[MIGRATIONS]: Updating {0} to version {1}", type, version); |
228 | cmd.Dispose(); | 230 | cmd.ExecuteNonQuery(); |
231 | } | ||
229 | } | 232 | } |
230 | 233 | ||
231 | // private SortedList<int, string> GetAllMigrations() | 234 | // private SortedList<int, string> GetAllMigrations() |