Check parallel safety in generate_useful_gather_paths
authorTomas Vondra <tomas.vondra@postgresql.org>
Mon, 21 Dec 2020 17:29:46 +0000 (18:29 +0100)
committerTomas Vondra <tomas.vondra@postgresql.org>
Mon, 21 Dec 2020 17:29:49 +0000 (18:29 +0100)
commit86b7cca72d4d0a4e043fac0a2cdd56218ff2f258
tree43acee2bc25e67f25883383674bd78f64c6f004e
parentf4a3c0b06250ddc8ae09b59b87cf68e9bc0d7ca1
Check parallel safety in generate_useful_gather_paths

Commit ebb7ae839d ensured we ignore pathkeys with volatile expressions
when considering adding a sort below a Gather Merge. Turns out we need
to care about parallel safety of the pathkeys too, otherwise we might
try sorting e.g. on results of a correlated subquery (as demonstrated
by a report from Luis Roberto).

Initial investigation by Tom Lane, patch by James Coleman. Backpatch
to 13, where the code was instroduced (as part of Incremental Sort).

Reported-by: Luis Roberto
Author: James Coleman
Reviewed-by: Tomas Vondra
Backpatch-through: 13
Discussion: https://postgr.es/m/622580997.37108180.1604080457319.JavaMail.zimbra%40siscobra.com.br
Discussion: https://postgr.es/m/CAAaqYe8cK3g5CfLC4w7bs=hC0mSksZC=H5M8LSchj5e5OxpTAg@mail.gmail.com
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/path/equivclass.c
src/include/optimizer/paths.h
src/test/regress/expected/incremental_sort.out
src/test/regress/sql/incremental_sort.sql