Glossaire
Freeblock SQLite
Un bloc d’espace libre dans une page b-tree SQLite, chaîné dans une liste. Les enregistrements supprimés y survivent souvent.
Dans une page b-tree SQLite, l’espace libéré par une cellule supprimée devient un freeblock. Les freeblocks forment une liste chaînée à l’intérieur de la page : les 2 premiers octets de chacun donnent la position du suivant et les 2 octets suivants sa taille. Ces 4 octets écrasent le début de l’ancienne cellule, mais le reste de l’enregistrement, y compris les types sériels de son en-tête, survit souvent.
C’est ce qui permet de carver des lignes supprimées de QuarantineEventsV2 : on s’ancre sur les types sériels d’un enregistrement LSQuarantineEvent et on lit les valeurs qui suivent. Rien ne garantit cette survie. Le paramètre secure_delete de SQLite écrase le contenu libéré, et les écritures ultérieures réutilisent l’espace : l’absence de lignes récupérées ne prouve donc rien. Voir récupérer des événements de quarantaine supprimés.