Parallel Aggregate costs don't consider combine/serial/deserial funcs

Поиск
Список
Период
Сортировка
От David Rowley
Тема Parallel Aggregate costs don't consider combine/serial/deserial funcs
Дата
Msg-id CAKJS1f-qkKdqonV1PsA0f2jMX9bUa51xVXiTNE10pY5D6zD+5g@mail.gmail.com
обсуждение исходный текст
Ответы Re: Parallel Aggregate costs don't consider combine/serial/deserial funcs  (Noah Misch <noah@leadboat.com>)
Re: Parallel Aggregate costs don't consider combine/serial/deserial funcs  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers
Hi,

I realised a few days ago that the parallel aggregate code does not
cost for the combine, serialisation and deserialisation functions at
all.

I've attached a patch which fixes this.

One small point which I was a little unsure of in the attached is,
should the "if (aggref->aggdirectargs)" part of
count_agg_clauses_walker() be within the "if
(!context->combineStates)". I simply couldn't decide. We currently
have no aggregates which this affects anyway, per; select * from
pg_aggregate where aggcombinefn <> 0 and aggkind <> 'n'; so for now
I've left it outwith.

Another thing I thought of is that it's not too nice that I have to
pass 3 bools to count_agg_clauses() in order to tell it what to do. I
was tempted to invent some bitmask flags for this, then modify
create_agg_path() to use the same flags, but I thought I'd better not
cause too much churn with this patch.

--
 David Rowley                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services

Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Move PinBuffer and UnpinBuffer to atomics
Следующее
От: Andrew Dunstan
Дата:
Сообщение: Re: VS 2015 support in src/tools/msvc