zeitgeist team mailing list archive
-
zeitgeist team
-
Mailing list archive
-
Message #05099
[Branch ~zeitgeist/zeitgeist/bluebird] Rev 422: Merge: Split find_event_ids into _for_clause and _for_query
Merge authors:
Trever Fischer (tdfischer)
Related merge proposals:
https://code.launchpad.net/~tdfischer/zeitgeist/timerange-deletion-api/+merge/97272
proposed by: Trever Fischer (tdfischer)
https://code.launchpad.net/~tdfischer/zeitgeist/common-where/+merge/97270
proposed by: Trever Fischer (tdfischer)
review: Approve - Siegfried Gevatter (rainct)
------------------------------------------------------------
revno: 422 [merge]
committer: Siegfried-Angel Gevatter Pujals <siegfried@xxxxxxxxxxxx>
branch nick: bluebird
timestamp: Tue 2012-03-13 20:12:59 +0100
message:
Merge: Split find_event_ids into _for_clause and _for_query
modified:
src/db-reader.vala
--
lp:zeitgeist
https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird
Your team Zeitgeist Framework Team is subscribed to branch lp:zeitgeist.
To unsubscribe from this branch go to https://code.launchpad.net/~zeitgeist/zeitgeist/bluebird/+edit-subscription
=== modified file 'src/db-reader.vala'
--- src/db-reader.vala 2012-02-05 14:52:13 +0000
+++ src/db-reader.vala 2012-03-13 18:53:17 +0000
@@ -160,47 +160,9 @@
return results;
}
- public uint32[] find_event_ids (TimeRange time_range,
- GenericArray<Event> event_templates,
- uint storage_state, uint max_events, uint result_type,
- BusName? sender=null) throws EngineError
+ public uint32[] find_event_ids_for_clause (WhereClause where,
+ uint max_events, uint result_type) throws EngineError
{
-
- WhereClause where = new WhereClause (WhereClause.Type.AND);
-
- /**
- * We are using the unary operator here to tell SQLite to not use
- * the index on the timestamp column at the first place. This is a
- * "fix" for (LP: #672965) based on some benchmarks, which suggest
- * a performance win, but we might not oversee all implications.
- * (See http://www.sqlite.org/optoverview.html, section 6.0).
- * -- Markus Korn, 29/11/2010
- */
- if (time_range.start != 0)
- where.add (("+timestamp >= %" + int64.FORMAT).printf(
- time_range.start));
- if (time_range.end != 0)
- where.add (("+timestamp <= %" + int64.FORMAT).printf(
- time_range.end));
-
- if (storage_state == StorageState.AVAILABLE ||
- storage_state == StorageState.NOT_AVAILABLE)
- {
- where.add ("(subj_storage_state=? OR subj_storage_state IS NULL)",
- storage_state.to_string ());
- }
- else if (storage_state != StorageState.ANY)
- {
- throw new EngineError.INVALID_ARGUMENT(
- "Unknown storage state '%u'".printf(storage_state));
- }
-
- WhereClause tpl_conditions = get_where_clause_from_event_templates (
- event_templates);
- where.extend (tpl_conditions);
- //if (!where.may_have_results ())
- // return new uint32[0];
-
string sql = "SELECT id FROM event_view ";
string where_sql = "";
if (!where.is_empty ())
@@ -352,6 +314,20 @@
return event_ids;
}
+ public uint32[] find_event_ids (TimeRange time_range,
+ GenericArray<Event> event_templates,
+ uint storage_state, uint max_events, uint result_type,
+ BusName? sender=null) throws EngineError
+ {
+ WhereClause where = get_where_clause_for_query (time_range,
+ event_templates, storage_state);
+
+ //if (!where.may_have_results ())
+ // return new uint32[0];
+
+ return find_event_ids_for_clause (where, max_events, result_type);
+ }
+
public GenericArray<Event?> find_events (TimeRange time_range,
GenericArray<Event> event_templates,
uint storage_state, uint max_events, uint result_type,
@@ -361,6 +337,45 @@
storage_state, max_events, result_type));
}
+ public WhereClause get_where_clause_for_query (TimeRange time_range,
+ GenericArray<Event> event_templates, uint storage_state) throws EngineError
+ {
+ WhereClause where = new WhereClause (WhereClause.Type.AND);
+
+ /**
+ * We are using the unary operator here to tell SQLite to not use
+ * the index on the timestamp column at the first place. This is a
+ * "fix" for (LP: #672965) based on some benchmarks, which suggest
+ * a performance win, but we might not oversee all implications.
+ * (See http://www.sqlite.org/optoverview.html, section 6.0).
+ * -- Markus Korn, 29/11/2010
+ */
+ if (time_range.start != 0)
+ where.add (("+timestamp >= %" + int64.FORMAT).printf(
+ time_range.start));
+ if (time_range.end != 0)
+ where.add (("+timestamp <= %" + int64.FORMAT).printf(
+ time_range.end));
+
+ if (storage_state == StorageState.AVAILABLE ||
+ storage_state == StorageState.NOT_AVAILABLE)
+ {
+ where.add ("(subj_storage_state=? OR subj_storage_state IS NULL)",
+ storage_state.to_string ());
+ }
+ else if (storage_state != StorageState.ANY)
+ {
+ throw new EngineError.INVALID_ARGUMENT(
+ "Unknown storage state '%u'".printf(storage_state));
+ }
+
+ WhereClause tpl_conditions = get_where_clause_from_event_templates (
+ event_templates);
+ where.extend (tpl_conditions);
+
+ return where;
+ }
+
private struct RelatedUri {
public uint32 id;
public int64 timestamp;
@@ -596,7 +611,7 @@
}
// Used by find_event_ids
- protected WhereClause get_where_clause_from_event_templates (
+ public WhereClause get_where_clause_from_event_templates (
GenericArray<Event> templates) throws EngineError
{
WhereClause where = new WhereClause (WhereClause.Type.OR);