aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/commands/explain.c20
-rw-r--r--src/test/regress/expected/incremental_sort.out134
-rw-r--r--src/test/regress/sql/incremental_sort.sql4
3 files changed, 87 insertions, 71 deletions
diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c
index baaa5817af7..455f54ef83f 100644
--- a/src/backend/commands/explain.c
+++ b/src/backend/commands/explain.c
@@ -2841,7 +2841,7 @@ show_incremental_sort_group_info(IncrementalSortGroupInfo *groupInfo,
ExplainOpenGroup("Sort Space", memoryName.data, true, es);
ExplainPropertyInteger("Average Sort Space Used", "kB", avgSpace, es);
- ExplainPropertyInteger("Maximum Sort Space Used", "kB",
+ ExplainPropertyInteger("Peak Sort Space Used", "kB",
groupInfo->maxMemorySpaceUsed, es);
ExplainCloseGroup("Sort Spaces", memoryName.data, true, es);
@@ -2858,7 +2858,7 @@ show_incremental_sort_group_info(IncrementalSortGroupInfo *groupInfo,
ExplainOpenGroup("Sort Space", diskName.data, true, es);
ExplainPropertyInteger("Average Sort Space Used", "kB", avgSpace, es);
- ExplainPropertyInteger("Maximum Sort Space Used", "kB",
+ ExplainPropertyInteger("Peak Sort Space Used", "kB",
groupInfo->maxDiskSpaceUsed, es);
ExplainCloseGroup("Sort Spaces", diskName.data, true, es);
@@ -2883,6 +2883,15 @@ show_incremental_sort_info(IncrementalSortState *incrsortstate,
if (!es->analyze)
return;
+ /*
+ * Since we never have any prefix groups unless we've first sorted a full
+ * groups and transitioned modes (copying the tuples into a prefix group),
+ * we don't need to do anything if there were 0 full groups.
+ *
+ * We still have to continue after this block if there are no full groups,
+ * though, since it's possible that we have workers that did real work even
+ * if the leader didn't participate.
+ */
if (fullsortGroupInfo->groupCount > 0)
{
show_incremental_sort_group_info(fullsortGroupInfo, "Full-sort", true, es);
@@ -2914,6 +2923,13 @@ show_incremental_sort_info(IncrementalSortState *incrsortstate,
*/
fullsortGroupInfo = &incsort_info->fullsortGroupInfo;
prefixsortGroupInfo = &incsort_info->prefixsortGroupInfo;
+
+ /*
+ * Since we never have any prefix groups unless we've first sorted
+ * a full groups and transitioned modes (copying the tuples into a
+ * prefix group), we don't need to do anything if there were 0 full
+ * groups.
+ */
if (fullsortGroupInfo->groupCount == 0 &&
prefixsortGroupInfo->groupCount == 0)
continue;
diff --git a/src/test/regress/expected/incremental_sort.out b/src/test/regress/expected/incremental_sort.out
index d32b774c551..3072d956437 100644
--- a/src/test/regress/expected/incremental_sort.out
+++ b/src/test/regress/expected/incremental_sort.out
@@ -109,7 +109,7 @@ begin
for group_key in select unnest(array['Full-sort Groups', 'Presorted Groups']::text[]) t loop
for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop
node := jsonb_set(node, array[group_key, space_key, 'Average Sort Space Used'], '"NN"', false);
- node := jsonb_set(node, array[group_key, space_key, 'Maximum Sort Space Used'], '"NN"', false);
+ node := jsonb_set(node, array[group_key, space_key, 'Peak Sort Space Used'], '"NN"', false);
end loop;
end loop;
nodes := nodes || node;
@@ -131,7 +131,7 @@ begin
for group_key in select unnest(array['Full-sort Groups', 'Presorted Groups']::text[]) t loop
group_stats := node->group_key;
for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop
- if (group_stats->space_key->'Maximum Sort Space Used')::bigint < (group_stats->space_key->'Maximum Sort Space Used')::bigint then
+ if (group_stats->space_key->'Peak Sort Space Used')::bigint < (group_stats->space_key->'Peak Sort Space Used')::bigint then
raise exception '% has invalid max space < average space', group_key;
end if;
end loop;
@@ -545,34 +545,34 @@ select explain_analyze_without_memory('select * from (select * from t order by a
(9 rows)
select jsonb_pretty(explain_analyze_inc_sort_nodes_without_memory('select * from (select * from t order by a) s order by a, b limit 55'));
- jsonb_pretty
---------------------------------------------------
- [ +
- { +
- "Sort Key": [ +
- "t.a", +
- "t.b" +
- ], +
- "Node Type": "Incremental Sort", +
- "Actual Rows": 55, +
- "Actual Loops": 1, +
- "Presorted Key": [ +
- "t.a" +
- ], +
- "Parallel Aware": false, +
- "Full-sort Groups": { +
- "Group Count": 2, +
- "Sort Methods Used": [ +
- "top-N heapsort", +
- "quicksort" +
- ], +
- "Sort Space Memory": { +
- "Average Sort Space Used": "NN",+
- "Maximum Sort Space Used": "NN" +
- } +
- }, +
- "Parent Relationship": "Outer" +
- } +
+ jsonb_pretty
+-------------------------------------------------
+ [ +
+ { +
+ "Sort Key": [ +
+ "t.a", +
+ "t.b" +
+ ], +
+ "Node Type": "Incremental Sort", +
+ "Actual Rows": 55, +
+ "Actual Loops": 1, +
+ "Presorted Key": [ +
+ "t.a" +
+ ], +
+ "Parallel Aware": false, +
+ "Full-sort Groups": { +
+ "Group Count": 2, +
+ "Sort Methods Used": [ +
+ "top-N heapsort", +
+ "quicksort" +
+ ], +
+ "Sort Space Memory": { +
+ "Peak Sort Space Used": "NN", +
+ "Average Sort Space Used": "NN"+
+ } +
+ }, +
+ "Parent Relationship": "Outer" +
+ } +
]
(1 row)
@@ -719,43 +719,43 @@ select explain_analyze_without_memory('select * from (select * from t order by a
(9 rows)
select jsonb_pretty(explain_analyze_inc_sort_nodes_without_memory('select * from (select * from t order by a) s order by a, b limit 70'));
- jsonb_pretty
---------------------------------------------------
- [ +
- { +
- "Sort Key": [ +
- "t.a", +
- "t.b" +
- ], +
- "Node Type": "Incremental Sort", +
- "Actual Rows": 70, +
- "Actual Loops": 1, +
- "Presorted Key": [ +
- "t.a" +
- ], +
- "Parallel Aware": false, +
- "Full-sort Groups": { +
- "Group Count": 1, +
- "Sort Methods Used": [ +
- "quicksort" +
- ], +
- "Sort Space Memory": { +
- "Average Sort Space Used": "NN",+
- "Maximum Sort Space Used": "NN" +
- } +
- }, +
- "Presorted Groups": { +
- "Group Count": 5, +
- "Sort Methods Used": [ +
- "quicksort" +
- ], +
- "Sort Space Memory": { +
- "Average Sort Space Used": "NN",+
- "Maximum Sort Space Used": "NN" +
- } +
- }, +
- "Parent Relationship": "Outer" +
- } +
+ jsonb_pretty
+-------------------------------------------------
+ [ +
+ { +
+ "Sort Key": [ +
+ "t.a", +
+ "t.b" +
+ ], +
+ "Node Type": "Incremental Sort", +
+ "Actual Rows": 70, +
+ "Actual Loops": 1, +
+ "Presorted Key": [ +
+ "t.a" +
+ ], +
+ "Parallel Aware": false, +
+ "Full-sort Groups": { +
+ "Group Count": 1, +
+ "Sort Methods Used": [ +
+ "quicksort" +
+ ], +
+ "Sort Space Memory": { +
+ "Peak Sort Space Used": "NN", +
+ "Average Sort Space Used": "NN"+
+ } +
+ }, +
+ "Presorted Groups": { +
+ "Group Count": 5, +
+ "Sort Methods Used": [ +
+ "quicksort" +
+ ], +
+ "Sort Space Memory": { +
+ "Peak Sort Space Used": "NN", +
+ "Average Sort Space Used": "NN"+
+ } +
+ }, +
+ "Parent Relationship": "Outer" +
+ } +
]
(1 row)
diff --git a/src/test/regress/sql/incremental_sort.sql b/src/test/regress/sql/incremental_sort.sql
index 2ba5d7a67d1..e78a96d5bf0 100644
--- a/src/test/regress/sql/incremental_sort.sql
+++ b/src/test/regress/sql/incremental_sort.sql
@@ -85,7 +85,7 @@ begin
for group_key in select unnest(array['Full-sort Groups', 'Presorted Groups']::text[]) t loop
for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop
node := jsonb_set(node, array[group_key, space_key, 'Average Sort Space Used'], '"NN"', false);
- node := jsonb_set(node, array[group_key, space_key, 'Maximum Sort Space Used'], '"NN"', false);
+ node := jsonb_set(node, array[group_key, space_key, 'Peak Sort Space Used'], '"NN"', false);
end loop;
end loop;
nodes := nodes || node;
@@ -108,7 +108,7 @@ begin
for group_key in select unnest(array['Full-sort Groups', 'Presorted Groups']::text[]) t loop
group_stats := node->group_key;
for space_key in select unnest(array['Sort Space Memory', 'Sort Space Disk']::text[]) t loop
- if (group_stats->space_key->'Maximum Sort Space Used')::bigint < (group_stats->space_key->'Maximum Sort Space Used')::bigint then
+ if (group_stats->space_key->'Peak Sort Space Used')::bigint < (group_stats->space_key->'Peak Sort Space Used')::bigint then
raise exception '% has invalid max space < average space', group_key;
end if;
end loop;