]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Update sorting for tag-filtered public timeline: needs notice_tag_tag_created_notice_...
authorBrion Vibber <brion@pobox.com>
Fri, 17 Dec 2010 22:37:46 +0000 (14:37 -0800)
committerBrion Vibber <brion@pobox.com>
Fri, 17 Dec 2010 22:37:46 +0000 (14:37 -0800)
classes/Notice_tag.php
db/096to097.sql
db/statusnet.sql

index 6eada7022469f2c753b85771eb7a86682c67cc73..bb67c8f8195740ac82504fad049421d943465259 100644 (file)
@@ -55,15 +55,10 @@ class Notice_tag extends Memcached_DataObject
         $nt->selectAdd();
         $nt->selectAdd('notice_id');
 
-        if ($since_id != 0) {
-            $nt->whereAdd('notice_id > ' . $since_id);
-        }
-
-        if ($max_id != 0) {
-            $nt->whereAdd('notice_id <= ' . $max_id);
-        }
+        Notice::addWhereSinceId($nt, $since_id, 'notice_id');
+        Notice::addWhereMaxId($nt, $max_id, 'notice_id');
 
-        $nt->orderBy('notice_id DESC');
+        $nt->orderBy('created DESC, notice_id DESC');
 
         if (!is_null($offset)) {
             $nt->limit($offset, $limit);
index 53f4e97c9c246d09c0d7acffaba4fde917ece402..38e4e958b8e888b79dcdd1f4920d692a9a32eb98 100644 (file)
@@ -1,3 +1,7 @@
 -- Add indexes for sorting changes in 0.9.7
+
 -- Allows sorting public timeline by timestamp efficiently
 alter table notice add index notice_created_id_is_local_idx (created,id,is_local);
+
+-- Allows sorting tag-filtered public timeline by timestamp efficiently
+alter table notice_tag add index notice_tag_tag_created_notice_id_idx (tag, created, notice_id);
index b372305d0037f67efdfd93e30b8d6957c4c8dfbd..76a821bafe513001fecb25fdc44c23373489ee57 100644 (file)
@@ -307,7 +307,10 @@ create table notice_tag (
 
     constraint primary key (tag, notice_id),
     index notice_tag_created_idx (created),
-    index notice_tag_notice_id_idx (notice_id)
+    index notice_tag_notice_id_idx (notice_id),
+
+    -- For sorting tag-filtered public timeline
+    index notice_tag_tag_created_notice_id_idx (tag, created, notice_id)
 ) ENGINE=InnoDB CHARACTER SET utf8 COLLATE utf8_bin;
 
 /* Synching with foreign services */