Skip to content

MDEV-23278: Incorrect Calculation with AVG() Function#5009

Open
DaveGosselin-MariaDB wants to merge 1 commit into10.11from
10.11-MDEV-23278-incorrect-avg-result
Open

MDEV-23278: Incorrect Calculation with AVG() Function#5009
DaveGosselin-MariaDB wants to merge 1 commit into10.11from
10.11-MDEV-23278-incorrect-avg-result

Conversation

@DaveGosselin-MariaDB
Copy link
Copy Markdown
Member

Type_handler_int_result::Item_decimal_precision assumes that max_length includes space for a sign, but Item_int literals don't include such a space. When aggregate_attributes_int propagates these into functions via a Item_type_holder, the formula computes precision-1 (or 0 for 1-digit cases), producing the incorrect calculation with AVG.

This fix changes aggregate_attributes_int to follow the convention the Type_handler expects, that max_length = max digit-count + (signed ? 1 : 0). This matches the TODO comment that begins with "TODO: rewrite aggregate_attributes_int()... " which suggested this idea.

Type_handler_int_result::Item_decimal_precision assumes that
max_length includes space for a sign, but Item_int literals don't
include such a space.  When aggregate_attributes_int propagates these
into functions via a Item_type_holder, the formula computes
precision-1 (or 0 for 1-digit cases), producing the incorrect
calculation with AVG.

This fix changes aggregate_attributes_int to follow the convention the
Type_handler expects, that max_length = max digit-count + (signed ? 1
: 0).  This matches the TODO comment that begins with "TODO: rewrite
aggregate_attributes_int()... " which suggested this idea.
@DaveGosselin-MariaDB DaveGosselin-MariaDB force-pushed the 10.11-MDEV-23278-incorrect-avg-result branch from 555d629 to 2c3f8ea Compare April 29, 2026 12:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Development

Successfully merging this pull request may close these issues.

1 participant