From f7753df94b6f62f0b3c1bf3ecc34f5ecc81ef361 Mon Sep 17 00:00:00 2001 From: Seif Lotfy Date: Mon, 18 Jun 2012 20:06:25 +0200 Subject: [PATCH] Added a simple check to figure out whether to use event_view or event table for querying. --- src/db-reader.vala | 4 ++++ src/where-clause.vala | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/db-reader.vala b/src/db-reader.vala index 8dac1cc..9af6d5a 100644 --- a/src/db-reader.vala +++ b/src/db-reader.vala @@ -281,6 +281,9 @@ public class DbReader : Object bool time_asc = ResultType.is_sort_order_asc ((ResultType) result_type); sql += " timestamp %s".printf ((time_asc) ? "ASC" : "DESC"); + if (where.get_is_simple ()) + sql = sql.replace ("FROM event_view", "FROM event"); + int rc; Sqlite.Statement stmt; @@ -367,6 +370,7 @@ public class DbReader : Object { where.add ("(subj_storage_state=? OR subj_storage_state IS NULL)", storage_state.to_string ()); + where.set_is_simple (false); } else if (storage_state != StorageState.ANY) { diff --git a/src/where-clause.vala b/src/where-clause.vala index fb5f5f0..a942848 100644 --- a/src/where-clause.vala +++ b/src/where-clause.vala @@ -55,11 +55,13 @@ namespace Zeitgeist private bool negated; private GenericArray conditions; private GenericArray arguments; + private bool is_simple; public WhereClause (WhereClause.Type type, bool negate=false) { clause_type = type; negated = negate; + is_simple = true; conditions = new GenericArray (); arguments = new GenericArray (); } @@ -126,6 +128,7 @@ namespace Zeitgeist string sql = "%s %s= (SELECT id FROM %s WHERE value = ?)".printf ( column, (negation) ? "!" : "", search_table); add (sql, val); + is_simple = false; } public void add_text_condition (string column, string val, @@ -152,6 +155,7 @@ namespace Zeitgeist sql = "(%s NOT IN (%s) OR %s is NULL)".printf (column, optimized_glob, column); add_with_array (sql, values); + is_simple = false; } public void extend (WhereClause clause) @@ -160,6 +164,7 @@ namespace Zeitgeist return; string sql = clause.get_sql_conditions (); add_with_array (sql, clause.arguments); + is_simple = clause.get_is_simple (); /*if not where.may_have_results(): if self._relation == self.AND: self.clear() @@ -177,6 +182,16 @@ namespace Zeitgeist return conditions.length > 0; // or not self._no_result_member } + public bool get_is_simple () + { + return is_simple; + } + + public void set_is_simple (bool simple) + { + is_simple = simple; + } + /** * This is dangerous. Only use it if you're made full of awesome. */ -- 1.7.9.5