Hello Krzysztof,

The rewrite you mention in Hive was done in HIVE-19674
<https://issues.apache.org/jira/browse/HIVE-19674> to be able to push such
group by to Druid. Currently there is no way to disable this rewrite.

As for removing Group by <constant>, there are rules/rewrites which can
reduce grouping keys by removing constants but removing whole group by is
not safe since it can lead to semantically different query.
e.g. Select count(*) from empty_table group by <constant> will produce NULL
but Select count(*) from empty_table will produce 0.

P.S. There was a bug in HIVE-19674' patch which was further fixed by
HIVE-21539 <https://issues.apache.org/jira/browse/HIVE-21539>.

Regards,
Vineet Garg

On Wed, Jun 26, 2019 at 7:08 AM Haisheng Yuan <h.y...@alibaba-inc.com>
wrote:

> Calcite has the rule that does the work. But you can't remove the group by
> clause if the constant is the only group key. The semantic is different
> without group key. Try it on empty relation, you will see the difference.
>
>
>
>
>
> Thanks~
> Haisheng
> Yuan------------------------------------------------------------------
> 发件人:Krzysztof Zarzycki<k.zarzy...@gmail.com>
> 日 期:2019年06月26日 21:52:41
> 收件人:<dev@calcite.apache.org>
> 主 题:Modify Calcite Planner in Hive to remove GROUP BY <constant>
>
> Hello,
>
> While the question I have might look like regards to Hive, I believe is
> more about Calcite. I need to add a Calcite plan rule to Hive, that removes
> "Group by" clause when it groups by some constant value (GROUP BY TRUE more
> precisely). As far as I believe, the query semantically is the same.
> Could anyone on this mailing list help me how to do it properly? While I'm
> an experienced java engineer, I have no clue how to achieve this.
> I was trying to modify hive code to do this myself, but unfortunately I got
> only NullPointerExceptions.
>
>
> More context below:
> I want to use JdbcStorageHandler in Hive, that connects to Apache Kylin and
> forward queries there. Then I put Tableau on top of Hive. Unfortunately,
> the queries produced by Tableau to Hive and then reproduced by Calcite
> Planner to Kylin, cannot be handled by Kylin (which BTW uses Calcite as
> well). I disabled some of the hive optimizations which fixed some of my
> queries. But I'm stuck on one I cannot disable. Tableau generates a query
> with "GROUP BY 1.000000...01" , that is translated to "GROUP BY TRUE", by
> Hive/Calcite. But neither of those can be handled by Kylin. I got an idea
> that I will remove GROUP BY completely, because in my understanding it's
> unecessary.
>
> I will be very grateful for your help,
> Kind Regards,
> Krzysztof
>
>

Reply via email to