[ 
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)

Reply via email to