code: static Map<String, Object> mergeProperties(String url, Properties info)
    {
      final Map<String, Object> properties = new HashMap<>();
  
      // first deal with url
      int queryParamsIndex = url.indexOf("?");
  
      String serverUrl = queryParamsIndex > 0 ? url.substring(0, queryParamsIndex)
                                              : url;
      String queryParams = queryParamsIndex > 0 ? url.substring(queryParamsIndex + 1)
                                                : null;
  
      if (queryParams != null && !queryParams.isEmpty())
      {
        String[] entries = queryParams.split("&");
  
        for (String entry : entries)
        {
          int sep = entry.indexOf("=");
          if (sep > 0)
          {
            String key = entry.substring(0, sep).toUpperCase();
            properties.put(key, entry.substring(sep + 1));
          }
        }
      }
  
      for (Map.Entry<Object, Object> entry : info.entrySet())
      {
        properties.put(entry.getKey().toString().toUpperCase(), entry.getValue());
      }
  
      boolean sslOn = getBooleanTrueByDefault(properties.get("SSL"));
  
      serverUrl = serverUrl.replace(JDBC_PROTOCOL_PREFIX,
                                    sslOn ? SSL_NATIVE_PROTOCOL : NATIVE_PROTOCOL);
  
      properties.put("SERVERURL", serverUrl);
      properties.remove("SSL");
  
      // extracting ACCOUNT from URL if not set in the parameter
      if (properties.get("ACCOUNT") == null &&
          serverUrl.indexOf(".") > 0 &&
          serverUrl.indexOf("://") > 0)
      {
        String accountName = serverUrl.substring(serverUrl.indexOf("://") + 3,
                                                 serverUrl.indexOf("."));
  
        logger.debug("set account name to {}", accountName);
        properties.put("ACCOUNT", accountName);
      }
  
      return properties;
    }
docs: Processes parameters given in the connection string. This extracts
  accountName, databaseName, schemaName from
  the URL if it is specified there, where the URL is of the form:
  <p>
  jdbc:snowflake://host:port/?user=v&password=v&account=v&
  db=v&schema=v&ssl=v&[passcode=v|passcodeInPassword=on]
  
  @param url  a URL string
  @param info additional properties