• Alexander Korotkov's avatar
    Multirange datatypes · 6df7a969
    Alexander Korotkov authored
    Multiranges are basically sorted arrays of non-overlapping ranges with
    set-theoretic operations defined over them.
    
    Since v14, each range type automatically gets a corresponding multirange
    datatype.  There are both manual and automatic mechanisms for naming multirange
    types.  Once can specify multirange type name using multirange_type_name
    attribute in CREATE TYPE.  Otherwise, a multirange type name is generated
    automatically.  If the range type name contains "range" then we change that to
    "multirange".  Otherwise, we add "_multirange" to the end.
    
    Implementation of multiranges comes with a space-efficient internal
    representation format, which evades extra paddings and duplicated storage of
    oids.  Altogether this format allows fetching a particular range by its index
    in O(n).
    
    Statistic gathering and selectivity estimation are implemented for multiranges.
    For this purpose, stored multirange is approximated as union range without gaps.
    This field will likely need improvements in the future.
    
    Catversion is bumped.
    
    Discussion: https://postgr.es/m/CALNJ-vSUpQ_Y%3DjXvTxt1VYFztaBSsWVXeF1y6gTYQ4bOiWDLgQ%40mail.gmail.com
    Discussion: https://postgr.es/m/a0b8026459d1e6167933be2104a6174e7d40d0ab.camel%40j-davis.com#fe7218c83b08068bfffb0c5293eceda0
    Author: Paul Jungwirth, revised by me
    Reviewed-by: David Fetter, Corey Huinker, Jeff Davis, Pavel Stehule
    Reviewed-by: Alvaro Herrera, Tom Lane, Isaac Morland, David G. Johnston
    Reviewed-by: Zhihong Yu, Alexander Korotkov
    6df7a969
tupmacs.h 7.37 KB