• Tom Lane's avatar
    Teach SPGiST to store nulls and do whole-index scans. · c6a11b89
    Tom Lane authored
    This patch fixes the other major compatibility-breaking limitation of
    SPGiST, that it didn't store anything for null values of the indexed
    column, and so could not support whole-index scans or "x IS NULL"
    tests.  The approach is to create a wholly separate search tree for
    the null entries, and use fixed "allTheSame" insertion and search
    rules when processing this tree, instead of calling the index opclass
    methods.  This way the opclass methods do not need to worry about
    dealing with nulls.
    
    Catversion bump is for pg_am updates as well as the change in on-disk
    format of SPGiST indexes; there are some tweaks in SPGiST WAL records
    as well.
    
    Heavily rewritten version of a patch by Oleg Bartunov and Teodor Sigaev.
    (The original also stored nulls separately, but it reused GIN code to do
    so; which required undesirable compromises in the on-disk format, and
    would likely lead to bugs due to the GIN code being required to work in
    two very different contexts.)
    c6a11b89
README 16.3 KB