t8y2/dbx · error
parse IoTDB URL parameters: %w
Error message
parse IoTDB URL parameters: %w
What it means
Thrown by parseConnectionConfig when the URLParams string of the connect params cannot be parsed by url.ParseQuery, e.g. malformed percent-encoding or an invalid escape sequence. The underlying net/url error is wrapped with 'parse IoTDB URL parameters: %w' so callers know connection setup failed at the parameter-parsing stage.
Source
Thrown at agents/drivers/iotdb/driver.go:148
config.Port = port
}
if parsed.User != nil {
if username := parsed.User.Username(); username != "" {
config.Username = username
}
if password, ok := parsed.User.Password(); ok {
config.Password = password
}
}
if database := strings.Trim(strings.TrimSpace(parsed.Path), "/"); database != "" {
config.Database = database
}
query = parsed.Query()
}
if raw := strings.TrimSpace(params.URLParams); raw != "" {
values, err := url.ParseQuery(strings.TrimPrefix(raw, "?"))
if err != nil {
return connectionConfig{}, fmt.Errorf("parse IoTDB URL parameters: %w", err)
}
for key, entries := range values {
query[key] = entries
}
}
if dialect := strings.ToLower(strings.TrimSpace(firstQueryValue(query, "sql_dialect", "dialect"))); dialect != "" {
switch dialect {
case client.TreeSqlDialect, client.TableSqlDialect:
config.Dialect = dialect
default:
return connectionConfig{}, fmt.Errorf("unsupported IoTDB SQL dialect: %s", dialect)
}
}
if database := strings.TrimSpace(firstQueryValue(query, "database", "db")); database != "" {
config.Database = database
}
if value := firstQueryValue(query, "fetch_size", "fetchSize"); value != "" {View on GitHub (pinned to c0390bff16)
Solutions
- Check the URLParams string for invalid percent-escapes; every '%' must be followed by two hex digits.
- URL-encode special characters (%, &, =) with url.QueryEscape before passing them as URLParams.
- If assembling from parts, use url.Values.Encode() instead of hand-built query strings.
- Inspect the wrapped %w error, which pinpoints the exact parse failure.
Example fix
// before
params.URLParams = "fetch_size=10&token=abc%"
// after
params.URLParams = "fetch_size=10&token=" + url.QueryEscape("abc%") Defensive patterns
Strategy: validation
Validate before calling
func validURLParams(raw string) error {
raw = strings.TrimSpace(raw)
if raw == "" {
return nil
}
_, err := url.ParseQuery(strings.TrimPrefix(raw, "?"))
return err
} Try / catch
cfg, err := parseConnectionConfig(params)
if err != nil {
var uerr *url.Error
if errors.As(err, &uerr) || strings.Contains(err.Error(), "parse IoTDB URL parameters") {
return fmt.Errorf("check URLParams encoding: %w", err)
}
return err
} Prevention
- Build query strings with url.Values.Encode() instead of concatenation.
- Percent-encode user-supplied values with url.QueryEscape.
- Run validURLParams on config before connecting.
When it happens
Trigger: Passing a URLParams string containing invalid percent-escapes (e.g. '%ZZ', a bare '%'), an unterminated escape, or query syntax rejected by net/url.
Common situations: Users paste a JDBC-style parameter string encoded for a different consumer, environment variables leave a malformed '%' after shell expansion, or a literal '%' from a password was not re-encoded.
Related errors
- Hive host is required
- Hive endpoint is empty
- Hive JWT authentication requires jwt or the JWT environment
- Hive delegation token authentication requires delegationToke
- ZooKeeper server list is empty
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/d33b53863cb83f74.
Report an issue: GitHub.