Se base sur mon article de blog Nettoyer la base de donnée de Gwibber et parle de Gwibber qu'on ne présente plus.
Une base de donnée SQLite3 ~/.config/gwibber/gwibber.sqlite
, 5 tables
TODO: identifier le rôle des champs dans messages
, en particulier la colonne streams
Gwibber exécute une fonction maintenance()
au démarrage qui sert, en gros, à supprimer les 2000 plus vieux messages. Sauf qu'il existe d'autres types que messages
stockés dans la table messages
(je sais, il faut suivre).
sqlite> select count(*), stream from messages group by stream; 1352|images 3797|links 4680|messages 44|private 7|profile 640|replies 41|send_thread 4733|user 1248|videos
La commande pour supprimer les 2000 plus vieux messages est la suivante :
DELETE FROM messages WHERE operation = 'receive' AND stream = 'messages' AND time IN (SELECT CAST (time AS int) FROM (SELECT time FROM messages WHERE operation = 'receive' AND stream = 'messages' AND time != 0 ORDER BY time ASC LIMIT (SELECT COUNT(time) FROM messages WHERE operation = 'receive' AND stream = 'messages' AND time != 0) - 2000) ORDER BY time ASC);
En remplaçant les 3 stream = 'messages
' par le type que vous voulez (links
a tendance à grandir très fort).
On oublie pas de faire la commande VACUUM;
pour purger la base de donnée après avoir fait cela pour réduire la taille du fichier SQLite.
Un jour où je serai motivé, je mettrai tout ça dans un cron.
Le 12 août 2012, j'avais fait un bug report à ce sujet là (le nombre de 'links' qui augmentait beaucoup trop) sur launchpad mais il est resté sans réponse à ce jour (novembre 2012).
Bug #1035962 Maintenance does not clean links
Si vous pensez que c'est un problème qui mérite d'être résolu, n'hésitez pas à aller voter sur Launchpad pour attirer l'attention des développeurs.