[
https://issues.apache.org/jira/browse/DRILL-7931?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17362919#comment-17362919
]
ASF GitHub Bot commented on DRILL-7931:
---------------------------------------
Leon-WTF opened a new pull request #2259:
URL: https://github.com/apache/drill/pull/2259
# [DRILL-7931](https://issues.apache.org/jira/browse/DRILL-7931): Rowtype
mismatch in DrillReduceAggregatesRule
## Description
With stddev and sum for the same column c, stddev will be convert to sum(c)
as $1, sum(c*c) as $2, count() as $3, sum will be convert to $sum0(c) as $4
with return type "bigint not null". In the next iteration, $1 will be converted
to $sum0(c) with return type "nullable bigint". In the equals method of
aggregateCall, the return type is not included, so $4 will be considered
already exist in aggCallMapping and return $sum0(c) with return type "nullable
bigint" which causes the exception.
## Documentation
NA
## Testing
org.apache.drill.exec.fn.impl.TestAggregateFunctions.testRowTypeMissMatch
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> Rowtype mismatch in DrillReduceAggregatesRule
> ---------------------------------------------
>
> Key: DRILL-7931
> URL: https://issues.apache.org/jira/browse/DRILL-7931
> Project: Apache Drill
> Issue Type: Bug
> Components: Query Planning & Optimization
> Affects Versions: 1.18.0
> Reporter: wtf
> Assignee: wtf
> Priority: Major
>
> It's work correct for example in case when there is only one aggregation:
> select col1, stddev(col2) FROM(values ('UA', 3), ('USA', 2), ('UA', 3),
> ('USA', 5), ('USA', 1), ('UA', 9)) x(col1, col2) GROUP BY col1 LIMIT 6;
> Or when it's after other aggregations:
> select col1, SUM(col2), stddev(col2) FROM (values ('UA', 3), ('USA', 2),
> ('UA', 3), ('USA', 5), ('USA', 1), ('UA', 9)) x(col1, col2) GROUP BY col1
> LIMIT 6;
> But when we try to put it before an aggregation, like SUM:
> select col1, stddev(col2), SUM(col2) FROM (values ('UA', 3), ('USA', 2),
> ('UA', 3), ('USA', 5), ('USA', 1), ('UA', 9)) x(col1, col2) GROUP BY col1
> LIMIT 6;
> It's failed with error:
> SYSTEM ERROR: AssertionError: Type mismatch:
> rowtype of new rel:
> RecordType(CHAR(3) NOT NULL col1, BIGINT $f1, BIGINT $f2, BIGINT NOT NULL
> $f3, BIGINT $f4) NOT NULL
> rowtype of set:
> RecordType(CHAR(3) NOT NULL col1, BIGINT $f1, BIGINT $f2, BIGINT NOT NULL
> $f3, BIGINT NOT NULL $f4) NOT NULL
> Same for stddev_samp
--
This message was sent by Atlassian Jira
(v8.3.4#803005)