summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSeif Lotfy <seif@lotfy.com>2012-12-29 14:49:29 +0100
committerSeif Lotfy <seif@lotfy.com>2012-12-29 14:49:29 +0100
commit2cb3761e05245fb66f26ec634e224d71ad4ec63f (patch)
tree03de4353b99b456fed1064ab36bbc95364014098
parentf647e3f3286ad87aaf3c4b34a91a69b15207dfbf (diff)
Reduce Query plan
-rw-r--r--configure.ac4
-rw-r--r--src/db-reader.vala73
2 files changed, 37 insertions, 40 deletions
diff --git a/configure.ac b/configure.ac
index df5f23d1..0e141739 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,7 +12,7 @@ AC_PROG_CXX
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
-AM_PROG_VALAC([0.17.4])
+AM_PROG_VALAC([0.18.0])
AS_IF([test -z "$VALAC"], [AC_MSG_ERROR(["No Vala compiler found."])])
AM_SILENT_RULES([yes])
@@ -29,7 +29,7 @@ AC_SUBST(CPPFLAGS)
AC_SUBST(LDFLAGS)
GLIB_REQUIRED=2.26.0
-SQLITE_REQUIRED=3.7
+SQLITE_REQUIRED=3.7.14
VALADOC_REQUIRED=0.2
ZEITGEIST_REQUIRED="glib-2.0 >= $GLIB_REQUIRED
diff --git a/src/db-reader.vala b/src/db-reader.vala
index f9434e1a..2a06eca7 100644
--- a/src/db-reader.vala
+++ b/src/db-reader.vala
@@ -187,103 +187,103 @@ public class DbReader : Object
sql += where_sql + " ORDER BY ";
break;
case ResultType.MOST_RECENT_EVENT_ORIGIN:
- sql += group_and_sort ("origin", where_sql);
+ sql = group_and_sort ("origin", where_sql);
break;
case ResultType.LEAST_RECENT_EVENT_ORIGIN:
- sql += group_and_sort ("origin", where_sql);
+ sql = group_and_sort ("origin", where_sql);
break;
case ResultType.MOST_POPULAR_EVENT_ORIGIN:
- sql += group_and_sort ("origin", where_sql, false);
+ sql = group_and_sort ("origin", where_sql, false);
break;
case ResultType.LEAST_POPULAR_EVENT_ORIGIN:
- sql += group_and_sort ("origin", where_sql, true);
+ sql = group_and_sort ("origin", where_sql, true);
break;
case ResultType.MOST_RECENT_SUBJECTS:
- sql += group_and_sort ("subj_id", where_sql);
+ sql = group_and_sort ("subj_id", where_sql);
break;
case ResultType.LEAST_RECENT_SUBJECTS:
- sql += group_and_sort ("subj_id", where_sql);
+ sql = group_and_sort ("subj_id", where_sql);
break;
case ResultType.MOST_POPULAR_SUBJECTS:
- sql += group_and_sort ("subj_id", where_sql, false);
+ sql = group_and_sort ("subj_id", where_sql, false);
break;
case ResultType.LEAST_POPULAR_SUBJECTS:
- sql += group_and_sort ("subj_id", where_sql, true);
+ sql = group_and_sort ("subj_id", where_sql, true);
break;
case ResultType.MOST_RECENT_CURRENT_URI:
- sql += group_and_sort ("subj_id_current", where_sql);
+ sql = group_and_sort ("subj_id_current", where_sql);
break;
case ResultType.LEAST_RECENT_CURRENT_URI:
- sql += group_and_sort ("subj_id_current", where_sql);
+ sql = group_and_sort ("subj_id_current", where_sql);
break;
case ResultType.MOST_POPULAR_CURRENT_URI:
- sql += group_and_sort ("subj_id_current", where_sql, false);
+ sql = group_and_sort ("subj_id_current", where_sql, false);
break;
case ResultType.LEAST_POPULAR_CURRENT_URI:
- sql += group_and_sort ("subj_id_current", where_sql, true);
+ sql = group_and_sort ("subj_id_current", where_sql, true);
break;
case ResultType.MOST_RECENT_ACTOR:
- sql += group_and_sort ("actor", where_sql);
+ sql = group_and_sort ("actor", where_sql);
break;
case ResultType.LEAST_RECENT_ACTOR:
- sql += group_and_sort ("actor", where_sql);
+ sql = group_and_sort ("actor", where_sql);
break;
case ResultType.MOST_POPULAR_ACTOR:
- sql += group_and_sort ("actor", where_sql, false);
+ sql = group_and_sort ("actor", where_sql, false);
break;
case ResultType.LEAST_POPULAR_ACTOR:
- sql += group_and_sort ("actor", where_sql, true);
+ sql = group_and_sort ("actor", where_sql, true);
break;
case ResultType.OLDEST_ACTOR:
- sql += group_and_sort ("actor", where_sql, null, "min");
+ sql = group_and_sort ("actor", where_sql, null, "min");
break;
case ResultType.MOST_RECENT_ORIGIN:
- sql += group_and_sort ("subj_origin", where_sql);
+ sql = group_and_sort ("subj_origin", where_sql);
break;
case ResultType.LEAST_RECENT_ORIGIN:
- sql += group_and_sort ("subj_origin", where_sql);
+ sql = group_and_sort ("subj_origin", where_sql);
break;
case ResultType.MOST_POPULAR_ORIGIN:
- sql += group_and_sort ("subj_origin", where_sql, false);
+ sql = group_and_sort ("subj_origin", where_sql, false);
break;
case ResultType.LEAST_POPULAR_ORIGIN:
- sql += group_and_sort ("subj_origin", where_sql, true);
+ sql = group_and_sort ("subj_origin", where_sql, true);
break;
case ResultType.MOST_RECENT_CURRENT_ORIGIN:
- sql += group_and_sort ("subj_origin_current", where_sql);
+ sql = group_and_sort ("subj_origin_current", where_sql);
break;
case ResultType.LEAST_RECENT_CURRENT_ORIGIN:
- sql += group_and_sort ("subj_origin_current", where_sql);
+ sql = group_and_sort ("subj_origin_current", where_sql);
break;
case ResultType.MOST_POPULAR_CURRENT_ORIGIN:
- sql += group_and_sort ("subj_origin_current", where_sql, false);
+ sql = group_and_sort ("subj_origin_current", where_sql, false);
break;
case ResultType.LEAST_POPULAR_CURRENT_ORIGIN:
- sql += group_and_sort ("subj_origin_current", where_sql, true);
+ sql = group_and_sort ("subj_origin_current", where_sql, true);
break;
case ResultType.MOST_RECENT_SUBJECT_INTERPRETATION:
- sql += group_and_sort ("subj_interpretation", where_sql);
+ sql = group_and_sort ("subj_interpretation", where_sql);
break;
case ResultType.LEAST_RECENT_SUBJECT_INTERPRETATION:
- sql += group_and_sort ("subj_interpretation", where_sql);
+ sql = group_and_sort ("subj_interpretation", where_sql);
break;
case ResultType.MOST_POPULAR_SUBJECT_INTERPRETATION:
- sql += group_and_sort ("subj_interpretation", where_sql, false);
+ sql = group_and_sort ("subj_interpretation", where_sql, false);
break;
case ResultType.LEAST_POPULAR_SUBJECT_INTERPRETATION:
- sql += group_and_sort ("subj_interpretation", where_sql, true);
+ sql = group_and_sort ("subj_interpretation", where_sql, true);
break;
case ResultType.MOST_RECENT_MIMETYPE:
- sql += group_and_sort ("subj_mimetype", where_sql);
+ sql = group_and_sort ("subj_mimetype", where_sql);
break;
case ResultType.LEAST_RECENT_MIMETYPE:
- sql += group_and_sort ("subj_mimetype", where_sql);
+ sql = group_and_sort ("subj_mimetype", where_sql);
break;
case ResultType.MOST_POPULAR_MIMETYPE:
- sql += group_and_sort ("subj_mimetype", where_sql, false);
+ sql = group_and_sort ("subj_mimetype", where_sql, false);
break;
case ResultType.LEAST_POPULAR_MIMETYPE:
- sql += group_and_sort ("subj_mimetype", where_sql, true);
+ sql = group_and_sort ("subj_mimetype", where_sql, true);
break;
default:
string error_message = "Invalid ResultType.";
@@ -600,12 +600,9 @@ public class DbReader : Object
}
return """
- NATURAL JOIN (
- SELECT %s,
- %s(timestamp) AS timestamp
+ SELECT DISTINCT id, %s, %s(timestamp) AS timestamp
%s
- FROM event_view %s
- GROUP BY %s)
+ FROM event_view %s AND %s > 0
GROUP BY %s
ORDER BY %s
""".printf (