If they are defined, they can override table-level settings.
bool deduplicate_block = !block_id.empty();
        String block_id_path = deduplicate_block ? storage.zookeeper_path + "/blocks/" + block_id : "";
        auto block_number_lock = storage.allocateBlockNumber(part->info.partition_id, zookeeper, block_id_path);
        
        
        Coordination::Requests ops;
        Int64 block_number = 0;
        String existing_part_name;
        if (block_number_lock)
        {
            is_already_existing_part = false;
            block_number = block_number_lock->getNumber();
            
            part->info.min_block = block_number;
            part->info.max_block = block_number;
            part->info.level = 0;
            part->info.mutation = 0;
            part->name = part->getNewName(part->info);
            StorageReplicatedMergeTree::LogEntry log_entry;
            if (is_attach)
            {
                log_entry.type = StorageReplicatedMergeTree::LogEntry::ATTACH_PART;
                
                
                
                log_entry.part_checksum = part->checksums.getTotalChecksumHex();
            }
            else
                log_entry.type = StorageReplicatedMergeTree::LogEntry::GET_PART;