code: func GenClickhouse(u *URL) (string, error) {
  	z := &url.URL{
  		Scheme:   "tcp",
  		Opaque:   u.Opaque,
  		Host:     u.Host,
  		Path:     u.Path,
  		RawPath:  u.RawPath,
  		RawQuery: u.RawQuery,
  		Fragment: u.Fragment,
  	}
  
  	if hostport(z.Host) == "" {
  		z.Host += ":9000"
  	}
  
  	// add parameters
  	q := z.Query()
  	if u.User != nil {
  		if user := u.User.Username(); len(user) > 0 {
  			q.Set("username", user)
  		}
  		if pass, ok := u.User.Password(); ok {
  			q.Set("password", pass)
  		}
  	}
  	z.RawQuery = q.Encode()
  
  	return z.String(), nil
  }
docs: // GenClickhouse generates a clickhouse DSN from the passed URL.