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