-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/20827/
-----------------------------------------------------------

(Updated April 30, 2014, 2:25 a.m.)


Review request for Tajo.


Changes
-------

Rebased and added missed files.


Bugs: TAJO-797
    https://issues.apache.org/jira/browse/TAJO-797


Repository: tajo


Description
-------

Arithmetic and logical operations between different operands are usual in SQL 
queries. Function invocations with parameters which are different to the 
parameters of function definition are also usual. Implicit type conversion 
should occur in such cases.

Currently, however, Tajo does not support implicit type conversion. We should 
implement this feature.

-----------------------------------
The description of the first patch.

Currently, Tajo partially supports implicit type conversion by using Datum's 
arithmetic/comparable operation. This patch adds full implicit type conversion 
feature. This feature inserts cast expressions to some operation whose operands 
are compatible but need casting. Also, it is used in function invocation, 
BETWEEN, and other kinds operations.

In addition, the patch fixes casting bugs. Currently, if there is some 
arithmetic operation between FLOAT and LONG, both terms were casted to double 
values and then were computed so far. But, it is different to the operation 
based on IEEE 754. In such case, LONG should be casted float and then should be 
computed.

Besides, the patch separates EvalNode into unary, binary, and others. 
Currently, EvalNode has been always a binary expr and we have used some messy 
hack to use EvalNode as unary, binary or others.


Diffs (updated)
-----

  
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
 1dd33b2 
  
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
 d6d9290 
  tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java 5194420 
  tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java 13b845b 
  tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java 33a2a69 
  tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java e31f59e 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java 6b155ac 
  tajo-common/src/main/java/org/apache/tajo/datum/Datum.java aee5621 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 4eacfc3 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java b042f2d 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java 55b079f 
  tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java 991fa70 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 46616e7 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 8296a0f 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 6d3e5b2 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java 4e04f91 
  tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java a2b42c4 
  tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java 669933f 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java e7f1684 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 219d5ca 
  
tajo-common/src/main/java/org/apache/tajo/datum/exception/InvalidCastException.java
 445c9e2 
  
tajo-common/src/main/java/org/apache/tajo/datum/exception/InvalidOperationException.java
 4610a38 
  tajo-common/src/main/java/org/apache/tajo/exception/InvalidCastException.java 
PRE-CREATION 
  
tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java
 PRE-CREATION 
  tajo-common/src/main/java/org/apache/tajo/util/TUtil.java e116000 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java dd915f5 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 
5936c31 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java 63f8252 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 
7aa01ac 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java 
6bb0160 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BasicEvalNodeVisitor.java 
015e9db 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BetweenPredicateEval.java 
80e6494 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java f3e145a 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java 0883e5c 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/CastEval.java 24a0409 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalNode.java 1180bde 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java 38c7e1f 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalType.java 71db934 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/InvalidCastException.java 
b907f06 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java 5704aa5 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/NotEval.java 20de725 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java 
0f4411d 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/RowConstantEval.java 
646a627 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/SignedEval.java 33ea70f 
  
tajo-core/src/main/java/org/apache/tajo/engine/eval/SimpleEvalNodeVisitor.java 
PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/UnaryEval.java 
PRE-CREATION 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java 
be0259b 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprsVerifier.java 
4cb4776 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/PlannerUtil.java 
9f988bd 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/JoinNode.java 
915c66d 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/join/JoinGraph.java
 77e03ea 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
 0f0a956 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/rewrite/PartitionedTableRewriter.java
 6e78c18 
  tajo-core/src/main/java/org/apache/tajo/util/ClassUtil.java 160b585 
  tajo-core/src/main/java/org/apache/tajo/util/IndexUtil.java 8816f8f 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java 9d7e438 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java 
d916bbc 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 
7648d1f 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 
22a178f 
  
tajo-core/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java 
09f7f68 
  tajo-core/src/test/java/org/apache/tajo/engine/planner/TestExprAnnotator.java 
PRE-CREATION 
  
tajo-storage/src/main/java/org/apache/tajo/storage/TextSerializerDeserializer.java
 6113357 
  tajo-storage/src/main/java/org/apache/tajo/storage/VTuple.java 22d4fd9 

Diff: https://reviews.apache.org/r/20827/diff/


Testing
-------

mvn clean install


Thanks,

Hyunsik Choi

Reply via email to