Похоже, что в общем случае серия форсированных (с некоторой периодичностью) OPTIMIZE FINAL не гарантируют обнуления значений для column TTL столбцов ReplicatedMergeTree таблицы, у которых этот column TTL просрочен.
Выражение для column TTL: toDate(end_datetime) + toIntervalDay(1) , где end_datetime - DateTime событий.
Таблица партиционирована как toYYYYMMDD(end_datetime).
Версия
20.10.7.4Я у себя сейчас на партишне 20210320 этот эффект воспроизвёл.
В этом партишне у всех событий toDate(end_datetime)='2021-03-20', поэтому предполагалось, что для всех событий столбцы с column TTL "toDate(end_datetime) + toIntervalDay(1) " должны были обнулиться.
OPTIMIZE FINAL все 18 партов этого партишна сейчас объединяет в один, и уже видно, что .bin файлы для column TTL столбцов вполне себе не нулевые.
Я внутри партов полазил - и вижу, что во многих из этих партов есть записи, где значение column TTL столбцов не сброшены, но на диске в файле ttl.txt для этих столбцов стоят нули.
Видимо при слияниях с помощью OPTIMIZE кликхаус отталкивается от содержимого данного файла, и поэтому в новый парт попадают не обнулившиеся значения.