From c66aca2d411addd84124ff116425ace0bde2a9c8 Mon Sep 17 00:00:00 2001 From: Shannon Date: Mon, 17 Mar 2014 11:24:01 +1100 Subject: [PATCH] Adds migration to rename the index umbracoUserLogins_Index to IX_umbracoUserLogins_Index so that it follows standards, fixes unit test --- src/Umbraco.Core/Models/Rdbms/UserLoginDto.cs | 2 +- .../Migrations/Initial/DatabaseSchemaCreation.cs | 6 ++++-- .../AdditionalIndexesAndKeys.cs | 11 +++++++++++ src/Umbraco.Core/StringExtensions.cs | 2 +- 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Models/Rdbms/UserLoginDto.cs b/src/Umbraco.Core/Models/Rdbms/UserLoginDto.cs index 3315d1f7c1..6826377856 100644 --- a/src/Umbraco.Core/Models/Rdbms/UserLoginDto.cs +++ b/src/Umbraco.Core/Models/Rdbms/UserLoginDto.cs @@ -9,7 +9,7 @@ namespace Umbraco.Core.Models.Rdbms internal class UserLoginDto { [Column("contextID")] - [Index(IndexTypes.Clustered, Name = "umbracoUserLogins_Index")] + [Index(IndexTypes.Clustered, Name = "IX_umbracoUserLogins_Index")] public Guid ContextId { get; set; } [Column("userID")] diff --git a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs index 0220e146b0..ee10f20730 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Initial/DatabaseSchemaCreation.cs @@ -172,7 +172,8 @@ namespace Umbraco.Core.Persistence.Migrations.Initial x.Item3.InvariantStartsWith("FK_") == false && x.Item3.InvariantStartsWith("PK_") == false && x.Item3.InvariantStartsWith("IX_") == false).Select(x => x.Item3).ToList(); var foreignKeysInSchema = result.TableDefinitions.SelectMany(x => x.ForeignKeys.Select(y => y.Name)).ToList(); - var primaryKeysInSchema = result.TableDefinitions.SelectMany(x => x.Columns.Select(y => y.PrimaryKeyName)).ToList(); + var primaryKeysInSchema = result.TableDefinitions.SelectMany(x => x.Columns.Select(y => y.PrimaryKeyName)) + .Where(x => x.IsNullOrWhiteSpace() == false).ToList(); //Add valid and invalid foreign key differences to the result object foreach (var unknown in unknownConstraintsInDatabase) @@ -284,7 +285,8 @@ namespace Umbraco.Core.Persistence.Migrations.Initial private void ValidateDbIndexes(DatabaseSchemaResult result) { //These are just column indexes NOT constraints or Keys - var colIndexesInDatabase = result.DbIndexDefinitions.Where(x => x.IndexName.InvariantStartsWith("IX_")).Select(x => x.IndexName).ToList(); + //var colIndexesInDatabase = result.DbIndexDefinitions.Where(x => x.IndexName.InvariantStartsWith("IX_")).Select(x => x.IndexName).ToList(); + var colIndexesInDatabase = result.DbIndexDefinitions.Select(x => x.IndexName).ToList(); var indexesInSchema = result.TableDefinitions.SelectMany(x => x.Indexes.Select(y => y.Name)).ToList(); //Add valid and invalid index differences to the result object diff --git a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs index ecac1db9e7..cecce85d42 100644 --- a/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs +++ b/src/Umbraco.Core/Persistence/Migrations/Upgrades/TargetVersionSixTwoZero/AdditionalIndexesAndKeys.cs @@ -40,6 +40,17 @@ namespace Umbraco.Core.Persistence.Migrations.Upgrades.TargetVersionSixTwoZero { Create.Index("IX_cmsDocument_newest").OnTable("cmsDocument").OnColumn("newest").Ascending().WithOptions().NonClustered(); } + + //we want to drop the umbracoUserLogins_Index index since it is named incorrectly and then re-create it so + // it follows the standard naming convention + if (dbIndexes.Any(x => x.IndexName.InvariantEquals("umbracoUserLogins_Index"))) + { + Delete.Index("umbracoUserLogins_Index").OnTable("umbracoUserLogins"); + } + if (dbIndexes.Any(x => x.IndexName.InvariantEquals("IX_umbracoUserLogins_Index")) == false) + { + Create.Index("IX_umbracoUserLogins_Index").OnTable("umbracoUserLogins").OnColumn("contextID").Ascending().WithOptions().Clustered(); + } } public override void Down() diff --git a/src/Umbraco.Core/StringExtensions.cs b/src/Umbraco.Core/StringExtensions.cs index d14dbc7c6b..ac5e8b0ec6 100644 --- a/src/Umbraco.Core/StringExtensions.cs +++ b/src/Umbraco.Core/StringExtensions.cs @@ -477,7 +477,7 @@ namespace Umbraco.Core public static bool InvariantContains(this IEnumerable compare, string compareTo) { - return compare.Contains(compareTo, new DelegateEqualityComparer((source, dest) => source.Equals(dest, StringComparison.InvariantCultureIgnoreCase), x => x.GetHashCode())); + return compare.Contains(compareTo, StringComparer.InvariantCultureIgnoreCase); } ///