On Wednesday, February 16, 2022, Jian He <hejian.m...@gmail.com> wrote:

>
> range type seem not mention their size in the docs.
> multi range size is variable.
> But range size seems fixed.
> why it's 17 byte?
>
> select  pg_column_size('[10,20)' ::int4range ); --17 byte
> select  pg_column_size('[-2147483648,2147483647)' ::int4range ); --17 byte.
>
> https://github.com/postgres/postgres/blob/4429f6a9e3e12bb4af6e3677fbc78cd80f160252/src/backend/utils/adt/rangetypes.c#L183

* Binary representation: The first byte is the flags, then 4 bytes are the
 * range type Oid, then the lower bound (if present) then the upper bound (if
 * present). Each bound is represented by a 4-byte length header and the binary
 * representation of that bound (as returned by a call to the send function for
 * the subtype).

David J.

Reply via email to