jackc/pgx · error

tsvector: %w

Error message

tsvector: %w

What it means

Error "tsvector: %w" thrown in jackc/pgx.

Source

Thrown at pgtype/tsvector.go:198

}

type scanPlanBinaryTSVectorToTSVectorScanner struct{}

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

	if src == nil {
		return scanner.ScanTSVector(TSVector{})
	}

	r := pgio.NewReader(src)

	// Each lexeme carries at minimum a 1-byte NUL terminator and a 2-byte position count. This
	// bounds the up-front make() against a malicious server claiming a huge lexeme count in a
	// small message.
	entryCount := r.Count(3)
	if err := r.Err(); err != nil {
		return fmt.Errorf("tsvector: %w", err)
	}

	var tsv TSVector
	if entryCount > 0 {
		tsv.Lexemes = make([]TSVectorLexeme, entryCount)
	}

	for i := range entryCount {
		lexeme := TSVectorLexeme{Word: string(r.CString())}

		numPositions := int(r.Uint16())
		if err := r.Err(); err != nil {
			return fmt.Errorf("invalid tsvector binary format: lexeme %d: %w", i, err)
		}

		// Each packed position is weight (2 bits) | position (14 bits). numPositions came from a
		// uint16, so it cannot ask for an unreasonable allocation here.
		if numPositions > 0 {

View on GitHub (pinned to ec1a0befd2)

When it happens

Trigger: Thrown at pgtype/tsvector.go:198 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/8f4d0d1aad9f2dd9.json. Report an issue: GitHub.