If they are defined, they can override table-level settings.
MutableDataPartPtr & part,
    MergeTreeTransaction * txn,
    SimpleIncrement * increment,
    Transaction * out_transaction,
    std::unique_lock<std::mutex> & lock,
    DataPartsVector * out_covered_parts,
    MergeTreeDeduplicationLog * deduplication_log,
    std::string_view deduplication_token)
{
    if (out_transaction && &out_transaction->data != this)
        throw Exception("MergeTreeData::Transaction for one table cannot be used with another. It is a bug.",
            ErrorCodes::LOGICAL_ERROR);
    if (txn)
        transactions_enabled.store(true);
    part->assertState({DataPartState::Temporary});
    MergeTreePartInfo part_info = part->info;
    String part_name;