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

ASF GitHub Bot commented on TAJO-1922:
--------------------------------------

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

    https://github.com/apache/tajo/pull/819#discussion_r43659788
  
    --- Diff: 
tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java 
---
    @@ -143,34 +144,59 @@ protected EvalNode visitBinaryEval(Object o, 
Stack<EvalNode> stack, BinaryEval b
     
       @Override
       protected EvalNode visitConst(Object o, ConstEval evalNode, 
Stack<EvalNode> stack) {
    +    exprs.push(convertDatumToExpr(evalNode.getValueType().getType(), 
evalNode.getValue()));
    +    return super.visitConst(o, evalNode, stack);
    +  }
    +
    +  @Override
    +  protected EvalNode visitRowConstant(Object o, RowConstantEval evalNode, 
Stack<EvalNode> stack) {
    +    Expr[] values = new Expr[evalNode.getValues().length];
    +    for (int i = 0; i < evalNode.getValues().length; i++) {
    +      Datum datum = evalNode.getValues()[i];
    +      values[i] = convertDatumToExpr(datum.type(), datum);
    +    }
    +    ValueListExpr expr = new ValueListExpr(values);
    +    exprs.push(expr);
    +
    +    return super.visitRowConstant(o, evalNode, stack);
    +  }
    +
    +  /**
    +   * Convert specified Datum to Expr
    +   *
    +   * @param type value type
    +   * @param datum target datum
    +   * @return converted datum
    +   */
    +  private Expr convertDatumToExpr(TajoDataTypes.Type type, Datum datum) {
         Expr value = null;
         DateValue dateValue;
         TimeValue timeValue;
     
    -    switch (evalNode.getValueType().getType()) {
    +    switch (type) {
           case NULL_TYPE:
             value = new NullLiteral();
             break;
           case BOOLEAN:
    -        value = new LiteralValue(evalNode.getValue().asChars(), 
LiteralValue.LiteralType.Boolean);
    +        value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.Boolean);
    --- End diff --
    
    The cases for ``BOOLEAN, ... TEXT`` can be simplified after getting a 
proper LiteralValue type.


> Allow date types with IN operator for partition pruning.
> --------------------------------------------------------
>
>                 Key: TAJO-1922
>                 URL: https://issues.apache.org/jira/browse/TAJO-1922
>             Project: Tajo
>          Issue Type: Sub-task
>          Components: Catalog
>    Affects Versions: 0.12.0
>            Reporter: Jaehwa Jung
>            Assignee: Jaehwa Jung
>             Fix For: 0.12.0
>
>
> Currently, Tajo doesn't allow date types with IN operator for partition 
> pruning. If users execute date types with IN operator with partitioned table, 
> users will fail to execute their query as following:
> {code:xml}
> tpch_partition> \d lineitem
> table name: tpch_partition.lineitem
> table uri: hdfs://localhost:9010/tajo/warehouse/tpch_partition/lineitem
> store type: TEXT
> number of rows: 0
> volume: 696.5 MB
> Options: 
>       'transient_lastDdlTime'='1441266430'
>       'text.null'='\\N'
>       'text.delimiter'='|'
> schema: 
> l_orderkey    INT8
> l_partkey     INT8
> l_suppkey     INT8
> l_linenumber  INT8
> l_quantity    FLOAT8
> l_extendedprice       FLOAT8
> l_discount    FLOAT8
> l_tax FLOAT8
> l_returnflag  TEXT
> l_linestatus  TEXT
> l_commitdate  DATE
> l_receiptdate DATE
> l_shipinstruct        TEXT
> l_shipmode    TEXT
> l_comment     TEXT
> Partitions: 
> type:COLUMN
> columns::tpch_partition.lineitem.l_shipdate (DATE)
> tpch_partition> select l_shipdate, count(*) from lineitem where l_shipdate in 
> ( to_date('1992-01-02', 'YYYY-MM-DD') 
> >  ,  to_date('1992-02-24', 'YYYY-MM-DD')) group by l_shipdate;
> ERROR: internal error: Unsupported type: DATE
> {code}



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

Reply via email to