Speed up SUM calculation in numeric aggregates. This introduces a numeric sum accumulator, which performs better than repeatedly calling add_var(). The performance comes from using wider digits and delaying carry propagation, tallying positive and negative values separately, and avoiding a round of palloc/pfree on every value. This speeds up SUM(), as well as other standard aggregates like AVG() and STDDEV() that also calculate a sum internally. Reviewed-by: Andrey Borodin Discussion: <c0545351-a467-5b76-6d46-4840d1ea8aa4@iki.fi> Branch ------ master Details ------- http://git.postgresql.org/pg/commitdiff/9cca11c915e458323d0e746c68203f2c11da0302 Modified Files -------------- src/backend/utils/adt/numeric.c | 601 ++++++++++++++++++++++++++++------ src/test/regress/expected/numeric.out | 16 + src/test/regress/sql/numeric.sql | 8 + 3 files changed, 522 insertions(+), 103 deletions(-)
Сайт использует файлы cookie для корректной работы и повышения удобства. Нажимая кнопку «Принять» или продолжая пользоваться сайтом, вы соглашаетесь на их использование в соответствии с Политикой в отношении обработки cookie ООО «ППГ», в том числе на передачу данных из файлов cookie сторонним статистическим и рекламным службам. Вы можете управлять настройками cookie через параметры вашего браузера