jackc/pgx · error

invalid length for bit/varbit: bitLen=%d: %w

Error message

invalid length for bit/varbit: bitLen=%d: %w

What it means

Error "invalid length for bit/varbit: bitLen=%d: %w" thrown in jackc/pgx.

Source

Thrown at pgtype/bits.go:184

	if src == nil {
		return scanner.ScanBits(Bits{})
	}

	r := pgio.NewReader(src)

	bitLen := r.Int32()
	if err := r.Err(); err != nil {
		return fmt.Errorf("invalid length for bit/varbit: %w", err)
	}
	if bitLen < 0 {
		return fmt.Errorf("invalid length for bit/varbit: bitLen=%d", bitLen)
	}

	// Finish rejects trailing bytes, so together with the read below the data
	// must be exactly the number of bytes bitLen calls for.
	data := r.Bytes((int(bitLen) + 7) / 8)
	if err := r.Finish(); err != nil {
		return fmt.Errorf("invalid length for bit/varbit: bitLen=%d: %w", bitLen, err)
	}

	buf := make([]byte, len(data))
	copy(buf, data)

	return scanner.ScanBits(Bits{Bytes: buf, Len: bitLen, Valid: true})
}

type scanPlanTextAnyToBitsScanner struct{}

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

	if src == nil {
		return scanner.ScanBits(Bits{})
	}

	bitLen := len(src)

View on GitHub (pinned to ec1a0befd2)

When it happens

Trigger: Thrown at pgtype/bits.go:184 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: /data/errors/e4630fee14d97024.json. Report an issue: GitHub.