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

ASF GitHub Bot commented on DRILL-2852:
---------------------------------------

Github user jinfengni commented on a diff in the pull request:

    https://github.com/apache/drill/pull/103#discussion_r36149446
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/partition/FindPartitionConditions.java
 ---
    @@ -217,8 +218,21 @@ public Void visitCorrelVariable(RexCorrelVariable 
correlVariable) {
       }
     
       public Void visitCall(RexCall call) {
    -    // assume PUSH until proven otherwise
    -    analyzeCall(call, PushDirFilter.PUSH);
    +    boolean visited = false;
    +    // examine the input of a CAST function; this could be extended for
    +    // other functions in the future.
    --- End diff --
    
    As the comment indicated, this patch only solves the problem when there is 
CAST function. Is there any particular reason why other function is not 
supported? How much effort do we need to get other functions work as well?
    
    I could hit the same problem, with the following filter:
    
    where (dir0 - 1 = 1994 and o_totalprice < 40000) or dir0=1996"


> CASTing the column 'dir0' in view causes partition pruning to fail 
> -------------------------------------------------------------------
>
>                 Key: DRILL-2852
>                 URL: https://issues.apache.org/jira/browse/DRILL-2852
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>    Affects Versions: 0.8.0
>            Reporter: Aman Sinha
>            Assignee: Jinfeng Ni
>             Fix For: 1.2.0
>
>
> If the partition column 'dir0' is CAST inside a view and the query has a 
> filter on that column, then partition pruning interpreter evaluator 
> encounters an AssertionError. 
> Table data in the example below is from test/resources/multilevel/parquet.  
> {code}
> create view dfs.tmp.myview2 as select cast(dir0 as varchar(100)) as myyear, 
> dir1 as myquarter, o_totalprice from `multilevel/parquet` ;
> select * from dfs.tmp.myview2 where myyear = '1995' and myquarter = 'Q2' and 
> o_totalprice < 40000.0;
> {code}
> Failure stack trace: 
> {code}
> Caused by: java.lang.AssertionError: Internal error: Error while applying 
> rule PruneScanRule:Filter_On_Project,
> ...
> <skip>
> Caused by: java.lang.AssertionError: null
>         at 
> org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.isBitOn(InterpreterEvaluator.java:490)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.visitBooleanAnd(InterpreterEvaluator.java:434)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.visitBooleanOperator(InterpreterEvaluator.java:332)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator$EvalVisitor.visitBooleanOperator(InterpreterEvaluator.java:147)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.common.expression.BooleanOperator.accept(BooleanOperator.java:36)
>  ~[drill-common-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.exec.expr.fn.interpreter.InterpreterEvaluator.evaluate(InterpreterEvaluator.java:80)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
>         at 
> org.apache.drill.exec.planner.logical.partition.PruneScanRule.doOnMatch(PruneScanRule.java:224)
>  ~[drill-java-exec-0.9.0-SNAPSHOT-rebuffed.jar:0.9.0-SNAPSHOT]
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to