Incorrect cost for MergeAppend
От | Alexander Kuzmenkov |
---|---|
Тема | Incorrect cost for MergeAppend |
Дата | |
Msg-id | CALzhyqyhoXQDR-Usd_0HeWk=uqNLzoVeT8KhRoo=pV_KzgO3QQ@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: Incorrect cost for MergeAppend
|
Список | pgsql-hackers |
Hello hackers, While investigating some query plans, I noticed some code that seems to be wrong: when create_merge_append_path() estimates the cost of sorting an input, it calls cost_sort() passing subpath->parent->tuples as the number of tuples. Shouldn't it use subpath->parent->rows or even subpath->rows instead? The `tuples` variable doesn't account for the filters on the relation, so this leads to incorrect cost estimates when there are highly selective filters, and Sort + Append is chosen instead of MergeAppend. I don't have a good repro yet because the plans I've been studying involve a third-party extension, but the code looks incorrect so I thought I should ask. Here is a link to this code on GitHub: https://github.com/postgres/postgres/blob/6a1ea02c491d16474a6214603dce40b5b122d4d1/src/backend/optimizer/util/pathnode.c#L1469-L1477 --- Alexander Kuzmenkov Timescale
В списке pgsql-hackers по дате отправления: