The unified diff between revisions [65e4c225..] and [0010ca1a..] is displayed below. It can also be downloaded as a raw diff.
This diff has been restricted to the following files: 'database.cc'
#
#
# 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]);
}