/// <summary> /// Returns list of indexes that should be added. /// </summary> private static IList <PgIndex> GetNewIndexes([NullGuard.AllowNull] PgTable oldTable, [NullGuard.AllowNull] PgTable newTable) { IList <PgIndex> indexes = new List <PgIndex>(); if (newTable == null) { return(indexes); } if (oldTable == null) { foreach (PgIndex index in newTable.Indexes) { indexes.Add(index); } } else { foreach (PgIndex index in newTable.Indexes) { if (!oldTable.ContainsIndex(index.Name) || !oldTable.GetIndex(index.Name).Equals(index)) { indexes.Add(index); } } } return(indexes); }
private static IEnumerable <PgIndex> GetDropIndexes(PgTable oldTable, PgTable newTable) { var list = new List <PgIndex>(); if (newTable == null || oldTable == null) { return(list); } list.AddRange(oldTable.GetIndexes() .Where(i => !newTable.ContainsIndex(i.Name) || !newTable.GetIndex(i.Name).Equals(i))); return(list); }
/// <summary> /// Returns list of indexes that should be dropped. /// </summary> private static IList <PgIndex> GetDropIndexes([NullGuard.AllowNull] PgTable oldTable, [NullGuard.AllowNull] PgTable newTable) { // todo db Teamwork Indexes that are depending on a removed field should not be added // to drop because they are already removed. IList <PgIndex> list = new List <PgIndex>(); if (newTable != null && oldTable != null) { foreach (PgIndex index in oldTable.Indexes) { if (!newTable.ContainsIndex(index.Name) || !newTable.GetIndex(index.Name).Equals(index)) { list.Add(index); } } } return(list); }