14th September 2023: PostgreSQL 16 Released!
Supported Versions: Current (16) / 15 / 14 / 13 / 12 / 11
Development Versions: devel
Unsupported versions: 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2
This documentation is for an unsupported version of PostgreSQL.
You may want to view the same page for the current version, or one of the other supported versions listed above instead.

51.5. Limitations

GIN doesn't support full index scans: because there are often many keys per value, each heap pointer would be returned many times, and there is no easy way to prevent this.

When extractQuery returns zero keys, GIN will emit an error. Depending on the operator, a void query might match all, some, or none of the indexed values (for example, every array contains the empty array, but does not overlap the empty array), and GIN can't determine the correct answer, nor produce a full-index-scan result if it could determine that that was correct.

It is not an error for extractValue to return zero keys, but in this case the indexed value will be unrepresented in the index. This is another reason why full index scan is not useful — it would miss such rows.

GIN searches keys only by equality matching. This may be improved in future.