```sql

create table A ( A date) Engine=MergeTree order by A TTL A+interval 1 year;

alter table A reset SETTING TTL;

show create table A;

CREATE TABLE default.A
(
    `A` Date
)
ENGINE = MergeTree
ORDER BY A
TTL A + toIntervalYear(1)
SETTINGS index_granularity = 8192
```
addPartContributionToDataVolume(*it);
                modifyPartState(it, DataPartState::Active);
                restored_active_part = true;
            }
            pos = (*it)->info.max_block + 1;
            restored.push_back((*it)->name);
        }
        if (pos != part->info.max_block + 1)
            error = true;
        for (const String & name : restored)
        {
            LOG_INFO(log, "Activated part {}", name);
        }
        if (error)
        {
            LOG_ERROR(log, "The set of parts restored in place of {} looks incomplete. There might or might not be a data loss.{}", part->name, (error_parts.empty() ? "" : " Suspicious parts: " + error_parts));
        }
    }
    if (removed_active_part || restored_active_part)
        resetObjectColumnsFromActiveParts(lock);
}
void MergeTreeData::tryRemovePartImmediately(DataPartPtr && part)
{
    DataPartPtr part_to_delete;
    {
        auto lock = lockParts();
        LOG_TRACE(log, "Trying to immediately remove part {}", part->getNameWithState());
        if (part->getState() != DataPartState::Temporary)
        {
            auto it = data_parts_by_info.find(part->info);