Merge "fix java_heap_class_stats crash when no heap graph" into main
diff --git a/src/trace_processor/metrics/sql/android/java_heap_class_stats.sql b/src/trace_processor/metrics/sql/android/java_heap_class_stats.sql
index 4fb79c3..531b440 100644
--- a/src/trace_processor/metrics/sql/android/java_heap_class_stats.sql
+++ b/src/trace_processor/metrics/sql/android/java_heap_class_stats.sql
@@ -28,11 +28,12 @@
FROM memory_heap_graph_dominator_tree tree
JOIN heap_graph_object obj USING(id)
UNION ALL
--- tree partition below requires a single root.
+-- provide a single root required by tree partition if heap graph exists.
SELECT
memory_heap_graph_super_root_fn() AS id,
NULL AS parent_id,
- (SELECT MAX(id) + 1 FROM heap_graph_class) AS group_key;
+ (SELECT MAX(id) + 1 FROM heap_graph_class) AS group_key
+WHERE memory_heap_graph_super_root_fn() IS NOT NULL;
DROP TABLE IF EXISTS _heap_object_marked_for_dominated_stats;
CREATE PERFETTO TABLE _heap_object_marked_for_dominated_stats AS
diff --git a/test/trace_processor/diff_tests/metrics/profiling/tests.py b/test/trace_processor/diff_tests/metrics/profiling/tests.py
index 21cb826..94dea75 100644
--- a/test/trace_processor/diff_tests/metrics/profiling/tests.py
+++ b/test/trace_processor/diff_tests/metrics/profiling/tests.py
@@ -115,3 +115,12 @@
trace=Path('heap_graph.textproto'),
query=Metric('java_heap_class_stats'),
out=Path('java_heap_class_stats.out'))
+
+ def test_java_heap_class_stats_no_heap_graph(self):
+ return DiffTestBlueprint(
+ trace=Path('heap_profile_no_symbols.textproto'),
+ query=Metric('java_heap_class_stats'),
+ out=TextProto(r"""
+ java_heap_class_stats {
+ }
+ """))