pgsql: Fix bogus handling of JOIN_UNIQUE_OUTER/INNER cases for parallel
От | Tom Lane |
---|---|
Тема | pgsql: Fix bogus handling of JOIN_UNIQUE_OUTER/INNER cases for parallel |
Дата | |
Msg-id | E1cBspH-0007IB-Vi@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix bogus handling of JOIN_UNIQUE_OUTER/INNER cases for parallel joins. consider_parallel_nestloop passed the wrong jointype down to its subroutines for JOIN_UNIQUE_INNER cases (it should pass JOIN_INNER), and it thought that it could pass paths other than innerrel->cheapest_total_path to create_unique_path, which create_unique_path is not on board with. These bugs would lead to assertion failures or other errors, suggesting that this code path hasn't been tested much. hash_inner_and_outer's code for parallel join effectively treated both JOIN_UNIQUE_OUTER and JOIN_UNIQUE_INNER the same as JOIN_INNER (for different reasons :-(), leading to incorrect plans that treated a semijoin as if it were a plain join. Michael Day submitted a test case demonstrating that hash_inner_and_outer failed for JOIN_UNIQUE_OUTER, and I found the other cases through code review. Report: https://postgr.es/m/D0E8A029-D1AC-42E8-979A-5DE4A77E4413@rcmail.com Branch ------ REL9_6_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/e5b8aa636a63a9446e244fcc8d3a262e3e14049a Modified Files -------------- src/backend/optimizer/path/joinpath.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-)
В списке pgsql-committers по дате отправления: