t8y2/dbx · error
pagesize must be positive
Error message
pagesize must be positive
What it means
The 'pagesize' (alias 'fetchsize') URL parameter must parse as a positive integer (>= 1). Zero, negative numbers, or non-integer values are rejected with this error because paging with a non-positive page size is invalid in CQL.
Source
Thrown at agents/drivers/cassandra-go/config.go:210
case "serialconsistency":
consistency, err := gocql.ParseConsistencyWrapper(value)
if err != nil {
return err
}
if consistency != gocql.Serial && consistency != gocql.LocalSerial {
return fmt.Errorf("serialconsistency must be SERIAL or LOCAL_SERIAL")
}
config.serialConsistency = value
case "numconns", "connectionsperhost":
count, err := strconv.Atoi(value)
if err != nil || count < 1 || count > 32 {
return fmt.Errorf("numconns must be between 1 and 32")
}
config.numConnections = count
case "pagesize", "fetchsize":
size, err := strconv.Atoi(value)
if err != nil || size < 1 {
return fmt.Errorf("pagesize must be positive")
}
config.pageSize = size
case "cqlversion":
config.cqlVersion = value
case "ssl", "enablessl":
enabled, err := strconv.ParseBool(value)
if err != nil {
return fmt.Errorf("invalid ssl option: %w", err)
}
config.ssl = enabled
case "hostverification", "verifyhostname", "sslhostnameverification", "hostnameverification":
enabled, err := strconv.ParseBool(value)
if err != nil {
return fmt.Errorf("invalid host verification option: %w", err)
}
config.hostVerification = enabled
case "tcpnodelay":
enabled, err := strconv.ParseBool(value)View on GitHub (pinned to c0390bff16)
Solutions
- Set pagesize to a positive integer (e.g. 5000).
- Remove pagesize to use the driver's default page size.
- For very large result sets, use a large value like 10000 rather than 0.
- Cast/round numeric values to int before embedding in the URL.
Example fix
// before cassandra://host:9042?pagesize=0 // after cassandra://host:9042?pagesize=5000
Defensive patterns
Strategy: validation
Validate before calling
n, err := strconv.Atoi(pageSize)
if err != nil || n < 1 {
return fmt.Errorf("pagesize must be a positive integer, got %q", pageSize)
} Try / catch
cfg, err := parseCassandraConfig(dsn)
if err != nil {
if strings.Contains(err.Error(), "pagesize must be positive") {
return fmt.Errorf("set pagesize to >= 1 (e.g. 5000); 0 does not mean unlimited: %w", err)
}
return err
} Prevention
- Remember 0/negative are invalid; use a large value for effectively unlimited pages
- Round/cast numeric config to int before serializing into the URL
- Validate pagesize wherever the DSN is generated, not at connection time
When it happens
Trigger: pagesize=0, fetchsize=-100, pagesize=auto, or pagesize=2.5 in a cassandra:// URL.
Common situations: Setting 0 expecting 'unlimited' pages (use a very large number instead), copying fetch sizes from JDBC drivers that use different units, or float values leaking from templating.
Related errors
- protocolversion must be between 3 and 5
- serialconsistency must be SERIAL or LOCAL_SERIAL
- numconns must be between 1 and 32
- retries must be between 0 and 1000
- unsupported Cassandra URL parameter: %s
AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05).
Data as JSON: /api/errors/79f9151ffb7cc43f.
Report an issue: GitHub.