Пример #1
0
        private void UpdateFixAction(IndexOp op)
        {
            List <Index> indexes = (List <Index>)view.DataSource;

            for (int i = 0; i < view.DataRowCount; i++)
            {
                if (view.IsDataRow(i))
                {
                    var   rowHandle = view.GetDataSourceRowIndex(i);
                    Index index     = indexes[rowHandle];
                    if (index == null)
                    {
                        continue;
                    }

                    if (op == IndexOp.REBUILD_NONE && index.DataCompression == DataCompression.NONE)
                    {
                        index.FixType = IndexOp.REBUILD;
                    }
                    else
                    {
                        List <IndexOp> ops = GetIndexOperations(index);
                        if (ops.Contains(op))
                        {
                            index.FixType = op;
                        }
                    }
                }
            }

            view.RefreshData();
        }
Пример #2
0
        private void ChangeFixAction(object sender, EventArgs e)
        {
            DXMenuItem mi = (DXMenuItem)sender;
            IndexOp    op = Utils.GetValueFromDescription <IndexOp>(mi.Caption);

            UpdateFixAction(op);
        }
Пример #3
0
        private void AddToCommitOps(long operationId, IndexOp <long> op)
        {
            IList <IndexOp <long> > ops;

            if (!opsToCommit.TryGetValue(operationId, out ops))
            {
                ops = new List <IndexOp <long> >();
                opsToCommit.Add(operationId, ops);
            }
            ops.Add(op);
        }
Пример #4
0
        private static IndexOp CorrectIndexOp(IndexOp op, Index ix)
        {
            if (op == IndexOp.NO_ACTION || op == IndexOp.IGNORE)
            {
                return(IndexOp.SKIP);
            }

            if (ix.IndexType == IndexType.MISSING_INDEX)
            {
                return(IndexOp.CREATE_INDEX);
            }

            if (op == IndexOp.REORGANIZE && (ix.IsAllowReorganize || ix.IsColumnstore))
            {
                return(IndexOp.REORGANIZE);
            }

            if (op == IndexOp.REBUILD && !ix.IsColumnstore && ix.IsAllowCompression)
            {
                if (Settings.Options.DataCompression == DataCompression.NONE && ix.DataCompression != DataCompression.NONE)
                {
                    return(IndexOp.REBUILD_NONE);
                }

                if (Settings.Options.DataCompression == DataCompression.ROW && ix.DataCompression != DataCompression.ROW)
                {
                    return(IndexOp.REBUILD_ROW);
                }

                if (Settings.Options.DataCompression == DataCompression.PAGE && ix.DataCompression != DataCompression.PAGE)
                {
                    return(IndexOp.REBUILD_PAGE);
                }
            }

            if (op == IndexOp.UPDATE_STATISTICS_FULL || op == IndexOp.UPDATE_STATISTICS_RESAMPLE || op == IndexOp.UPDATE_STATISTICS_SAMPLE)
            {
                if (!ix.IsPartitioned && (ix.IndexType == IndexType.CLUSTERED || ix.IndexType == IndexType.NONCLUSTERED))
                {
                    return(op);
                }
            }

            return(Settings.Options.Online && ix.IsAllowOnlineRebuild && (op == IndexOp.REBUILD || op == IndexOp.REORGANIZE)
                ? IndexOp.REBUILD_ONLINE
                : IndexOp.REBUILD);
        }
Пример #5
0
 public void WriteTo(IndexOp <T> value, System.IO.Stream stream)
 {
 }