66.2. Built-in Operator Classes
Prev | Up | Chapter 66. GiST Indexes | Home | Next

## 66.2. Built-in Operator Classes

The core PostgreSQL distribution includes the GiST operator classes shown in Table 66.1. (Some of the optional modules described in Appendix F provide additional GiST operator classes.)

Table 66.1. Built-in GiST Operator Classes

Name | Indexable Operators | Ordering Operators
--- | --- | ---
`box_ops` | `<< (box, box)` | `<-> (box, point)`
`&< (box, box)`
`&& (box, box)`
`&> (box, box)`
`>> (box, box)`
`~= (box, box)`
`@> (box, box)`
`<@ (box, box)`
`&<| (box, box)`
`<<| (box, box)`
`|>> (box, box)`
`|&> (box, box)`
`circle_ops` | `<< (circle, circle)` | `<-> (circle, point)`
`&< (circle, circle)`
`&> (circle, circle)`
`>> (circle, circle)`
`<@ (circle, circle)`
`@> (circle, circle)`
`~= (circle, circle)`
`&& (circle, circle)`
`|>> (circle, circle)`
`<<| (circle, circle)`
`&<| (circle, circle)`
`|&> (circle, circle)`
`inet_ops` | `<< (inet, inet)` |
`<<= (inet, inet)`
`>> (inet, inet)`
`>>= (inet, inet)`
`= (inet, inet)`
`<> (inet, inet)`
`< (inet, inet)`
`<= (inet, inet)`
`> (inet, inet)`
`>= (inet, inet)`
`&& (inet, inet)`
`multirange_ops` | `= (anymultirange, anymultirange)` |
`&& (anymultirange, anymultirange)`
`&& (anymultirange, anyrange)`
`@> (anymultirange, anyelement)`
`@> (anymultirange, anymultirange)`
`@> (anymultirange, anyrange)`
`<@ (anymultirange, anymultirange)`
`<@ (anymultirange, anyrange)`
`<< (anymultirange, anymultirange)`
`<< (anymultirange, anyrange)`
`>> (anymultirange, anymultirange)`
`>> (anymultirange, anyrange)`
`&< (anymultirange, anymultirange)`
`&< (anymultirange, anyrange)`
`&> (anymultirange, anymultirange)`
`&> (anymultirange, anyrange)`
`-|- (anymultirange, anymultirange)`
`-|- (anymultirange, anyrange)`
`point_ops` | `|>> (point, point)` | `<-> (point, point)`
`<< (point, point)`
`>> (point, point)`
`<<| (point, point)`
`~= (point, point)`
`<@ (point, box)`
`<@ (point, polygon)`
`<@ (point, circle)`
`poly_ops` | `<< (polygon, polygon)` | `<-> (polygon, point)`
`&< (polygon, polygon)`
`&> (polygon, polygon)`
`>> (polygon, polygon)`
`<@ (polygon, polygon)`
`@> (polygon, polygon)`
`~= (polygon, polygon)`
`&& (polygon, polygon)`
`<<| (polygon, polygon)`
`&<| (polygon, polygon)`
`|&> (polygon, polygon)`
`|>> (polygon, polygon)`
`range_ops` | `= (anyrange, anyrange)` |
`&& (anyrange, anyrange)`
`&& (anyrange, anymultirange)`
`@> (anyrange, anyelement)`
`@> (anyrange, anyrange)`
`@> (anyrange, anymultirange)`
`<@ (anyrange, anyrange)`
`<@ (anyrange, anymultirange)`
`<< (anyrange, anyrange)`
`<< (anyrange, anymultirange)`
`>> (anyrange, anyrange)`
`>> (anyrange, anymultirange)`
`&< (anyrange, anyrange)`
`&< (anyrange, anymultirange)`
`&> (anyrange, anyrange)`
`&> (anyrange, anymultirange)`
`-|- (anyrange, anyrange)`
`-|- (anyrange, anymultirange)`
`tsquery_ops` | `<@ (tsquery, tsquery)` |
`@> (tsquery, tsquery)`
`tsvector_ops` | `@@ (tsvector, tsquery)` |

For historical reasons, the `inet_ops` operator class is not the default class for types `inet` and `cidr`. To use it, mention the class name in `CREATE INDEX`, for example

    CREATE INDEX ON my_table USING GIST (my_inet_column inet_ops);

Prev | Up | Next
66.1. Introduction | Home | 66.3. Extensibility