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 <siegfr...@gevatter.com> 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);
_______________________________________________ Mailing list: https://launchpad.net/~zeitgeist Post to : zeitgeist@lists.launchpad.net Unsubscribe : https://launchpad.net/~zeitgeist More help : https://help.launchpad.net/ListHelp