## 49.38. `pg_range`

The catalog `pg_range` stores information about range types. This is in addition to the types' entries in `pg_type`.

Table 49.38. `pg_range` Columns

Name | Type | References | Description
--- | --- | --- | ---
`rngtypid` | `oid` | ``pg_type`.oid` | OID of the range type
`rngsubtype` | `oid` | ``pg_type`.oid` | OID of the element type (subtype) of this range type
`rngcollation` | `oid` | ``pg_collation`.oid` | OID of the collation used for range comparisons, or 0 if none
`rngsubopc` | `oid` | ``pg_opclass`.oid` | OID of the subtype's operator class used for range comparisons
`rngcanonical` | `regproc` | ``pg_proc`.oid` | OID of the function to convert a range value into canonical form, or 0 if none
`rngsubdiff` | `regproc` | ``pg_proc`.oid` | OID of the function to return the difference between two element values as `double precision`, or 0 if none

`rngsubopc` (plus `rngcollation`, if the element type is collatable) determines the sort ordering used by the range type. `rngcanonical` is used when the element type is discrete. `rngsubdiff` is optional but should be supplied to improve performance of GiST indexes on the range type.