The unified diff between revisions [65e4c225..] and [0010ca1a..] is displayed below. It can also be downloaded as a raw diff.

#
#
# patch "database.cc"
#  from [4dee81e637bc4dda983810464885e8f5be4f7d4c]
#    to [bd5cc9b0df537b2aab8520160761bbe8605ec6d8]
#
============================================================
--- database.cc	4dee81e637bc4dda983810464885e8f5be4f7d4c
+++ database.cc	bd5cc9b0df537b2aab8520160761bbe8605ec6d8
@@ -531,13 +531,14 @@ database::info(ostream & out)
     % count("revision_ancestry")
     % count("revision_certs")
     // bytes
-    % SPACE_USAGE("rosters", "id || data")
-    % SPACE_USAGE("roster_deltas", "id || base || delta")
-    % SPACE_USAGE("files", "id || data")
-    % SPACE_USAGE("file_deltas", "id || base || delta")
-    % SPACE_USAGE("revisions", "id || data")
-    % SPACE_USAGE("revision_ancestry", "parent || child")
-    % SPACE_USAGE("revision_certs", "hash || id || name || value || keypair || signature")
+    % SPACE_USAGE("rosters", "length(id) + length(data)")
+    % SPACE_USAGE("roster_deltas", "length(id) + length(base) + length(delta)")
+    % SPACE_USAGE("files", "length(id) + length(data)")
+    % SPACE_USAGE("file_deltas", "length(id) + length(base) + length(delta)")
+    % SPACE_USAGE("revisions", "length(id) + length(data)")
+    % SPACE_USAGE("revision_ancestry", "length(parent) + length(child)")
+    % SPACE_USAGE("revision_certs", "length(hash) + length(id) + length(name)"
+                  " + length(value) + length(keypair) + length(signature)")
     % total;

 #undef SPACE_USAGE
@@ -797,12 +798,12 @@ unsigned long
 }

 unsigned long
-database::space_usage(string const & table, string const & concatenated_columns)
+database::space_usage(string const & table, string const & rowspace)
 {
   results res;
   // COALESCE is required since SUM({empty set}) is NULL.
   // the sqlite docs for SUM suggest this as a workaround
-  query q("SELECT COALESCE(SUM(LENGTH(" + concatenated_columns + ")), 0) FROM " + table);
+  query q("SELECT COALESCE(SUM(" + rowspace + "), 0) FROM " + table);
   fetch(res, one_col, one_row, q);
   return lexical_cast<unsigned long>(res[0][0]);
 }