Le message est supprimé de la base de données (un SELECT ne le retournera plus) mais au niveau du fichier, la suppression est d'abord notée dans un fichier annexe (le fameux WAL) avant d'être "appliquée" sur le fichier principal en différé.
Ce n'est pas particulièrement surprenant quand on sait comment fonctionne sqlite, mais du coup le message n'est pas "supprimé" du fichier tant que le fichier principal n'est pas modifié.
Par ailleurs il existe un problème similaire pour tous les systèmes de fichiers, il n'y a pas de garantie que les changements soient appliqués sur le disque tant qu'on n'a pas appelé fsync(), ce que beaucoup de programmes ne font pas pour des raisons de performance.
Pour revenir à sqlite par contre, je ne comprends pas bien pourquoi ils utilisent le mode WAL vu qu'a priori il n'y a pas de soucis de performance particuliers (base petite, une seule connexion).
[^] # Re: Messages éphémères
Posté par nud . En réponse au lien supprimer un message de Signal ne le supprime pas. Évalué à 3 (+1/-0).
Le message est supprimé de la base de données (un SELECT ne le retournera plus) mais au niveau du fichier, la suppression est d'abord notée dans un fichier annexe (le fameux WAL) avant d'être "appliquée" sur le fichier principal en différé.
Ce n'est pas particulièrement surprenant quand on sait comment fonctionne sqlite, mais du coup le message n'est pas "supprimé" du fichier tant que le fichier principal n'est pas modifié.
Par ailleurs il existe un problème similaire pour tous les systèmes de fichiers, il n'y a pas de garantie que les changements soient appliqués sur le disque tant qu'on n'a pas appelé fsync(), ce que beaucoup de programmes ne font pas pour des raisons de performance.
Pour revenir à sqlite par contre, je ne comprends pas bien pourquoi ils utilisent le mode WAL vu qu'a priori il n'y a pas de soucis de performance particuliers (base petite, une seule connexion).