You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ti...@apache.org on 2018/06/30 00:42:56 UTC

asterixdb git commit: [NO ISSUE] small cleanup in type inferencing

Repository: asterixdb
Updated Branches:
  refs/heads/master 9087e0bae -> ac3a16a5e


[NO ISSUE] small cleanup in type inferencing

Change-Id: I89e74b1f3176d3edd8e41fc63538a3b37326923c
Reviewed-on: https://asterix-gerrit.ics.uci.edu/2732
Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
Reviewed-by: abdullah alamoudi <ba...@gmail.com>


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

Branch: refs/heads/master
Commit: ac3a16a5e6a3ee73e0ad5891b6a67e5c0993f2e9
Parents: 9087e0b
Author: Till Westmann <ti...@apache.org>
Authored: Fri Jun 29 15:55:05 2018 -0700
Committer: Till Westmann <ti...@apache.org>
Committed: Fri Jun 29 17:42:38 2018 -0700

----------------------------------------------------------------------
 .../typecomputer/base/IResultTypeComputer.java  |  3 ++-
 .../impl/ListConstructorTypeComputer.java       | 15 ++++-------
 .../apache/asterix/om/types/ARecordType.java    | 26 +++++++++-----------
 3 files changed, 18 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ac3a16a5/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/IResultTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/IResultTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/IResultTypeComputer.java
index 04f9c96..e9dfe90 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/IResultTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/base/IResultTypeComputer.java
@@ -24,7 +24,8 @@ import org.apache.hyracks.algebricks.core.algebra.base.ILogicalExpression;
 import org.apache.hyracks.algebricks.core.algebra.expressions.IVariableTypeEnvironment;
 import org.apache.hyracks.algebricks.core.algebra.metadata.IMetadataProvider;
 
+@FunctionalInterface
 public interface IResultTypeComputer {
-    public IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
+    IAType computeType(ILogicalExpression expression, IVariableTypeEnvironment env,
             IMetadataProvider<?, ?> metadataProvider) throws AlgebricksException;
 }

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ac3a16a5/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ListConstructorTypeComputer.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ListConstructorTypeComputer.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ListConstructorTypeComputer.java
index 2528697..4916fc1 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ListConstructorTypeComputer.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/typecomputer/impl/ListConstructorTypeComputer.java
@@ -47,26 +47,21 @@ public abstract class ListConstructorTypeComputer implements IResultTypeComputer
         if (reqType != null) {
             return reqType;
         }
-        return computeTypeFromItems(env, f);
+        final IAType currentType = computeContentType(env, f);
+        return getListType(currentType == null ? BuiltinType.ANY : currentType);
     }
 
-    private IAType computeTypeFromItems(IVariableTypeEnvironment env, AbstractFunctionCallExpression f)
+    private IAType computeContentType(IVariableTypeEnvironment env, AbstractFunctionCallExpression f)
             throws AlgebricksException {
         IAType currentType = null;
-        boolean any = false;
         for (int k = 0; k < f.getArguments().size(); k++) {
             IAType type = (IAType) env.getType(f.getArguments().get(k).getValue());
             if (type.getTypeTag() == ATypeTag.UNION || (currentType != null && !currentType.equals(type))) {
-                any = true;
-                break;
+                return null;
             }
             currentType = type;
         }
-        if (any || currentType == null) {
-            return getListType(BuiltinType.ANY);
-        } else {
-            return getListType(currentType);
-        }
+        return currentType;
     }
 
     protected abstract IAType getListType(IAType itemType);

http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ac3a16a5/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/ARecordType.java
----------------------------------------------------------------------
diff --git a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/ARecordType.java b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/ARecordType.java
index 26cbf1f..7d5e4c0 100644
--- a/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/ARecordType.java
+++ b/asterixdb/asterix-om/src/main/java/org/apache/asterix/om/types/ARecordType.java
@@ -137,25 +137,21 @@ public class ARecordType extends AbstractComplexType {
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder();
-        sb.append(typeName + ": ");
-        if (isOpen) {
-            sb.append("open ");
-        } else {
-            sb.append("closed ");
+        return append(new StringBuilder()).toString();
+    }
+
+    private StringBuilder append(StringBuilder sb) {
+        if (typeName != null) {
+            sb.append(typeName).append(": ");
         }
-        sb.append("{\n");
+        sb.append(isOpen ? "open" : "closed");
+        sb.append(" {\n");
         int n = fieldNames.length;
         for (int i = 0; i < n; i++) {
-            sb.append("  " + fieldNames[i] + ": " + fieldTypes[i].toString());
-            if (i < (n - 1)) {
-                sb.append(",\n");
-            } else {
-                sb.append("\n");
-            }
+            sb.append("  ").append(fieldNames[i]).append(": ").append(fieldTypes[i]);
+            sb.append(i < (n - 1) ? ",\n" : "\n");
         }
-        sb.append("}\n");
-        return sb.toString();
+        return sb.append("}\n");
     }
 
     @Override