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

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

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

    https://github.com/apache/tajo/pull/819#discussion_r45174985
  
    --- Diff: 
tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java 
---
    @@ -178,65 +204,28 @@ protected EvalNode visitConst(Object o, ConstEval 
evalNode, Stack<EvalNode> stac
     
             break;
           case TIMESTAMP:
    -        TimestampDatum timestampDatum = (TimestampDatum) 
evalNode.getValue();
    +        TimestampDatum timestampDatum = (TimestampDatum) datum;
     
             dateValue = new DateValue(""+timestampDatum.getYear(),
               ""+timestampDatum.getMonthOfYear(), 
""+timestampDatum.getDayOfMonth());
     
             timeValue = new TimeValue(""+timestampDatum.getHourOfDay()
    -        , ""+timestampDatum.getMinuteOfHour(), 
""+timestampDatum.getSecondOfMinute());
    +          , ""+timestampDatum.getMinuteOfHour(), 
""+timestampDatum.getSecondOfMinute());
     
             value = new TimestampLiteral(dateValue, timeValue);
             break;
           case TIME:
    -        TimeDatum timeDatum = (TimeDatum) evalNode.getValue();
    +        TimeDatum timeDatum = (TimeDatum) datum;
             timeValue = new TimeValue(""+timeDatum.getHourOfDay()
               , ""+timeDatum.getMinuteOfHour(), 
""+timeDatum.getSecondOfMinute());
     
             value = new TimeLiteral(timeValue);
             break;
           default:
    -        throw new RuntimeException("Unsupported type: " + 
evalNode.getValueType().getType().name());
    -    }
    -    exprs.push(value);
    -
    -    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];
    -      LiteralValue value;
    -      switch (datum.type()) {
    -        case BOOLEAN:
    -          value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.Boolean);
    -          break;
    -        case TEXT:
    -          value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.String);
    -          break;
    -        case INT1:
    -        case INT2:
    -        case INT4:
    -          value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.Unsigned_Integer);
    -          break;
    -        case INT8:
    -          value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.Unsigned_Large_Integer);
    -          break;
    -        case FLOAT4:
    -        case FLOAT8:
    -          value = new LiteralValue(datum.asChars(), 
LiteralValue.LiteralType.Unsigned_Float);
    -          break;
    -        default:
    -          throw new RuntimeException("Unsupported type: " + 
datum.type().name());
    -      }
    -      values[i] = value;
    +        throw new RuntimeException("Unsupported type: " + type.name());
    --- End diff --
    
    TajoInternalError means an unrecoverable error is occured and at least the 
current running query must be stopped. It won't be what we intend here.
    Instead, you can simply wrap UnsupportedException with RuntimeException. 


> 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