Re: [PATCH] Negative Transition Aggregate Functions (WIP)
От | Heikki Linnakangas |
---|---|
Тема | Re: [PATCH] Negative Transition Aggregate Functions (WIP) |
Дата | |
Msg-id | 52D82728.8020605@vmware.com обсуждение исходный текст |
Ответ на | Re: [PATCH] Negative Transition Aggregate Functions (WIP) (David Rowley <dgrowleyml@gmail.com>) |
Ответы |
Re: [PATCH] Negative Transition Aggregate Functions (WIP)
|
Список | pgsql-hackers |
On 01/16/2014 01:02 PM, David Rowley wrote: > sum(bigint) became a bit weird as it uses numeric types internally, so I > had to keep the do_numeric_discard() function to support it. It's pretty weird that we have implemented sum(bigint) that way. I understand that the result is a numeric so that it won't overflow, but implementing it by converting every value to numeric is naive. I propose that we reimplement sum(bigint) in a more efficient way: For the internal state, let's use an int8 and a numeric overflow field. The transition function adds to the int8 variable, and checks for overflow. On overflow, increment the numeric field by one. In the final function, multiply the numeric by 2^64, and add the residual int8 value. - Heikki
В списке pgsql-hackers по дате отправления: