jackc/pgx · error

Received an invalid size for an interval

Error message

Received an invalid size for an interval: %w

What it means

Wrapping error from the binary interval scan plan: after reading the three fixed components (microseconds, days, months) the pgio.Reader still had bytes left. A binary interval is exactly 16 bytes; any other size means corrupted data.

Solutions

  1. Treat as protocol/data corruption — verify the column is interval
  2. Check for driver/server version mismatch
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pgtype/interval.go:190 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of jackc/pgx@ec1a0befd2 (2026-08-04). Data as JSON: /api/errors/74f200bb43a66d67. Report an issue: GitHub.

Appendix: source

Thrown at pgtype/interval.go:190

}

type scanPlanBinaryIntervalToIntervalScanner struct{}

func (scanPlanBinaryIntervalToIntervalScanner) Scan(src []byte, dst any) error {
	scanner := (dst).(IntervalScanner)

	if src == nil {
		return scanner.ScanInterval(Interval{})
	}

	r := pgio.NewReader(src)

	microseconds := r.Int64()
	days := r.Int32()
	months := r.Int32()

	if err := r.Finish(); err != nil {
		return fmt.Errorf("Received an invalid size for an interval: %w", err)
	}

	return scanner.ScanInterval(Interval{Microseconds: microseconds, Days: days, Months: months, Valid: true})
}

type scanPlanTextAnyToIntervalScanner struct{}

func (scanPlanTextAnyToIntervalScanner) Scan(src []byte, dst any) error {
	scanner := (dst).(IntervalScanner)

	if src == nil {
		return scanner.ScanInterval(Interval{})
	}

	var microseconds int64
	var days int32
	var months int32

View on GitHub (pinned to ec1a0befd2)