The unified diff between revisions [090bacd8..] and [3f08ab21..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "database.ml"
#  from [b9c911fa689847ee7c467725095a07dc0ad28ac5]
#    to [fe59c696f421de6401dd9a5a107126c898d92278]
#
============================================================
--- database.ml	b9c911fa689847ee7c467725095a07dc0ad28ac5
+++ database.ml	fe59c696f421de6401dd9a5a107126c898d92278
@@ -115,10 +115,14 @@ let process_ancestry_row_simple g = func
   }

 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 fetch_agraph_with_view db base64 (qu
   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 @@ let fetch_with_view query base64 db f =
     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 @@ let prepare_fetch_one_cert_value db =
     "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 ;