[
https://issues.apache.org/jira/browse/HIVE-16317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15946554#comment-15946554
]
Remus Rusanu commented on HIVE-16317:
-------------------------------------
The original query31 has a more complex where clause that gets pulled into the
JOIN:
{noformat}
explain with ss as (
select ca_county,d_qoy, d_year,sum(ss_ext_sales_price) as store_sales
from store_sales,date_dim,customer_address
where ss_sold_date_sk = d_date_sk and ss_addr_sk=ca_address_sk
group by ca_county,d_qoy, d_year),
ws as (
select ca_county,d_qoy, d_year,sum(ws_ext_sales_price) as web_sales
from web_sales,date_dim,customer_address
where ws_sold_date_sk = d_date_sk and ws_bill_addr_sk=ca_address_sk
group by ca_county,d_qoy, d_year)
select ss1.ca_county ,ss1.d_year ,ws2.web_sales/ws1.web_sales
web_q1_q2_increase ,ss2.store_sales/ss1.store_sales store_q1_q2_increase
,ws3.web_sales/ws2.web_sales web_q2_q3_increase
,ss3.store_sales/ss2.store_sales store_q2_q3_increase
from ss ss1 ,ss ss2 ,ss ss3 ,ws ws1 ,ws ws2 ,ws ws3
where ss1.d_qoy = 1 and
ss1.d_year = 1998 and
ss1.ca_county = ss2.ca_county and
ss2.d_qoy = 2 and
ss2.d_year = 1998 and
ss2.ca_county = ss3.ca_county and
ss3.d_qoy = 3 and
ss3.d_year = 1998 and
ss1.ca_county = ws1.ca_county and
ws1.d_qoy = 1 and
ws1.d_year = 1998 and
ws1.ca_county = ws2.ca_county and
ws2.d_qoy = 2 and
ws2.d_year = 1998 and
ws1.ca_county = ws3.ca_county and
ws3.d_qoy = 3 and
ws3.d_year =1998 and
case when ws1.web_sales > 0 then ws2.web_sales/ws1.web_sales else null end >
case when ss1.store_sales > 0 then ss2.store_sales/ss1.store_sales else
null end and
case when ws2.web_sales > 0 then ws3.web_sales/ws2.web_sales else null end >
case when ss2.store_sales > 0 then ss3.store_sales/ss2.store_sales else null
end
order by web_q1_q2_increase;
{noformat}
> CASE .. NULL in JOIN condition can trigger SemanticException
> ------------------------------------------------------------
>
> Key: HIVE-16317
> URL: https://issues.apache.org/jira/browse/HIVE-16317
> Project: Hive
> Issue Type: Bug
> Components: Query Planning
> Reporter: Remus Rusanu
> Assignee: Remus Rusanu
>
> {noformat}
> hive> explain select a.key from src a join src b on case when a.key=b.key
> then 1 else null end;
> FAILED: SemanticException tok_null encountered with 0 children
> {noformat}
> {noformat}
> "2489e686-bf69-4f37-b733-72491351644b main"
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.parseJoinCondPopulateAlias(SemanticAnalyzer.java:2629)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.parseJoinCondition(SemanticAnalyzer.java:2904)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.parseJoinCondition(SemanticAnalyzer.java:2808)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genJoinTree(SemanticAnalyzer.java:8916)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10506)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10419)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:408)
> at
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11119)
> at
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:286)
> at
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258)
> at
> org.apache.hadoop.hive.ql.parse.ExplainSemanticAnalyzer.analyzeInternal(ExplainSemanticAnalyzer.java:165)
> at
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258)
> at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:511)
> at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1316)
> at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1456)
> at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1236)
> at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1226)
> at
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:233)
> at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:184)
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:403)
> at
> org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821)
> at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)
> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
> at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
> {noformat}
> In HIVE-15708 this causes query31 to fail CBO optimization.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)