[Cpan-forum-commit] rev 324 - in trunk: . lib/CPAN lib/CPAN/Forum/DB

svn at pti.co.il svn at pti.co.il
Fri Aug 10 17:15:49 EEST 2007


Author: gabor
Date: 2007-08-10 17:15:49 +0300 (Fri, 10 Aug 2007)
New Revision: 324

Modified:
   trunk/
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/DB/Subscriptions.pm
Log:
replace the fetching of subscription usernames from the old and extreamly slow CDBI by
a single SQL statement



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4390
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
   + 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4391
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752

Modified: trunk/lib/CPAN/Forum/DB/Subscriptions.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Subscriptions.pm	2007-08-10 14:15:31 UTC (rev 323)
+++ trunk/lib/CPAN/Forum/DB/Subscriptions.pm	2007-08-10 14:15:49 UTC (rev 324)
@@ -43,4 +43,25 @@
 }
 
 
+sub get_subscriptions {
+    my ($self, $gid, $pauseid) = @_;
+
+    my $sql = "  SELECT DISTINCT username
+                   FROM users, subscriptions_all
+                   WHERE (users.id=subscriptions_all.uid AND subscriptions_all.allposts=1)
+               UNION
+                 SELECT DISTINCT username
+                   FROM users, subscriptions
+                   WHERE  (users.id=subscriptions.uid AND subscriptions.allposts=1 AND gid=?)
+               UNION
+                 SELECT DISTINCT username
+                   FROM users, subscriptions_pauseid
+                   WHERE  
+                     (users.id=subscriptions_pauseid.uid 
+                           AND subscriptions_pauseid.allposts=1 
+                           AND subscriptions_pauseid.pauseid=?)
+               ORDER BY username";
+    return $self->_select_column($sql, $gid, $pauseid);
+}
+
 1;

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-08-10 14:15:31 UTC (rev 323)
+++ trunk/lib/CPAN/Forum.pm	2007-08-10 14:15:49 UTC (rev 324)
@@ -1387,20 +1387,10 @@
 sub _subscriptions {
     my ($self, $t, $group) = @_;
 
-    my %people;
-    foreach my $s (
-            CPAN::Forum::DB::Subscriptions_all->search(allposts => 1),
-            CPAN::Forum::DB::Subscriptions_pauseid->search(allposts => 1, pauseid => $group->{pauseid}),
-            CPAN::Forum::DB::Subscriptions->search(allposts => 1, gid => $group->{id}),
-            ) {
-        $people{$s->uid} =  {
-            username => $s->uid->username,
-        };
-    }
-    if (%people) {
-        my @usernames = values %people;
-        $t->param(users => [sort {$a->{username} cmp $b->{username}} @usernames])
-    }
+    my $usernames = CPAN::Forum::DB::Subscriptions->get_subscriptions($group->{id}, $group->{pauseid}); # SQL
+    my @users = map {{username => $_}} @$usernames;
+    #$self->log->debug(Data::Dumper->Dump([\@users], ['users']));
+    $t->param(users => \@users);
 }
 
 sub add_new_group {



More information about the Cpan-forum-commit mailing list