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  (Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>)
Список 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 по дате отправления:

Предыдущее
От: Dean Rasheed
Дата:
Сообщение: Re: Functions to return random numbers in a given range
Следующее
От: Dean Rasheed
Дата:
Сообщение: Re: Functions to return random numbers in a given range