User Tools

Site Tools


reference:reset_message_folder_counts

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
reference:reset_message_folder_counts [2014/11/19 12:53] paulreference:reset_message_folder_counts [2018/11/14 10:45] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ======Reset Message Folder Counts====== ======Reset Message Folder Counts======
  
-In extremely rare cases, the message folder counts in the database may get out of step with the actual stored messages. There are database triggers which will keep the counts in sync, but if you have to manipulate the database directly (eg to recover from a corrupted database) it is possible that they will get out of step.+In extremely rare cases, the mail folder message counts in the database may get out of step with the actual stored messages. There are database triggers which will keep the counts in sync during normal operation, but if you have to manipulate the database directly (eg to recover from a corrupted database) it is possible that they will get out of step.
  
-**Before running the query below you will need to stop VPOP3**. Note that running it will take some time, depending on the size of the database and the performance of the database server, and there is no progress indicator for database queries.+**Before running the query below you will need to stop VPOP3**. Note that running it will take some time, depending on the size of the database and the performance of the VPOP3 server, and there is no progress indicator for database queries.
  
 At a command prompt in the VPOP3 directory run At a command prompt in the VPOP3 directory run
Line 12: Line 12:
 Then, type Then, type
  
-  with ff as (select folderid,count(*) as cnt, sum(length(msgdata)) as totsize, +  with ff as (select folderid,count(msgid) as cnt, coalesce(sum(length(msgdata)),0) as totsize, 
   sum(case when newflag then 1 else 0 end) as newcnt,    sum(case when newflag then 1 else 0 end) as newcnt, 
-  sum(case when read and not hold then else end) as unreadcnt,  +  count(case when read and not hold then null else msgid end) as unreadcnt,  
-  sum(case when hold then 1 else 0 end) as holdcnt from  +  sum(case when hold then 1 else 0 end) as holdcnt from messages.folders left join  
-  messages.foldermessages inner join messages.msgdata using(msgdataid) where deletedtime is null group by folderid) +  (messages.foldermessages inner join messages.msgdata using(msgdataid)) using(folderid)  
-  update messages.folders f set msgcount=ff.cnt, totalsize=totsize, newcount=newcnt, unreadcount=unreadcnt, +  where deletedtime is null group by folderid)  
-  holdcount=holdcnt from ff where f.folderid=ff.folderid;+  update messages.folders f set msgcount=ff.cnt, totalsize=totsize, newcount=newcnt,  
 +  unreadcount=unreadcnt, holdcount=holdcnt from ff where f.folderid=ff.folderid;
      
 (Copy and paste if possible!) (Copy and paste if possible!)
 +
 +N.B. VPOP3 **does** need to be stopped while you do this
reference/reset_message_folder_counts.1416401616.txt.gz · Last modified: 2018/11/14 10:44 (external edit)