• Dean Rasheed's avatar
    Use MINVALUE/MAXVALUE instead of UNBOUNDED for range partition bounds. · d363d42b
    Dean Rasheed authored
    Previously, UNBOUNDED meant no lower bound when used in the FROM list,
    and no upper bound when used in the TO list, which was OK for
    single-column range partitioning, but problematic with multiple
    columns. For example, an upper bound of (10.0, UNBOUNDED) would not be
    collocated with a lower bound of (10.0, UNBOUNDED), thus making it
    difficult or impossible to define contiguous multi-column range
    partitions in some cases.
    
    Fix this by using MINVALUE and MAXVALUE instead of UNBOUNDED to
    represent a partition column that is unbounded below or above
    respectively. This syntax removes any ambiguity, and ensures that if
    one partition's lower bound equals another partition's upper bound,
    then the partitions are contiguous.
    
    Also drop the constraint prohibiting finite values after an unbounded
    column, and just document the fact that any values after MINVALUE or
    MAXVALUE are ignored. Previously it was necessary to repeat UNBOUNDED
    multiple times, which was needlessly verbose.
    
    Note: Forces a post-PG 10 beta2 initdb.
    
    Report by Amul Sul, original patch by Amit Langote with some
    additional hacking by me.
    
    Discussion: https://postgr.es/m/CAAJ_b947mowpLdxL3jo3YLKngRjrq9+Ej4ymduQTfYR+8=YAYQ@mail.gmail.com
    d363d42b
parsenodes.h 115 KB