[
https://issues.apache.org/jira/browse/DRILL-6193?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16381012#comment-16381012
]
Aman Sinha commented on DRILL-6193:
-----------------------------------
[~julianhyde] is there a way in Calcite to distinguish whether a Join with
'True' condition was created after doing expression simplification (via
RexSimplify) vs. one where the original Join itself was a cartesian join ?
Drill currently throws a CannotPlan for cartesian joins but for the first case
we could potentially allow it since there is an underlying assumption that this
simplification was 'safe'.
> Latest Calcite optimized out join condition and cause "This query cannot be
> planned possibly due to either a cartesian join or an inequality join"
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: DRILL-6193
> URL: https://issues.apache.org/jira/browse/DRILL-6193
> Project: Apache Drill
> Issue Type: Bug
> Components: Query Planning & Optimization
> Affects Versions: 1.13.0
> Reporter: Chunhui Shi
> Assignee: Hanumath Rao Maduri
> Priority: Blocker
> Fix For: 1.13.0
>
>
> I got the same error on apache master's MapR profile on the tip(before Hive
> upgrade) and on changeset 9e944c97ee6f6c0d1705f09d531af35deed2e310, the last
> commit of Calcite upgrade with the failed query reported in functional test
> but now it is on parquet file:
>
> {quote}SELECT L.L_QUANTITY, L.L_DISCOUNT, L.L_EXTENDEDPRICE, L.L_TAX
>
> FROM cp.`tpch/lineitem.parquet` L, cp.`tpch/orders.parquet` O
> WHERE cast(L.L_ORDERKEY as int) = cast(O.O_ORDERKEY as int) AND
> cast(L.L_LINENUMBER as int) = 7 AND cast(L.L_ORDERKEY as int) = 10208 AND
> cast(O.O_ORDERKEY as int) = 10208;
> {quote}
> However, built Drill on commit ef0fafea214e866556fa39c902685d48a56001e1, the
> commit right before Calcite upgrade commits, the same query worked.
> This was caused by latest Calcite simplified the predicates and during this
> process, "cast(L.L_ORDERKEY as int) = cast(O.O_ORDERKEY as int) " was
> considered redundant and was removed, so the logical plan of this query is
> getting an always true condition for Join:
> {quote}DrillJoinRel(condition=[true], joinType=[inner])
> {quote}
> While in previous version we have
> {quote}DrillJoinRel(condition=[=($5, $0)], joinType=[inner])
> {quote}
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)