From 4d222e971c845e89426d874d6847677b8f15851d Mon Sep 17 00:00:00 2001 From: Joscha Date: Wed, 16 Aug 2023 00:58:44 +0200 Subject: [PATCH] Restrict graph to tracked commits --- ...1ca15ab3a58a8553a5837351ec63265edb5c2.json} | 4 ++-- ...8c89a86ba9bb71368a413eb90593f5da166e0.json} | 4 ++-- ...a00870a19f9336c3566b1daeb639f81cb2154.json} | 4 ++-- src/server/web/pages/graph.rs | 12 +++++++++--- src/server/web/pages/graph/util.rs | 18 ++++++++++-------- 5 files changed, 25 insertions(+), 17 deletions(-) rename .sqlx/{query-c202b6c8e83d2535301e0633404b83a7a7b4b105338833223dd5ab0ebdecfdfd.json => query-0d2711c13a7835dd6a6708c2dc81ca15ab3a58a8553a5837351ec63265edb5c2.json} (76%) rename .sqlx/{query-3227b67648549c213c6ad34c78842a8d8120d3202f002d293e674cac994adedc.json => query-0dc1d000038b42bbbcfe16a11cb8c89a86ba9bb71368a413eb90593f5da166e0.json} (75%) rename .sqlx/{query-eecd95c794db0640d2de01dc644af7e2c6e4ab357710d6a1ee374cad106c166e.json => query-4f3c635a7026015f95d20823a25a00870a19f9336c3566b1daeb639f81cb2154.json} (62%) diff --git a/.sqlx/query-c202b6c8e83d2535301e0633404b83a7a7b4b105338833223dd5ab0ebdecfdfd.json b/.sqlx/query-0d2711c13a7835dd6a6708c2dc81ca15ab3a58a8553a5837351ec63265edb5c2.json similarity index 76% rename from .sqlx/query-c202b6c8e83d2535301e0633404b83a7a7b4b105338833223dd5ab0ebdecfdfd.json rename to .sqlx/query-0d2711c13a7835dd6a6708c2dc81ca15ab3a58a8553a5837351ec63265edb5c2.json index 34fb96e..8ffe09c 100644 --- a/.sqlx/query-c202b6c8e83d2535301e0633404b83a7a7b4b105338833223dd5ab0ebdecfdfd.json +++ b/.sqlx/query-0d2711c13a7835dd6a6708c2dc81ca15ab3a58a8553a5837351ec63265edb5c2.json @@ -1,6 +1,6 @@ { "db_name": "SQLite", - "query": "WITH measurements AS ( SELECT hash, value, MAX(start) FROM runs JOIN run_measurements USING (id) WHERE metric = ? GROUP BY hash ) SELECT value FROM commits LEFT JOIN measurements USING (hash) ORDER BY hash ASC ", + "query": "WITH measurements AS ( SELECT hash, value, MAX(start) FROM runs JOIN run_measurements USING (id) WHERE metric = ? GROUP BY hash ) SELECT value FROM commits LEFT JOIN measurements USING (hash) WHERE reachable = 2 ORDER BY hash ASC ", "describe": { "columns": [ { @@ -16,5 +16,5 @@ true ] }, - "hash": "c202b6c8e83d2535301e0633404b83a7a7b4b105338833223dd5ab0ebdecfdfd" + "hash": "0d2711c13a7835dd6a6708c2dc81ca15ab3a58a8553a5837351ec63265edb5c2" } diff --git a/.sqlx/query-3227b67648549c213c6ad34c78842a8d8120d3202f002d293e674cac994adedc.json b/.sqlx/query-0dc1d000038b42bbbcfe16a11cb8c89a86ba9bb71368a413eb90593f5da166e0.json similarity index 75% rename from .sqlx/query-3227b67648549c213c6ad34c78842a8d8120d3202f002d293e674cac994adedc.json rename to .sqlx/query-0dc1d000038b42bbbcfe16a11cb8c89a86ba9bb71368a413eb90593f5da166e0.json index db03659..666ee6b 100644 --- a/.sqlx/query-3227b67648549c213c6ad34c78842a8d8120d3202f002d293e674cac994adedc.json +++ b/.sqlx/query-0dc1d000038b42bbbcfe16a11cb8c89a86ba9bb71368a413eb90593f5da166e0.json @@ -1,6 +1,6 @@ { "db_name": "SQLite", - "query": "SELECT hash, committer_date AS \"time: OffsetDateTime\" FROM commits ORDER BY hash ASC ", + "query": "SELECT hash, committer_date AS \"time: OffsetDateTime\" FROM commits WHERE reachable = 2 ORDER BY hash ASC ", "describe": { "columns": [ { @@ -22,5 +22,5 @@ false ] }, - "hash": "3227b67648549c213c6ad34c78842a8d8120d3202f002d293e674cac994adedc" + "hash": "0dc1d000038b42bbbcfe16a11cb8c89a86ba9bb71368a413eb90593f5da166e0" } diff --git a/.sqlx/query-eecd95c794db0640d2de01dc644af7e2c6e4ab357710d6a1ee374cad106c166e.json b/.sqlx/query-4f3c635a7026015f95d20823a25a00870a19f9336c3566b1daeb639f81cb2154.json similarity index 62% rename from .sqlx/query-eecd95c794db0640d2de01dc644af7e2c6e4ab357710d6a1ee374cad106c166e.json rename to .sqlx/query-4f3c635a7026015f95d20823a25a00870a19f9336c3566b1daeb639f81cb2154.json index c1f7807..04e23d3 100644 --- a/.sqlx/query-eecd95c794db0640d2de01dc644af7e2c6e4ab357710d6a1ee374cad106c166e.json +++ b/.sqlx/query-4f3c635a7026015f95d20823a25a00870a19f9336c3566b1daeb639f81cb2154.json @@ -1,6 +1,6 @@ { "db_name": "SQLite", - "query": "SELECT parent, child FROM commit_links ORDER BY parent ASC, child ASC ", + "query": "SELECT parent, child FROM commit_links JOIN commits ON hash = parent WHERE reachable = 2 ORDER BY parent ASC, child ASC ", "describe": { "columns": [ { @@ -22,5 +22,5 @@ false ] }, - "hash": "eecd95c794db0640d2de01dc644af7e2c6e4ab357710d6a1ee374cad106c166e" + "hash": "4f3c635a7026015f95d20823a25a00870a19f9336c3566b1daeb639f81cb2154" } diff --git a/src/server/web/pages/graph.rs b/src/server/web/pages/graph.rs index b26c71b..286a0fe 100644 --- a/src/server/web/pages/graph.rs +++ b/src/server/web/pages/graph.rs @@ -170,6 +170,7 @@ pub async fn get_graph_data( hash, \ committer_date AS \"time: OffsetDateTime\" \ FROM commits \ + WHERE reachable = 2 \ ORDER BY hash ASC \ " ) @@ -185,6 +186,8 @@ pub async fn get_graph_data( "\ SELECT parent, child \ FROM commit_links \ + JOIN commits ON hash = parent \ + WHERE reachable = 2 \ ORDER BY parent ASC, child ASC \ " ) @@ -205,9 +208,11 @@ pub async fn get_graph_data( let mut parents = HashMap::>::new(); for (parent, child) in &parent_child_pairs { - let parent_idx = sorted_hash_indices[parent]; - let child_idx = sorted_hash_indices[child]; - parents.entry(parent_idx).or_default().push(child_idx); + if let Some(parent_idx) = sorted_hash_indices.get(parent) { + if let Some(child_idx) = sorted_hash_indices.get(child) { + parents.entry(*parent_idx).or_default().push(*child_idx); + } + } } // Collect times @@ -239,6 +244,7 @@ pub async fn get_graph_data( SELECT value \ FROM commits \ LEFT JOIN measurements USING (hash) \ + WHERE reachable = 2 \ ORDER BY hash ASC \ ", metric, diff --git a/src/server/web/pages/graph/util.rs b/src/server/web/pages/graph/util.rs index 3fb58dc..07eb53a 100644 --- a/src/server/web/pages/graph/util.rs +++ b/src/server/web/pages/graph/util.rs @@ -65,14 +65,16 @@ pub fn sort_topologically( .map(|hash| (hash.clone(), HashSet::::new())) .collect::>(); for (parent, child) in parent_child_pairs { - parent_child_map - .get_mut(parent) - .unwrap() - .push(child.clone()); - child_parent_map - .get_mut(child) - .unwrap() - .insert(parent.clone()); + if parent_child_map.contains_key(parent) && parent_child_map.contains_key(child) { + parent_child_map + .get_mut(parent) + .unwrap() + .push(child.clone()); + child_parent_map + .get_mut(child) + .unwrap() + .insert(parent.clone()); + } } // Initialize parentless stack using commit list, in reverse order so that