jackc/pgx · error

invalid length for bit/varbit: bitLen=%d

Error message

invalid length for bit/varbit: bitLen=%d

What it means

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

Source

Thrown at pgtype/bits.go:177

}

type scanPlanBinaryBitsToBitsScanner struct{}

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

	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 {

View on GitHub (pinned to ec1a0befd2)

When it happens

Trigger: Thrown at pgtype/bits.go:177 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/4127b0bd5866d1c3.json. Report an issue: GitHub.