aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSean Dague2008-06-09 22:01:21 +0000
committerSean Dague2008-06-09 22:01:21 +0000
commit69fb4ee208daac549b6f271fd6140d745406984d (patch)
tree4a952155b048d9831e2dc592a5e35520b65b059d
parentmove Migration support into OpenSim.Data, because it (diff)
downloadopensim-SC-69fb4ee208daac549b6f271fd6140d745406984d.zip
opensim-SC-69fb4ee208daac549b6f271fd6140d745406984d.tar.gz
opensim-SC-69fb4ee208daac549b6f271fd6140d745406984d.tar.bz2
opensim-SC-69fb4ee208daac549b6f271fd6140d745406984d.tar.xz
migrations seem to not break anything at this point.
Tomorrow I'll start trying to integrate them into sqlite to see if this works right for table migration.
-rw-r--r--OpenSim/Data/Migration.cs36
1 files changed, 24 insertions, 12 deletions
diff --git a/OpenSim/Data/Migration.cs b/OpenSim/Data/Migration.cs
index 8487db8..b5f1a60 100644
--- a/OpenSim/Data/Migration.cs
+++ b/OpenSim/Data/Migration.cs
@@ -82,6 +82,8 @@ namespace OpenSim.Data
82 _type = type; 82 _type = type;
83 _conn = conn; 83 _conn = conn;
84 _assem = assem; 84 _assem = assem;
85
86 Initialize();
85 } 87 }
86 88
87 private void Initialize() 89 private void Initialize()
@@ -103,6 +105,7 @@ namespace OpenSim.Data
103 public void Update() 105 public void Update()
104 { 106 {
105 int version = 0; 107 int version = 0;
108 int newversion = 0;
106 version = FindVersion(_type); 109 version = FindVersion(_type);
107 110
108 List<string> migrations = GetMigrationsAfter(version); 111 List<string> migrations = GetMigrationsAfter(version);
@@ -112,7 +115,10 @@ namespace OpenSim.Data
112 cmd.CommandText = m; 115 cmd.CommandText = m;
113 cmd.ExecuteNonQuery(); 116 cmd.ExecuteNonQuery();
114 } 117 }
115 UpdateVersion(_type, MaxVersion()); 118
119 newversion = MaxVersion();
120 if (newversion > version)
121 UpdateVersion(_type, newversion);
116 } 122 }
117 123
118 private int MaxVersion() 124 private int MaxVersion()
@@ -126,9 +132,12 @@ namespace OpenSim.Data
126 foreach (string s in names) 132 foreach (string s in names)
127 { 133 {
128 Match m = r.Match(s); 134 Match m = r.Match(s);
129 int MigrationVersion = int.Parse(m.Groups[1].ToString()); 135 if (m.Success)
130 if ( MigrationVersion > max ) 136 {
131 max = MigrationVersion; 137 int MigrationVersion = int.Parse(m.Groups[1].ToString());
138 if ( MigrationVersion > max )
139 max = MigrationVersion;
140 }
132 } 141 }
133 return max; 142 return max;
134 } 143 }
@@ -137,14 +146,18 @@ namespace OpenSim.Data
137 { 146 {
138 int version = 0; 147 int version = 0;
139 DbCommand cmd = _conn.CreateCommand(); 148 DbCommand cmd = _conn.CreateCommand();
140 cmd.CommandText = "select version from migrations where name='" + type + "' limit 1"; 149 try {
141 using (IDataReader reader = cmd.ExecuteReader()) 150 cmd.CommandText = "select version from migrations where name='" + type + "' limit 1";
142 { 151 using (IDataReader reader = cmd.ExecuteReader())
143 if (reader.Read())
144 { 152 {
145 version = Convert.ToInt32(reader["version"]); 153 if (reader.Read())
154 {
155 version = Convert.ToInt32(reader["version"]);
156 }
157 reader.Close();
146 } 158 }
147 reader.Close(); 159 } catch {
160 // Something went wrong, so we're version 0
148 } 161 }
149 return version; 162 return version;
150 } 163 }
@@ -189,9 +202,8 @@ namespace OpenSim.Data
189 202
190 // TODO: once this is working, get rid of this 203 // TODO: once this is working, get rid of this
191 if (migrations.Count < 1) { 204 if (migrations.Count < 1) {
192 throw new Exception(string.Format("Resource '{0}' was not found", _type)); 205 m_log.InfoFormat("Resource '{0}' was not found", _type);
193 } 206 }
194
195 return migrations; 207 return migrations;
196 } 208 }
197 } 209 }