[ 
https://issues.apache.org/jira/browse/HIVE-22578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16989517#comment-16989517
 ] 

Aron Hamvas commented on HIVE-22578:
------------------------------------

Hi [~vgarg], I have a CREATE VIEW that fails with CBO enabled but passes with 
CBO disabled. While this specific CREATE VIEW only fails with HDP and not with 
upstream Hive, I think it is a valid request that when we retry without CBO, 
then the original AST should be used. 

The main issue that I am addressing here is that CalcitePlanner.genOPTree() 
method replaces the original AST with the rewritten AST, which is not expected 
behaviour. Also, the code itself suggests that it matters what AST is passed to 
super.genOPTree(), while it really does not. 

> CBO genOPTree is not failsafe for CTAS and VIEW statements
> ----------------------------------------------------------
>
>                 Key: HIVE-22578
>                 URL: https://issues.apache.org/jira/browse/HIVE-22578
>             Project: Hive
>          Issue Type: Bug
>          Components: CBO
>    Affects Versions: 3.0.0, 3.1.2
>            Reporter: Aron Hamvas
>            Assignee: Aron Hamvas
>            Priority: Major
>             Fix For: 3.0.1, 3.1.3
>
>         Attachments: HIVE-22578.patch
>
>
> If CBO fails during OT generation, it is supposed to skip CBO and fall back 
> to SemanticAnalyzer generating the OT for the original AST. However, for CTAS 
> and VIEW statements, the original AST is discarded and replaced with the new 
> AST. 
> If OT generation for the new AST fails with a SemanticException, the 
> compilation is destined to fail completely since we cannot fall back to the 
> original and possibly valid AST.
> Also, the SemanticException sometimes gets hidden and misjudged as a missing 
> column statistics issue due to bad error handling.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to