jackc/pgx · error

invalid array, expected ']' got

Error message

invalid array, expected ']' got %v

What it means

After parsing '[lower:upper' in an explicit array dimension, parseUntypedTextArray expected the closing ']' but read something else. The dimension pair is unterminated or malformed.

Solutions

  1. Close every dimension with ']' before the next '[' or the '=' separator
  2. Use the plain '{...}' array form without explicit dimensions
  3. Regenerate the literal from a trusted encoder instead of string concatenation
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pgtype/array.go:157 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/1bbaeb436156632b. Report an issue: GitHub.

Appendix: source

Thrown at pgtype/array.go:157

				return nil, fmt.Errorf("invalid array: %w", err)
			}

			if r != ':' {
				return nil, fmt.Errorf("invalid array, expected ':' got %v", r)
			}

			upper, err := arrayParseInteger(buf)
			if err != nil {
				return nil, fmt.Errorf("invalid array: %w", err)
			}

			r, _, err = buf.ReadRune()
			if err != nil {
				return nil, fmt.Errorf("invalid array: %w", err)
			}

			if r != ']' {
				return nil, fmt.Errorf("invalid array, expected ']' got %v", r)
			}

			explicitDimensions = append(explicitDimensions, ArrayDimension{LowerBound: lower, Length: upper - lower + 1})
		}

		r, _, err = buf.ReadRune()
		if err != nil {
			return nil, fmt.Errorf("invalid array: %w", err)
		}
	}

	if r != '{' {
		return nil, fmt.Errorf("invalid array, expected '{' got %v", r)
	}

	implicitDimensions := []ArrayDimension{{LowerBound: 1, Length: 0}}

	// Consume all initial opening brackets. This provides number of dimensions.

View on GitHub (pinned to ec1a0befd2)