Steve Carlin created CALCITE-6122:
-------------------------------------
Summary: In SqlToRelConverter, AggConverter doesn't use coerced
SqlNodes
Key: CALCITE-6122
URL: https://issues.apache.org/jira/browse/CALCITE-6122
Project: Calcite
Issue Type: Bug
Components: core
Affects Versions: 1.36.0
Reporter: Steve Carlin
I hope I'm describing this right.
I'm coercing an operand in my handmade OperandTypeChecker. Specifically, I'm
changing a {color:#de350b}SUM(tinyint_col){color} to a
{color:#de350b}SUM(CAST(tinyint_col as BIGINT)){color} because my database can
only handle a bigint operand.
The eventual logical plan does not keep the CAST operand.
I had this problem in 1.34.0. I noticed that the code changed quite a bit
going up to 1.36.0, so I say this to mention that this is not a regression.
I hacked a fix in my environment, but it's too hacky to commit. To fix the
problem, I changed to the following code in SqlToRelConverter.convertAgg():
{code:java}
@@ -3369,7 +3372,11 @@ protected void convertAgg(Blackboard bb, SqlSelect
select,
final AggConverter aggConverter =
AggConverter.create(bb,
(AggregatingSelectScope) validator().getSelectScope(select));
- createAggImpl(bb, aggConverter, selectList, groupList, having,
+ selectList.accept(aggConverter);
+ final AggConverter aggConverter2 =
+ AggConverter.create(bb,
+ (AggregatingSelectScope) validator().getSelectScope(select));
+ createAggImpl(bb, aggConverter2, selectList, groupList, having,
orderExprList);
}
{code}
Note that I had the selectList go through the aggConverter visitor. After
this, the selectList contains the coerced operands. If the aggConverter is
created based on this new selectList, it will contain the proper information in
the aggConverter.convertedInputExprs list
(One other note: There is an assertion in createAggImpl that i had to disable
in order to get this hack to work where it checks that bb.agg == null)
I can probably work on this, but I'm not sure how to create a proper test for
it, as I've never committed anything to Calcite before.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)