# # # patch "database.ml" # from [b9c911fa689847ee7c467725095a07dc0ad28ac5] # to [fe59c696f421de6401dd9a5a107126c898d92278] # ============================================================ --- database.ml b9c911fa689847ee7c467725095a07dc0ad28ac5 +++ database.ml fe59c696f421de6401dd9a5a107126c898d92278 @@ -115,10 +115,14 @@ } let process_ancestry_row_simple g = function - | [| "" ; child |] when not (NodeMap.mem child g.nodes) -> - let new_node = { id = child ; kind = REGULAR ; family = [] } in - let nodes = NodeMap.add child new_node g.nodes in - { g with nodes = nodes } + | [| "" ; child |] -> + if not (NodeMap.mem child g.nodes) + then begin + let new_node = { id = child ; kind = REGULAR ; family = [] } in + let nodes = NodeMap.add child new_node g.nodes in + { g with nodes = nodes } + end + else g | [| parent ; child |] -> process_ancestry_row g @@ -212,17 +216,17 @@ let agraph = Sqlite3.fetch_f db process_ancestry_row_simple agraph "SELECT parent, child FROM revision_ancestry, %s \ - WHERE parent = id AND child IN %s" view_name_limit view_name_limit in + WHERE (parent = '' OR parent = id) AND child IN %s" view_name_limit view_name_limit in (* also grab neighbor nodes *) let agraph = Sqlite3.fetch_f db process_ancestry_row_neigh_out agraph - "SELECT parent, child, child IN %s FROM revision_ancestry + "SELECT parent, child, child IN %s FROM revision_ancestry \ WHERE parent IN %s AND child NOT IN %s" view_name_domain view_name_limit view_name_limit in let agraph = Sqlite3.fetch_f db process_ancestry_row_neigh_in agraph - "SELECT parent, child, parent IN %s FROM revision_ancestry + "SELECT parent, child, parent IN %s FROM revision_ancestry \ WHERE child IN %s AND parent != '' AND parent NOT IN %s" view_name_domain view_name_limit view_name_limit in @@ -291,7 +295,7 @@ match query_domain with | QUERY_ALL -> Printf.sprintf "CREATE TEMP TABLE %s AS \ - SELECT DISTINCT id FROM revision_certs + SELECT DISTINCT id FROM revision_certs \ WHERE name = 'branch'" view_name_domain | QUERY_BRANCHES q -> Printf.sprintf "CREATE TEMP TABLE %s AS \ @@ -387,7 +391,7 @@ "SELECT keypair FROM revision_certs WHERE id = ? AND name = ?" let prepare_fetch_one_cert_value db = Sqlite3.prepare_one db - "SELECT value FROM revision_certs WHERE id = ? AND name = ?" + "SELECT value FROM revision_certs WHERE id = ? AND name = ?" let fetch_one_cert_field stmt id name kind = Sqlite3.reset stmt ;