You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by ht...@apache.org on 2019/05/23 18:59:51 UTC

[asterixdb] branch master updated: [NO ISSUE][FUN] Remove unnecessary inner classes

This is an automated email from the ASF dual-hosted git repository.

htowaileb pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 3042386  [NO ISSUE][FUN] Remove unnecessary inner classes
3042386 is described below

commit 3042386ac81afb03905dc47022782a60809c347e
Author: Hussain Towaileb <Hu...@Couchbase.com>
AuthorDate: Thu May 23 02:27:39 2019 +0300

    [NO ISSUE][FUN] Remove unnecessary inner classes
    
    - user model changes: no
    - storage format changes: no
    - interface changes: no
    
    Details:
    - Remove unnecessary inner classes. Use the evaluator
    factories length to check if the end position argument
    is passed.
    
    Change-Id: I5cc8c57888e62b26684082dd07a4314b45f9fa7f
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/3403
    Contrib: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Sonar-Qube: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Tested-by: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Integration-Tests: Jenkins <je...@fulliautomatix.ics.uci.edu>
    Reviewed-by: Dmitry Lychagin <dm...@couchbase.com>
---
 ...rraySliceEval.java => ArraySliceEvaluator.java} | 45 ++++++++++------------
 .../ArraySliceWithEndPositionDescriptor.java       | 19 +--------
 .../ArraySliceWithoutEndPositionDescriptor.java    | 18 +--------
 3 files changed, 23 insertions(+), 59 deletions(-)

diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
similarity index 91%
rename from asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java
rename to asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
index 036447a..c907720 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/AbstractArraySliceEval.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceEvaluator.java
@@ -75,32 +75,31 @@ import org.apache.hyracks.dataflow.common.data.accessors.IFrameTupleReference;
  * </pre>
  */
 
-public abstract class AbstractArraySliceEval extends AbstractScalarEval {
+class ArraySliceEvaluator extends AbstractScalarEval {
+
     // List type
     private final IAType inputListType;
 
     // Storage
-    private final ArrayBackedValueStorage storage = new ArrayBackedValueStorage();
+    private final ArrayBackedValueStorage resultStorage = new ArrayBackedValueStorage();
 
-    // Evaluators
+    // Evaluators and pointables
     private final IScalarEvaluator listEval;
     private final IScalarEvaluator startPositionEval;
-    private final IScalarEvaluator endPositionEval;
-
-    // Pointables
+    private IScalarEvaluator endPositionEval;
     private final IPointable listPointable = new VoidPointable();
     private final IPointable startPositionPointable = new VoidPointable();
-    private final IPointable endPositionPointable = new VoidPointable();
+    private IPointable endPositionPointable;
 
     // Accessors
     private final ListAccessor listAccessor = new ListAccessor();
 
     // List Builders
-    private IAsterixListBuilder orderedListBuilder = new OrderedListBuilder();
-    private IAsterixListBuilder unorderedListBuilder = new UnorderedListBuilder();
+    private final IAsterixListBuilder orderedListBuilder = new OrderedListBuilder();
+    private final IAsterixListBuilder unorderedListBuilder = new UnorderedListBuilder();
 
     // Constructor
-    public AbstractArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc,
+    ArraySliceEvaluator(IScalarEvaluatorFactory[] argEvalFactories, IHyracksTaskContext ctx, SourceLocation sourceLoc,
             FunctionIdentifier functionIdentifier, IAType inputListType) throws HyracksDataException {
         // Source location
         super(sourceLoc, functionIdentifier);
@@ -109,20 +108,18 @@ public abstract class AbstractArraySliceEval extends AbstractScalarEval {
         this.inputListType = inputListType;
 
         // Evaluators
-        listEval = args[0].createScalarEvaluator(ctx);
-        startPositionEval = args[1].createScalarEvaluator(ctx);
+        listEval = argEvalFactories[0].createScalarEvaluator(ctx);
+        startPositionEval = argEvalFactories[1].createScalarEvaluator(ctx);
 
         // Check for optional parameter
-        endPositionEval = getEndPositionEval(args, ctx);
+        if (argEvalFactories.length > 2) {
+            endPositionEval = argEvalFactories[2].createScalarEvaluator(ctx);
+            endPositionPointable = new VoidPointable();
+        }
     }
 
-    protected abstract IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx)
-            throws HyracksDataException;
-
     @Override
     public void evaluate(IFrameTupleReference tuple, IPointable result) throws HyracksDataException {
-        // Reset storage
-        storage.reset();
 
         // Evaluate
         listEval.evaluate(tuple, listPointable);
@@ -231,18 +228,18 @@ public abstract class AbstractArraySliceEval extends AbstractScalarEval {
         try {
             // Create the subset list based on the positions
             for (int i = startPositionValue; i < endPositionValue; i++) {
-                storage.reset();
-                listAccessor.writeItem(i, storage.getDataOutput());
-                listBuilder.addItem(storage);
+                resultStorage.reset();
+                listAccessor.writeItem(i, resultStorage.getDataOutput());
+                listBuilder.addItem(resultStorage);
             }
         } catch (IOException ex) {
             throw HyracksDataException.create(ex);
         }
 
         // Final result
-        storage.reset();
-        listBuilder.write(storage.getDataOutput(), true);
-        result.set(storage);
+        resultStorage.reset();
+        listBuilder.write(resultStorage.getDataOutput(), true);
+        result.set(resultStorage);
     }
 
     // Get the value
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
index 81833b6..04e93dd 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithEndPositionDescriptor.java
@@ -32,7 +32,6 @@ import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.exceptions.SourceLocation;
 
 /**
  * array_slice(array, start, end) This function takes 3 arguments, {@code array}, {@code start} and {@code end} and
@@ -75,24 +74,8 @@ public class ArraySliceWithEndPositionDescriptor extends AbstractScalarFunctionD
 
             @Override
             public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
-                return new ArraySliceEval(args, ctx, sourceLoc);
+                return new ArraySliceEvaluator(args, ctx, sourceLoc, getIdentifier(), inputListType);
             }
         };
     }
-
-    public class ArraySliceEval extends AbstractArraySliceEval {
-
-        // Constructor
-        public ArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc)
-                throws HyracksDataException {
-            super(args, ctx, sourceLoc, ArraySliceWithEndPositionDescriptor.this.getIdentifier(), inputListType);
-        }
-
-        // Return end position evaluator
-        @Override
-        protected IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx)
-                throws HyracksDataException {
-            return args[2].createScalarEvaluator(ctx);
-        }
-    }
 }
diff --git a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
index 3fab75b..7a3889f 100644
--- a/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
+++ b/asterixdb/asterix-runtime/src/main/java/org/apache/asterix/runtime/evaluators/functions/ArraySliceWithoutEndPositionDescriptor.java
@@ -32,7 +32,6 @@ import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluator;
 import org.apache.hyracks.algebricks.runtime.base.IScalarEvaluatorFactory;
 import org.apache.hyracks.api.context.IHyracksTaskContext;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.api.exceptions.SourceLocation;
 
 /**
  * array_slice(array, start) This function takes 2 arguments, {@code array} and {@code start} and returns
@@ -75,23 +74,8 @@ public class ArraySliceWithoutEndPositionDescriptor extends AbstractScalarFuncti
 
             @Override
             public IScalarEvaluator createScalarEvaluator(final IHyracksTaskContext ctx) throws HyracksDataException {
-                return new ArraySliceEval(args, ctx, sourceLoc);
+                return new ArraySliceEvaluator(args, ctx, sourceLoc, getIdentifier(), inputListType);
             }
         };
     }
-
-    public class ArraySliceEval extends AbstractArraySliceEval {
-
-        // Constructor
-        public ArraySliceEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx, SourceLocation sourceLoc)
-                throws HyracksDataException {
-            super(args, ctx, sourceLoc, ArraySliceWithoutEndPositionDescriptor.this.getIdentifier(), inputListType);
-        }
-
-        // Return null, no end position
-        @Override
-        protected IScalarEvaluator getEndPositionEval(IScalarEvaluatorFactory[] args, IHyracksTaskContext ctx) {
-            return null;
-        }
-    }
 }