• Alvaro Herrera's avatar
    Improve pruning of a default partition · 489247b0
    Alvaro Herrera authored
    When querying a partitioned table containing a default partition, we
    were wrongly deciding to include it in the scan too early in the
    process, failing to exclude it in some cases.  If we reinterpret the
    PruneStepResult.scan_default flag slightly, we can do a better job at
    detecting that it can be excluded.  The change is that we avoid setting
    the flag for that pruning step unless the step absolutely requires the
    default partition to be scanned (in contrast with the previous
    arrangement, which was to set it unless the step was able to prune it).
    So get_matching_partitions() must explicitly check the partition that
    each returned bound value corresponds to in order to determine whether
    the default one needs to be included, rather than relying on the flag
    from the final step result.
    
    Author: Yuzuko Hosoya <hosoya.yuzuko@lab.ntt.co.jp>
    Reviewed-by: default avatarAmit Langote <Langote_Amit_f8@lab.ntt.co.jp>
    Discussion: https://postgr.es/m/00e601d4ca86$932b8bc0$b982a340$@lab.ntt.co.jp
    489247b0
partprune.c 105 KB