Пример #1
0
        private static void AddDefinedValues(PropertyListBuilder builder, IEnumerable <UnitedValueDefinition> definedValues)
        {
            builder.Begin(Resources.ShowPlanGroupDefinedValues);

            foreach (UnitedValueDefinition definedValue in definedValues)
            {
                builder.Begin(definedValue.Target.Name);

                StringBuilder sb = new StringBuilder();
                foreach (RowBufferEntry dependendValue in definedValue.DependendEntries)
                {
                    builder.Begin();
                    builder.SetGroupValue(dependendValue.Name);
                    WriteRowBufferEntry(builder, dependendValue);
                    builder.End();

                    if (sb.Length > 0)
                    {
                        sb.Append("; ");
                    }
                    sb.Append(dependendValue.Name);
                }

                builder.SetGroupValue(sb.ToString());
                builder.End();
            }

            builder.End();
        }
Пример #2
0
        public override AlgebraNode VisitResultAlgebraNode(ResultAlgebraNode node)
        {
            ShowPlanElement inputElement = ConvertNode(node.Input);

            PropertyListBuilder propertyListBuilder = new PropertyListBuilder();

            propertyListBuilder.Begin(Resources.ShowPlanGroupOutputList);
            for (int i = 0; i < node.OutputList.Length; i++)
            {
                propertyListBuilder.Begin();
                propertyListBuilder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} AS {1}", node.OutputList[i].Name, node.ColumnNames[i]));
                WriteRowBufferEntry(propertyListBuilder, node.OutputList[i]);
                propertyListBuilder.Write(Resources.ShowPlanKeyOutputName, node.ColumnNames[i]);
                propertyListBuilder.End();
            }
            propertyListBuilder.End();

            IList <ShowPlanProperty> properties = propertyListBuilder.ToList();

            ShowPlanElement element = new ShowPlanElement(ShowPlanOperator.Select, properties, inputElement);

            _currentElement = element;

            return(node);
        }
Пример #3
0
 private static void AddRowBufferEntries(PropertyListBuilder builder, string groupName, IEnumerable <RowBufferEntry> rowBufferColumns)
 {
     builder.Begin(groupName);
     foreach (RowBufferEntry rowBufferColumn in rowBufferColumns)
     {
         builder.Begin();
         builder.SetGroupValue(rowBufferColumn.Name);
         WriteRowBufferEntry(builder, rowBufferColumn);
         builder.End();
     }
     builder.End();
 }
Пример #4
0
        private static void AddDefinedValues(PropertyListBuilder builder, IEnumerable <ComputedValueDefinition> definedValues)
        {
            builder.Begin(Resources.ShowPlanGroupDefinedValues);

            foreach (ComputedValueDefinition definedValue in definedValues)
            {
                string sourceExpression = definedValue.Expression.GenerateSource();
                builder.Begin();
                builder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} = {1}", definedValue.Target.Name, sourceExpression));
                builder.Write(Resources.ShowPlanKeyTarget, definedValue.Target.Name);
                builder.Write(Resources.ShowPlanKeyDataType, definedValue.Target.DataType.Name);
                builder.Write(Resources.ShowPlanKeySource, sourceExpression);
                builder.End();
            }
            builder.End();
        }
Пример #5
0
 private static void WriteRowBufferEntry(PropertyListBuilder builder, string groupName, RowBufferEntry rowBufferColumn)
 {
     builder.Begin(groupName);
     builder.SetGroupValue(rowBufferColumn.Name);
     WriteRowBufferEntry(builder, rowBufferColumn);
     builder.End();
 }
Пример #6
0
        public override AlgebraNode VisitSortAlgebraNode(SortAlgebraNode node)
        {
            ShowPlanElement inputElement = ConvertNode(node.Input);

            PropertyListBuilder propertyListBuilder = new PropertyListBuilder();

            AddRowBufferEntries(propertyListBuilder, Resources.ShowPlanGroupOutputList, node.OutputList);
            AddStatistics(propertyListBuilder, node.StatisticsIterator);

            if (node.Distinct)
            {
                propertyListBuilder.Write(Resources.ShowPlanKeyLogicalOperator, Resources.ShowPlanLogicalOperatorDistinctSort);
            }
            else
            {
                propertyListBuilder.Write(Resources.ShowPlanKeyLogicalOperator, Resources.ShowPlanLogicalOperatorSort);
            }

            propertyListBuilder.Begin(Resources.ShowPlanGroupOrderBy);
            for (int i = 0; i < node.SortEntries.Length; i++)
            {
                string sortOrder = SortOrderToString(node.SortOrders[i]);

                propertyListBuilder.Begin();
                propertyListBuilder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} {1}", node.SortEntries[i].Name, sortOrder));
                WriteRowBufferEntry(propertyListBuilder, node.SortEntries[i]);
                propertyListBuilder.Write(Resources.ShowPlanKeyOrder, sortOrder);
                propertyListBuilder.End();
            }
            propertyListBuilder.End();

            IList <ShowPlanProperty> properties = propertyListBuilder.ToList();

            ShowPlanElement element = new ShowPlanElement(ShowPlanOperator.Sort, properties, inputElement);

            _currentElement = element;

            return(node);
        }
Пример #7
0
        private static void AddStatistics(PropertyListBuilder builder, StatisticsIterator iterator)
        {
            if (iterator != null)
            {
                int openCount   = iterator.OpenCount;
                int rowCount    = iterator.RowCount;
                int avgRowCount = (openCount == 0) ? 0 : (int)Math.Round(rowCount / (double)openCount, 0);

                builder.Begin(Resources.ShowPlanGroupStatistics);
                builder.Write(Resources.ShowPlanKeyStatisticsOpenCount, openCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.Write(Resources.ShowPlanKeyStatisticsRowCount, rowCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.Write(Resources.ShowPlanKeyStatisticsAverageRowCount, avgRowCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.End();
            }
        }
Пример #8
0
        private static void AddStatistics(PropertyListBuilder builder, StatisticsIterator iterator)
        {
            if (iterator != null)
            {
                int openCount = iterator.OpenCount;
                int rowCount = iterator.RowCount;
                int avgRowCount = (openCount == 0) ? 0 : (int) Math.Round(rowCount /(double)openCount, 0);

                builder.Begin(Resources.ShowPlanGroupStatistics);
                builder.Write(Resources.ShowPlanKeyStatisticsOpenCount, openCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.Write(Resources.ShowPlanKeyStatisticsRowCount, rowCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.Write(Resources.ShowPlanKeyStatisticsAverageRowCount, avgRowCount.ToString("N0", CultureInfo.InvariantCulture));
                builder.End();
            }
        }
Пример #9
0
 private static void WriteRowBufferEntry(PropertyListBuilder builder, string groupName, RowBufferEntry rowBufferColumn)
 {
     builder.Begin(groupName);
     builder.SetGroupValue(rowBufferColumn.Name);
     WriteRowBufferEntry(builder, rowBufferColumn);
     builder.End();
 }
Пример #10
0
 private static void AddRowBufferEntries(PropertyListBuilder builder, string groupName, IEnumerable<RowBufferEntry> rowBufferColumns)
 {
     builder.Begin(groupName);
     foreach (RowBufferEntry rowBufferColumn in rowBufferColumns)
     {
         builder.Begin();
         builder.SetGroupValue(rowBufferColumn.Name);
         WriteRowBufferEntry(builder, rowBufferColumn);
         builder.End();
     }
     builder.End();
 }
Пример #11
0
        private static void AddDefinedValues(PropertyListBuilder builder, IEnumerable<AggregatedValueDefinition> definedValues)
        {
            builder.Begin(Resources.ShowPlanGroupDefinedValues);

            foreach (AggregatedValueDefinition definedValue in definedValues)
            {
                string source = String.Format(CultureInfo.InvariantCulture,
                                              "{0}({1})",
                                              definedValue.Aggregate.Name,
                                              definedValue.Argument.GenerateSource());

                builder.Begin();
                builder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} = {1}", definedValue.Target.Name, source));
                builder.Write(Resources.ShowPlanKeyTarget, definedValue.Target.Name);
                builder.Write(Resources.ShowPlanKeyDataType, definedValue.Target.DataType.Name);
                builder.Write(Resources.ShowPlanKeySource, source);
                builder.End();
            }

            builder.End();
        }
Пример #12
0
        private static void AddDefinedValues(PropertyListBuilder builder, IEnumerable<UnitedValueDefinition> definedValues)
        {
            builder.Begin(Resources.ShowPlanGroupDefinedValues);

            foreach (UnitedValueDefinition definedValue in definedValues)
            {
                builder.Begin(definedValue.Target.Name);

                StringBuilder sb = new StringBuilder();
                foreach (RowBufferEntry dependendValue in definedValue.DependendEntries)
                {
                    builder.Begin();
                    builder.SetGroupValue(dependendValue.Name);
                    WriteRowBufferEntry(builder, dependendValue);
                    builder.End();

                    if (sb.Length > 0)
                        sb.Append("; ");
                    sb.Append(dependendValue.Name);
                }

                builder.SetGroupValue(sb.ToString());
                builder.End();
            }

            builder.End();
        }
Пример #13
0
        public override AlgebraNode VisitSortAlgebraNode(SortAlgebraNode node)
        {
            ShowPlanElement inputElement = ConvertNode(node.Input);

            PropertyListBuilder propertyListBuilder = new PropertyListBuilder();
            AddRowBufferEntries(propertyListBuilder, Resources.ShowPlanGroupOutputList, node.OutputList);
            AddStatistics(propertyListBuilder, node.StatisticsIterator);

            if (node.Distinct)
                propertyListBuilder.Write(Resources.ShowPlanKeyLogicalOperator, Resources.ShowPlanLogicalOperatorDistinctSort);
            else
                propertyListBuilder.Write(Resources.ShowPlanKeyLogicalOperator, Resources.ShowPlanLogicalOperatorSort);

            propertyListBuilder.Begin(Resources.ShowPlanGroupOrderBy);
            for (int i = 0; i < node.SortEntries.Length; i++)
            {
                string sortOrder = SortOrderToString(node.SortOrders[i]);

                propertyListBuilder.Begin();
                propertyListBuilder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} {1}", node.SortEntries[i].Name, sortOrder));
                WriteRowBufferEntry(propertyListBuilder, node.SortEntries[i]);
                propertyListBuilder.Write(Resources.ShowPlanKeyOrder, sortOrder);
                propertyListBuilder.End();
            }
            propertyListBuilder.End();

            IList<ShowPlanProperty> properties = propertyListBuilder.ToList();

            ShowPlanElement element = new ShowPlanElement(ShowPlanOperator.Sort, properties, inputElement);
            _currentElement = element;

            return node;
        }
Пример #14
0
        public override AlgebraNode VisitResultAlgebraNode(ResultAlgebraNode node)
        {
            ShowPlanElement inputElement = ConvertNode(node.Input);

            PropertyListBuilder propertyListBuilder = new PropertyListBuilder();
            propertyListBuilder.Begin(Resources.ShowPlanGroupOutputList);
            for (int i = 0; i < node.OutputList.Length; i++)
            {
                propertyListBuilder.Begin();
                propertyListBuilder.SetGroupValue(String.Format(CultureInfo.InvariantCulture, "{0} AS {1}", node.OutputList[i].Name, node.ColumnNames[i]));
                WriteRowBufferEntry(propertyListBuilder, node.OutputList[i]);
                propertyListBuilder.Write(Resources.ShowPlanKeyOutputName, node.ColumnNames[i]);
                propertyListBuilder.End();
            }
            propertyListBuilder.End();

            IList<ShowPlanProperty> properties = propertyListBuilder.ToList();

            ShowPlanElement element = new ShowPlanElement(ShowPlanOperator.Select, properties, inputElement);
            _currentElement = element;

            return node;
        }