Skip to content

Commit a9ce162

Browse files
authored
#2860 sp_BlitzIndex columnstore partition ranges
Removed IIF for SQL Server 2008 compatibility, moved the partition ranges column to be right after the partition number.
1 parent b076ccc commit a9ce162

1 file changed

Lines changed: 15 additions & 10 deletions

File tree

sp_BlitzIndex.sql

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2777,8 +2777,11 @@ BEGIN
27772777
SET @ColumnList = LEFT(@ColumnList, LEN(@ColumnList) - 1);
27782778

27792779
SET @dsql = N'USE ' + QUOTENAME(@DatabaseName) + N';
2780-
SELECT partition_number, row_group_id, total_rows, deleted_rows, ' + @ColumnList + IIF(@ShowPartitionRanges = 1, N',
2781-
COALESCE(range_start_op + '' '' + range_start + '' '', '''') + COALESCE(range_end_op + '' '' + range_end, '''') AS partition_range
2780+
SELECT partition_number, '
2781+
+ CASE WHEN @ShowPartitionRanges = 1 THEN N' COALESCE(range_start_op + '' '' + range_start + '' '', '''') + COALESCE(range_end_op + '' '' + range_end, '''') AS partition_range, ' ELSE N' ' END
2782+
+ N' row_group_id, total_rows, deleted_rows, '
2783+
+ @ColumnList
2784+
+ CASE WHEN @ShowPartitionRanges = 1 THEN N'
27822785
FROM (
27832786
SELECT column_name, partition_number, row_group_id, total_rows, deleted_rows, details,
27842787
range_start_op,
@@ -2788,10 +2791,11 @@ BEGIN
27882791
range_end_op,
27892792
CASE
27902793
WHEN format_type IS NULL THEN CAST(range_end_value AS NVARCHAR(4000))
2791-
ELSE CONVERT(NVARCHAR(4000), range_end_value, format_type) END range_end', '') + N'
2794+
ELSE CONVERT(NVARCHAR(4000), range_end_value, format_type) END range_end' ELSE N' ' END + N'
27922795
FROM (
27932796
SELECT c.name AS column_name, p.partition_number, rg.row_group_id, rg.total_rows, rg.deleted_rows,
2794-
details = CAST(seg.min_data_id AS VARCHAR(20)) + '' to '' + CAST(seg.max_data_id AS VARCHAR(20)) + '', '' + CAST(CAST((seg.on_disk_size / 1024.0 / 1024) AS DECIMAL(18,0)) AS VARCHAR(20)) + '' MB''' + IIF(@ShowPartitionRanges = 1, N',
2797+
details = CAST(seg.min_data_id AS VARCHAR(20)) + '' to '' + CAST(seg.max_data_id AS VARCHAR(20)) + '', '' + CAST(CAST((seg.on_disk_size / 1024.0 / 1024) AS DECIMAL(18,0)) AS VARCHAR(20)) + '' MB'''
2798+
+ CASE WHEN @ShowPartitionRanges = 1 THEN N',
27952799
CASE
27962800
WHEN pp.system_type_id IN (40, 41, 42, 43, 58, 61) THEN 126
27972801
WHEN pp.system_type_id IN (59, 62) THEN 3
@@ -2800,20 +2804,21 @@ BEGIN
28002804
CASE WHEN pf.boundary_value_on_right = 0 THEN ''>'' ELSE ''>='' END range_start_op,
28012805
prvs.value range_start_value,
28022806
CASE WHEN pf.boundary_value_on_right = 0 THEN ''<='' ELSE ''<'' END range_end_op,
2803-
prve.value range_end_value', '') + N'
2807+
prve.value range_end_value ' ELSE N' ' END + N'
28042808
FROM ' + QUOTENAME(@DatabaseName) + N'.sys.column_store_row_groups rg
28052809
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.columns c ON rg.object_id = c.object_id
28062810
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partitions p ON rg.object_id = p.object_id AND rg.partition_number = p.partition_number
2807-
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.index_columns ic on ic.column_id = c.column_id AND ic.object_id = c.object_id AND ic.index_id = p.index_id' + IIF(@ShowPartitionRanges = 1, N'
2811+
INNER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.index_columns ic on ic.column_id = c.column_id AND ic.object_id = c.object_id AND ic.index_id = p.index_id ' + CASE WHEN @ShowPartitionRanges = 1 THEN N'
28082812
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.indexes i ON i.object_id = rg.object_id AND i.index_id = rg.index_id
28092813
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_schemes ps ON ps.data_space_id = i.data_space_id
28102814
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_functions pf ON pf.function_id = ps.function_id
28112815
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_parameters pp ON pp.function_id = pf.function_id
28122816
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_range_values prvs ON prvs.function_id = pf.function_id AND prvs.boundary_id = p.partition_number - 1
2813-
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_range_values prve ON prve.function_id = pf.function_id AND prve.boundary_id = p.partition_number', '') + N'
2814-
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.column_store_segments seg ON p.partition_id = seg.partition_id AND ic.index_column_id = seg.column_id AND rg.row_group_id = seg.segment_id
2815-
WHERE rg.object_id = @ObjectID' + IIF(@ShowPartitionRanges = 1, N'
2816-
) AS y', '') + N'
2817+
LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.partition_range_values prve ON prve.function_id = pf.function_id AND prve.boundary_id = p.partition_number ' ELSE N' ' END
2818+
+ N' LEFT OUTER JOIN ' + QUOTENAME(@DatabaseName) + N'.sys.column_store_segments seg ON p.partition_id = seg.partition_id AND ic.index_column_id = seg.column_id AND rg.row_group_id = seg.segment_id
2819+
WHERE rg.object_id = @ObjectID'
2820+
+ CASE WHEN @ShowPartitionRanges = 1 THEN N'
2821+
) AS y ' ELSE N' ' END + N'
28172822
) AS x
28182823
PIVOT (MAX(details) FOR column_name IN ( ' + @ColumnList + N')) AS pivot1
28192824
ORDER BY partition_number, row_group_id;';

0 commit comments

Comments
 (0)