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.