[
https://issues.apache.org/jira/browse/TAJO-1092?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14172683#comment-14172683
]
Hudson commented on TAJO-1092:
------------------------------
SUCCESS: Integrated in Tajo-block_iteration-branch-build #16 (See
[https://builds.apache.org/job/Tajo-block_iteration-branch-build/16/])
TAJO-1092: Improve the function system to allow other function implementation
types. (hyunsik: rev 05ca386c45adbb551ebc3af22592ea0dd38b1ea4)
* tajo-common/src/main/java/org/apache/tajo/util/TUtil.java
* tajo-core/src/main/java/org/apache/tajo/engine/codegen/VariablesBuilder.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/ClassBaseInvocationDesc.java
* tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/DataTypeUtil.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
*
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/join/GreedyHeuristicJoinOrderAlgorithm.java
*
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/TruncateTableNode.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/exception/NoSuchFunctionException.java
* tajo-common/src/main/java/org/apache/tajo/json/ClassNameSerializer.java
*
tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestCatalogUtil.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java
*
tajo-core/src/test/resources/results/TestFunctionLoader/testFindScalarFunctions.result
* tajo-core/src/main/resources/webapps/admin/functions.jsp
* tajo-core/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
* tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/StaticMethodInvocationDesc.java
*
tajo-core/src/main/java/org/apache/tajo/engine/optimizer/eval/rules/ConstantFolding.java
* tajo-core/src/test/java/org/apache/tajo/LocalTajoTestingUtility.java
* tajo-core/src/main/java/org/apache/tajo/engine/function/FunctionLoader.java
*
tajo-core/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
* tajo-common/src/main/java/org/apache/tajo/util/ClassUtil.java
*
tajo-core/src/main/java/org/apache/tajo/engine/plan/EvalTreeProtoDeserializer.java
*
tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
* tajo-core/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java
* tajo-core/src/main/java/org/apache/tajo/util/JSPUtil.java
* tajo-core/src/main/java/org/apache/tajo/engine/utils/DataTypeUtil.java
*
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/join/JoinEdge.java
*
tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/Function.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/FunctionInvocation.java
* tajo-core/src/main/java/org/apache/tajo/util/ClassUtil.java
* tajo-core/src/main/java/org/apache/tajo/engine/codegen/EvalCodeGenerator.java
* tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java
* tajo-core/src/main/java/org/apache/tajo/engine/json/CoreGsonHelper.java
* tajo-core/src/main/java/org/apache/tajo/engine/function/AggFunction.java
* tajo-core/src/main/java/org/apache/tajo/engine/eval/WindowFunctionEval.java
* tajo-core/src/test/java/org/apache/tajo/client/TestTajoClient.java
* tajo-core/src/test/java/org/apache/tajo/master/TestGlobalPlanner.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/FunctionUtil.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/FunctionSignature.java
* tajo-core/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java
*
tajo-core/src/test/java/org/apache/tajo/engine/function/TestFunctionLoader.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/FunctionCollection.java
*
tajo-core/src/main/java/org/apache/tajo/engine/codegen/LegacyFunctionBindingEmitter.java
*
tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/FunctionSupplement.java
*
tajo-core/src/main/java/org/apache/tajo/engine/codegen/TajoGeneratorAdapter.java
*
tajo-core/src/main/java/org/apache/tajo/engine/function/math/MathFunctions.java
* tajo-core/src/main/java/org/apache/tajo/master/TajoMaster.java
* tajo-core/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java
* tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
*
tajo-core/src/main/java/org/apache/tajo/engine/codegen/ScalarFunctionBindingEmitter.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/function/ScalarFunction.java
* tajo-core/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
* tajo-core/src/main/java/org/apache/tajo/engine/codegen/CaseWhenEmitter.java
* CHANGES
* tajo-core/src/test/java/org/apache/tajo/engine/planner/TestExprAnnotator.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java
* tajo-core/src/main/java/org/apache/tajo/engine/planner/TypeDeterminant.java
*
tajo-core/src/main/java/org/apache/tajo/engine/planner/logical/join/JoinGraph.java
* tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java
*
tajo-core/src/test/java/org/apache/tajo/engine/planner/global/TestBroadcastJoinPlan.java
*
tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
* tajo-client/src/main/java/org/apache/tajo/cli/DescFunctionCommand.java
* tajo-core/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java
*
tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java
* tajo-core/src/main/java/org/apache/tajo/engine/eval/FunctionEval.java
* tajo-core/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
> Improve the function system to allow other function implementation types
> ------------------------------------------------------------------------
>
> Key: TAJO-1092
> URL: https://issues.apache.org/jira/browse/TAJO-1092
> Project: Tajo
> Issue Type: Improvement
> Components: function/udf
> Reporter: Hyunsik Choi
> Assignee: Hyunsik Choi
> Fix For: 0.9.1, block_iteration
>
>
> In the current function system, each function implementation is a single Java
> class subclassed from org.apache.tajo.catalog.function.Function.
> In this approach, there are many rooms for improvement. This approach always
> uses Datum as input and output values of functions, creating unnecessary
> objects. It does not likely to exploit given information included query
> statements; for example, some parameters are constants or variables.
> In this issue, I propose the improvement to allow the function system to
> support other function implementation types. In addition, I propose three
> function implementation types:
> - legacy Java class function provided by the current Tajo
> - static method in Java class
> - code generation by ASM
> Later, we could expand this feature to allow Pig or Hive functions in Tajo.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)