You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ja...@apache.org on 2017/11/15 18:34:30 UTC
[02/40] phoenix git commit: PHOENIX-4294 Allow scalar function to
declare that it's not thread safe
PHOENIX-4294 Allow scalar function to declare that it's not thread safe
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/b605c19e
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/b605c19e
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/b605c19e
Branch: refs/heads/4.x-HBase-1.2
Commit: b605c19e3f039407f79c0231c64cb602ddebc7ca
Parents: 1fc5b27
Author: James Taylor <jt...@salesforce.com>
Authored: Wed Oct 18 09:28:31 2017 -0700
Committer: James Taylor <jt...@salesforce.com>
Committed: Wed Nov 15 09:54:15 2017 -0800
----------------------------------------------------------------------
.../apache/phoenix/expression/function/ScalarFunction.java | 9 +++++++++
.../phoenix/expression/visitor/CloneExpressionVisitor.java | 2 +-
2 files changed, 10 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b605c19e/phoenix-core/src/main/java/org/apache/phoenix/expression/function/ScalarFunction.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/ScalarFunction.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/ScalarFunction.java
index 4f44cde..2a5fe44 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/function/ScalarFunction.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/function/ScalarFunction.java
@@ -87,4 +87,13 @@ public abstract class ScalarFunction extends FunctionExpression {
public KeyPart newKeyPart(KeyPart childPart) {
return null;
}
+
+ /**
+ * Used to determine if the same ScalarFunction instance may be
+ * used by multiple threads.
+ * @return true if function is thread safe and false otherwise.
+ */
+ public boolean isThreadSafe() {
+ return true;
+ }
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/b605c19e/phoenix-core/src/main/java/org/apache/phoenix/expression/visitor/CloneExpressionVisitor.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/expression/visitor/CloneExpressionVisitor.java b/phoenix-core/src/main/java/org/apache/phoenix/expression/visitor/CloneExpressionVisitor.java
index e47fb64..c6d7c9e 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/expression/visitor/CloneExpressionVisitor.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/expression/visitor/CloneExpressionVisitor.java
@@ -110,7 +110,7 @@ public abstract class CloneExpressionVisitor extends TraverseAllExpressionVisito
@Override
public Expression visitLeave(ScalarFunction node, List<Expression> l) {
- return isCloneNode(node, l) ? node.clone(l) : node;
+ return isCloneNode(node, l) || !node.isThreadSafe() ? node.clone(l) : node;
}
public Expression visitLeave(UDFExpression node, List<Expression> l) {