# # patch "database.cc" # from [f443fb17f9bc64e8889080ed3f70a7d89c9bc008] # to [d6f2f8d1e6c244b963e81c0dbefbbf7af5a325fc] # ======================================================================== --- database.cc f443fb17f9bc64e8889080ed3f70a7d89c9bc008 +++ database.cc d6f2f8d1e6c244b963e81c0dbefbbf7af5a325fc @@ -1269,7 +1269,7 @@ void database::get_revision_parents(revision_id const & id, - set & parents) + set & parents) { I(!null_id(id)); results res; @@ -2537,14 +2537,16 @@ string data_table = "rosters"; string delta_table = "roster_deltas"; - results res; - fetch(res, one_col, any_rows, - "SELECT parent FROM revision_ancestry WHERE child = ?", - rev_id.inner()().c_str()); + std::set parents; + get_revision_parents(rev_id, parents); transaction_guard guard(*this); - if (res.size() != 0 && !res[0][0].empty()) + for (std::set::const_iterator i = parents.starts(); + i != parents.end(); ++i) { + if (null_id(*i)) + continue; + // There's a parent revision; we are going to do delta // compression on the roster by using the roster associated with // the parent rev. Keep in mind that we're composing a *reverse* @@ -2552,7 +2554,7 @@ // will have (id=old_id, rev_id=old_rev, base=new_id, // delta=new->old) - revision_id old_rev = revision_id(res[0][0]); + revision_id old_rev = *i; hexenc old_ident; get_roster_id_for_revision(old_rev, old_ident); get_version(old_ident, old_data, data_table, delta_table);