Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added transaction handling and corrected DateTime quoting format string for Jet #320

Closed
wants to merge 4 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion FluentMigrator (2010).sln.DotSettings
Expand Up @@ -15,4 +15,6 @@ See the License for the specific language governing permissions and
limitations under the License.</s:String>
<s:String x:Key="/Default/Environment/UserInterface/ShortcutSchemeName/@EntryValue">None</s:String>
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/FormatStatementOnSemicolon/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/FormatBlockOnRBrace/@EntryValue">False</s:Boolean></wpf:ResourceDictionary>
<s:Boolean x:Key="/Default/CodeEditing/TypingAssist/FormatBlockOnRBrace/@EntryValue">False</s:Boolean>
<s:String x:Key="/Default/FilterSettingsManager/AttributeFilterXml/@EntryValue">&lt;data /&gt;</s:String>
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue">&lt;data&gt;&lt;IncludeFilters /&gt;&lt;ExcludeFilters /&gt;&lt;/data&gt;</s:String></wpf:ResourceDictionary>
2 changes: 1 addition & 1 deletion src/FluentMigrator.Runner/Generators/Jet/JetColumn.cs
Expand Up @@ -30,7 +30,7 @@ protected override string FormatType(ColumnDefinition column)

protected override string FormatIdentity(ColumnDefinition column)
{
//Indentity type is handled by FormartType
//Identity type is handled by FormatType
return string.Empty;
}

Expand Down
10 changes: 5 additions & 5 deletions src/FluentMigrator.Runner/Generators/Jet/JetGenerator.cs
Expand Up @@ -14,27 +14,27 @@ public JetGenerator()

public override string Generate(RenameTableExpression expression)
{
return compatabilityMode.HandleCompatabilty("Renaming of tables is not supporteed for MySql");
return compatabilityMode.HandleCompatabilty("Renaming of tables is not supported for Jet");
}

public override string Generate(RenameColumnExpression expression)
{
return compatabilityMode.HandleCompatabilty("Renaming of columns is not supporteed for MySql");
return compatabilityMode.HandleCompatabilty("Renaming of columns is not supported for Jet");
}

public override string Generate(AlterDefaultConstraintExpression expression)
{
return compatabilityMode.HandleCompatabilty("Altering of default constraints is not supporteed for MySql");
return compatabilityMode.HandleCompatabilty("Altering of default constraints is not supported for Jet");
}

public override string Generate(CreateSequenceExpression expression)
{
return compatabilityMode.HandleCompatabilty("Sequences is not supporteed for MySql");
return compatabilityMode.HandleCompatabilty("Sequences are not supported for Jet");
}

public override string Generate(DeleteSequenceExpression expression)
{
return compatabilityMode.HandleCompatabilty("Sequences is not supporteed for MySql");
return compatabilityMode.HandleCompatabilty("Sequences are not supported for Jet");
}

public override string Generate(DeleteDefaultConstraintExpression expression)
Expand Down
3 changes: 2 additions & 1 deletion src/FluentMigrator.Runner/Generators/Jet/JetQuoter.cs
@@ -1,4 +1,5 @@
using System;
using System.Globalization;
using FluentMigrator.Runner.Generators.Generic;

namespace FluentMigrator.Runner.Generators.Jet
Expand All @@ -15,7 +16,7 @@ public class JetQuoter : GenericQuoter

public override string FormatDateTime(DateTime value)
{
return ValueQuote + (value).ToString("YYYY-MM-DD HH:mm:ss") + ValueQuote;
return string.Format(CultureInfo.InvariantCulture, "{0}{1:yyyy-MM-dd HH:mm:ss}{0}", ValueQuote, (value));
}
}
}
22 changes: 21 additions & 1 deletion src/FluentMigrator.Runner/MigrationRunner.cs
Expand Up @@ -95,6 +95,10 @@ public void MigrateUp(bool useAutomaticTransactionManagement)
if (useAutomaticTransactionManagement) { Processor.RollbackTransaction(); }
throw;
}
finally
{
if (useAutomaticTransactionManagement) { Processor.CloseConnection(); }
}
}

public void MigrateUp(long targetVersion)
Expand All @@ -113,11 +117,15 @@ public void MigrateUp(long targetVersion, bool useAutomaticTransactionManagement
if (useAutomaticTransactionManagement) { Processor.CommitTransaction(); }
VersionLoader.LoadVersionInfo();
}
catch (Exception ex)
catch (Exception)
{
if (useAutomaticTransactionManagement) { Processor.RollbackTransaction(); }
throw;
}
finally
{
if (useAutomaticTransactionManagement) { Processor.CloseConnection(); }
}
}

private IEnumerable<long> GetUpMigrationsToApply(long version)
Expand Down Expand Up @@ -158,6 +166,10 @@ public void MigrateDown(long targetVersion, bool useAutomaticTransactionManageme
if (useAutomaticTransactionManagement) { Processor.RollbackTransaction(); }
throw;
}
finally
{
if (useAutomaticTransactionManagement) { Processor.CloseConnection(); }
}
}

private IEnumerable<long> GetDownMigrationsToApply(long targetVersion)
Expand Down Expand Up @@ -237,6 +249,10 @@ public void Rollback(int steps, bool useAutomaticTransactionManagement)
if (useAutomaticTransactionManagement) { Processor.RollbackTransaction(); }
throw;
}
finally
{
if (useAutomaticTransactionManagement) { Processor.CloseConnection(); }
}
}

public void RollbackToVersion(long version)
Expand Down Expand Up @@ -271,6 +287,10 @@ public void RollbackToVersion(long version, bool useAutomaticTransactionManageme
if (useAutomaticTransactionManagement) { Processor.RollbackTransaction(); }
throw;
}
finally
{
if (useAutomaticTransactionManagement) { Processor.CloseConnection(); }
}
}

public Assembly MigrationAssembly
Expand Down
Expand Up @@ -145,10 +145,7 @@ public override void CommitTransaction()
Announcer.Say("Committing Transaction");
Transaction.Commit();
WasCommitted = true;
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
CloseConnection();
ClearLocks();

}
Expand Down Expand Up @@ -177,11 +174,16 @@ public override void RollbackTransaction()
}
}

CloseConnection();
ClearLocks();
}

public override void CloseConnection()
{
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
ClearLocks();
}

public virtual void CommitRetaining()
Expand Down
39 changes: 36 additions & 3 deletions src/FluentMigrator.Runner/Processors/Jet/JetProcessor.cs
Expand Up @@ -5,9 +5,10 @@

namespace FluentMigrator.Runner.Processors.Jet
{
public class JetProcessor : ProcessorBase
public sealed class JetProcessor : ProcessorBase
{
private OleDbConnection Connection { get; set; }
public OleDbTransaction Transaction { get; private set; }

public override string DatabaseType
{
Expand All @@ -18,8 +19,40 @@ public JetProcessor(OleDbConnection connection, IMigrationGenerator generator, I
: base(generator, announcer, options)
{
Connection = connection;
connection.Open();
BeginTransaction();
}

public override void BeginTransaction()
{
Announcer.Say("Beginning Transaction");
Transaction = Connection.BeginTransaction();
}

public override void CommitTransaction()
{
Announcer.Say("Committing Transaction");
Transaction.Commit();
WasCommitted = true;
CloseConnection();
}

public override void RollbackTransaction()
{
Announcer.Say("Rolling back transaction");
Transaction.Rollback();
WasCommitted = true;
CloseConnection();
}

public override void CloseConnection()
{
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
}

public override void Process(PerformDBOperationExpression expression)
{
Announcer.Say("Performing DB Operation");
Expand All @@ -43,7 +76,7 @@ protected override void Process(string sql)
if (Connection.State != ConnectionState.Open)
Connection.Open();

using (var command = new OleDbCommand(sql, Connection))
using (var command = new OleDbCommand(sql, Connection, Transaction))
{
try
{
Expand All @@ -66,7 +99,7 @@ public override DataSet Read(string template, params object[] args)
if (Connection.State != ConnectionState.Open) Connection.Open();

var ds = new DataSet();
using (var command = new OleDbCommand(String.Format(template, args), Connection))
using (var command = new OleDbCommand(String.Format(template, args), Connection, Transaction))
using (var adapter = new OleDbDataAdapter(command))
{
adapter.Fill(ds);
Expand Down
Expand Up @@ -100,17 +100,19 @@ public override void CommitTransaction()
Announcer.Say("Committing Transaction");
Transaction.Commit();
WasCommitted = true;
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
CloseConnection();
}

public override void RollbackTransaction()
{
Announcer.Say("Rolling back transaction");
Transaction.Rollback();
WasCommitted = true;
CloseConnection();
}

public override void CloseConnection()
{
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
Expand Down
4 changes: 4 additions & 0 deletions src/FluentMigrator.Runner/Processors/ProcessorBase.cs
Expand Up @@ -172,6 +172,10 @@ public virtual void RollbackTransaction()
{
}

public virtual void CloseConnection()
{
}

public abstract System.Data.DataSet ReadTableData(string schemaName, string tableName);
public abstract System.Data.DataSet Read(string template, params object[] args);
public abstract bool Exists(string template, params object[] args);
Expand Down
Expand Up @@ -100,17 +100,19 @@ public override void CommitTransaction()
Announcer.Say("Committing Transaction");
Transaction.Commit();
WasCommitted = true;
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
CloseConnection();
}

public override void RollbackTransaction()
{
Announcer.Say("Rolling back transaction");
Transaction.Rollback();
WasCommitted = true;
CloseConnection();
}

public override void CloseConnection()
{
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
Expand Down
Expand Up @@ -120,10 +120,7 @@ public override void CommitTransaction()
transaction = null;
}

if (connection.State != ConnectionState.Closed)
{
connection.Close();
}
CloseConnection();
}

public override void RollbackTransaction()
Expand All @@ -138,6 +135,11 @@ public override void RollbackTransaction()

transaction.Rollback();

CloseConnection();
}

public override void CloseConnection()
{
if (connection.State != ConnectionState.Closed)
{
connection.Close();
Expand Down
Expand Up @@ -128,17 +128,19 @@ public override void CommitTransaction()
Announcer.Say("Committing Transaction");
Transaction.Commit();
WasCommitted = true;
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
}
CloseConnection();
}

public override void RollbackTransaction()
{
Announcer.Say("Rolling back transaction");
Transaction.Rollback();
WasCommitted = true;
CloseConnection();
}

public override void CloseConnection()
{
if (Connection.State != ConnectionState.Closed)
{
Connection.Close();
Expand Down
1 change: 1 addition & 0 deletions src/FluentMigrator/IMigrationProcessor.cs
Expand Up @@ -34,6 +34,7 @@ public interface IMigrationProcessor : IQuerySchema
void BeginTransaction();
void CommitTransaction();
void RollbackTransaction();
void CloseConnection();

void Process(CreateSchemaExpression expression);
void Process(DeleteSchemaExpression expression);
Expand Down