public URI toUri(String schemePrefix) {
        StringBuilder builder = new StringBuilder();
        String db = getDatabase().orElse(null);
        for (Entry<String, String> entry : options.entrySet()) {
            if (ClickHouseClientOption.DATABASE.getKey().equals(entry.getKey())) {
                db = entry.getValue();
                continue;
            }
            builder.append(entry.getKey()).append('=').append(entry.getValue()).append('&');
        }
        String query = null;
        if (builder.length() > 0) {
            builder.setLength(builder.length() - 1);
            query = builder.toString();
        }

        builder.setLength(0);
        boolean first = true;
        for (String tag : tags) {
            if (first) {
                first = false;
            } else {
                builder.append(',');
            }
            builder.append(ClickHouseUtils.encode(tag));
        }

        String p = protocol.name().toLowerCase(Locale.ROOT);
        if (ClickHouseChecker.isNullOrEmpty(schemePrefix)) {
            schemePrefix = p;
        } else {
            if (schemePrefix.charAt(schemePrefix.length() - 1) == ':') {
                schemePrefix = schemePrefix.concat(p);
            } else {
                schemePrefix = new StringBuilder(schemePrefix).append(':').append(p).toString();
            }
        }
        try {
            return new URI(schemePrefix, null, host, port, ClickHouseChecker.isNullOrEmpty(db) ? "" : "/".concat(db),
                    query, builder.length() > 0 ? builder.toString() : null);
        } catch (URISyntaxException e) {
            throw new IllegalStateException(e);
        }
    }
Converts to URI, without credentials for security reason.

@param schemePrefix optional prefix of scheme
@return non-null URI
clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseNode.java