You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/05/25 16:36:49 UTC

[56/57] [abbrv] tajo git commit: TAJO-1620: random() in an SQL should generate RANDOM numbers.

TAJO-1620: random() in an SQL should generate RANDOM numbers.

Closes #582

Signed-off-by: Jihoon Son <ji...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/bbfa076e
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/bbfa076e
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/bbfa076e

Branch: refs/heads/index_support
Commit: bbfa076e1c2f379116d276d4b939fb757d798e2e
Parents: c1fe41a
Author: Jongyoung Park <em...@gmail.com>
Authored: Mon May 25 22:56:27 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Mon May 25 22:56:27 2015 +0900

----------------------------------------------------------------------
 CHANGES                                                   |  3 +++
 .../tajo/plan/exprrewrite/rules/ConstantFolding.java      | 10 +++++++---
 2 files changed, 10 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/bbfa076e/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 991040a..f1b7e6e 100644
--- a/CHANGES
+++ b/CHANGES
@@ -136,6 +136,9 @@ Release 0.11.0 - unreleased
 
   BUG FIXES
 
+    TAJO-1620: random() in an SQL should generate RANDOM numbers.
+    (Contributed by Jongyoung Park, Committed by jihoon)
+
     TAJO-1558: HBASE_LIB/hbase-server-*.jar should be included in the CLASSPATH.
     (Contributed by Jongyoung Park, Committed by jaehwa)
 

http://git-wip-us.apache.org/repos/asf/tajo/blob/bbfa076e/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/rules/ConstantFolding.java
----------------------------------------------------------------------
diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/rules/ConstantFolding.java b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/rules/ConstantFolding.java
index a8b0945..eb546d1 100644
--- a/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/rules/ConstantFolding.java
+++ b/tajo-plan/src/main/java/org/apache/tajo/plan/exprrewrite/rules/ConstantFolding.java
@@ -27,14 +27,15 @@ import org.apache.tajo.plan.function.python.PythonScriptEngine;
 import org.apache.tajo.plan.function.python.TajoScriptEngine;
 
 import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
 import java.util.Stack;
 
 @Prioritized(priority = 10)
 public class ConstantFolding extends SimpleEvalNodeVisitor<LogicalPlanner.PlanContext>
     implements EvalTreeOptimizationRule {
 
-  private final static String SLEEP_FUNCTION_NAME = "sleep";
-
   @Override
   public EvalNode optimize(LogicalPlanner.PlanContext context, EvalNode evalNode) {
     return visit(context, evalNode, new Stack<EvalNode>());
@@ -77,11 +78,14 @@ public class ConstantFolding extends SimpleEvalNodeVisitor<LogicalPlanner.PlanCo
     return unaryEval;
   }
 
+  // exceptional func names not to use constant folding
+  private static final Set<String> NON_CONSTANT_FUNC_NAMES = new HashSet<String>(Arrays.asList("sleep", "random"));
+
   @Override
   public EvalNode visitFuncCall(LogicalPlanner.PlanContext context, FunctionEval evalNode, Stack<EvalNode> stack) {
     boolean constantOfAllDescendents = true;
 
-    if (SLEEP_FUNCTION_NAME.equals(evalNode.getFuncDesc().getFunctionName())) {
+    if (NON_CONSTANT_FUNC_NAMES.contains(evalNode.getFuncDesc().getFunctionName())) {
       constantOfAllDescendents = false;
     } else {
       for (EvalNode arg : evalNode.getArgs()) {