If they are defined, they can override table-level settings.
MutableDataPartPtr & part, MergeTreeTransaction * txn, SimpleIncrement * increment = nullptr,
        Transaction * out_transaction = nullptr, MergeTreeDeduplicationLog * deduplication_log = nullptr);
    
    
    bool renameTempPartAndReplace(
        MutableDataPartPtr & part,
        MergeTreeTransaction * txn,
        SimpleIncrement * increment,
        Transaction * out_transaction,
        DataPartsLock & lock,
        DataPartsVector * out_covered_parts = nullptr,
        MergeTreeDeduplicationLog * deduplication_log = nullptr,
        std::string_view deduplication_token = std::string_view());
    
    
    
    void removePartsFromWorkingSetImmediatelyAndSetTemporaryState(const DataPartsVector & remove);
    
    
    
    
    void removePartsFromWorkingSet(MergeTreeTransaction * txn, const DataPartsVector & remove, bool clear_without_timeout, DataPartsLock * acquired_lock = nullptr);
    void removePartsFromWorkingSet(MergeTreeTransaction * txn, const DataPartsVector & remove, bool clear_without_timeout, DataPartsLock & acquired_lock);
    
    
    
    DataPartsVector removePartsInRangeFromWorkingSet(MergeTreeTransaction * txn, const MergeTreePartInfo & drop_range,
                                                     DataPartsLock & lock);
    
    void restoreAndActivatePart(const DataPartPtr & part, DataPartsLock * acquired_lock = nullptr);