#
#
# delete "query_args.hh"
#
# patch "ChangeLog"
# from [4714a67c78c948868a09ed8add6e3a610eaa70a1]
# to [2bcdb958aeb132d5aa2313a369517139188930e0]
#
# patch "database.cc"
# from [e4f0c515bff3ad55a7880aeb3c8eeeb2686348a3]
# to [bfb031cff2341ac7363ac7731326c98aacaa819a]
#
# patch "database.hh"
# from [8aac44bf6fb3bdb0477933e06a915671cb448029]
# to [dd9695e867200e94e2d10b9e9bd74bd423c0ac10]
#
============================================================
--- ChangeLog 4714a67c78c948868a09ed8add6e3a610eaa70a1
+++ ChangeLog 2bcdb958aeb132d5aa2313a369517139188930e0
@@ -1,3 +1,8 @@
+2006-01-23 Nathaniel Smith
+
+ * database.{cc,hh}: Clean up code formatting a bit, rename some
+ variables, rely more on automatic conversion.
+
2006-01-24 Vinzenz Feenstra
* query_args.hh: Introduced struct query_args and struct
============================================================
--- database.cc e4f0c515bff3ad55a7880aeb3c8eeeb2686348a3
+++ database.cc bfb031cff2341ac7363ac7731326c98aacaa819a
@@ -38,8 +38,6 @@
#include "xdelta.hh"
#include "epoch.hh"
-#include "query_args.hh"
-
// defined in schema.sql, converted to header:
#include "schema.h"
@@ -62,57 +60,53 @@
namespace
{
- query_args_param
- text(std::string const & txt)
- {
- query_args_param q = {
- query_args_param::text,
- txt,
- txt.size()
- };
- return q;
- }
+ struct query_param
+ {
+ enum arg_type { text, blob };
+ arg_type type;
+ std::string data;
+ };
- query_args_param
- text(char const * txt)
- {
- query_args_param q = {
- query_args_param::text,
- std::string(txt),
- strlen(txt)
- };
- return q;
- }
+ query_param
+ text(std::string const & txt)
+ {
+ query_param q = {
+ query_param::text,
+ txt,
+ };
+ return q;
+ }
+
+ query_param
+ blob(std::string const & blb)
+ {
+ query_param q = {
+ query_param::blob,
+ blb,
+ };
+ return q;
+ }
+
+ // track all open databases for close_all_databases() handler
+ set sql_contexts;
+}
- query_args_param
- blob(void const * data,
- size_t const size)
- {
- char const * ptr = reinterpret_cast(data);
- query_args_param q = {
- query_args_param::blob,
- std::string(ptr,ptr+size),
- size
- };
- return q;
- }
+struct query
+{
+ query(std::string const & cmd)
+ : sql_cmd(cmd)
+ {}
+
+ query & operator %(query_param const & qp)
+ {
+ args.push_back(qp);
+ return *this;
+ }
+
+ std::vector args;
+ std::string sql_cmd;
+};
- query_args_param
- blob(char const * data,
- size_t const size)
- {
- query_args_param q = {
- query_args_param::blob,
- std::string(data,data+size),
- size
- };
- return q;
- }
-
- // track all open databases for close_all_databases() handler
- set sql_contexts;
-}
-
extern "C" {
// some wrappers to ease migration
const char *sqlite3_value_text_s(sqlite3_value *v);
@@ -152,14 +146,14 @@
string revisions_query = "SELECT 1 FROM revisions LIMIT 1";
string rosters_query = "SELECT 1 FROM rosters LIMIT 1";
- fetch(res_revisions, one_col, any_rows, query_args(revisions_query));
+ fetch(res_revisions, one_col, any_rows, query(revisions_query));
if (res_revisions.size() > 0)
{
// they have revisions, so they can't be _ancient_, but they still might
// not have rosters
results res_rosters;
- fetch(res_rosters, one_col, any_rows, query_args(rosters_query));
+ fetch(res_rosters, one_col, any_rows, query(rosters_query));
N(res_rosters.size() != 0,
F("database %s contains revisions but no rosters\n"
"if you are a project leader or doing local testing:\n"
@@ -178,7 +172,7 @@
// init; commit; db kill_rev_locally", and then upgrading to a
// rosterified monotone.)
results res_manifests;
- fetch(res_manifests, one_col, any_rows, query_args(manifests_query));
+ fetch(res_manifests, one_col, any_rows, query(manifests_query));
N(res_manifests.size() == 0,
F("database %s contains manifests but no revisions\n"
"this is a very old database; it needs to be upgraded\n"
@@ -482,7 +476,7 @@
database::debug(string const & sql, ostream & out)
{
results res;
- fetch(res, any_cols, any_rows, query_args(sql));
+ fetch(res, any_cols, any_rows, query(sql));
out << "'" << sql << "' -> " << res.size() << " rows\n" << endl;
for (size_t i = 0; i < res.size(); ++i)
{
@@ -616,7 +610,7 @@
}
void
-database::execute(query_args const & query)
+database::execute(query const & query)
{
results res;
fetch(res, 0, 0, query );
@@ -626,7 +620,7 @@
database::fetch(results & res,
int const want_cols,
int const want_rows,
- query_args const & query)
+ query const & query)
{
int nrow;
int ncol;
@@ -661,8 +655,8 @@
int params = sqlite3_bind_parameter_count(i->second.stmt());
- // Ensure that not to less or to much parameters are given
- I( params == int(query.args.size()));
+ // Ensure that exactly the right number of parameters were given
+ I(params == int(query.args.size()));
// profiling finds this logging to be quite expensive
if (global_sanity.debug)
@@ -681,9 +675,25 @@
L(FL("binding %d with value '%s'\n") % param % log);
}
- sqlite3_bind_text(i->second.stmt(), param ,
- query.args[param-1].data.c_str(),
- -1, SQLITE_TRANSIENT);
+ switch (idx(query.args, param - 1).type)
+ {
+ case query_param::text:
+ sqlite3_bind_text(i->second.stmt(), param,
+ idx(query.args, param - 1).data.c_str(), -1,
+ SQLITE_STATIC);
+ break;
+ case query_param::blob:
+ {
+ std::string const & data = idx(query.args, param - 1).data;
+ sqlite3_bind_blob(i->second.stmt(), param,
+ data.data(), data.size(),
+ SQLITE_STATIC);
+ }
+ break;
+ default:
+ I(false);
+ }
+
assert_sqlite3_ok(sql());
}
@@ -733,9 +743,9 @@
if (transaction_level == 0)
{
if (exclusive)
- execute(query_args("BEGIN EXCLUSIVE"));
+ execute(query("BEGIN EXCLUSIVE"));
else
- execute(query_args("BEGIN DEFERRED"));
+ execute(query("BEGIN DEFERRED"));
transaction_exclusive = exclusive;
}
else
@@ -751,7 +761,7 @@
database::commit_transaction()
{
if (transaction_level == 1)
- execute(query_args("COMMIT"));
+ execute(query("COMMIT"));
transaction_level--;
}
@@ -759,7 +769,7 @@
database::rollback_transaction()
{
if (transaction_level == 1)
- execute(query_args("ROLLBACK"));
+ execute(query("ROLLBACK"));
transaction_level--;
}
@@ -769,8 +779,8 @@
string const & table)
{
results res;
- string query = "SELECT id FROM " + table + " WHERE id = ?";
- fetch(res, one_col, any_rows, query_args(query) % text(ident()));
+ query q("SELECT id FROM " + table + " WHERE id = ?");
+ fetch(res, one_col, any_rows, q % text(ident()));
I((res.size() == 1) || (res.size() == 0));
return res.size() == 1;
}
@@ -781,8 +791,8 @@
string const & table)
{
results res;
- string query = "SELECT id FROM " + table + " WHERE id = ?";
- fetch(res, one_col, any_rows, query_args(query) % text(ident()));
+ query q("SELECT id FROM " + table + " WHERE id = ?");
+ fetch(res, one_col, any_rows, q % text(ident()));
return res.size() > 0;
}
@@ -790,8 +800,8 @@
database::count(string const & table)
{
results res;
- string query = "SELECT COUNT(*) FROM " + table;
- fetch(res, one_col, one_row, query_args(query));
+ query q("SELECT COUNT(*) FROM " + table);
+ fetch(res, one_col, one_row, q);
return lexical_cast(res[0][0]);
}
@@ -801,8 +811,8 @@
results res;
// COALESCE is required since SUM({empty set}) is NULL.
// the sqlite docs for SUM suggest this as a workaround
- string query = "SELECT COALESCE(SUM(LENGTH(" + concatenated_columns + ")), 0) FROM " + table;
- fetch(res, one_col, one_row, query_args(query));
+ query q("SELECT COALESCE(SUM(LENGTH(" + concatenated_columns + ")), 0) FROM " + table);
+ fetch(res, one_col, one_row, q);
return lexical_cast(res[0][0]);
}
@@ -810,8 +820,8 @@
database::get_ids(string const & table, set< hexenc > & ids)
{
results res;
- string query = "SELECT id FROM " + table;
- fetch(res, one_col, any_rows, query_args(query));
+ query q("SELECT id FROM " + table);
+ fetch(res, one_col, any_rows, q);
for (size_t i = 0; i < res.size(); ++i)
{
@@ -825,8 +835,8 @@
string const & table)
{
results res;
- string query = "SELECT data FROM " + table + " WHERE id = ?";
- fetch(res, one_col, one_row, query_args(query) % text(ident()));
+ query q("SELECT data FROM " + table + " WHERE id = ?");
+ fetch(res, one_col, one_row, q % text(ident()));
// consistency check
base64 > rdata(res[0][0]);
@@ -849,10 +859,8 @@
I(ident() != "");
I(base() != "");
results res;
- string query = "SELECT delta FROM " + table + " WHERE id = ? AND base = ?";
- fetch(res, one_col, one_row, query_args(query)
- % text(ident())
- % text(base()));
+ query q("SELECT delta FROM " + table + " WHERE id = ? AND base = ?");
+ fetch(res, one_col, one_row, q % text(ident()) % text(base()));
base64 > del_packed = res[0][0];
unpack(del_packed, del);
@@ -875,7 +883,7 @@
pack(dat, dat_packed);
string insert = "INSERT INTO " + table + " VALUES(?, ?)";
- execute(query_args(insert)
+ execute(query(insert)
% text(ident())
% text(dat_packed()));
}
@@ -893,7 +901,7 @@
pack(del, del_packed);
string insert = "INSERT INTO "+table+" VALUES(?, ?, ?)";
- execute(query_args(insert)
+ execute(query(insert)
% text(ident())
% text(base())
% text(del_packed()));
@@ -1069,7 +1077,7 @@
// This tip is not a root, so extend the path.
results res;
fetch(res, one_col, any_rows,
- query_args(delta_query)
+ query(delta_query)
% text(tip()));
I(res.size() != 0);
@@ -1154,7 +1162,7 @@
string const & table)
{
string drop = "DELETE FROM " + table + " WHERE id = ?";
- execute(query_args(drop) % text(ident()));
+ execute(query(drop) % text(ident()));
}
void
@@ -1209,10 +1217,8 @@
{
results res;
- string query = "SELECT id FROM " + delta_table + " WHERE base = ?";
- fetch(res, one_col, any_rows,
- query_args(query)
- % text(target_id()));
+ query q("SELECT id FROM " + delta_table + " WHERE base = ?");
+ fetch(res, one_col, any_rows, q % text(target_id()));
for (size_t i = 0; i < res.size(); ++i)
{
hexenc old_id(res[i][0]);
@@ -1233,10 +1239,8 @@
hexenc newer_id;
data newer_data;
results res;
- string query = "SELECT base FROM " + delta_table + " WHERE id = ?";
- fetch(res, one_col, any_rows,
- query_args(query)
- % text(target_id()));
+ query q("SELECT base FROM " + delta_table + " WHERE id = ?");
+ fetch(res, one_col, any_rows, q % text(target_id()));
I(res.size() > 0);
newer_id = hexenc(res[0][0]);
get_version(newer_id, newer_data, data_table, delta_table);
@@ -1248,8 +1252,8 @@
put_delta(i->first, newer_id, bypass_delta, delta_table);
}
}
- string query = "DELETE from " + delta_table + " WHERE id = ?";
- execute(query_args(query) % text(target_id()));
+ execute(query("DELETE from " + delta_table + " WHERE id = ?")
+ % text(target_id()));
}
else
{
@@ -1258,8 +1262,8 @@
for (map, data>::const_iterator i = older.begin();
i != older.end(); ++i)
put(i->first, i->second, data_table);
- string query = "DELETE from " + data_table + " WHERE id = ?";
- execute(query_args(query) % text(target_id()));
+ execute(query("DELETE from " + data_table + " WHERE id = ?")
+ % text(target_id()));
}
guard.commit();
@@ -1296,9 +1300,8 @@
database::roster_link_exists_for_revision(revision_id const & rev_id)
{
results res;
- string query = ("SELECT roster_id FROM revision_roster WHERE rev_id = ? ");
fetch(res, one_col, any_rows,
- query_args(query.c_str())
+ query("SELECT roster_id FROM revision_roster WHERE rev_id = ? ")
% text(rev_id.inner()()));
I((res.size() == 1) || (res.size() == 0));
return res.size() == 1;
@@ -1308,9 +1311,8 @@
database::roster_exists_for_revision(revision_id const & rev_id)
{
results res;
- string query = ("SELECT roster_id FROM revision_roster WHERE rev_id = ? ");
fetch(res, one_col, any_rows,
- query_args(query)
+ query("SELECT roster_id FROM revision_roster WHERE rev_id = ? ")
% text(rev_id.inner()()));
I((res.size() == 1) || (res.size() == 0));
return (res.size() == 1) && roster_version_exists(hexenc(res[0][0]));
@@ -1321,8 +1323,7 @@
{
links.clear();
results res;
- string query = ("SELECT rev_id, roster_id FROM revision_roster");
- fetch(res, 2, any_rows, query_args(query));
+ fetch(res, 2, any_rows, query("SELECT rev_id, roster_id FROM revision_roster"));
for (size_t i = 0; i < res.size(); ++i)
{
links.insert(make_pair(revision_id(res[i][0]),
@@ -1399,7 +1400,7 @@
results res;
graph.clear();
fetch(res, 2, any_rows,
- query_args("SELECT parent,child FROM revision_ancestry"));
+ query("SELECT parent,child FROM revision_ancestry"));
for (size_t i = 0; i < res.size(); ++i)
graph.insert(std::make_pair(revision_id(res[i][0]),
revision_id(res[i][1])));
@@ -1413,7 +1414,7 @@
results res;
parents.clear();
fetch(res, one_col, any_rows,
- query_args("SELECT parent FROM revision_ancestry WHERE child = ?")
+ query("SELECT parent FROM revision_ancestry WHERE child = ?")
% text(id.inner()()));
for (size_t i = 0; i < res.size(); ++i)
parents.insert(revision_id(res[i][0]));
@@ -1426,7 +1427,7 @@
results res;
children.clear();
fetch(res, one_col, any_rows,
- query_args("SELECT child FROM revision_ancestry WHERE parent = ?")
+ query("SELECT child FROM revision_ancestry WHERE parent = ?")
% text(id.inner()()));
for (size_t i = 0; i < res.size(); ++i)
children.insert(revision_id(res[i][0]));
@@ -1457,7 +1458,7 @@
I(!null_id(id));
results res;
fetch(res, one_col, one_row,
- query_args("SELECT data FROM revisions WHERE id = ?")
+ query("SELECT data FROM revisions WHERE id = ?")
% text(id.inner()()));
base64 > rdat_packed;
@@ -1556,14 +1557,14 @@
base64 > d_packed;
pack(d.inner(), d_packed);
- execute(query_args("INSERT INTO revisions VALUES(?, ?)")
+ execute(query("INSERT INTO revisions VALUES(?, ?)")
% text(new_id.inner()())
% text(d_packed()));
for (edge_map::const_iterator e = rev.edges.begin();
e != rev.edges.end(); ++e)
{
- execute(query_args("INSERT INTO revision_ancestry VALUES(?, ?)")
+ execute(query("INSERT INTO revision_ancestry VALUES(?, ?)")
% text(edge_old_revision(e).inner()())
% text(new_id.inner()()));
}
@@ -1590,16 +1591,16 @@
void
database::delete_existing_revs_and_certs()
{
- execute(query_args("DELETE FROM revisions"));
- execute(query_args("DELETE FROM revision_ancestry"));
- execute(query_args("DELETE FROM revision_certs"));
+ execute(query("DELETE FROM revisions"));
+ execute(query("DELETE FROM revision_ancestry"));
+ execute(query("DELETE FROM revision_certs"));
}
void
database::delete_existing_manifests()
{
- execute(query_args("DELETE FROM manifests"));
- execute(query_args("DELETE FROM manifest_deltas"));
+ execute(query("DELETE FROM manifests"));
+ execute(query("DELETE FROM manifest_deltas"));
}
/// Deletes one revision from the local database.
@@ -1619,13 +1620,13 @@
L(FL("Killing revision %s locally\n") % rid);
// Kill the certs, ancestry, and rev itself.
- execute(query_args("DELETE from revision_certs WHERE id = ?")
+ execute(query("DELETE from revision_certs WHERE id = ?")
% text(rid.inner()()));
- execute(query_args("DELETE from revision_ancestry WHERE child = ?")
+ execute(query("DELETE from revision_ancestry WHERE child = ?")
% text(rid.inner()()));
- execute(query_args("DELETE from revisions WHERE id = ?")
+ execute(query("DELETE from revisions WHERE id = ?")
% text(rid.inner()()));
// Find the associated roster and count the number of links to it
@@ -1634,15 +1635,15 @@
get_roster_id_for_revision(rid, roster_id);
{
results res;
- string query = ("SELECT rev_id, roster_id FROM revision_roster "
- "WHERE roster_id = ?");
- fetch(res, 2, any_rows, query_args(query) % text(roster_id()));
+ fetch(res, 2, any_rows,
+ query("SELECT rev_id, roster_id FROM revision_roster "
+ "WHERE roster_id = ?") % text(roster_id()));
I(res.size() > 0);
link_count = res.size();
}
// Delete our link.
- execute(query_args("DELETE from revision_roster WHERE rev_id = ?")
+ execute(query("DELETE from revision_roster WHERE rev_id = ?")
% text(rid.inner()()));
// If that was the last link to the roster, kill the roster too.
@@ -1659,9 +1660,9 @@
base64 encoded;
encode_base64(branch, encoded);
L(FL("Deleting all references to branch %s\n") % branch);
- execute(query_args("DELETE FROM revision_certs WHERE name='branch' AND value =?")
+ execute(query("DELETE FROM revision_certs WHERE name='branch' AND value =?")
% text(encoded()));
- execute(query_args("DELETE FROM branch_epochs WHERE branch=?")
+ execute(query("DELETE FROM branch_epochs WHERE branch=?")
% text(encoded()));
}
@@ -1672,7 +1673,7 @@
base64 encoded;
encode_base64(tag, encoded);
L(FL("Deleting all references to tag %s\n") % tag);
- execute(query_args("DELETE FROM revision_certs WHERE name='tag' AND value =?")
+ execute(query("DELETE FROM revision_certs WHERE name='tag' AND value =?")
% text(encoded()));
}
@@ -1687,11 +1688,11 @@
if (pattern != "")
fetch(res, one_col, any_rows,
- query_args("SELECT id FROM public_keys WHERE id GLOB ?")
+ query("SELECT id FROM public_keys WHERE id GLOB ?")
% text(pattern));
else
fetch(res, one_col, any_rows,
- query_args("SELECT id FROM public_keys"));
+ query("SELECT id FROM public_keys"));
for (size_t i = 0; i < res.size(); ++i)
pubkeys.push_back(res[i][0]);
@@ -1702,8 +1703,7 @@
{
keys.clear();
results res;
- string query = "SELECT id FROM " + table;
- fetch(res, one_col, any_rows, query_args(query));
+ fetch(res, one_col, any_rows, query("SELECT id FROM " + table));
for (size_t i = 0; i < res.size(); ++i)
keys.push_back(res[i][0]);
}
@@ -1719,7 +1719,7 @@
{
results res;
fetch(res, one_col, any_rows,
- query_args("SELECT id FROM public_keys WHERE hash = ?")
+ query("SELECT id FROM public_keys WHERE hash = ?")
% text(hash()));
I((res.size() == 1) || (res.size() == 0));
if (res.size() == 1)
@@ -1732,7 +1732,7 @@
{
results res;
fetch(res, one_col, any_rows,
- query_args("SELECT id FROM public_keys WHERE id = ?")
+ query("SELECT id FROM public_keys WHERE id = ?")
% text(id()));
I((res.size() == 1) || (res.size() == 0));
if (res.size() == 1)
@@ -1747,7 +1747,7 @@
{
results res;
fetch(res, 2, one_row,
- query_args("SELECT id, keydata FROM public_keys WHERE hash = ?")
+ query("SELECT id, keydata FROM public_keys WHERE hash = ?")
% text(hash()));
id = res[0][0];
pub_encoded = res[0][1];
@@ -1759,7 +1759,7 @@
{
results res;
fetch(res, one_col, one_row,
- query_args("SELECT keydata FROM public_keys WHERE id = ?")
+ query("SELECT keydata FROM public_keys WHERE id = ?")
% text(pub_id()));
pub_encoded = res[0][0];
}
@@ -1773,7 +1773,7 @@
I(!public_key_exists(thash));
E(!public_key_exists(pub_id),
F("another key with name '%s' already exists") % pub_id);
- execute(query_args("INSERT INTO public_keys VALUES(?, ?, ?)")
+ execute(query("INSERT INTO public_keys VALUES(?, ?, ?)")
% text(thash())
% text(pub_id())
% text(pub_encoded()));
@@ -1782,7 +1782,7 @@
void
database::delete_public_key(rsa_keypair_id const & pub_id)
{
- execute(query_args("DELETE FROM public_keys WHERE id = ?")
+ execute(query("DELETE FROM public_keys WHERE id = ?")
% text(pub_id()));
}
@@ -1793,20 +1793,19 @@
string const & table)
{
results res;
- string query =
- "SELECT id FROM " + table + " WHERE id = ? "
- "AND name = ? "
- "AND value = ? "
- "AND keypair = ? "
- "AND signature = ?";
+ query q = query("SELECT id FROM " + table + " WHERE id = ? "
+ "AND name = ? "
+ "AND value = ? "
+ "AND keypair = ? "
+ "AND signature = ?")
+ % text(t.ident())
+ % text(t.name())
+ % text(t.value())
+ % text(t.key())
+ % text(t.sig());
- fetch(res, 1, any_rows,
- query_args(query)
- % text(t.ident())
- % text(t.name())
- % text(t.value())
- % text(t.key())
- % text(t.sig()));
+ fetch(res, 1, any_rows, q);
+
I(res.size() == 0 || res.size() == 1);
return res.size() == 1;
}
@@ -1820,7 +1819,7 @@
string insert = "INSERT INTO " + table + " VALUES(?, ?, ?, ?, ?, ?)";
- execute(query_args(insert)
+ execute(query(insert)
% text(thash())
% text(t.ident())
% text(t.name())
@@ -1887,8 +1886,8 @@
string const & table)
{
results res;
- string query = "SELECT id, name, value, keypair, signature FROM " + table;
- fetch(res, 5, any_rows, query_args(query));
+ query q("SELECT id, name, value, keypair, signature FROM " + table);
+ fetch(res, 5, any_rows, q);
results_to_certs(res, certs);
}
@@ -1899,11 +1898,10 @@
string const & table)
{
results res;
- string query =
- "SELECT id, name, value, keypair, signature FROM " + table +
- " WHERE id = ?";
+ query q("SELECT id, name, value, keypair, signature FROM " + table +
+ " WHERE id = ?");
- fetch(res, 5, any_rows, query_args(query) % text(ident()));
+ fetch(res, 5, any_rows, q % text(ident()));
results_to_certs(res, certs);
}
@@ -1914,10 +1912,9 @@
string const & table)
{
results res;
- string query =
- "SELECT id, name, value, keypair, signature FROM " + table +
- " WHERE name = ?";
- fetch(res, 5, any_rows, query_args(query) % text(name()));
+ query q("SELECT id, name, value, keypair, signature FROM " + table +
+ " WHERE name = ?");
+ fetch(res, 5, any_rows, q % text(name()));
results_to_certs(res, certs);
}
@@ -1929,14 +1926,12 @@
string const & table)
{
results res;
- string query =
- "SELECT id, name, value, keypair, signature FROM " + table +
- " WHERE id = ? AND name = ?";
+ query q("SELECT id, name, value, keypair, signature FROM " + table +
+ " WHERE id = ? AND name = ?");
fetch(res, 5, any_rows,
- query_args(query)
- % text(ident())
- % text(name()));
+ q % text(ident())
+ % text(name()));
results_to_certs(res, certs);
}
@@ -1947,14 +1942,12 @@
string const & table)
{
results res;
- string query =
- "SELECT id, name, value, keypair, signature FROM " + table +
- " WHERE name = ? AND value = ?";
+ query q("SELECT id, name, value, keypair, signature FROM " + table +
+ " WHERE name = ? AND value = ?");
fetch(res, 5, any_rows,
- query_args(query)
- % text(name())
- % text(val()));
+ q % text(name())
+ % text(val()));
results_to_certs(res, certs);
}
@@ -1967,15 +1960,13 @@
string const & table)
{
results res;
- string query =
- "SELECT id, name, value, keypair, signature FROM " + table +
- " WHERE id = ? AND name = ? AND value = ?";
+ query q("SELECT id, name, value, keypair, signature FROM " + table +
+ " WHERE id = ? AND name = ? AND value = ?");
fetch(res, 5, any_rows,
- query_args(query)
- % text(ident())
- % text(name())
- % text(value()));
+ q % text(ident())
+ % text(name())
+ % text(value()));
results_to_certs(res, certs);
}
@@ -1998,7 +1989,7 @@
{
results res;
fetch(res, 3, any_rows,
- query_args("SELECT hash, id, keypair "
+ query("SELECT hash, id, keypair "
"FROM 'revision_certs' WHERE name != 'branch'"));
idx.clear();
@@ -2081,7 +2072,7 @@
results res;
vector certs;
fetch(res, one_col, any_rows,
- query_args("SELECT hash "
+ query("SELECT hash "
"FROM revision_certs "
"WHERE id = ?")
% text(ident.inner()()));
@@ -2097,7 +2088,7 @@
results res;
vector certs;
fetch(res, 5, one_row,
- query_args("SELECT id, name, value, keypair, signature "
+ query("SELECT id, name, value, keypair, signature "
"FROM revision_certs "
"WHERE hash = ?")
% text(hash()));
@@ -2112,7 +2103,7 @@
results res;
vector certs;
fetch(res, one_col, any_rows,
- query_args("SELECT id "
+ query("SELECT id "
"FROM revision_certs "
"WHERE hash = ?")
% text(hash()));
@@ -2153,7 +2144,7 @@
string pattern = partial + "*";
fetch(res, 1, any_rows,
- query_args("SELECT id FROM revisions WHERE id GLOB ?")
+ query("SELECT id FROM revisions WHERE id GLOB ?")
% text(pattern));
for (size_t i = 0; i < res.size(); ++i)
@@ -2171,7 +2162,7 @@
string pattern = partial + "*";
fetch(res, 1, any_rows,
- query_args("SELECT id FROM files WHERE id GLOB ?")
+ query("SELECT id FROM files WHERE id GLOB ?")
% text(pattern));
for (size_t i = 0; i < res.size(); ++i)
@@ -2180,7 +2171,7 @@
res.clear();
fetch(res, 1, any_rows,
- query_args("SELECT id FROM file_deltas WHERE id GLOB ?")
+ query("SELECT id FROM file_deltas WHERE id GLOB ?")
% text(pattern));
for (size_t i = 0; i < res.size(); ++i)
@@ -2197,7 +2188,7 @@
string pattern = partial + "*";
fetch(res, 2, any_rows,
- query_args("SELECT hash, id FROM public_keys WHERE hash GLOB ?")
+ query("SELECT hash, id FROM public_keys WHERE hash GLOB ?")
% text(pattern));
for (size_t i = 0; i < res.size(); ++i)
@@ -2328,7 +2319,7 @@
string subquery = (boost::format("SELECT DISTINCT value FROM revision_certs WHERE name='%s' and unbase64(value) glob '%s'")
% branch_cert_name % i->second).str();
results res;
- fetch(res, one_col, any_rows, query_args(subquery));
+ fetch(res, one_col, any_rows, query(subquery));
for (size_t i = 0; i < res.size(); ++i)
{
base64 row_encoded(res[i][0]);
@@ -2404,19 +2395,19 @@
// will complete either some idents, or cert values, or "unknown"
// which generally means "author, tag or branch"
- string query;
+ string query_str;
if (ty == selectors::sel_ident)
{
- query = (boost::format("SELECT id FROM %s") % lim).str();
+ query_str = (boost::format("SELECT id FROM %s") % lim).str();
}
else
{
string prefix = "*";
string suffix = "*";
- query = "SELECT value FROM revision_certs WHERE";
+ query_str = "SELECT value FROM revision_certs WHERE";
if (ty == selectors::sel_unknown)
{
- query +=
+ query_str +=
(boost::format(" (name='%s' OR name='%s' OR name='%s')")
% author_cert_name
% tag_cert_name
@@ -2426,19 +2417,17 @@
{
string certname;
selector_to_certname(ty, certname, prefix, suffix);
- query +=
+ query_str +=
(boost::format(" (name='%s')") % certname).str();
}
- query += (boost::format(" AND (unbase64(value) GLOB '%s%s%s')")
+ query_str += (boost::format(" AND (unbase64(value) GLOB '%s%s%s')")
% prefix % partial % suffix).str();
- query += (boost::format(" AND (id IN %s)") % lim).str();
+ query_str += (boost::format(" AND (id IN %s)") % lim).str();
}
- // std::cerr << query << std::endl; // debug expr
-
results res;
- fetch(res, one_col, any_rows, query_args(query));
+ fetch(res, one_col, any_rows, query(query_str));
for (size_t i = 0; i < res.size(); ++i)
{
if (ty == selectors::sel_ident)
@@ -2460,7 +2449,7 @@
{
epochs.clear();
results res;
- fetch(res, 2, any_rows, query_args("SELECT branch, epoch FROM branch_epochs"));
+ fetch(res, 2, any_rows, query("SELECT branch, epoch FROM branch_epochs"));
for (results::const_iterator i = res.begin(); i != res.end(); ++i)
{
base64 encoded(idx(*i, 0));
@@ -2478,7 +2467,7 @@
I(epoch_exists(eid));
results res;
fetch(res, 2, any_rows,
- query_args("SELECT branch, epoch FROM branch_epochs"
+ query("SELECT branch, epoch FROM branch_epochs"
" WHERE hash = ?")
% text(eid.inner()()));
I(res.size() == 1);
@@ -2492,7 +2481,7 @@
{
results res;
fetch(res, one_col, any_rows,
- query_args("SELECT hash FROM branch_epochs WHERE hash = ?")
+ query("SELECT hash FROM branch_epochs WHERE hash = ?")
% text(eid.inner()()));
I(res.size() == 1 || res.size() == 0);
return res.size() == 1;
@@ -2506,7 +2495,7 @@
encode_base64(branch, encoded);
epoch_hash_code(branch, epo, eid);
I(epo.inner()().size() == constants::epochlen);
- execute(query_args("INSERT OR REPLACE INTO branch_epochs VALUES(?, ?, ?)")
+ execute(query("INSERT OR REPLACE INTO branch_epochs VALUES(?, ?, ?)")
% text(eid.inner()())
% text(encoded())
% text(epo.inner()()));
@@ -2517,7 +2506,7 @@
{
base64 encoded;
encode_base64(branch, encoded);
- execute(query_args("DELETE FROM branch_epochs WHERE branch = ?")
+ execute(query("DELETE FROM branch_epochs WHERE branch = ?")
% text(encoded()));
}
@@ -2528,7 +2517,7 @@
{
vars.clear();
results res;
- fetch(res, 3, any_rows, query_args("SELECT domain, name, value FROM db_vars"));
+ fetch(res, 3, any_rows, query("SELECT domain, name, value FROM db_vars"));
for (results::const_iterator i = res.begin(); i != res.end(); ++i)
{
var_domain domain(idx(*i, 0));
@@ -2571,7 +2560,7 @@
encode_base64(key.second, name_encoded);
base64 value_encoded;
encode_base64(value, value_encoded);
- execute(query_args("INSERT OR REPLACE INTO db_vars VALUES(?, ?, ?)")
+ execute(query("INSERT OR REPLACE INTO db_vars VALUES(?, ?, ?)")
% text(key.first())
% text(name_encoded())
% text(value_encoded()));
@@ -2582,7 +2571,7 @@
{
base64 name_encoded;
encode_base64(key.second, name_encoded);
- execute(query_args("DELETE FROM db_vars WHERE domain = ? AND name = ?")
+ execute(query("DELETE FROM db_vars WHERE domain = ? AND name = ?")
% text(key.first())
% text(name_encoded()));
}
@@ -2593,9 +2582,9 @@
database::get_branches(vector & names)
{
results res;
- string query="SELECT DISTINCT value FROM revision_certs WHERE name= ?";
- string cert_name="branch";
- fetch(res, one_col, any_rows, query_args(query) % text(cert_name));
+ query q("SELECT DISTINCT value FROM revision_certs WHERE name = ?");
+ string cert_name = "branch";
+ fetch(res, one_col, any_rows, q % text(cert_name));
for (size_t i = 0; i < res.size(); ++i)
{
base64 row_encoded(res[i][0]);
@@ -2616,10 +2605,8 @@
}
results res;
- string query = ("SELECT roster_id FROM revision_roster WHERE rev_id = ? ");
- fetch(res, one_col, any_rows,
- query_args(query)
- % text(rev_id.inner()()));
+ query q("SELECT roster_id FROM revision_roster WHERE rev_id = ? ");
+ fetch(res, one_col, any_rows, q % text(rev_id.inner()()));
I(res.size() == 1);
roster_id = hexenc(res[0][0]);
}
@@ -2685,7 +2672,7 @@
transaction_guard guard(*this);
- execute(query_args("INSERT into revision_roster VALUES (?, ?)")
+ execute(query("INSERT into revision_roster VALUES (?, ?)")
% text(rev_id.inner()())
% text(new_id()));
@@ -2774,7 +2761,7 @@
b_uncommon_ancs.clear();
fetch(res, 2, any_rows,
- query_args("SELECT parent,child FROM revision_ancestry"));
+ query("SELECT parent,child FROM revision_ancestry"));
set a_ancs, b_ancs;
@@ -2803,13 +2790,13 @@
// We implement this as a fixed db var.
fetch(res, one_col, any_rows,
- query_args("SELECT node FROM next_roster_node_number"));
+ query("SELECT node FROM next_roster_node_number"));
node_id n;
if (res.empty())
{
n = 1;
- execute (query_args("INSERT INTO next_roster_node_number VALUES(?)")
+ execute (query("INSERT INTO next_roster_node_number VALUES(?)")
% text(lexical_cast(n)));
}
else
@@ -2817,7 +2804,7 @@
I(res.size() == 1);
n = lexical_cast(res[0][0]);
++n;
- execute (query_args("UPDATE next_roster_node_number SET node = ?")
+ execute (query("UPDATE next_roster_node_number SET node = ?")
% text(lexical_cast(n)));
}
============================================================
--- database.hh 8aac44bf6fb3bdb0477933e06a915671cb448029
+++ database.hh dd9695e867200e94e2d10b9e9bd74bd423c0ac10
@@ -71,7 +71,7 @@
struct posting;
struct app_state;
struct revision_set;
-struct query_args;
+struct query;
class database
{
@@ -99,12 +99,12 @@
typedef std::vector< std::vector > results;
- void execute(query_args const & query);
+ void execute(query const & q);
void fetch(results & res,
int const want_cols,
int const want_rows,
- query_args const & query);
+ query const & q);
bool exists(hexenc const & ident,
std::string const & table);