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

  1. Set pagesize to a positive integer (e.g. 5000).
  2. Remove pagesize to use the driver's default page size.
  3. For very large result sets, use a large value like 10000 rather than 0.
  4. 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

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


AI-assisted analysis of t8y2/dbx@c0390bff16 (2026-09-05). Data as JSON: /api/errors/79f9151ffb7cc43f. Report an issue: GitHub.