diff --git a/dbcon/mysql/ha_calpont_execplan.cpp b/dbcon/mysql/ha_calpont_execplan.cpp index 5ea8088d4..87c985f60 100755 --- a/dbcon/mysql/ha_calpont_execplan.cpp +++ b/dbcon/mysql/ha_calpont_execplan.cpp @@ -3546,6 +3546,10 @@ ReturnedColumn* buildAggregateColumn(Item* item, gp_walk_info& gwi) if (ac->aggOp() == AggregateColumn::COUNT) ac->aggOp(AggregateColumn::COUNT_ASTERISK); + // MCOL-301: treat SUM(1) as MAX(1) to get constant result + if (ac->aggOp() == AggregateColumn::SUM) + ac->aggOp(AggregateColumn::MAX); + ac->constCol(SRCP(buildReturnedColumn(sfitemp, gwi, gwi.fatalParseError))); break; } @@ -3584,6 +3588,10 @@ ReturnedColumn* buildAggregateColumn(Item* item, gp_walk_info& gwi) ReturnedColumn* rc = buildReturnedColumn(sfitemp, gwi, gwi.fatalParseError); if (dynamic_cast(rc)) { + // MCOL-301: treat SUM(1) as MAX(1) to get constant result + if (ac->aggOp() == AggregateColumn::SUM) + ac->aggOp(AggregateColumn::MAX); + //@bug5229. handle constant function on aggregate argument ac->constCol(SRCP(rc)); break;