/// <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);
        }
Esempio n. 2
0
        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);
        }