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

(Updated April 29, 2014, 1:41 p.m.)


Review request for Tajo.


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


Repository: tajo


Description (updated)
-------

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
-----

  
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
 1dd33b2a3e765c5aacb56b109cf29202583e9916 
  
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
 d6d9290ef10e4a657c9dff41210bbbfd97ccac3e 
  tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java 
5194420a6bac79c9bd798d3e76f7b507b5493b59 
  tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java 
13b845b2fdf8586e75e4c7fdf0c7c896e28078b7 
  tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java 
33a2a69a4f8adbd871c329337f7fac2963944b38 
  tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java 
e31f59e2e7407d6bbc230c8ab70cc6d50c31750a 
  tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java 
6b155ac6110af7a58c13002a5fc0b52c3bcea52d 
  tajo-common/src/main/java/org/apache/tajo/datum/Datum.java 
aee5621cbbfb185ce76b357724762307b7c01fa0 
  tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java 
4eacfc3edf0618d3da041c810f2ddd6ca21e2250 
  tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java 
b042f2d024af740f2dae65c438a67d1b191c73fe 
  tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java 
55b079fc51257b4f6a312434dca025943f16c08f 
  tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java 
991fa70fa6fa42554f54b5831db15bbf3d9f2bfd 
  tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java 
46616e7de96e2b5a3ccf68d68fe9beb21a343eb9 
  tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java 
8296a0f4782db2562b3e3e3975cb74e85c975e77 
  tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java 
6d3e5b2d93e6f53579ba50a9352b194823054a32 
  tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java 
4e04f911d436771da48357e4019e899b03d8b859 
  tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java 
a2b42c4f00a3126c6d34bb3b91d3206d08d6f772 
  tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java 
669933f46386353927ba0977d3de1ffb42ff6139 
  tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java 
e7f1684117544c14b0bda76943bb75e824ed122e 
  tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java 
219d5ca9dd86712db23f37a0683fd45addac6b0a 
  
tajo-common/src/main/java/org/apache/tajo/datum/exception/InvalidCastException.java
 445c9e2a64e2e4c303a5ea5f6f32494c410a6f1e 
  
tajo-common/src/main/java/org/apache/tajo/datum/exception/InvalidOperationException.java
 4610a38bb26866b6c45dc8a52d334c0861fcdb13 
  tajo-common/src/main/java/org/apache/tajo/util/TUtil.java 
e11600064dd157ae234287f46a5baa4d38b7a884 
  tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java 
dd915f5793e4bab4a1a8f20d5427a94df1666f6e 
  tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java 
5936c31d86e08abe9bcaf8539a4bd15388c9653b 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java 
63f825201785653e54d8039ab25502e7426c3499 
  tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java 
7aa01ac3d382c45440b19757aadaddf76a255c18 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java 
6bb01604250f91b87efe77f3181e660ba4426f9d 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BasicEvalNodeVisitor.java 
015e9dbd1c762cc2843fde33d812e992ad9de965 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BetweenPredicateEval.java 
80e6494e486e80b903abf1ecaba87e17352664b8 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java 
f3e145aed06f07208850008d8b1fc26e534917d5 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java 
0883e5c8e239800dd61a1d58cfdfe89138b39de9 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/CastEval.java 
24a0409045cedfea72a779dae0e6d96f0cbe04d5 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalNode.java 
1180bdec3353bb0fa8a6ecd50dce72a0ef1d3515 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java 
38c7e1f7336266f6cd26f2633fda16aa543507e8 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/EvalType.java 
71db934ca006538fde1430b7a379ed99f8571ad9 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/InvalidCastException.java 
b907f06bd19f1157a50474e5db948a8f4b26d840 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java 
5704aa5c9e38fa72cd11a3056a02f456c94e7192 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/NotEval.java 
20de725c214cd071e06e178655f0fdf11942f06c 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java 
0f4411d58bf93cc0e0aefc9a84b48bcbd8d20b2c 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/RowConstantEval.java 
646a6270380be9b7ea49a14cce12d1574d9d7c8d 
  tajo-core/src/main/java/org/apache/tajo/engine/eval/SignedEval.java 
33ea70fc62bf9a6cf2d6505936bc1101877ed310 
  
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 
be0259b856d7422d5fd142ffbf5ea996e0a66a64 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprsVerifier.java 
4cb4776a90b287f203b4659ddff8719d04d58273 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/PlannerUtil.java 
9f988bd3a9c5719a1683d5cf34a4e7c063d18863 
  tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/JoinNode.java 
915c66d2dee8844ad4e09e8dcbc74491f5fc1863 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/join/JoinGraph.java
 77e03ea3a946f4cba9318d261e499b8be5240c52 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/rewrite/FilterPushDownRule.java
 0f0a95690c6e5b686e645c4379b3c81244d53a5d 
  
tajo-core/src/main/java/org/apache/tajo/engine/planner/rewrite/PartitionedTableRewriter.java
 6e78c18060d04246dbbcad4e195e872ed37bb2ce 
  tajo-core/src/main/java/org/apache/tajo/util/ClassUtil.java 
160b5855d98c87ae18204516afd67d862444cf69 
  tajo-core/src/main/java/org/apache/tajo/util/IndexUtil.java 
8816f8fdc5bfe8265f7d38110eb94218583202f4 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java 
9d7e438344b6e6112064eafbae28246ba0ad88fe 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java 
d916bbc09cfb45a7737bc4536ed91a5df851f0c8 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestIntervalType.java 
7648d1fad4f3760b78703c704ff69bb168c00fcf 
  tajo-core/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java 
22a178f3c67c882314cf69319132f100a50f9fea 
  
tajo-core/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java 
09f7f686ac836bc9900fa7b4af90c38dc95912a9 
  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
 6113357f4bc7049be5882c6fd691286fd5a79309 
  tajo-storage/src/main/java/org/apache/tajo/storage/VTuple.java 
22d4fd962c215ef7800f271164a0db08c271db90 

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


Testing
-------

mvn clean install


Thanks,

Hyunsik Choi

Reply via email to