If they are defined, they can override table-level settings.
if (!zookeeper->tryGet(quorum_path, value, nullptr, event))
                break;
            LOG_TRACE(log, "Quorum node {} still exists, will wait for updates", quorum_path);
            ReplicatedMergeTreeQuorumEntry quorum_entry(value);
            
            if (quorum_entry.part_name != part_name)
                break;
            if (!event->tryWait(quorum_timeout_ms))
                throw Exception("Timeout while waiting for quorum", ErrorCodes::TIMEOUT_EXCEEDED);
            LOG_TRACE(log, "Quorum {} updated, will check quorum node still exists", quorum_path);
        }
        
        
        String value;
        if (!zookeeper->tryGet(storage.replica_path + "/is_active", value, nullptr)
            || value != is_active_node_value)
            throw Exception("Replica become inactive while waiting for quorum", ErrorCodes::NO_ACTIVE_REPLICAS);
    }
    catch (...)
    {
        
        
        throw Exception("Unknown status, client must retry. Reason: " + getCurrentExceptionMessage(false),
            ErrorCodes::UNKNOWN_STATUS_OF_INSERT);
    }
    LOG_TRACE(log, "Quorum satisfied");
}
}