From c4da0998129a1473a4e4d4b4863e02f83431afc5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 09:31:29 -0600 Subject: [PATCH] Bump Npgsql from 7.0.6 to 8.0.0 (#226) * Bump Npgsql from 7.0.6 to 8.0.0 --- .github/workflows/codeql.yml | 10 ++--- FAnsiSql/Discovery/BulkCopy.cs | 6 +-- FAnsiSql/Discovery/ColumnMappingException.cs | 4 +- .../ConnectionStringKeywordAccumulator.cs | 2 +- .../Constraints/DiscoveredRelationship.cs | 2 +- .../RelationshipTopologicalSort.cs | 4 +- FAnsiSql/Discovery/DiscoveredDataType.cs | 8 ++-- FAnsiSql/Discovery/DiscoveredDatabase.cs | 2 +- .../Discovery/DiscoveredDatabaseHelper.cs | 8 ++-- FAnsiSql/Discovery/DiscoveredServer.cs | 4 +- FAnsiSql/Discovery/DiscoveredServerHelper.cs | 2 +- FAnsiSql/Discovery/DiscoveredTable.cs | 4 +- FAnsiSql/Discovery/DiscoveredTableHelper.cs | 2 +- .../AggregateCustomLineCollectionException.cs | 2 +- .../Aggregation/AggregateHelper.cs | 6 +-- .../QuerySyntax/RuntimeNameException.cs | 4 +- FAnsiSql/Discovery/QuerySyntaxHelper.cs | 8 ++-- .../TypeTranslation/TypeNotMappedException.cs | 2 +- .../TypeTranslation/TypeTranslater.cs | 16 +++---- FAnsiSql/Exceptions/AlterFailedException.cs | 2 +- .../Exceptions/CircularDependencyException.cs | 2 +- .../ImplementationNotFoundException.cs | 2 +- FAnsiSql/Exceptions/InvalidResizeException.cs | 2 +- FAnsiSql/FAnsi.csproj | 2 +- .../MicrosoftSQLAggregateHelper.cs | 8 ++-- .../MicrosoftSQL/MicrosoftSQLBulkCopy.cs | 10 ++--- .../MicrosoftSQL/MicrosoftSQLColumnHelper.cs | 2 +- .../MicrosoftSQLDatabaseHelper.cs | 6 +-- .../MicrosoftSQLImplementation.cs | 2 +- .../MicrosoftSQL/MicrosoftSQLServerHelper.cs | 4 +- .../MicrosoftSQL/MicrosoftSQLTableHelper.cs | 18 ++++---- .../Implementations/MySql/MySqlBulkCopy.cs | 4 +- .../MySql/MySqlColumnHelper.cs | 2 +- .../MySql/MySqlDatabaseHelper.cs | 4 +- .../MySql/MySqlServerHelper.cs | 6 +-- .../Implementations/MySql/MySqlTableHelper.cs | 6 +-- .../Implementations/Oracle/OracleBulkCopy.cs | 6 +-- .../Oracle/OracleDatabaseHelper.cs | 4 +- .../Oracle/OracleQuerySyntaxHelper.cs | 2 +- .../Oracle/OracleServerHelper.cs | 6 +-- .../Oracle/OracleTableHelper.cs | 6 +-- .../Oracle/Update/OracleUpdateHelper.cs | 2 +- .../PostgreSql/PostgreSqlBulkCopy.cs | 2 +- .../PostgreSql/PostgreSqlDatabaseHelper.cs | 8 ++-- .../PostgreSql/PostgreSqlServerHelper.cs | 4 +- .../PostgreSql/PostgreSqlTableHelper.cs | 14 +++---- .../PostgreSql/PostgreSqlTypeTranslater.cs | 4 +- .../Aggregation/AggregationTests.cs | 6 +-- .../Aggregation/CalendarAggregationTests.cs | 2 +- Tests/FAnsiTests/CrossPlatformTests.cs | 30 ++++++------- .../Database/DiscoverTablesTests.cs | 4 +- .../EqualityTests_ServerAndDatabase.cs | 6 +-- .../Equality/EqualityTests_TableAndColumn.cs | 4 +- Tests/FAnsiTests/Examples.cs | 8 ++-- Tests/FAnsiTests/ManagedConnectionTests.cs | 8 ++-- Tests/FAnsiTests/Parameters/ParameterTests.cs | 12 +++--- .../Query/QuerySyntaxHelperTests.cs | 2 +- ...ConnectionStringKeywordAccumulatorTests.cs | 6 +-- Tests/FAnsiTests/Server/ServerTests.cs | 12 +++--- Tests/FAnsiTests/Table/BadNamesTests.cs | 24 +++++------ Tests/FAnsiTests/Table/BasicInsertTests.cs | 2 +- Tests/FAnsiTests/Table/BigIntTests.cs | 2 +- Tests/FAnsiTests/Table/BulkInsertTest.cs | 42 +++++++++---------- .../FAnsiTests/Table/CreatePrimaryKeyTest.cs | 6 +-- Tests/FAnsiTests/Table/CreateTableTests.cs | 26 ++++++------ Tests/FAnsiTests/Table/ForeignKeyTests.cs | 28 ++++++------- Tests/FAnsiTests/Table/LongNamesTests.cs | 6 +-- Tests/FAnsiTests/Table/TableTypeTests.cs | 4 +- .../Table/TableValuedFunctionTests.cs | 2 +- Tests/FAnsiTests/Table/TestRename.cs | 8 ++-- .../DatabaseTypeRequestTests.cs | 2 +- .../TypeTranslation/DatatypeComputerTests.cs | 14 +++---- .../TypeTranslation/TypeTranslaterTests.cs | 2 +- 73 files changed, 250 insertions(+), 254 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d4eda6ac..df497743 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -19,8 +19,6 @@ jobs: strategy: fail-fast: false - matrix: - language: [ csharp ] steps: - name: Checkout @@ -29,13 +27,13 @@ jobs: - name: Initialize CodeQL uses: github/codeql-action/init@v2 with: - languages: ${{ matrix.language }} + languages: csharp queries: +security-and-quality - - name: Autobuild - uses: github/codeql-action/autobuild@v2 + - name: Build + run: dotnet build -c Debug - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v2 with: - category: "/language:${{ matrix.language }}" + category: "/language:csharp" diff --git a/FAnsiSql/Discovery/BulkCopy.cs b/FAnsiSql/Discovery/BulkCopy.cs index e77d3e04..1d2a018b 100644 --- a/FAnsiSql/Discovery/BulkCopy.cs +++ b/FAnsiSql/Discovery/BulkCopy.cs @@ -86,7 +86,7 @@ public virtual int Upload(DataTable dt) TargetTable.Database.Helper.ThrowIfObjectColumns(dt); ConvertStringTypesToHardTypes(dt); - + return UploadImpl(dt); } @@ -102,10 +102,10 @@ protected void ConvertStringTypesToHardTypes(DataTable dt) var dict = GetMapping(dt.Columns.Cast(),out _); var factory = new TypeDeciderFactory(Culture); - + //These are the problematic Types var deciders = factory.Dictionary; - + //for each column in the destination foreach(var kvp in dict) { diff --git a/FAnsiSql/Discovery/ColumnMappingException.cs b/FAnsiSql/Discovery/ColumnMappingException.cs index 4d1c480b..2a4d5191 100644 --- a/FAnsiSql/Discovery/ColumnMappingException.cs +++ b/FAnsiSql/Discovery/ColumnMappingException.cs @@ -11,11 +11,11 @@ public class ColumnMappingException : Exception { public ColumnMappingException(string msg):base(msg) { - + } public ColumnMappingException(string msg, Exception innerException):base(msg,innerException) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Discovery/ConnectionStringDefaults/ConnectionStringKeywordAccumulator.cs b/FAnsiSql/Discovery/ConnectionStringDefaults/ConnectionStringKeywordAccumulator.cs index 90fed69f..70312e15 100644 --- a/FAnsiSql/Discovery/ConnectionStringDefaults/ConnectionStringKeywordAccumulator.cs +++ b/FAnsiSql/Discovery/ConnectionStringDefaults/ConnectionStringKeywordAccumulator.cs @@ -91,7 +91,7 @@ private string GetCollisionWithKeyword(string keyword, string value) { //don't output the value since that could be a password throw new ArgumentException(string.Format(FAnsiStrings.ConnectionStringKeyword_ValueNotSupported, keyword),ex); - } + } //now iterate all the keys we had before and add those too, if the key count doesn't change for any of them we know it's a duplicate semantically if (_builder.Keys == null) return null; diff --git a/FAnsiSql/Discovery/Constraints/DiscoveredRelationship.cs b/FAnsiSql/Discovery/Constraints/DiscoveredRelationship.cs index 34f576c1..8cc24cbe 100644 --- a/FAnsiSql/Discovery/Constraints/DiscoveredRelationship.cs +++ b/FAnsiSql/Discovery/Constraints/DiscoveredRelationship.cs @@ -52,7 +52,7 @@ public DiscoveredRelationship(string fkName, DiscoveredTable pkTable, Discovered PrimaryKeyTable = pkTable; ForeignKeyTable = fkTable; CascadeDelete = deleteRule; - + Keys = new Dictionary(); } diff --git a/FAnsiSql/Discovery/Constraints/RelationshipTopologicalSort.cs b/FAnsiSql/Discovery/Constraints/RelationshipTopologicalSort.cs index 79fcfe67..128fa8b4 100644 --- a/FAnsiSql/Discovery/Constraints/RelationshipTopologicalSort.cs +++ b/FAnsiSql/Discovery/Constraints/RelationshipTopologicalSort.cs @@ -89,8 +89,8 @@ private List TopologicalSort(IEnumerable nodes, ICollection if (edges.Any()) // return error (graph has at least one cycle) throw new CircularDependencyException(FAnsiStrings.RelationshipTopologicalSort_FoundCircularDependencies); - - + + // return L (a topologically sorted order) return l; } diff --git a/FAnsiSql/Discovery/DiscoveredDataType.cs b/FAnsiSql/Discovery/DiscoveredDataType.cs index 30a1123d..c5102a1e 100644 --- a/FAnsiSql/Discovery/DiscoveredDataType.cs +++ b/FAnsiSql/Discovery/DiscoveredDataType.cs @@ -91,7 +91,7 @@ public override string ToString() public void Resize(int newSize, IManagedTransaction managedTransaction = null) { var toReplace = GetLengthIfString(); - + if(newSize == toReplace) return; @@ -126,11 +126,11 @@ public void Resize(int numberOfDigitsBeforeDecimalPoint, int numberOfDigitsAfter if (toReplace.NumbersAfterDecimalPlace> numberOfDigitsAfterDecimalPoint) throw new InvalidResizeException(string.Format(FAnsiStrings.DiscoveredDataType_Resize_Cannot_shrink_column__number_of_digits_after_the_decimal_point_is_currently__0__and_you_asked_to_set_it_to__1___Current_SQLType_is__2__, toReplace.NumbersAfterDecimalPlace, numberOfDigitsAfterDecimalPoint, SQLType)); - + var newDataType = Column.Table.GetQuerySyntaxHelper() .TypeTranslater.GetSQLDBTypeForCSharpType(new DatabaseTypeRequest(typeof (decimal), null, new DecimalSize(numberOfDigitsBeforeDecimalPoint, numberOfDigitsAfterDecimalPoint))); - + AlterTypeTo(newDataType, managedTransaction); } @@ -164,7 +164,7 @@ public void AlterTypeTo(string newType, IManagedTransaction managedTransaction = } } - SQLType = newType; + SQLType = newType; } /// diff --git a/FAnsiSql/Discovery/DiscoveredDatabase.cs b/FAnsiSql/Discovery/DiscoveredDatabase.cs index 39d3efda..8d2c9775 100644 --- a/FAnsiSql/Discovery/DiscoveredDatabase.cs +++ b/FAnsiSql/Discovery/DiscoveredDatabase.cs @@ -218,7 +218,7 @@ public DiscoveredTable CreateTable(string tableName, DatabaseColumnRequest[] col Adjuster = adjuster, ExplicitColumnDefinitions = columns }); - + } /// diff --git a/FAnsiSql/Discovery/DiscoveredDatabaseHelper.cs b/FAnsiSql/Discovery/DiscoveredDatabaseHelper.cs index 5533589c..d272cc13 100644 --- a/FAnsiSql/Discovery/DiscoveredDatabaseHelper.cs +++ b/FAnsiSql/Discovery/DiscoveredDatabaseHelper.cs @@ -153,7 +153,7 @@ private void CopySettings(Guesser guesser, CreateTableArgs args) public void ThrowIfObjectColumns(DataTable dt) { var objCol = dt.Columns.Cast().FirstOrDefault(c => c.DataType == typeof(object)); - + if(objCol != null) throw new NotSupportedException( string.Format( @@ -210,7 +210,7 @@ public virtual string GetCreateTableSql(DiscoveredDatabase database, string tabl var pks = columns.Where(c => c.IsPrimaryKey).ToArray(); if (pks.Any()) bodySql.Append(GetPrimaryKeyDeclarationSql(tableName, pks,syntaxHelper)); - + if (foreignKeyPairs != null) { bodySql.AppendLine(); @@ -219,7 +219,7 @@ public virtual string GetCreateTableSql(DiscoveredDatabase database, string tabl } var toReturn = bodySql.ToString().TrimEnd('\r', '\n', ','); - + toReturn += $"){Environment.NewLine}"; return toReturn; @@ -302,7 +302,7 @@ public void ExecuteBatchNonQuery(string sql, DbConnection conn, DbTransaction tr using var cmd = helper.GetCommand(string.Empty, conn, transaction); var hadToOpen = false; - + if (conn.State != ConnectionState.Open) { diff --git a/FAnsiSql/Discovery/DiscoveredServer.cs b/FAnsiSql/Discovery/DiscoveredServer.cs index 3b76e435..dae3a122 100644 --- a/FAnsiSql/Discovery/DiscoveredServer.cs +++ b/FAnsiSql/Discovery/DiscoveredServer.cs @@ -93,7 +93,7 @@ public DiscoveredServer(string connectionString, DatabaseType databaseType) public DiscoveredServer(string server,string database, DatabaseType databaseType,string usernameIfAny,string passwordIfAny) { Helper = ImplementationManager.GetImplementation(databaseType).GetServerHelper(); - + Builder = Helper.GetConnectionStringBuilder(server,database,usernameIfAny,passwordIfAny); if(!string.IsNullOrWhiteSpace(database)) @@ -353,7 +353,7 @@ public DiscoveredDatabase CreateDatabase(string newDatabaseName) var db = ExpectDatabase(newDatabaseName); Helper.CreateDatabase(Builder, db); - + if(!db.Exists()) throw new Exception(string.Format(FAnsiStrings.DiscoveredServer_CreateDatabase_Helper___0___tried_to_create_database___1___but_the_database_didn_t_exist_after_the_creation_attempt, Helper.GetType().Name,newDatabaseName)); diff --git a/FAnsiSql/Discovery/DiscoveredServerHelper.cs b/FAnsiSql/Discovery/DiscoveredServerHelper.cs index f3faa283..fbfedabb 100644 --- a/FAnsiSql/Discovery/DiscoveredServerHelper.cs +++ b/FAnsiSql/Discovery/DiscoveredServerHelper.cs @@ -114,7 +114,7 @@ public string[] ListDatabasesAsync(DbConnectionStringBuilder builder, Cancellati { //list the database on the server var con = GetConnection(builder); - + //this will work or timeout var openTask = con.OpenAsync(token); openTask.Wait(token); diff --git a/FAnsiSql/Discovery/DiscoveredTable.cs b/FAnsiSql/Discovery/DiscoveredTable.cs index 416cf47a..d6a2d6c0 100644 --- a/FAnsiSql/Discovery/DiscoveredTable.cs +++ b/FAnsiSql/Discovery/DiscoveredTable.cs @@ -185,7 +185,7 @@ public DataTable GetDataTable(int topX = int.MaxValue,bool enforceTypesAndNullne public DataTable GetDataTable(DatabaseOperationArgs args,int topX = int.MaxValue, bool enforceTypesAndNullness = true) { var dt = new DataTable(); - + if (enforceTypesAndNullness) foreach (var c in DiscoverColumns(args.TransactionIfAny)) { @@ -439,7 +439,7 @@ public int Insert(Dictionary toInsert, CultureInfo cult { var syntaxHelper = GetQuerySyntaxHelper(); var server = Database.Server; - + var _parameterNames = syntaxHelper.GetParameterNamesFor(toInsert.Keys.ToArray(),c=>c.GetRuntimeName()); using var connection = Database.Server.GetManagedConnection(transaction); diff --git a/FAnsiSql/Discovery/DiscoveredTableHelper.cs b/FAnsiSql/Discovery/DiscoveredTableHelper.cs index d6b92fdb..56b6aa4c 100644 --- a/FAnsiSql/Discovery/DiscoveredTableHelper.cs +++ b/FAnsiSql/Discovery/DiscoveredTableHelper.cs @@ -247,7 +247,7 @@ public virtual void MakeDistinct(DatabaseOperationArgs args,DiscoveredTable disc cmdTruncate.CommandTimeout = args.TimeoutInSeconds; cmdTruncate.ExecuteNonQuery(); } - + using(var cmdBack = server.GetCommand($"INSERT INTO {tableName} (SELECT * FROM {tempTable})", con)) { cmdBack.CommandTimeout = args.TimeoutInSeconds; diff --git a/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateCustomLineCollectionException.cs b/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateCustomLineCollectionException.cs index 33fadacf..aabecf7c 100644 --- a/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateCustomLineCollectionException.cs +++ b/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateCustomLineCollectionException.cs @@ -10,7 +10,7 @@ public class AggregateCustomLineCollectionException : Exception { public AggregateCustomLineCollectionException(string msg):base(msg) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateHelper.cs b/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateHelper.cs index 8b5bb07e..9d0691f4 100644 --- a/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateHelper.cs +++ b/FAnsiSql/Discovery/QuerySyntax/Aggregation/AggregateHelper.cs @@ -9,15 +9,15 @@ public abstract class AggregateHelper:IAggregateHelper public string BuildAggregate(List queryLines, IQueryAxis axisIfAny) { var lines = new AggregateCustomLineCollection(queryLines, axisIfAny, GetQuerySyntaxHelper()); - + //no axis no pivot if (lines.AxisSelect == null && lines.PivotSelect == null) - return BuildBasicAggregate(lines); + return BuildBasicAggregate(lines); //axis (no pivot) if (lines.PivotSelect == null) return BuildAxisAggregate(lines); - + //pivot (no axis) if (lines.AxisSelect == null) return BuildPivotOnlyAggregate(lines,GetPivotOnlyNonPivotColumn(lines)); diff --git a/FAnsiSql/Discovery/QuerySyntax/RuntimeNameException.cs b/FAnsiSql/Discovery/QuerySyntax/RuntimeNameException.cs index b4e5980c..ae29c747 100644 --- a/FAnsiSql/Discovery/QuerySyntax/RuntimeNameException.cs +++ b/FAnsiSql/Discovery/QuerySyntax/RuntimeNameException.cs @@ -14,7 +14,7 @@ public class RuntimeNameException:Exception /// public RuntimeNameException(string message, Exception innerException):base(message,innerException) { - + } /// @@ -23,6 +23,6 @@ public RuntimeNameException(string message, Exception innerException):base(messa /// public RuntimeNameException(string message):base(message) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Discovery/QuerySyntaxHelper.cs b/FAnsiSql/Discovery/QuerySyntaxHelper.cs index 7f717f44..77bae142 100644 --- a/FAnsiSql/Discovery/QuerySyntaxHelper.cs +++ b/FAnsiSql/Discovery/QuerySyntaxHelper.cs @@ -70,7 +70,7 @@ protected Regex GetAliasRegex() //alias is a word //(w+) - + //alias is a wrapped word e.g. [hey hey]. In this case we must allow anything between the brackets that is not closing bracket //[[`""]([^[`""]+)[]`""] @@ -402,7 +402,7 @@ public DbParameter GetParameter(DbParameter p, DiscoveredColumn discoveredColumn catch(Exception ex) { throw new Exception(string.Format(FAnsiStrings.QuerySyntaxHelper_GetParameter_Could_not_GetParameter_for_column___0__, discoveredColumn.GetFullyQualifiedName()),ex); - } + } return p; } @@ -528,9 +528,9 @@ public override int GetHashCode() public Dictionary GetParameterNamesFor(T[] columns, Func toStringFunc) { var toReturn = new Dictionary(); - + var reservedKeywords = GetReservedWords(); - + //sensible parameter names have no spaces or symbols! var sensibleParameterNamesInclude = new Regex(@"^\w*$"); diff --git a/FAnsiSql/Discovery/TypeTranslation/TypeNotMappedException.cs b/FAnsiSql/Discovery/TypeTranslation/TypeNotMappedException.cs index ca5314b2..fbce85e5 100644 --- a/FAnsiSql/Discovery/TypeTranslation/TypeNotMappedException.cs +++ b/FAnsiSql/Discovery/TypeTranslation/TypeNotMappedException.cs @@ -8,7 +8,7 @@ namespace FAnsi.Discovery.TypeTranslation; public class TypeNotMappedException : Exception { public TypeNotMappedException(string msg):base(msg) - { + { } public TypeNotMappedException(string msg, Exception innerException) : base(msg, innerException) diff --git a/FAnsiSql/Discovery/TypeTranslation/TypeTranslater.cs b/FAnsiSql/Discovery/TypeTranslation/TypeTranslater.cs index 365b995c..3c53a3a6 100644 --- a/FAnsiSql/Discovery/TypeTranslation/TypeTranslater.cs +++ b/FAnsiSql/Discovery/TypeTranslation/TypeTranslater.cs @@ -58,13 +58,13 @@ public string GetSQLDBTypeForCSharpType(DatabaseTypeRequest request) if (t == typeof(byte)) return GetByteDataType(); - + if (t == typeof(short) || t == typeof(short) || t == typeof(ushort) || t == typeof(short?) || t == typeof(ushort?)) return GetSmallIntDataType(); if (t == typeof(int) || t == typeof(int) || t == typeof(uint) || t == typeof(int?) || t == typeof(uint?)) return GetIntDataType(); - + if (t == typeof (long) || t == typeof(ulong) || t == typeof(long?) || t == typeof(ulong?)) return GetBigIntDataType(); @@ -80,7 +80,7 @@ public string GetSQLDBTypeForCSharpType(DatabaseTypeRequest request) if (t == typeof(TimeSpan) || t == typeof(TimeSpan?)) return GetTimeDataType(); - + if (t == typeof (byte[])) return GetByteArrayDataType(); @@ -120,7 +120,7 @@ protected string GetStringDataType(int? maxExpectedStringWidth) if (maxExpectedStringWidth > MaxStringWidthBeforeMax) return GetStringDataTypeWithUnlimitedWidth(); - + return GetStringDataTypeImpl(maxExpectedStringWidth.Value); } @@ -139,7 +139,7 @@ private string GetUnicodeStringDataType(int? maxExpectedStringWidth) if (maxExpectedStringWidth > MaxStringWidthBeforeMax) return GetUnicodeStringDataTypeWithUnlimitedWidth(); - + return GetUnicodeStringDataTypeImpl(maxExpectedStringWidth.Value); } @@ -259,13 +259,13 @@ public DbType GetDbTypeForSQLDBType(string sqlType) if (IsString(sqlType)) return DbType.String; - + if (IsDate(sqlType)) return DbType.DateTime; if (IsTime(sqlType)) return DbType.Time; - + if (IsByteArray(sqlType)) return DbType.Object; @@ -295,7 +295,7 @@ public virtual DatabaseTypeRequest GetDataTypeRequestForSQLDBType(string sqlType if (cSharpType == typeof(TimeSpan)) lengthIfString = GetStringLengthForTimeSpan(); - + var request = new DatabaseTypeRequest(cSharpType, lengthIfString, digits); if (cSharpType == typeof(string)) diff --git a/FAnsiSql/Exceptions/AlterFailedException.cs b/FAnsiSql/Exceptions/AlterFailedException.cs index dbd79cba..3e00792c 100644 --- a/FAnsiSql/Exceptions/AlterFailedException.cs +++ b/FAnsiSql/Exceptions/AlterFailedException.cs @@ -10,6 +10,6 @@ public class AlterFailedException : Exception public AlterFailedException(string message, Exception inner) : base(message, inner) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Exceptions/CircularDependencyException.cs b/FAnsiSql/Exceptions/CircularDependencyException.cs index 22e20b0e..9ec05ca1 100644 --- a/FAnsiSql/Exceptions/CircularDependencyException.cs +++ b/FAnsiSql/Exceptions/CircularDependencyException.cs @@ -9,6 +9,6 @@ public class CircularDependencyException : Exception { public CircularDependencyException(string msg):base(msg) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Exceptions/ImplementationNotFoundException.cs b/FAnsiSql/Exceptions/ImplementationNotFoundException.cs index 90af6e46..b9b3c496 100644 --- a/FAnsiSql/Exceptions/ImplementationNotFoundException.cs +++ b/FAnsiSql/Exceptions/ImplementationNotFoundException.cs @@ -6,6 +6,6 @@ public class ImplementationNotFoundException:Exception { public ImplementationNotFoundException(string message):base(message) { - + } } \ No newline at end of file diff --git a/FAnsiSql/Exceptions/InvalidResizeException.cs b/FAnsiSql/Exceptions/InvalidResizeException.cs index 71cba8e9..a83790ee 100644 --- a/FAnsiSql/Exceptions/InvalidResizeException.cs +++ b/FAnsiSql/Exceptions/InvalidResizeException.cs @@ -9,6 +9,6 @@ public class InvalidResizeException : Exception { public InvalidResizeException(string s):base(s) { - + } } \ No newline at end of file diff --git a/FAnsiSql/FAnsi.csproj b/FAnsiSql/FAnsi.csproj index e99fde64..7483ee49 100644 --- a/FAnsiSql/FAnsi.csproj +++ b/FAnsiSql/FAnsi.csproj @@ -39,7 +39,7 @@ all - + diff --git a/FAnsiSql/Implementations/MicrosoftSQL/Aggregation/MicrosoftSQLAggregateHelper.cs b/FAnsiSql/Implementations/MicrosoftSQL/Aggregation/MicrosoftSQLAggregateHelper.cs index f8c0d90c..e51c6b61 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/Aggregation/MicrosoftSQLAggregateHelper.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/Aggregation/MicrosoftSQLAggregateHelper.cs @@ -183,7 +183,7 @@ ORDER BY syntaxHelper.Escape(GetDatePartOfColumn(query.Axis.AxisIncrement,"axis.dt")), axisColumnAlias ); - + return part1 + part2; } @@ -194,7 +194,7 @@ protected override string BuildPivotOnlyAggregate(AggregateCustomLineCollection var part1 = GetPivotPart1(query, out var pivotAlias, out var countAlias, out _); syntaxHelper.SplitLineIntoSelectSQLAndAlias(nonPivotColumn.Text, out var nonPivotColumnSelect, out var nonPivotColumnAlias); - + //ensure we have an alias for the non pivot column if (string.IsNullOrWhiteSpace(nonPivotColumnAlias)) nonPivotColumnAlias = syntaxHelper.GetRuntimeName(nonPivotColumnSelect); @@ -254,7 +254,7 @@ private string GetPivotPart1(AggregateCustomLineCollection query, out string piv //ensure it has an RHS if (string.IsNullOrWhiteSpace(pivotAlias)) pivotAlias = syntaxHelper.GetRuntimeName(pivotSqlWithoutAlias); - + var countSqlWithoutAlias = query.CountSelect.GetTextWithoutAlias(syntaxHelper); countAlias = query.CountSelect.GetAliasFromText(syntaxHelper); @@ -275,7 +275,7 @@ private string GetPivotPart1(AggregateCustomLineCollection query, out string piv var anyFilters = query.Lines.Any(l => l.LocationToInsert == QueryComponent.WHERE); var orderBy = $"{countSqlWithoutAlias} desc"; - + if (query.TopXOrderBy != null) orderBy = query.TopXOrderBy.Text; diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs index bffeb537..f695f794 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLBulkCopy.cs @@ -38,7 +38,7 @@ public override int UploadImpl(DataTable dt) _bulkCopy.ColumnMappings.Clear(); foreach (var (key, value) in GetMapping(dt.Columns.Cast())) _bulkCopy.ColumnMappings.Add(key.ColumnName, value.GetRuntimeName()); - + return BulkInsertWithBetterErrorMessages(_bulkCopy, dt, TargetTable.Database.Server); } @@ -103,7 +103,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT var firstPass = ExceptionToListOfInnerMessages(e, true); firstPass = firstPass.Replace(Environment.NewLine, $"{Environment.NewLine}\t"); firstPass = Environment.NewLine + SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_First_Pass_Exception_ + Environment.NewLine + firstPass; - + //have to use a new object because current one could have a broken transaction associated with it using var con = (SqlConnection)serverForLineByLineInvestigation.GetConnection(); con.Open(); @@ -153,7 +153,7 @@ private Exception AttemptLineByLineInsert(Exception e, SqlBulkCopy insert, DataT investigationTransaction.Rollback(); con.Close(); } - + return new Exception(SR.MicrosoftSQLBulkCopy_AttemptLineByLineInsert_Second_Pass_Exception__Bulk_insert_failed_but_when_we_tried_to_repeat_it_a_line_at_a_time_it_worked + firstPass , e); } @@ -232,7 +232,7 @@ private static string ExceptionToListOfInnerMessages(Exception e, bool includeSt message.AppendLine(); message.Append(e.StackTrace); } - + if (e is ReflectionTypeLoadException reflectionTypeLoadException) foreach (var loaderException in reflectionTypeLoadException.LoaderExceptions) { @@ -245,7 +245,7 @@ private static string ExceptionToListOfInnerMessages(Exception e, bool includeSt message.AppendLine(); message.Append( ExceptionToListOfInnerMessages(e.InnerException, includeStackTrace)); } - + return message.ToString(); } diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLColumnHelper.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLColumnHelper.cs index f5170907..e64498f0 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLColumnHelper.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLColumnHelper.cs @@ -39,7 +39,7 @@ alter table T alter column A datetime2 null $"ALTER TABLE {column.Table.GetFullyQualifiedName()} ALTER COLUMN {column.GetWrappedName()} varchar(4000) {(allowNulls ? "NULL" : "NOT NULL")}"); sb.AppendLine( $"ALTER TABLE {column.Table.GetFullyQualifiedName()} ALTER COLUMN {column.GetWrappedName()} {newType} {(allowNulls ? "NULL" : "NOT NULL")}"); - + return sb.ToString(); } } \ No newline at end of file diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLDatabaseHelper.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLDatabaseHelper.cs index a907871d..c0f6db89 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLDatabaseHelper.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLDatabaseHelper.cs @@ -76,7 +76,7 @@ public override IEnumerable ListTableValuedFuncti } } - + return functionsToReturn.ToArray(); } @@ -131,7 +131,7 @@ public override void DropDatabase(DiscoveredDatabase database) else throw; } - + SqlConnection.ClearAllPools(); } @@ -200,7 +200,7 @@ INNER JOIN sys.[databases] d // other operations must be done on master server.ChangeDatabase("master"); - + // set single user before detaching sql = $"ALTER DATABASE {databaseToDetach} SET SINGLE_USER WITH ROLLBACK IMMEDIATE;"; using (var cmd = new SqlCommand(sql, con)) diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLImplementation.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLImplementation.cs index 68cbcc44..ef016c42 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLImplementation.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLImplementation.cs @@ -10,7 +10,7 @@ public sealed class MicrosoftSQLImplementation : Implementation MicrosoftSQLServerHelper.Instance; diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLServerHelper.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLServerHelper.cs index 5bc4758d..a9173eac 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLServerHelper.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLServerHelper.cs @@ -98,7 +98,7 @@ public override string[] ListDatabases(DbConnection con) using (var r = cmd.ExecuteReader()) while (r.Read()) databases.Add((string) r["Database"]); - + con.Close(); return databases.ToArray(); } @@ -147,7 +147,7 @@ public override Dictionary DescribeServer(DbConnectionStringBuild using var con = new SqlConnection(builder.ConnectionString); con.Open(); - + //For more info you could run //SELECT * FROM sys.databases WHERE name = 'AdventureWorks2012'; but there might not be a database? diff --git a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLTableHelper.cs b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLTableHelper.cs index 6ff2bc65..34879e0b 100644 --- a/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLTableHelper.cs +++ b/FAnsiSql/Implementations/MicrosoftSQL/MicrosoftSQLTableHelper.cs @@ -49,11 +49,11 @@ public override DiscoveredColumn[] DiscoverColumns(DiscoveredTable discoveredTab if(!toReturn.Any()) throw new Exception($"Could not find any columns in table {discoveredTable}"); - + //don't bother looking for pks if it is a table valued function if (discoveredTable is DiscoveredTableValuedFunction) return toReturn.ToArray(); - + var pks = ListPrimaryKeys(connection, discoveredTable); foreach (var c in toReturn.Where(c => pks.Any(pk=>pk.Equals(c.GetRuntimeName())))) @@ -86,7 +86,7 @@ public override IDiscoveredColumnHelper GetColumnHelper() public override void DropTable(DbConnection connection, DiscoveredTable tableToDrop) { - + SqlCommand cmd; switch (tableToDrop.TableType) @@ -162,7 +162,7 @@ sys.parameters.precision AS PRECISION DataType = new DiscoveredDataType(r, GetSQLType_FromSpColumnsResult(r), null) }); } - + return toReturn.ToArray(); } @@ -270,7 +270,7 @@ public override DiscoveredRelationship[] DiscoverRelationships(DiscoveredTable t current.AddKeys(r["PKCOLUMN_NAME"].ToString(), r["FKCOLUMN_NAME"].ToString(),transaction); } } - + return toReturn.Values.ToArray(); } @@ -278,7 +278,7 @@ public override DiscoveredRelationship[] DiscoverRelationships(DiscoveredTable t protected override string GetRenameTableSql(DiscoveredTable discoveredTable, string newName) { var oldName = discoveredTable.GetWrappedName(); - + var syntax = discoveredTable.GetQuerySyntaxHelper(); if (!string.IsNullOrWhiteSpace(discoveredTable.Schema)) @@ -298,7 +298,7 @@ SELECT ROW_NUMBER() OVER (PARTITION BY {0} ORDER BY {0}) AS RowNum ) as f where RowNum > 1"; - + var columnList = string.Join(",", discoveredTable.DiscoverColumns().Select(c=>syntax.EnsureWrapped(c.GetRuntimeName()))); @@ -321,7 +321,7 @@ private string GetSQLType_FromSpColumnsResult(DbDataReader r) { var columnType = r["TYPE_NAME"] as string; var lengthQualifier = ""; - + if (HasPrecisionAndScale(columnType)) lengthQualifier = $"({r["PRECISION"]},{r["SCALE"]})"; else @@ -379,7 +379,7 @@ INNER JOIN sys.index_columns AS ic r.Close(); } - + return toReturn.ToArray(); } } \ No newline at end of file diff --git a/FAnsiSql/Implementations/MySql/MySqlBulkCopy.cs b/FAnsiSql/Implementations/MySql/MySqlBulkCopy.cs index 38024c53..6741158d 100644 --- a/FAnsiSql/Implementations/MySql/MySqlBulkCopy.cs +++ b/FAnsiSql/Implementations/MySql/MySqlBulkCopy.cs @@ -72,7 +72,7 @@ public override int UploadImpl(DataTable dt) ourTrans?.Commit(); return affected; - + } private string ConstructIndividualValue(string dataType, object value) @@ -93,7 +93,7 @@ private string ConstructIndividualValue(string dataType, object value) if(value == null || value == DBNull.Value) return "NULL"; - + return ConstructIndividualValue(dataType, value.ToString()); } diff --git a/FAnsiSql/Implementations/MySql/MySqlColumnHelper.cs b/FAnsiSql/Implementations/MySql/MySqlColumnHelper.cs index 4e1b3cbd..5db19b4e 100644 --- a/FAnsiSql/Implementations/MySql/MySqlColumnHelper.cs +++ b/FAnsiSql/Implementations/MySql/MySqlColumnHelper.cs @@ -14,7 +14,7 @@ public string GetTopXSqlForColumn(IHasRuntimeName database, IHasFullyQualifiedNa var syntax = MySqlQuerySyntaxHelper.Instance; var sql = new StringBuilder(); - + sql.Append($"SELECT {syntax.EnsureWrapped(column.GetRuntimeName())} FROM {table.GetFullyQualifiedName()}"); if (discardNulls) diff --git a/FAnsiSql/Implementations/MySql/MySqlDatabaseHelper.cs b/FAnsiSql/Implementations/MySql/MySqlDatabaseHelper.cs index b38fdac9..d81adcf5 100644 --- a/FAnsiSql/Implementations/MySql/MySqlDatabaseHelper.cs +++ b/FAnsiSql/Implementations/MySql/MySqlDatabaseHelper.cs @@ -64,7 +64,7 @@ public override void CreateBackup(DiscoveredDatabase discoveredDatabase, string public override void CreateSchema(DiscoveredDatabase discoveredDatabase, string name) { - + } public override IEnumerable ListTables(DiscoveredDatabase parent, IQuerySyntaxHelper querySyntaxHelper, DbConnection connection, string database, bool includeViews, DbTransaction transaction = null) @@ -94,7 +94,7 @@ public override IEnumerable ListTables(DiscoveredDatabase paren tables.Add(new DiscoveredTable(parent,(string)r[0],querySyntaxHelper,null,isView ? TableType.View : TableType.Table));//this table fieldname will be something like Tables_in_mydbwhatevernameitis } } - + return tables.ToArray(); } diff --git a/FAnsiSql/Implementations/MySql/MySqlServerHelper.cs b/FAnsiSql/Implementations/MySql/MySqlServerHelper.cs index 48dfb491..e6a88c06 100644 --- a/FAnsiSql/Implementations/MySql/MySqlServerHelper.cs +++ b/FAnsiSql/Implementations/MySql/MySqlServerHelper.cs @@ -15,7 +15,7 @@ public class MySqlServerHelper : DiscoveredServerHelper static MySqlServerHelper() { AddConnectionStringKeyword(DatabaseType.MySql, "AllowUserVariables","True",ConnectionStringKeywordPriority.ApiRule); - AddConnectionStringKeyword(DatabaseType.MySql, "CharSet", "utf8", ConnectionStringKeywordPriority.ApiRule); + AddConnectionStringKeyword(DatabaseType.MySql, "CharSet", "utf8", ConnectionStringKeywordPriority.ApiRule); } private MySqlServerHelper() : base(DatabaseType.MySql) @@ -58,7 +58,7 @@ protected override DbConnectionStringBuilder GetConnectionStringBuilderImpl(stri toReturn.UserID = username; toReturn.Password = password; } - + return toReturn; } @@ -119,7 +119,7 @@ public override string[] ListDatabases(DbConnection con) databases.Add((string)r["Database"]); } - + con.Close(); return databases.ToArray(); } diff --git a/FAnsiSql/Implementations/MySql/MySqlTableHelper.cs b/FAnsiSql/Implementations/MySql/MySqlTableHelper.cs index 83053bad..0efd5504 100644 --- a/FAnsiSql/Implementations/MySql/MySqlTableHelper.cs +++ b/FAnsiSql/Implementations/MySql/MySqlTableHelper.cs @@ -72,10 +72,10 @@ public override DiscoveredColumn[] DiscoverColumns(DiscoveredTable discoveredTab r.Close(); } - + return columns.ToArray(); - + } private bool YesNoToBool(object o) @@ -208,7 +208,7 @@ INNER JOIN current.AddKeys(r["REFERENCED_COLUMN_NAME"].ToString(), r["COLUMN_NAME"].ToString(), transaction); } } - + return toReturn.Values.ToArray(); } diff --git a/FAnsiSql/Implementations/Oracle/OracleBulkCopy.cs b/FAnsiSql/Implementations/Oracle/OracleBulkCopy.cs index ccdf20b6..cc46ff84 100644 --- a/FAnsiSql/Implementations/Oracle/OracleBulkCopy.cs +++ b/FAnsiSql/Implementations/Oracle/OracleBulkCopy.cs @@ -24,7 +24,7 @@ public override int UploadImpl(DataTable dt) //don't run an insert if there are 0 rows if (dt.Rows.Count == 0) return 0; - + var syntaxHelper = _server.GetQuerySyntaxHelper(); var tt = syntaxHelper.TypeTranslater; @@ -32,7 +32,7 @@ public override int UploadImpl(DataTable dt) var parameterNames = syntaxHelper.GetParameterNamesFor(dt.Columns.Cast().ToArray(),c=>c.ColumnName); var affectedRows = 0; - + var mapping = GetMapping(dt.Columns.Cast()); var dateColumns = new HashSet(); @@ -57,7 +57,7 @@ public override int UploadImpl(DataTable dt) else if (p.DbType == DbType.Boolean) p.DbType = DbType.Int32; // JS 2023-05-11 special case since we don't have a true boolean type in Oracle, but use 0/1 instead } - + var values = mapping.Keys.ToDictionary(c => c, _ => new List()); foreach (DataRow dataRow in dt.Rows) diff --git a/FAnsiSql/Implementations/Oracle/OracleDatabaseHelper.cs b/FAnsiSql/Implementations/Oracle/OracleDatabaseHelper.cs index a9eee8f3..65961908 100644 --- a/FAnsiSql/Implementations/Oracle/OracleDatabaseHelper.cs +++ b/FAnsiSql/Implementations/Oracle/OracleDatabaseHelper.cs @@ -51,7 +51,7 @@ public override void CreateBackup(DiscoveredDatabase discoveredDatabase, string public override IEnumerable ListTables(DiscoveredDatabase parent, IQuerySyntaxHelper querySyntaxHelper, DbConnection connection, string database, bool includeViews, DbTransaction transaction = null) { var tables = new List(); - + //find all the tables using(var cmd = new OracleCommand($"SELECT table_name FROM all_tables where owner='{database}'", (OracleConnection) connection)) { @@ -64,7 +64,7 @@ public override IEnumerable ListTables(DiscoveredDatabase paren if(querySyntaxHelper.IsValidTableName((string)r["table_name"],out _)) tables.Add(new DiscoveredTable(parent,r["table_name"].ToString(),querySyntaxHelper)); } - + //find all the views if(includeViews) { diff --git a/FAnsiSql/Implementations/Oracle/OracleQuerySyntaxHelper.cs b/FAnsiSql/Implementations/Oracle/OracleQuerySyntaxHelper.cs index c05a2b38..3ad73725 100644 --- a/FAnsiSql/Implementations/Oracle/OracleQuerySyntaxHelper.cs +++ b/FAnsiSql/Implementations/Oracle/OracleQuerySyntaxHelper.cs @@ -108,7 +108,7 @@ protected override object FormatTimespanForDbParameter(TimeSpan timeSpan) private static readonly HashSet ReservedWords = new( new [] { - + "ACCESS", "ACCOUNT", "ACTIVATE", diff --git a/FAnsiSql/Implementations/Oracle/OracleServerHelper.cs b/FAnsiSql/Implementations/Oracle/OracleServerHelper.cs index f86afa1f..dcc44bfa 100644 --- a/FAnsiSql/Implementations/Oracle/OracleServerHelper.cs +++ b/FAnsiSql/Implementations/Oracle/OracleServerHelper.cs @@ -64,7 +64,7 @@ protected override DbConnectionStringBuilder GetConnectionStringBuilderImpl(stri toReturn.UserID = username; toReturn.Password = password; } - + return toReturn; } @@ -97,7 +97,7 @@ public override void CreateDatabase(DbConnectionStringBuilder builder, IHasRunti cmd.CommandTimeout = CreateDatabaseTimeoutInSeconds; cmd.ExecuteNonQuery(); } - + using(var cmd = new OracleCommand( $"ALTER USER \"{newDatabaseName.GetRuntimeName()}\" quota unlimited on system", con)) @@ -150,7 +150,7 @@ public override string[] ListDatabases(DbConnection con) using (var r = cmd.ExecuteReader()) while (r.Read()) databases.Add((string) r["username"]); - + return databases.ToArray(); } } \ No newline at end of file diff --git a/FAnsiSql/Implementations/Oracle/OracleTableHelper.cs b/FAnsiSql/Implementations/Oracle/OracleTableHelper.cs index 173e2e45..cb1391dd 100644 --- a/FAnsiSql/Implementations/Oracle/OracleTableHelper.cs +++ b/FAnsiSql/Implementations/Oracle/OracleTableHelper.cs @@ -159,7 +159,7 @@ private string GetSQLType_From_all_tab_cols_Result(DbDataReader r) var columnType = GetBasicTypeFromOracleType(r); var lengthQualifier = ""; - + if (HasPrecisionAndScale(columnType)) lengthQualifier = $"({r["DATA_PRECISION"]},{r["DATA_SCALE"]})"; else @@ -204,7 +204,7 @@ public override int ExecuteInsertReturningIdentity(DiscoveredTable discoveredTab $"BEGIN {Environment.NewLine}{cmd.CommandText}{Environment.NewLine}COMMIT;{Environment.NewLine}END;"; cmd.ExecuteNonQuery(); - + return Convert.ToInt32(p.Value); } @@ -282,7 +282,7 @@ AND UPPER(c.r_owner) = UPPER(:DatabaseName) current.AddKeys(r["r_column_name"].ToString(), r["column_name"].ToString(), transaction); } } - + return toReturn.Values.ToArray(); } diff --git a/FAnsiSql/Implementations/Oracle/Update/OracleUpdateHelper.cs b/FAnsiSql/Implementations/Oracle/Update/OracleUpdateHelper.cs index fe5e18b4..775e2c34 100644 --- a/FAnsiSql/Implementations/Oracle/Update/OracleUpdateHelper.cs +++ b/FAnsiSql/Implementations/Oracle/Update/OracleUpdateHelper.cs @@ -13,7 +13,7 @@ public sealed class OracleUpdateHelper : UpdateHelper private OracleUpdateHelper() {} protected override string BuildUpdateImpl(DiscoveredTable table1, DiscoveredTable table2, List lines) { - + // This implementation is based on: // https://stackoverflow.com/a/32748797/4824531 diff --git a/FAnsiSql/Implementations/PostgreSql/PostgreSqlBulkCopy.cs b/FAnsiSql/Implementations/PostgreSql/PostgreSqlBulkCopy.cs index 1ace154e..2014391b 100644 --- a/FAnsiSql/Implementations/PostgreSql/PostgreSqlBulkCopy.cs +++ b/FAnsiSql/Implementations/PostgreSql/PostgreSqlBulkCopy.cs @@ -37,7 +37,7 @@ public override int UploadImpl(DataTable dt) var dataColumns = matchedColumns.Keys.ToArray(); var types = matchedColumns.Keys.Select(v => tt.GetNpgsqlDbTypeForCSharpType(v.DataType)).ToArray(); - + using (var import = con.BeginBinaryImport(sb.ToString())) { foreach (DataRow r in dt.Rows) diff --git a/FAnsiSql/Implementations/PostgreSql/PostgreSqlDatabaseHelper.cs b/FAnsiSql/Implementations/PostgreSql/PostgreSqlDatabaseHelper.cs index 1f7e31a9..74e6ee3c 100644 --- a/FAnsiSql/Implementations/PostgreSql/PostgreSqlDatabaseHelper.cs +++ b/FAnsiSql/Implementations/PostgreSql/PostgreSqlDatabaseHelper.cs @@ -26,7 +26,7 @@ public override IEnumerable ListTables(DiscoveredDatabase paren schemaname != 'pg_catalog' AND schemaname != 'information_schema';"; - + const string sqlViews = @"SELECT * FROM @@ -51,7 +51,7 @@ public override IEnumerable ListTables(DiscoveredDatabase paren tables.Add(new DiscoveredTable(parent, (string)r["tablename"], querySyntaxHelper, schema)); } } - + if (includeViews) { using var cmd = new NpgsqlCommand(sqlViews, (NpgsqlConnection)connection); @@ -105,7 +105,7 @@ FROM pg_stat_activity using(var cmd = new NpgsqlCommand($"DROP DATABASE \"{database.GetRuntimeName()}\"",con)) cmd.ExecuteNonQuery(); } - + NpgsqlConnection.ClearAllPools(); } @@ -139,7 +139,7 @@ public override void CreateSchema(DiscoveredDatabase discoveredDatabase, string con.Open(); var syntax = discoveredDatabase.Server.GetQuerySyntaxHelper(); - + var sql = $@"create schema if not exists {syntax.EnsureWrapped(name)}"; using var cmd = discoveredDatabase.Server.GetCommand(sql, con); diff --git a/FAnsiSql/Implementations/PostgreSql/PostgreSqlServerHelper.cs b/FAnsiSql/Implementations/PostgreSql/PostgreSqlServerHelper.cs index c6e81f26..0f7bca81 100644 --- a/FAnsiSql/Implementations/PostgreSql/PostgreSqlServerHelper.cs +++ b/FAnsiSql/Implementations/PostgreSql/PostgreSqlServerHelper.cs @@ -139,12 +139,10 @@ protected override DbConnectionStringBuilder GetConnectionStringBuilderImpl(stri toReturn.Username = username; toReturn.Password = password; } - else - toReturn.IntegratedSecurity = true; if (!string.IsNullOrWhiteSpace(database)) toReturn.Database = database; - + return toReturn; } } \ No newline at end of file diff --git a/FAnsiSql/Implementations/PostgreSql/PostgreSqlTableHelper.cs b/FAnsiSql/Implementations/PostgreSql/PostgreSqlTableHelper.cs index cbe65549..41689f64 100644 --- a/FAnsiSql/Implementations/PostgreSql/PostgreSqlTableHelper.cs +++ b/FAnsiSql/Implementations/PostgreSql/PostgreSqlTableHelper.cs @@ -64,15 +64,15 @@ FROM information_schema.columns } } - + if(!toReturn.Any()) throw new Exception($"Could not find any columns in table {discoveredTable}"); - + //don't bother looking for pks if it is a table valued function if (discoveredTable is DiscoveredTableValuedFunction) return toReturn.ToArray(); - + var pks = ListPrimaryKeys(connection, discoveredTable); foreach (var c in toReturn.Where(c => pks.Any(pk=>pk.Equals(c.GetRuntimeName())))) @@ -119,7 +119,7 @@ private string GetSQLType_FromSpColumnsResult(DbDataReader r) { var columnType = r["data_type"] as string; var lengthQualifier = ""; - + if (HasPrecisionAndScale(columnType)) lengthQualifier = $"({r["numeric_precision"]},{r["numeric_scale"]})"; else @@ -127,7 +127,7 @@ private string GetSQLType_FromSpColumnsResult(DbDataReader r) { lengthQualifier = $"({Convert.ToInt32(r["character_maximum_length"])})"; } - + return columnType + lengthQualifier; } @@ -189,7 +189,7 @@ join information_schema.key_column_usage y y.table_schema=@schema order by c.constraint_name, x.ordinal_position"; - + var toReturn = new Dictionary(); using (var cmd = table.GetCommand(sql, connection, transaction?.Transaction)) @@ -245,7 +245,7 @@ join information_schema.key_column_usage y current.AddKeys(r["column_name"].ToString(), r["foreign_column_name"].ToString(), transaction); } } - + return toReturn.Values.ToArray(); } diff --git a/FAnsiSql/Implementations/PostgreSql/PostgreSqlTypeTranslater.cs b/FAnsiSql/Implementations/PostgreSql/PostgreSqlTypeTranslater.cs index 301aeb1d..1b85cefa 100644 --- a/FAnsiSql/Implementations/PostgreSql/PostgreSqlTypeTranslater.cs +++ b/FAnsiSql/Implementations/PostgreSql/PostgreSqlTypeTranslater.cs @@ -42,13 +42,13 @@ public NpgsqlDbType GetNpgsqlDbTypeForCSharpType(Type t) if (t == typeof(byte)) return NpgsqlDbType.Bytea; - + if (t == typeof(short) || t == typeof(short) || t == typeof(ushort) || t == typeof(short?) || t == typeof(ushort?)) return NpgsqlDbType.Smallint; if (t == typeof(int) || t == typeof(int) || t == typeof(uint) || t == typeof(int?) || t == typeof(uint?)) return NpgsqlDbType.Integer; - + if (t == typeof (long) || t == typeof(ulong) || t == typeof(long?) || t == typeof(ulong?)) return NpgsqlDbType.Bigint; diff --git a/Tests/FAnsiTests/Aggregation/AggregationTests.cs b/Tests/FAnsiTests/Aggregation/AggregationTests.cs index 3cf97d9d..79fcafb2 100644 --- a/Tests/FAnsiTests/Aggregation/AggregationTests.cs +++ b/Tests/FAnsiTests/Aggregation/AggregationTests.cs @@ -121,8 +121,8 @@ private static bool IsMatch(DataRow r, object[] cells) if (!a.Equals(b)) return false; - } - + } + return true; } @@ -174,7 +174,7 @@ protected DiscoveredTable GetTestTable(DatabaseType type, bool easy = false) if (!dic.ContainsKey(type)) Assert.Inconclusive("No connection string found for Test database type {0}", type); - + return dic[type]; } diff --git a/Tests/FAnsiTests/Aggregation/CalendarAggregationTests.cs b/Tests/FAnsiTests/Aggregation/CalendarAggregationTests.cs index 9f43b673..d74d1af8 100644 --- a/Tests/FAnsiTests/Aggregation/CalendarAggregationTests.cs +++ b/Tests/FAnsiTests/Aggregation/CalendarAggregationTests.cs @@ -37,7 +37,7 @@ public void Test_Calendar_Year(DatabaseType type) EndDate = "'2010-01-01'", AxisIncrement = AxisIncrement.Year //by year }; - + var sql = svr.GetQuerySyntaxHelper().AggregateHelper.BuildAggregate(lines, axis); TestContext.WriteLine($"About to send SQL:{Environment.NewLine}{sql}"); diff --git a/Tests/FAnsiTests/CrossPlatformTests.cs b/Tests/FAnsiTests/CrossPlatformTests.cs index 8de922ec..29f7f7ef 100644 --- a/Tests/FAnsiTests/CrossPlatformTests.cs +++ b/Tests/FAnsiTests/CrossPlatformTests.cs @@ -313,7 +313,7 @@ public void ForeignKeyCreationTest(DatabaseType type) }); var parentIdPkCol = tblParent.DiscoverColumn("ID"); - + var parentIdFkCol = new DatabaseColumnRequest("Parent_ID", new DatabaseTypeRequest(typeof (int))); var tblChild = database.CreateTable("Child", new[] @@ -481,10 +481,10 @@ public void CreateMaxVarcharColumns(DatabaseType type) public void CreateMaxVarcharColumnFromDataTable(DatabaseType type) { var database = GetTestDatabase(type); - + var dt = new DataTable(); dt.Columns.Add("MassiveColumn"); - + var sb = new StringBuilder("Amaa"); for (var i = 0; i < 10000; i++) sb.Append(i); @@ -552,7 +552,7 @@ public void AddColumnTest(DatabaseType type,bool useTransaction) { tbl.AddColumn(newColumnName, new DatabaseTypeRequest(typeof(DateTime)), true, 1000); } - + //new column should exist var newCol = tbl.DiscoverColumn(newColumnName); @@ -566,7 +566,7 @@ public void AddColumnTest(DatabaseType type,bool useTransaction) //sql server can't handle altering primary key columns or anything with a foreign key on it too! if (type == DatabaseType.MicrosoftSQLServer) - fieldsToAlter.Remove("Field1"); + fieldsToAlter.Remove("Field1"); foreach (var fieldName in fieldsToAlter) { @@ -679,7 +679,7 @@ public void TestIntDataTypes(DatabaseType type) Assert.AreEqual(2, size.NumbersAfterDecimalPlace); Assert.AreEqual(5, size.Precision); Assert.AreEqual(2, size.Scale); - + dt = tbl.GetDataTable(); Assert.AreEqual(1, dt.Rows.OfType().Count(r => Convert.ToDecimal(r[0]) == new decimal(100.0f))); Assert.AreEqual(1, dt.Rows.OfType().Count(r => Convert.ToDecimal(r[0]) == new decimal(105.0f))); @@ -704,7 +704,7 @@ public void TestFloatDataTypes(DatabaseType type) Assert.AreEqual(1,dt.Rows.OfType().Count(r=>Convert.ToDecimal(r[0]) == new decimal(100.0f))); Assert.AreEqual(1, dt.Rows.OfType().Count(r => Convert.ToDecimal(r[0]) == new decimal(105.0f))); Assert.AreEqual(1, dt.Rows.OfType().Count(r => Convert.ToDecimal(r[0]) == new decimal(2.1f))); - + var col = tbl.DiscoverColumn("MyCol"); var size = col.DataType.GetDecimalSize(); @@ -713,7 +713,7 @@ public void TestFloatDataTypes(DatabaseType type) Assert.AreEqual(1,size.NumbersAfterDecimalPlace); Assert.AreEqual(4, size.Precision); Assert.AreEqual(1, size.Scale); - + col.DataType.AlterTypeTo("decimal(5,2)"); size = tbl.DiscoverColumn("MyCol").DataType.GetDecimalSize(); @@ -737,7 +737,7 @@ public void HorribleDatabaseAndTableNames(DatabaseType type,string horribleDatab database = database.Server.ExpectDatabase(horribleDatabaseName); database.Create(true); - + SqlConnection.ClearAllPools(); try @@ -798,7 +798,7 @@ public void HorribleDatabaseAndTableNames(DatabaseType type,string horribleDatab [TestCase(DatabaseType.PostgreSql, "my.database", "my.table", "my.col")] public void UnsupportedEntityNames(DatabaseType type, string horribleDatabaseName, string horribleTableName,string columnName) { - + var database = GetTestDatabase(type); //ExpectDatabase with illegal name @@ -812,7 +812,7 @@ public void UnsupportedEntityNames(DatabaseType type, string horribleDatabaseNam "Table .* contained unsupported .* characters", Assert.Throws(()=>database.ExpectTable(horribleTableName)) ?.Message); - + //CreateTable with illegal name StringAssert.IsMatch( "Table .* contained unsupported .* characters", @@ -832,7 +832,7 @@ public void UnsupportedEntityNames(DatabaseType type, string horribleDatabaseNam ?.Message); AssertCanCreateDatabases(); - + //CreateDatabase with illegal name StringAssert.IsMatch( "Database .* contained unsupported .* characters", @@ -937,7 +937,7 @@ public void CreateTable_DefaultTest_Date(DatabaseType type) } }); DateTime currentValue; - + using (var insert = tbl.BeginBulkInsert()) { using var dt = new DataTable(); @@ -951,7 +951,7 @@ public void CreateTable_DefaultTest_Date(DatabaseType type) var dt2 = tbl.GetDataTable(); var databaseValue = (DateTime)dt2.Rows.Cast().Single()["myDt"]; - + Assert.AreEqual(currentValue.Year,databaseValue.Year); Assert.AreEqual(currentValue.Month, databaseValue.Month); Assert.AreEqual(currentValue.Day, databaseValue.Day); @@ -1002,7 +1002,7 @@ public void CreateTable_DefaultTest_Guid(DatabaseType type) var dt2 = tbl.GetDataTable(); var databaseValue = (string)dt2.Rows.Cast().Single()["MyGuid"]; - + Assert.IsNotNull(databaseValue); TestContext.WriteLine(databaseValue); } diff --git a/Tests/FAnsiTests/Database/DiscoverTablesTests.cs b/Tests/FAnsiTests/Database/DiscoverTablesTests.cs index ee7dd070..8daaba8d 100644 --- a/Tests/FAnsiTests/Database/DiscoverTablesTests.cs +++ b/Tests/FAnsiTests/Database/DiscoverTablesTests.cs @@ -154,7 +154,7 @@ private void CreateBadTable(DiscoveredDatabase db) private void DropBadView(DiscoveredDatabase db, bool ignoreFailure) { - + using(var con = db.Server.GetConnection()) { con.Open(); @@ -189,7 +189,7 @@ private void CreateBadView(DiscoveredDatabase db) using var con = db.Server.GetConnection(); con.Open(); - + var viewname = db.Server.GetQuerySyntaxHelper().EnsureWrapped("ABC"); var cmd = db.Server.GetCommand($"CREATE VIEW {GetBadTableName(db)} as select * from {viewname}",con); diff --git a/Tests/FAnsiTests/Equality/EqualityTests_ServerAndDatabase.cs b/Tests/FAnsiTests/Equality/EqualityTests_ServerAndDatabase.cs index d6d065cb..989345af 100644 --- a/Tests/FAnsiTests/Equality/EqualityTests_ServerAndDatabase.cs +++ b/Tests/FAnsiTests/Equality/EqualityTests_ServerAndDatabase.cs @@ -18,7 +18,7 @@ public void EqualityTest_DiscoveredServer_AreEqual(string constr1, DatabaseType { var s1 = new DiscoveredServer(constr1, type1); var s2 = new DiscoveredServer(constr2, type2); - + Assert.AreEqual(s1,s2); Assert.AreEqual(s1.GetHashCode(),s2.GetHashCode()); @@ -27,7 +27,7 @@ public void EqualityTest_DiscoveredServer_AreEqual(string constr1, DatabaseType Assert.AreEqual(s1.ExpectDatabase("Mydb"), s2.ExpectDatabase("MyDb")); Assert.AreEqual(s1.ExpectDatabase("Mydb").GetHashCode(), s2.ExpectDatabase("MyDb").GetHashCode()); - + Assert.AreNotEqual(s1.ExpectDatabase("MyDb"), s2.ExpectDatabase("MyDb2")); //This does not affect things since we are expecting a specific database anyway @@ -45,7 +45,7 @@ public void EqualityTest_DiscoveredServer_AreNotEqual(string constr1, DatabaseTy { var s1 = new DiscoveredServer(constr1, type1); var s2 = new DiscoveredServer(constr2, type2); - + Assert.AreNotEqual(s1,s2); Assert.AreNotEqual(s1.ExpectDatabase("MyDb"), s2.ExpectDatabase("MyDb")); } diff --git a/Tests/FAnsiTests/Equality/EqualityTests_TableAndColumn.cs b/Tests/FAnsiTests/Equality/EqualityTests_TableAndColumn.cs index 7505b7b7..60c8b8e0 100644 --- a/Tests/FAnsiTests/Equality/EqualityTests_TableAndColumn.cs +++ b/Tests/FAnsiTests/Equality/EqualityTests_TableAndColumn.cs @@ -24,7 +24,7 @@ public void SetUp() public void EqualityTest_DiscoveredTable_AreEqual(string table1, string schema1, string table2, string schema2) { var s = new DiscoveredServer("Server=fish", DatabaseType.MicrosoftSQLServer); - + var db = s.ExpectDatabase("MyDb"); var db2 = s.ExpectDatabase("MyDb"); @@ -50,7 +50,7 @@ public void EqualityTest_DiscoveredTable_AreNotEqual(DatabaseType type1, string var db1 = s1.ExpectDatabase(dbname1); var db2 = s2.ExpectDatabase(dbname2); - + var t1 = db1.ExpectTable(tablename1, schema1); var t2 = db2.ExpectTable(tablename2, schema2); diff --git a/Tests/FAnsiTests/Examples.cs b/Tests/FAnsiTests/Examples.cs index 0cccf849..17127d10 100644 --- a/Tests/FAnsiTests/Examples.cs +++ b/Tests/FAnsiTests/Examples.cs @@ -26,20 +26,20 @@ public void Simple_Example() @"server=localhost\sqlexpress;Trusted_Connection=True;", DatabaseType.MicrosoftSQLServer); var database = server.ExpectDatabase("test"); var table = database.ExpectTable("MyTable"); - + //Throw out whatever was there before if(table.Exists()) table.Drop(); //Create the table database.CreateTable("MyTable",dt); - + //Database types are compatible with all the data Assert.AreEqual("datetime2",table.DiscoverColumn("Date of Birth").DataType.SQLType); Assert.AreEqual("varchar(25)",table.DiscoverColumn("Name").DataType.SQLType); //And the (string) data is now properly typed and sat in our DBMS - Assert.AreEqual(2,table.GetRowCount()); + Assert.AreEqual(2,table.GetRowCount()); Assert.AreEqual(new DateTime(1920,1,1),table.GetDataTable().Rows[0][1]); Assert.AreEqual(new DateTime(1910,5,22),table.GetDataTable().Rows[1][1]); } @@ -62,7 +62,7 @@ public void Example_TableCreation() //Find the database var database = server.ExpectDatabase("FAnsiTests"); - + //Or create it if(!database.Exists()) database.Create(); diff --git a/Tests/FAnsiTests/ManagedConnectionTests.cs b/Tests/FAnsiTests/ManagedConnectionTests.cs index 9d68ccf6..c4a3c0c9 100644 --- a/Tests/FAnsiTests/ManagedConnectionTests.cs +++ b/Tests/FAnsiTests/ManagedConnectionTests.cs @@ -113,7 +113,7 @@ public void Test_GetManagedConnection_OngoingTransaction(DatabaseType dbType) public void Test_GetManagedConnection_OngoingTransaction_WithCommitRollback(DatabaseType dbType,bool commit) { var db = GetTestDatabase(dbType); - + IManagedConnection ongoingCon; //pretend that there is an ongoing transaction already using (ongoingCon = db.Server.BeginNewTransactedConnection()) @@ -144,7 +144,7 @@ public void Test_GetManagedConnection_OngoingTransaction_WithCommitRollback(Data //that should really have closed it! Assert.AreEqual(ConnectionState.Closed,ongoingCon.Connection.State); } - + //this is the using on the transaction this one should now close itself Assert.AreEqual(ConnectionState.Closed,ongoingCon.Connection.State); } @@ -154,7 +154,7 @@ public void Test_GetManagedConnection_OngoingTransaction_WithCommitRollback(Data public void Test_ManagedTransaction_MultipleCancel(DatabaseType dbType) { var db = GetTestDatabase(dbType); - + IManagedConnection ongoingCon; //pretend that there is an ongoing transaction already using (ongoingCon = db.Server.BeginNewTransactedConnection()) @@ -195,7 +195,7 @@ public void Test_Clone_AutoOpenClose(DatabaseType dbType) Assert.AreEqual(ConnectionState.Open,con.Connection.State); } //now disposing the non clone - + //finally should close it Assert.AreEqual(ConnectionState.Closed,con.Connection.State); } diff --git a/Tests/FAnsiTests/Parameters/ParameterTests.cs b/Tests/FAnsiTests/Parameters/ParameterTests.cs index 32e672fc..ef705367 100644 --- a/Tests/FAnsiTests/Parameters/ParameterTests.cs +++ b/Tests/FAnsiTests/Parameters/ParameterTests.cs @@ -14,7 +14,7 @@ internal class ParameterTests:DatabaseTests public void Test_SupportsEmbeddedParameters_DeclarationOrThrow(DatabaseType type) { var syntax = ImplementationManager.GetImplementation(type).GetQuerySyntaxHelper(); - + if(syntax.SupportsEmbeddedParameters()) Assert.IsNotEmpty(syntax.GetParameterDeclaration("@bob",new DatabaseTypeRequest(typeof(string),10))); else @@ -27,9 +27,9 @@ public void Test_SupportsEmbeddedParameters_DeclarationOrThrow(DatabaseType type public void CreateParameter(DatabaseType type) { var syntax = ImplementationManager.GetImplementation(type).GetQuerySyntaxHelper(); - + var declaration = syntax.GetParameterDeclaration("@bob",new DatabaseTypeRequest(typeof(string),10)); - + StringAssert.Contains("@bob",declaration); } @@ -41,15 +41,15 @@ public void CreateParameter_AndUse(DatabaseType type) var db = GetTestDatabase(type); var dt = new DataTable(); - + dt.Columns.Add("FF"); dt.Rows.Add("armag"); dt.Rows.Add("geddon"); var tbl = db.CreateTable("ParameterUseTest",dt); - + var sb = new StringBuilder(); - + //declare the variable sb.AppendLine(tbl.GetQuerySyntaxHelper().GetParameterDeclaration("@bob",new DatabaseTypeRequest(typeof(string),10))); diff --git a/Tests/FAnsiTests/Query/QuerySyntaxHelperTests.cs b/Tests/FAnsiTests/Query/QuerySyntaxHelperTests.cs index d026cddf..24f73a49 100644 --- a/Tests/FAnsiTests/Query/QuerySyntaxHelperTests.cs +++ b/Tests/FAnsiTests/Query/QuerySyntaxHelperTests.cs @@ -243,7 +243,7 @@ public void Test_GetFullyQualifiedName_WhitespaceSchema(DatabaseType dbType) throw new ArgumentOutOfRangeException(nameof(dbType), dbType, null); } } - + } [Test] diff --git a/Tests/FAnsiTests/Server/ConnectionStringKeywordAccumulatorTests.cs b/Tests/FAnsiTests/Server/ConnectionStringKeywordAccumulatorTests.cs index 6784de26..33290b57 100644 --- a/Tests/FAnsiTests/Server/ConnectionStringKeywordAccumulatorTests.cs +++ b/Tests/FAnsiTests/Server/ConnectionStringKeywordAccumulatorTests.cs @@ -26,7 +26,7 @@ public void TestKeywords() { var acc = new ConnectionStringKeywordAccumulator(DatabaseType.MySql); acc.AddOrUpdateKeyword("Auto Enlist", "false", ConnectionStringKeywordPriority.SystemDefaultLow); - + var connectionStringBuilder = _helpers[DatabaseType.MySql].GetConnectionStringBuilder("localhost","mydb","frank","kangaro"); StringAssert.DoesNotContain("auto enlist",connectionStringBuilder.ConnectionString); @@ -72,7 +72,7 @@ public void TestKeywords_OverrideWithNovelButEquivalentKeyword_Ignored(DatabaseT acc.EnforceOptions(connectionStringBuilder); StringAssert.Contains($"{key1}={value1}", connectionStringBuilder.ConnectionString); - + //attempt override with low priority setting it to true but also use the alias acc.AddOrUpdateKeyword(equivalentKey,value2,ConnectionStringKeywordPriority.SystemDefaultLow); @@ -108,7 +108,7 @@ public void TestKeywords_OverrideWithHigherPriority_Respected(ConnectionStringKe public void TestKeywords_Invalid(DatabaseType databaseType) { var acc = new ConnectionStringKeywordAccumulator(databaseType); - + var ex = Assert.Throws(()=>acc.AddOrUpdateKeyword("FLIBBLE", "false", ConnectionStringKeywordPriority.SystemDefaultLow)); StringAssert.Contains("FLIBBLE",ex?.Message); diff --git a/Tests/FAnsiTests/Server/ServerTests.cs b/Tests/FAnsiTests/Server/ServerTests.cs index 016e35ba..cfe1f596 100644 --- a/Tests/FAnsiTests/Server/ServerTests.cs +++ b/Tests/FAnsiTests/Server/ServerTests.cs @@ -41,7 +41,7 @@ public void Server_RespondsWithinTime(DatabaseType type) [TestCaseSource(typeof(All),nameof(All.DatabaseTypes))] public void ServerHelper_GetCurrentDatabase_WhenNoneSpecified(DatabaseType type) { - var helper = ImplementationManager.GetImplementation(type).GetServerHelper(); + var helper = ImplementationManager.GetImplementation(type).GetServerHelper(); var builder = helper.GetConnectionStringBuilder(""); var server = new DiscoveredServer(builder); @@ -102,7 +102,7 @@ public void ServerHelper_ChangeDatabase(DatabaseType type,bool expectCaps) var server = new DiscoveredServer("loco","bob",type,"franko","wacky"); Assert.AreEqual("loco",server.Name); - + //this failure is already exposed by Server_Helper_GetConnectionStringBuilder Assert.AreEqual(expectCaps?"BOB":"bob",server.GetCurrentDatabase().GetRuntimeName()); @@ -112,7 +112,7 @@ public void ServerHelper_ChangeDatabase(DatabaseType type,bool expectCaps) server.ChangeDatabase("omgggg"); Assert.AreEqual(server.Name,"loco"); - + Assert.AreEqual(expectCaps?"OMGGGG":"omgggg",server.GetCurrentDatabase().GetRuntimeName()); Assert.AreEqual("franko",server.ExplicitUsernameIfAny); Assert.AreEqual("wacky",server.ExplicitPasswordIfAny); @@ -167,13 +167,13 @@ public void MoveData_BetweenServerTypes(DatabaseType from, DatabaseType to) dtToMove.Columns.Add("MyCol"); dtToMove.Columns.Add("DateOfBirth"); dtToMove.Columns.Add("Sanity"); - + dtToMove.Rows.Add("Frank",new DateTime(2001,01,01),"0.50"); dtToMove.Rows.Add("Tony", null,"9.99"); dtToMove.Rows.Add("Jez", new DateTime(2001, 05, 01),"100.0"); dtToMove.PrimaryKey = new[] {dtToMove.Columns["MyCol"]}; - + //Upload it to the first database var fromDb = GetTestDatabase(from); var tblFrom = fromDb.CreateTable("MyTable", dtToMove); @@ -186,7 +186,7 @@ public void MoveData_BetweenServerTypes(DatabaseType from, DatabaseType to) //Get the clone table sql adjusted to work on the other DBMS var sql = tblFrom.ScriptTableCreation(false, false, false, toTable); - + //open connection and run the code to create the new table using(var con = toDb.Server.GetConnection()) { diff --git a/Tests/FAnsiTests/Table/BadNamesTests.cs b/Tests/FAnsiTests/Table/BadNamesTests.cs index f3f65e68..6976e4ec 100644 --- a/Tests/FAnsiTests/Table/BadNamesTests.cs +++ b/Tests/FAnsiTests/Table/BadNamesTests.cs @@ -73,7 +73,7 @@ public void BadNames_DiscoverColumns(DatabaseType dbType) var tbl = SetupBadNamesTable(dbType); var cols = tbl.DiscoverColumns(); Assert.AreEqual(2,cols.Length); - + tbl.Drop(); } @@ -87,7 +87,7 @@ public void BadNames_AlterType(DatabaseType dbType) Assert.AreEqual(100,col.DataType.GetLengthIfString()); var varcharType = tbl.Database.Server.GetQuerySyntaxHelper().TypeTranslater.GetSQLDBTypeForCSharpType(new DatabaseTypeRequest(typeof(string),10)); - + // Can we ALTER its datatype Assert.AreEqual(100,col.DataType.GetLengthIfString()); col.DataType.AlterTypeTo(varcharType); @@ -109,7 +109,7 @@ public void BadNames_TopXColumn(DatabaseType dbType,bool noNulls) tbl.Insert(new Dictionary{{col,"ff" } }); tbl.Insert(new Dictionary{{col,"ff" } }); tbl.Insert(new Dictionary{{col,DBNull.Value } }); - + Assert.AreEqual(3,tbl.GetRowCount()); var topx = col.GetTopXSql(5,noNulls); @@ -142,9 +142,9 @@ public void BadNames_DropColumn(DatabaseType dbType) Assert.AreEqual(2,tbl.DiscoverColumns().Length); var col = tbl.DiscoverColumn(badColumnName); - + tbl.DropColumn(col); - + Assert.AreEqual(1,tbl.DiscoverColumns().Length); tbl.Drop(); @@ -164,7 +164,7 @@ public void BadNames_TopXTable(DatabaseType dbType) tbl.Insert(new Dictionary{{col,"ff" } }); tbl.Insert(new Dictionary{{col,"ff" } }); tbl.Insert(new Dictionary{{col,DBNull.Value } }); - + var topx = tbl.GetTopXSql(2); var svr = tbl.Database.Server; @@ -188,7 +188,7 @@ public void BadNames_DiscoverRelationships(DatabaseType dbType) var (badTableName, badColumnName, _) = GetBadNames(dbType); var db = GetTestDatabase(dbType); - + var tbl1 = db.CreateTable(badTableName,new[] { new DatabaseColumnRequest(badColumnName,new DatabaseTypeRequest(typeof(string),100)){IsPrimaryKey = true }, @@ -211,7 +211,7 @@ public void BadNames_DiscoverRelationships(DatabaseType dbType) Assert.AreEqual(pk, r.Keys.Single().Key); Assert.AreEqual(tbl2.DiscoverColumn($"{badColumnName}2"), r.Keys.Single().Value); - + tbl2.Drop(); tbl1.Drop(); } @@ -221,18 +221,18 @@ public void BadNames_BulkInsert(DatabaseType dbType) { var (_, badColumnName, badColumnName2) = GetBadNames(dbType); var tbl = SetupBadNamesTable(dbType); - + using var dt = new DataTable(); dt.Columns.Add(badColumnName); dt.Columns.Add(badColumnName2); - + dt.Rows.Add ("fff", 5); using(var insert = tbl.BeginBulkInsert()) { insert.Upload(dt); } - + Assert.AreEqual(1,dt.Rows.Count); tbl.Drop(); } @@ -243,7 +243,7 @@ public void BadNames_Rename(DatabaseType dbType) { var (badTableName, _, _) = GetBadNames(dbType); var tbl = SetupBadNamesTable(dbType); - + var nameBefore = tbl.GetFullyQualifiedName(); tbl.Rename(badTableName.Replace('F','A')); diff --git a/Tests/FAnsiTests/Table/BasicInsertTests.cs b/Tests/FAnsiTests/Table/BasicInsertTests.cs index fb735a85..ef26e311 100644 --- a/Tests/FAnsiTests/Table/BasicInsertTests.cs +++ b/Tests/FAnsiTests/Table/BasicInsertTests.cs @@ -35,7 +35,7 @@ public void CreateTableAndInsertAValue_ColumnOverload(DatabaseType type, object { new DatabaseColumnRequest("Name",new DatabaseTypeRequest(value.GetType(),100,new DecimalSize(5,5))) }); - + var nameCol = tbl.DiscoverColumn("Name"); tbl.Insert(new Dictionary diff --git a/Tests/FAnsiTests/Table/BigIntTests.cs b/Tests/FAnsiTests/Table/BigIntTests.cs index 46a16804..65f1cb10 100644 --- a/Tests/FAnsiTests/Table/BigIntTests.cs +++ b/Tests/FAnsiTests/Table/BigIntTests.cs @@ -28,7 +28,7 @@ public void TestBigInt_InsertDataTable(DatabaseType dbType) { var db = GetTestDatabase(dbType); var tbl = db.CreateTable("MyBigIntTable", new []{ new DatabaseColumnRequest("Col1","bigint",false)}); - + Assert.AreEqual(0,tbl.GetRowCount()); using var dt = new DataTable(); diff --git a/Tests/FAnsiTests/Table/BulkInsertTest.cs b/Tests/FAnsiTests/Table/BulkInsertTest.cs index 1873c0ee..e65ecff8 100644 --- a/Tests/FAnsiTests/Table/BulkInsertTest.cs +++ b/Tests/FAnsiTests/Table/BulkInsertTest.cs @@ -276,7 +276,7 @@ public void TestBulkInsert_AlterColumn_MidTransaction(DatabaseType type) transaction.ManagedTransaction.CommitAndCloseConnection(); } - + //We abandoned transaction so final rowcount should be 0 Assert.AreEqual(3, tbl.GetRowCount()); } @@ -337,7 +337,7 @@ public void UnmatchedColumnsBulkInsertTest_UsesDefaultValues_Passes(DatabaseType using var blk = tbl.BeginBulkInsert(); blk.Upload(dt); } - + var result = tbl.GetDataTable(); Assert.AreEqual(3, result.Columns.Count); @@ -452,8 +452,8 @@ public void UnmatchedColumnsBulkInsertTest_UsesDefaultValues_TwoLargeBatches_Pas sw.Stop(); TestContext.WriteLine($"Time taken:{sw.ElapsedMilliseconds}ms"); } - - + + var result = tbl.GetDataTable(); Assert.AreEqual(33, result.Columns.Count); Assert.AreEqual(numberOfRowsPerBatch*2, result.Rows.Count); @@ -461,9 +461,9 @@ public void UnmatchedColumnsBulkInsertTest_UsesDefaultValues_TwoLargeBatches_Pas Assert.NotNull(result.Rows[0]["frank"]); Assert.GreaterOrEqual(result.Rows[0]["frank"].ToString()?.Length, 5); //should be a date Assert.AreEqual("no", result.Rows[0]["peter"]); - + //while we have a ton of data in there let's test some cancellation operations - + //no primary key var bobCol = tbl.DiscoverColumn("bob"); Assert.IsFalse(tbl.DiscoverColumns().Any(c=>c.IsPrimaryKey)); @@ -494,7 +494,7 @@ public void UnmatchedColumnsBulkInsertTest_UsesDefaultValues_TwoLargeBatches_Pas tbl.GetDataTable(new DatabaseOperationArgs(con.ManagedTransaction,default,50000)); } - + //and there should not be any primary keys Assert.IsFalse(tbl.DiscoverColumns().Any(c=>c.IsPrimaryKey)); @@ -504,7 +504,7 @@ public void UnmatchedColumnsBulkInsertTest_UsesDefaultValues_TwoLargeBatches_Pas bobCol = tbl.DiscoverColumn("bob"); Assert.IsTrue(bobCol.IsPrimaryKey); - + tbl.Drop(); } @@ -560,7 +560,7 @@ public void AutoIncrementPrimaryKey_Passes(DatabaseType type) using var blk = tbl.BeginBulkInsert(); Assert.AreEqual(3, blk.Upload(dt)); } - + var result = tbl.GetDataTable(); @@ -594,7 +594,7 @@ public void TestBulkInsert_ScientificNotation(DatabaseType type) using var blk = tbl.BeginBulkInsert(); Assert.AreEqual(1, blk.Upload(dt)); } - + tbl.Insert(new Dictionary {{"num", "-4.10235746055587E-05"}}); @@ -631,7 +631,7 @@ public void TestBulkInsert_Unicode(DatabaseType dbType) table = db.CreateTable("GoGo", dt); } - + using (var dt2 = new DataTable()) { dt2.Columns.Add("yay"); @@ -640,14 +640,14 @@ public void TestBulkInsert_Unicode(DatabaseType dbType) using var insert = table.BeginBulkInsert(); insert.Upload(dt2); } - + table.Insert(new Dictionary {{"Yay", "مرحبا"}}); - + //now check that it all worked! var dtResult = table.GetDataTable(); Assert.AreEqual(3,dtResult.Rows.Count); - + //value fetched from database should match the one inserted Assert.Contains("乗 12345",dtResult.Rows.Cast().Select(r=>r[0]).ToArray()); Assert.Contains("你好",dtResult.Rows.Cast().Select(r=>r[0]).ToArray()); @@ -678,7 +678,7 @@ public void TestBulkInsert_SchemaTooNarrow_StringError(DatabaseType type) dt.Rows.Add(60,"Jamie"); dt.Rows.Add(30,"Frank"); dt.Rows.Add(11,"Toad"); - dt.Rows.Add(50, new string('A', 11)); + dt.Rows.Add(50, new string('A', 11)); dt.Rows.Add(100,"King"); dt.Rows.Add(10,"Frog"); @@ -712,7 +712,7 @@ public void TestBulkInsert_SchemaTooNarrow_StringError(DatabaseType type) [TestCaseSource(typeof(All),nameof(All.DatabaseTypes))] public void TestBulkInsert_ExplicitDateTimeFormats(DatabaseType type) { - + var db = GetTestDatabase(type); var tbl = db.CreateTable("MyDateTestTable", new[] @@ -733,7 +733,7 @@ public void TestBulkInsert_ExplicitDateTimeFormats(DatabaseType type) bulk.DateTimeDecider.Settings.ExplicitDateFormats = new []{"yyyyMMdd" }; bulk.Upload(dt); } - + var dtDown = tbl.GetDataTable(); Assert.AreEqual(new DateTime(2001,12,30),dtDown.Rows[0]["MyDate"]); } @@ -742,7 +742,7 @@ public void TestBulkInsert_ExplicitDateTimeFormats(DatabaseType type) public void TestBulkInsert_SchemaTooNarrow_DecimalError(DatabaseType type) { var db = GetTestDatabase(type); - + var tbl = db.CreateTable("MyBulkInsertTest", new[] { @@ -768,7 +768,7 @@ public void TestBulkInsert_SchemaTooNarrow_DecimalError(DatabaseType type) using var bulk = tbl.BeginBulkInsert(); bulk.Timeout = 30; - + Exception ex = null; try { @@ -807,7 +807,7 @@ public void TestBulkInsert_SchemaTooNarrow_DecimalError(DatabaseType type) public void TestBulkInsert_BadDecimalFormat_DecimalError(DatabaseType type) { var db = GetTestDatabase(type); - + var tbl = db.CreateTable("MyBulkInsertTest", new[] { @@ -833,7 +833,7 @@ public void TestBulkInsert_BadDecimalFormat_DecimalError(DatabaseType type) using var bulk = tbl.BeginBulkInsert(); bulk.Timeout = 30; - + Exception ex = null; try { diff --git a/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs b/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs index a9aa31a5..b64858c0 100644 --- a/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs +++ b/Tests/FAnsiTests/Table/CreatePrimaryKeyTest.cs @@ -34,14 +34,14 @@ public void TestBasicCase_KeysCreated(DatabaseType databaseType) tbl = db.CreateTable("Fish", dt); } - + var col = tbl.DiscoverColumn("A"); Assert.IsTrue(col.AllowNulls); Assert.IsFalse(col.IsPrimaryKey); tbl.CreatePrimaryKey(col); - + col = tbl.DiscoverColumn("A"); Assert.IsFalse(col.AllowNulls); @@ -69,7 +69,7 @@ public void TestBasicCase_FailHalfWay_SchemaUnchanged(DatabaseType databaseType) tbl = db.CreateTable("Fish", dt); } - + var colA = tbl.DiscoverColumn("A"); var colB = tbl.DiscoverColumn("B"); diff --git a/Tests/FAnsiTests/Table/CreateTableTests.cs b/Tests/FAnsiTests/Table/CreateTableTests.cs index b1280fd0..66875099 100644 --- a/Tests/FAnsiTests/Table/CreateTableTests.cs +++ b/Tests/FAnsiTests/Table/CreateTableTests.cs @@ -260,7 +260,7 @@ public void Test_DropColumn(DatabaseType dbType) new DatabaseColumnRequest("B", "int") }); - + Assert.AreEqual(2,tbl.GetDataTable().Columns.Count); tbl.DropColumn(tbl.DiscoverColumn("B")); @@ -301,15 +301,15 @@ public void Test_CreateTable_UnicodeStrings(DatabaseType type,string testString) var dt = new DataTable(); dt.Columns.Add("Yay"); - dt.Rows.Add(testString); + dt.Rows.Add(testString); var table = db.CreateTable("GoGo",dt); //find the table column created var col = table.DiscoverColumn("Yay"); - + //value fetched from database should match the one inserted - var dbValue = (string) table.GetDataTable().Rows[0][0]; + var dbValue = (string) table.GetDataTable().Rows[0][0]; Assert.AreEqual(testString,dbValue); table.Drop(); @@ -329,7 +329,7 @@ public void Test_CreateTable_UnicodeNames(DatabaseType dbType) var dt = new DataTable(); dt.Columns.Add("微笑"); - dt.Rows.Add("50"); + dt.Rows.Add("50"); var table = db.CreateTable("你好", dt); @@ -342,7 +342,7 @@ public void Test_CreateTable_UnicodeNames(DatabaseType dbType) Assert.AreEqual("微笑", col.GetRuntimeName()); table.Insert(new Dictionary {{ "微笑","10" } }); - + Assert.AreEqual(2, table.GetRowCount()); table.Insert(new Dictionary {{ col,"11" } }); @@ -355,7 +355,7 @@ public void Test_CreateTable_UnicodeNames(DatabaseType dbType) using(var bulk = table.BeginBulkInsert()) bulk.Upload(dt2); - + Assert.AreEqual(4,table.GetRowCount()); } @@ -379,7 +379,7 @@ public void Test_CreateTable_TF(DatabaseType dbType) var dt2 = tbl.GetDataTable(); Assert.Contains(true, dt2.Rows.Cast().Select(c => c[0]).ToArray()); Assert.Contains(false, dt2.Rows.Cast().Select(c => c[0]).ToArray()); - + tbl.Drop(); } @@ -430,7 +430,7 @@ public void Test_GetDoNotRetype_OnlyStringColumns() { using var dt = new DataTable(); dt.Columns.Add("C1",typeof(int)); - + dt.SetDoNotReType(true); //do not retype only applies when it is a string @@ -540,14 +540,14 @@ public void CreateTable_GuessSettings_InArgs_TF(DatabaseType dbType, bool treatA dt.Columns.Add("Hb"); dt.Rows.Add("T"); dt.Rows.Add("F"); - + var args = new CreateTableArgs(db,"Hb",null,dt,false); Assert.AreEqual(args.GuessSettings.CharCanBeBoolean, GuessSettingsFactory.Defaults.CharCanBeBoolean,"Default should match the static default"); Assert.IsFalse(args.GuessSettings == GuessSettingsFactory.Defaults,"Args should not be the same instance! otherwise we would unintentionally edit the defaults!"); //change the args settings args.GuessSettings.CharCanBeBoolean = treatAsBoolean; - + var tbl = db.CreateTable(args); var col = tbl.DiscoverColumn("Hb"); @@ -563,14 +563,14 @@ public void CreateTable_GuessSettings_ExplicitDateTimeFormat(DatabaseType dbType var dt = new DataTable(); dt.Columns.Add("DateCol"); dt.Rows.Add("013020"); - + var args = new CreateTableArgs(db,"Hb",null,dt,false); Assert.AreEqual(args.GuessSettings.ExplicitDateFormats, GuessSettingsFactory.Defaults.ExplicitDateFormats,"Default should match the static default"); Assert.IsFalse(args.GuessSettings == GuessSettingsFactory.Defaults,"Args should not be the same instance! otherwise we would unintentionally edit the defaults!"); //change the args settings to treat this date format args.GuessSettings.ExplicitDateFormats = useCustomDate ? new[]{"MMddyy" } :null; - + var tbl = db.CreateTable(args); var col = tbl.DiscoverColumn("DateCol"); diff --git a/Tests/FAnsiTests/Table/ForeignKeyTests.cs b/Tests/FAnsiTests/Table/ForeignKeyTests.cs index c25158ad..e83d846d 100644 --- a/Tests/FAnsiTests/Table/ForeignKeyTests.cs +++ b/Tests/FAnsiTests/Table/ForeignKeyTests.cs @@ -40,11 +40,11 @@ public void TestForeignKey_OneColumnKey(DatabaseType dbType, bool cascade) }, cascade); var discovered_fkCol = childTable.DiscoverColumn("Parent_Id"); - + var relationships = parentTable.DiscoverRelationships(); Assert.AreEqual(1,relationships.Length); - + Assert.AreEqual(parentTable,relationships[0].PrimaryKeyTable); Assert.AreEqual(childTable,relationships[0].ForeignKeyTable); Assert.AreEqual(1,relationships[0].Keys.Count); @@ -65,7 +65,7 @@ public void TestForeignKey_OneColumnKey(DatabaseType dbType, bool cascade) var sort2 = new RelationshipTopologicalSort(new[] { parentTable,childTable}); Assert.AreEqual(sort2.Order[0], parentTable); Assert.AreEqual(sort2.Order[1], childTable); - + childTable.Drop(); parentTable.Drop(); } @@ -121,7 +121,7 @@ public void TestForeignKey_TwoColumnKey(DatabaseType dbType) Assert.AreEqual(discovered_fkCol1, relationships[0].Keys[discovered_pkCol1]); Assert.AreEqual(discovered_fkCol2, relationships[0].Keys[discovered_pkCol2]); - + childTable.Drop(); parentTable.Drop(); } @@ -135,7 +135,7 @@ public void Test_ThreeTables_OnePrimary(DatabaseType dbType, bool useTransaction * ↖ * t3 */ - + var db = GetTestDatabase(dbType); var t2 = db.CreateTable("T2", new DatabaseColumnRequest[] @@ -147,7 +147,7 @@ public void Test_ThreeTables_OnePrimary(DatabaseType dbType, bool useTransaction { new("c3", new DatabaseTypeRequest(typeof(int))) }); - + var t1 = db.CreateTable("T1", new DatabaseColumnRequest[] { new("c1", new DatabaseTypeRequest(typeof(int))){IsPrimaryKey = true} @@ -173,8 +173,8 @@ public void Test_ThreeTables_OnePrimary(DatabaseType dbType, bool useTransaction constraint2 = t1.AddForeignKey(c3,c1,true,"FK_Lol"); } - - + + Assert.IsNotNull(constraint1); Assert.IsNotNull(constraint2); @@ -183,8 +183,8 @@ public void Test_ThreeTables_OnePrimary(DatabaseType dbType, bool useTransaction StringAssert.AreEqualIgnoringCase("FK_Lol",constraint2.Name); var sort2 = new RelationshipTopologicalSort(new[] { t1,t2,t3 }); - - + + Assert.Contains(t1, sort2.Order.ToList()); Assert.Contains(t2, sort2.Order.ToList()); Assert.Contains(t3, sort2.Order.ToList()); @@ -199,9 +199,9 @@ public void Test_ThreeTables_TwoPrimary(DatabaseType dbType) * ↙ * t2 */ - + var db = GetTestDatabase(dbType); - + var t1 = db.CreateTable("T1", new DatabaseColumnRequest[] { new("c1", new DatabaseTypeRequest(typeof(int))){IsPrimaryKey = true} @@ -228,7 +228,7 @@ public void Test_ThreeTables_TwoPrimary(DatabaseType dbType) Assert.IsNotNull(constraint2); var sort2 = new RelationshipTopologicalSort(new[] { t1,t2,t3 }); - + Assert.Contains(t1, sort2.Order.ToList()); Assert.Contains(t2, sort2.Order.ToList()); Assert.Contains(t3, sort2.Order.ToList()); @@ -245,7 +245,7 @@ public void Test_RelationshipTopologicalSort_UnrelatedTables() var sort = new RelationshipTopologicalSort(new[] {cops}); Assert.AreEqual(cops,sort.Order.Single()); - + var sort2 = new RelationshipTopologicalSort(new[] { cops,robbers,lawyers }); Assert.AreEqual(cops, sort2.Order[0]); Assert.AreEqual(robbers, sort2.Order[1]); diff --git a/Tests/FAnsiTests/Table/LongNamesTests.cs b/Tests/FAnsiTests/Table/LongNamesTests.cs index 3effe2a7..841d5115 100644 --- a/Tests/FAnsiTests/Table/LongNamesTests.cs +++ b/Tests/FAnsiTests/Table/LongNamesTests.cs @@ -38,12 +38,12 @@ public void Test_LongDatabaseNames_CreateAndReadBack(DatabaseType dbType) for (var i = 0; i < db.Server.GetQuerySyntaxHelper().MaximumDatabaseLength; i++) sb.Append('a'); - var db2 = db.Server.ExpectDatabase(sb.ToString()); + var db2 = db.Server.ExpectDatabase(sb.ToString()); db2.Create(true); - + Assert.IsTrue(db2.Exists()); StringAssert.AreEqualIgnoringCase(sb.ToString(),db2.GetRuntimeName()); - + db2.Drop(); } } \ No newline at end of file diff --git a/Tests/FAnsiTests/Table/TableTypeTests.cs b/Tests/FAnsiTests/Table/TableTypeTests.cs index 61e07ab7..c5d8409f 100644 --- a/Tests/FAnsiTests/Table/TableTypeTests.cs +++ b/Tests/FAnsiTests/Table/TableTypeTests.cs @@ -23,7 +23,7 @@ public void CreateView(DatabaseType dbType) Assert.AreEqual(TableType.Table, tbl.TableType); var viewName = "MyView"; - + var syntax = tbl.GetQuerySyntaxHelper(); //oracle likes to create stuff under your user account not the database your actually using! @@ -31,7 +31,7 @@ public void CreateView(DatabaseType dbType) { viewName = syntax.EnsureFullyQualified(tbl.Database.GetRuntimeName(),null,"MyView"); } - + var sql = string.Format(@"CREATE VIEW {0} AS SELECT {2} FROM {1}", diff --git a/Tests/FAnsiTests/Table/TableValuedFunctionTests.cs b/Tests/FAnsiTests/Table/TableValuedFunctionTests.cs index 574bb4b8..dea244e7 100644 --- a/Tests/FAnsiTests/Table/TableValuedFunctionTests.cs +++ b/Tests/FAnsiTests/Table/TableValuedFunctionTests.cs @@ -70,6 +70,6 @@ Name varchar(50) Assert.IsFalse(tvf.Exists()); - + } } \ No newline at end of file diff --git a/Tests/FAnsiTests/Table/TestRename.cs b/Tests/FAnsiTests/Table/TestRename.cs index 959700af..1d16b91f 100644 --- a/Tests/FAnsiTests/Table/TestRename.cs +++ b/Tests/FAnsiTests/Table/TestRename.cs @@ -11,16 +11,16 @@ internal class TestRename:DatabaseTests public void TestRenamingTable(DatabaseType type) { var db = GetTestDatabase(type); - + var tbl = db.CreateTable("MyTable",new []{new DatabaseColumnRequest("Age",new DatabaseTypeRequest(typeof(int)) )}); - + Assert.IsTrue(tbl.Exists()); - + var tbl2 = db.ExpectTable("MYTABLE2"); Assert.IsFalse(tbl2.Exists()); tbl.Rename("MYTABLE2"); - + Assert.IsTrue(tbl.Exists()); Assert.IsTrue(tbl2.Exists()); diff --git a/Tests/FAnsiTests/TypeTranslation/DatabaseTypeRequestTests.cs b/Tests/FAnsiTests/TypeTranslation/DatabaseTypeRequestTests.cs index 61ed9a76..7ab381cf 100644 --- a/Tests/FAnsiTests/TypeTranslation/DatabaseTypeRequestTests.cs +++ b/Tests/FAnsiTests/TypeTranslation/DatabaseTypeRequestTests.cs @@ -8,7 +8,7 @@ internal class DatabaseTypeRequestTests [Test] public void Test_Max_WithUnicode() { - + var max = DatabaseTypeRequest.Max( new DatabaseTypeRequest(typeof(string), 1){Unicode = true}, new DatabaseTypeRequest(typeof(string), 2) diff --git a/Tests/FAnsiTests/TypeTranslation/DatatypeComputerTests.cs b/Tests/FAnsiTests/TypeTranslation/DatatypeComputerTests.cs index c0f2c767..1866ba55 100644 --- a/Tests/FAnsiTests/TypeTranslation/DatatypeComputerTests.cs +++ b/Tests/FAnsiTests/TypeTranslation/DatatypeComputerTests.cs @@ -420,13 +420,13 @@ public void TestGuesser_TrailingZeroesFallbackToString() { var t = new Guesser(); t.AdjustToCompensateForValue("-111.000"); - + Assert.AreEqual(typeof(int), t.Guess.CSharpType); Assert.AreEqual(3, t.Guess.Size.NumbersBeforeDecimalPlace); //even though they are trailing zeroes we still need this much space... there must be a reason why they are there right? (also makes it easier to go to string later if needed eh!) - Assert.AreEqual(0, t.Guess.Size.NumbersAfterDecimalPlace); - + Assert.AreEqual(0, t.Guess.Size.NumbersAfterDecimalPlace); + t.AdjustToCompensateForValue("P"); Assert.AreEqual(typeof(string), t.Guess.CSharpType); @@ -590,7 +590,7 @@ public void TestGuesser_HardTypeDoubles() public void TestGuesser_FallbackOntoStringLength(string legitType, Type expectedLegitType, string str, int expectedLength) { var t = new Guesser(); - + //give it the legit hard typed value e.g. a date t.AdjustToCompensateForValue(legitType); Assert.AreEqual(expectedLegitType, t.Guess.CSharpType); @@ -601,7 +601,7 @@ public void TestGuesser_FallbackOntoStringLength(string legitType, Type expected //the length should be the max of the length of the legit string and the string str Assert.AreEqual(expectedLength, t.Guess.Width); - + } [Test] @@ -624,7 +624,7 @@ public void TestGuesser_ScientificNotation() var t = new Guesser(); t.AdjustToCompensateForValue(val); Assert.AreEqual(typeof(decimal), t.Guess.CSharpType); - + Assert.AreEqual(0, t.Guess.Size.NumbersBeforeDecimalPlace); Assert.AreEqual(19, t.Guess.Size.NumbersAfterDecimalPlace); } @@ -636,7 +636,7 @@ public void Test_NonAscii_CharacterLength(string word) { var t = new Guesser(); t.AdjustToCompensateForValue(word); - + //computer should have picked up that it needs unicode Assert.IsTrue(t.Guess.Unicode); diff --git a/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs b/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs index 5dbde895..4225f1e1 100644 --- a/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs +++ b/Tests/FAnsiTests/TypeTranslation/TypeTranslaterTests.cs @@ -250,7 +250,7 @@ private void RunKnownTypeTest(DatabaseType type, string sqlType, Type expectedTy finally { tbl.Drop(); - } + } } //Data types not supported by FAnsi