ui: Use partitioned interval_self_intersect in breakdown tracks This replaces the usage of interval_self_intersect with interval_self_intersect_partitioned in breakdown_tracks.ts when breakdown columns are present. This prevents an explosion of self-intersecting intervals when there are multiple breakdown groups, ensuring intervals only intersect within their own group.
diff --git a/ui/src/components/tracks/breakdown_tracks.ts b/ui/src/components/tracks/breakdown_tracks.ts index c06aec4..76054d1 100644 --- a/ui/src/components/tracks/breakdown_tracks.ts +++ b/ui/src/components/tracks/breakdown_tracks.ts
@@ -361,9 +361,16 @@ CREATE PERFETTO TABLE ${this.segmentsTableName} AS SELECT iss.ts, iss.group_id, iss.interval_ends_at_ts, ${denormCols} - FROM interval_self_intersect!(( - SELECT id, ts, dur FROM ${this.intervalsTableName} - )) iss + FROM ${ + this.aggColNames.length > 0 + ? `interval_self_intersect_partitioned!( + (SELECT id, ts, dur, ${this.aggColNames.join(', ')} FROM ${this.intervalsTableName}), + (${this.aggColNames.join(', ')}) + )` + : `interval_self_intersect!(( + SELECT id, ts, dur FROM ${this.intervalsTableName} + ))` + } iss JOIN ${this.intervalsTableName} i USING(id); CREATE PERFETTO TABLE ${this.projectedTableName} AS