aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2018-08-15 12:21:56 +0200
committerGitHub <noreply@github.com>2018-08-15 12:21:56 +0200
commit619faa8533398743f347f1fbc63cc808e6b7938d (patch)
tree3e61a3f106db4eae8598d7e746c0dcdd35db4a90
parentac138b6b38e3f82cf40f4a467c8e56546219883e (diff)
Revert "Revert "Revert "Added a object structure for GroupingRequest objects, accessable from…"""
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/Query.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/Continuation.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java92
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java45
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java30
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java18
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java20
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java44
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java8
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java56
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java5
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java33
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java22
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java20
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java11
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java9
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java23
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java12
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java19
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java21
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java15
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java30
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java17
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/YmumValue.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java14
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java13
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java10
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java4
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java28
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java6
-rw-r--r--container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java2
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Model.java30
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/Select.java100
-rw-r--r--container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java16
-rw-r--r--container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java3
-rw-r--r--container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java2
-rw-r--r--container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java33
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java6
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java6
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java7
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java5
-rw-r--r--container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java20
-rw-r--r--container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java3
-rw-r--r--container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java (renamed from container-search/src/test/java/com/yahoo/select/SelectTestCase.java)98
133 files changed, 443 insertions, 1704 deletions
diff --git a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
index c93220f0a85..90410699748 100644
--- a/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/fastsearch/FastSearcher.java
@@ -203,7 +203,7 @@ public class FastSearcher extends VespaBackEndSearcher {
/** When we only search a single node, doing all grouping in one pass is more efficient */
private void forceSinglePassGrouping(Query query) {
- for (GroupingRequest groupingRequest : query.getSelect().getGrouping())
+ for (GroupingRequest groupingRequest : GroupingRequest.getRequests(query))
forceSinglePassGrouping(groupingRequest.getRootOperation());
}
diff --git a/container-search/src/main/java/com/yahoo/search/Query.java b/container-search/src/main/java/com/yahoo/search/Query.java
index 53435941e26..cfb1c9a26be 100644
--- a/container-search/src/main/java/com/yahoo/search/Query.java
+++ b/container-search/src/main/java/com/yahoo/search/Query.java
@@ -972,7 +972,6 @@ public class Query extends com.yahoo.processing.Request implements Cloneable {
private void copyPropertiesTo(Query clone) {
clone.model = model.cloneFor(clone);
- clone.select = select.cloneFor(clone);
clone.ranking = (Ranking) ranking.clone();
clone.presentation = (Presentation) presentation.clone();
clone.context = getContext(true).cloneFor(clone);
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java b/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
index d7ee3fedfc9..eda2b449fda 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/Continuation.java
@@ -21,8 +21,4 @@ public abstract class Continuation {
public static Continuation fromString(String str) {
return ContinuationDecoder.decode(str);
}
-
- /** Returns a deep copy of this */
- public abstract Continuation copy();
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
index 754d3b562d3..8ce0d90dfc5 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingRequest.java
@@ -8,7 +8,6 @@ import com.yahoo.search.Result;
import com.yahoo.search.grouping.request.GroupingOperation;
import com.yahoo.search.grouping.result.Group;
import com.yahoo.search.grouping.result.RootGroup;
-import com.yahoo.search.query.Select;
import com.yahoo.search.result.Hit;
import java.util.*;
@@ -20,53 +19,35 @@ import java.util.*;
* result {@link Group} using the {@link #getResultGroup(Result)} method.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class GroupingRequest {
- private final Select parent;
+ private final static CompoundName PROP_REQUEST = new CompoundName(GroupingRequest.class.getName() + ".Request");
private final List<Continuation> continuations = new ArrayList<>();
+ private final int requestId;
private GroupingOperation root;
private TimeZone timeZone;
private URI resultId;
- private GroupingRequest(Select parent) {
- this.parent = parent;
- }
-
- private GroupingRequest(Select parent,
- List<Continuation> continuations,
- GroupingOperation root,
- TimeZone timeZone,
- URI resultId) {
- this.parent = parent;
- continuations.forEach(item -> this.continuations.add(item.copy()));
- this.root = root != null ? root.copy(null) : null;
- this.timeZone = timeZone;
- this.resultId = resultId;
- }
-
- /** Returns a deep copy of this */
- public GroupingRequest copy(Select parentOfCopy) {
- return new GroupingRequest(parentOfCopy, continuations, root, timeZone, resultId);
+ private GroupingRequest(int requestId) {
+ this.requestId = requestId;
}
/**
- * Returns the id of this GroupingRequest.
- * This id is injected into the {@link RootGroup} of the final result, and
+ * Returns the id of this GroupingRequest. This id is injected into the {@link RootGroup} of the final result, and
* allows tracking of per-request meta data.
*
- * @return the id of this request, or -1 if it has been removed from the query select statement
+ * @return The id of this.
*/
public int getRequestId() {
- return parent.getGrouping().indexOf(this);
+ return requestId;
}
/**
* Returns the root {@link GroupingOperation} that defines this request. As long as this remains unset, the request
* is void.
*
- * @return the root operation.
+ * @return The root operation.
*/
public GroupingOperation getRootOperation() {
return root;
@@ -76,8 +57,8 @@ public class GroupingRequest {
* Sets the root {@link GroupingOperation} that defines this request. As long as this remains unset, the request is
* void.
*
- * @param root the root operation to set.
- * @return this, to allow chaining.
+ * @param root The root operation to set.
+ * @return This, to allow chaining.
*/
public GroupingRequest setRootOperation(GroupingOperation root) {
this.root = root;
@@ -88,7 +69,7 @@ public class GroupingRequest {
* Returns the {@link TimeZone} used when resolving time expressions such as {@link
* com.yahoo.search.grouping.request.DayOfMonthFunction} and {@link com.yahoo.search.grouping.request.HourOfDayFunction}.
*
- * @return the time zone in use.
+ * @return The time zone in use.
*/
public TimeZone getTimeZone() {
return timeZone;
@@ -98,8 +79,8 @@ public class GroupingRequest {
* Sets the {@link TimeZone} used when resolving time expressions such as {@link
* com.yahoo.search.grouping.request.DayOfMonthFunction} and {@link com.yahoo.search.grouping.request.HourOfDayFunction}.
*
- * @param timeZone the time zone to set.
- * @return this, to allow chaining.
+ * @param timeZone The time zone to set.
+ * @return This, to allow chaining.
*/
public GroupingRequest setTimeZone(TimeZone timeZone) {
this.timeZone = timeZone;
@@ -111,8 +92,8 @@ public class GroupingRequest {
* search returns. Because searchers are allowed to modify both {@link Result} and {@link Hit} objects freely, this
* method requires that you pass it the current {@link Result} object as argument.
*
- * @param result the search result that contains the root group.
- * @return the result {@link RootGroup} of this request, or null if not found.
+ * @param result The search result that contains the root group.
+ * @return The result {@link RootGroup} of this request, or null if not found.
*/
public RootGroup getResultGroup(Result result) {
Hit root = result.hits().get(resultId, -1);
@@ -126,8 +107,8 @@ public class GroupingRequest {
* Sets the result {@link RootGroup} of this request. This is used by the executing grouping searcher, and should
* not be called by a requesting searcher.
*
- * @param group the result to set.
- * @return this, to allow chaining.
+ * @param group The result to set.
+ * @return This, to allow chaining.
*/
public GroupingRequest setResultGroup(RootGroup group) {
this.resultId = group.getId();
@@ -138,41 +119,46 @@ public class GroupingRequest {
* Returns the list of {@link Continuation}s of this request. This is used by the executing grouping searcher to
* allow pagination of grouping results.
*
- * @return the list of Continuations.
+ * @return The list of Continuations.
*/
public List<Continuation> continuations() {
return continuations;
}
/**
- * Creates a new grouping request and adds it to the query.getSelect().getGrouping() list
+ * Creates and attaches a new instance of this class to the given {@link Query}. This is necessary to allow {@link
+ * #getRequests(Query)} to return all created requests.
*
- * @param query the query to attach the request to.
+ * @param query The query to attach the request to.
* @return The created request.
*/
public static GroupingRequest newInstance(Query query) {
- GroupingRequest newRequest = new GroupingRequest(query.getSelect());
- query.getSelect().getGrouping().add(newRequest);
- return newRequest;
+ List<GroupingRequest> lst = getRequests(query);
+ if (lst.isEmpty()) {
+ lst = new LinkedList<>();
+ query.properties().set(PROP_REQUEST, lst);
+ }
+ GroupingRequest ret = new GroupingRequest(lst.size());
+ lst.add(ret);
+ return ret;
}
/**
* Returns all instances of this class that have been attached to the given {@link Query}. If no requests have been
* attached to the {@link Query}, this method returns an empty list.
*
- * @param query the query whose requests to return.
- * @return the list of grouping requests.
- * @deprecated use query.getSelect().getGrouping()
+ * @param query The query whose requests to return.
+ * @return The list of grouping requests.
*/
@SuppressWarnings({ "unchecked" })
- @Deprecated
public static List<GroupingRequest> getRequests(Query query) {
- return query.getSelect().getGrouping();
- }
-
- @Override
- public String toString() {
- return root == null ? "(empty)" : root.toString();
+ Object lst = query.properties().get(PROP_REQUEST);
+ if (lst == null) {
+ return Collections.emptyList();
+ }
+ if (!(lst instanceof List)) {
+ throw new IllegalArgumentException("Expected " + GroupingRequest.class + ", got " + lst.getClass() + ".");
+ }
+ return (List<GroupingRequest>)lst;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
index d96f490909e..6379c43bc87 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/GroupingValidator.java
@@ -63,8 +63,9 @@ public class GroupingValidator extends Searcher {
public Result search(Query query, Execution execution) {
if (enabled && query.properties().getBoolean(PARAM_ENABLED, true)) {
ExpressionVisitor visitor = new MyVisitor();
- for (GroupingRequest req : query.getSelect().getGrouping())
+ for (GroupingRequest req : GroupingRequest.getRequests(query)) {
req.getRootOperation().visitExpressions(visitor);
+ }
}
return execution.search(query);
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
index 420861d2f6c..8cb27569e67 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AddFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an add-function in a {@link GroupingExpression}. It evaluates to a number that equals the
* result of adding the results of all arguments together in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AddFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class AddFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public AddFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private AddFunction(String label, Integer level, List<GroupingExpression> args) {
- super("add", label, level, args);
- }
-
- @Override
- public AddFunction copy() {
- return new AddFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private AddFunction(List<GroupingExpression> args) {
+ super("add", args);
}
/**
@@ -46,6 +37,6 @@ public class AddFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new AddFunction(null, null, args);
+ return new AddFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
index 6166833999a..323f1ac769a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AggregatorNode.java
@@ -12,13 +12,13 @@ public abstract class AggregatorNode extends GroupingExpression {
private final GroupingExpression exp;
- protected AggregatorNode(String image, String label, Integer level) {
- super(image + "()", label, level);
+ protected AggregatorNode(String image) {
+ super(image + "()");
this.exp = null;
}
- protected AggregatorNode(String image, String label, Integer level, GroupingExpression exp) {
- super(image + "(" + exp.toString() + ")", label, level);
+ protected AggregatorNode(String image, GroupingExpression exp) {
+ super(image + "(" + exp.toString() + ")");
this.exp = exp;
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
index 93b46d95d89..b809706331f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AllOperation.java
@@ -1,16 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
/**
* This is a grouping operation that processes the input list as a whole, as opposed to {@link EachOperation} which
* processes each element of that list separately.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AllOperation extends GroupingOperation {
@@ -18,44 +13,6 @@ public class AllOperation extends GroupingOperation {
* Constructs a new instance of this class.
*/
public AllOperation() {
- super("all", null);
- }
-
- private AllOperation(GroupingOperation parentOfCopy,
- String image,
- String label,
- List<GroupingExpression> orderBy,
- List<GroupingExpression> outputs,
- List<GroupingOperation> children,
- Map<String, GroupingExpression> aliases,
- Set<String> hints,
- GroupingExpression groupBy,
- String where,
- boolean forceSinglePass,
- double accuracy,
- int precision,
- int level,
- int max) {
- super(parentOfCopy, image, label, orderBy, outputs, children, aliases, hints, groupBy, where, forceSinglePass, accuracy, precision, level, max);
+ super("all");
}
-
- @Override
- public AllOperation copy(GroupingOperation parentOfCopy) {
- return new AllOperation(parentOfCopy,
- getImage(),
- getLabel(),
- getOrderBy(),
- getOutputs(),
- getChildren(),
- getAliases(),
- getHints(),
- getGroupBy(),
- getWhere(),
- getForceSinglePass(),
- getAccuracy(),
- getPrecision(),
- getLevel(),
- getMax());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
index 569f0d06987..5f2617acf16 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AndFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an and-function in a {@link GroupingExpression}. It evaluates to a long that equals the result
* of and'ing the results of all arguments together in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AndFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class AndFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a long.
*/
public AndFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private AndFunction(String label, Integer level, List<GroupingExpression> args) {
- super("and", label, level, args);
- }
-
- @Override
- public AndFunction copy() {
- return new AndFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private AndFunction(List<GroupingExpression> args) {
+ super("and", args);
}
/**
@@ -46,6 +37,6 @@ public class AndFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new AndFunction(null, null, args);
+ return new AndFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
index c8e0a6be3e8..ed69e8aaee7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ArrayAtLookup.java
@@ -19,36 +19,34 @@ import com.google.common.annotations.Beta;
public class ArrayAtLookup extends DocumentValue {
private final String attributeName;
- private final GroupingExpression indexArgument;
+ private final GroupingExpression arg2;
/**
* Constructs a new instance of this class.
*
- * @param attributeName the attribute name to assign to this.
+ * @param attributeName The attribute name to assign to this.
*/
public ArrayAtLookup(String attributeName, GroupingExpression indexArg) {
- this(null, null, attributeName, indexArg);
- }
-
- private ArrayAtLookup(String label, Integer level, String attributeName, GroupingExpression indexArgument) {
- super("array.at(" + attributeName + ", " + indexArgument + ")", label, level);
+ super("array.at(" + attributeName + ", " + indexArg + ")");
this.attributeName = attributeName;
- this.indexArgument = indexArgument;
+ this.arg2 = indexArg;
}
- @Override
- public ArrayAtLookup copy() {
- return new ArrayAtLookup(getLabel(), getLevelOrNull(), getAttributeName(), getIndexArgument().copy());
- }
-
- /** Returns the name of the attribute to retrieve from the input hit */
+ /**
+ * Returns the name of the attribute to retrieve from the input hit.
+ *
+ * @return The attribute name.
+ */
public String getAttributeName() {
return attributeName;
}
- /** Return the expression to evaluate before indexing */
+ /**
+ * get the expression to evaluate before indexing
+ * @return grouping expression argument
+ */
public GroupingExpression getIndexArgument() {
- return indexArgument;
+ return arg2;
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
index d609800cc1c..faf565647c7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeFunction.java
@@ -6,7 +6,6 @@ package com.yahoo.search.grouping.request;
* named attribute in the input {@link com.yahoo.search.result.Hit}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AttributeFunction extends DocumentValue {
@@ -18,17 +17,8 @@ public class AttributeFunction extends DocumentValue {
* @param attributeName the attribute name to assign to this.
*/
public AttributeFunction(String attributeName) {
- this(null, null, attributeName);
- }
-
- private AttributeFunction(String label, Integer level, String attributeName) {
- super("attribute(" + attributeName + ")", label, level);
- this.name = attributeName;
- }
-
- @Override
- public AttributeFunction copy() {
- return new AttributeFunction(getLabel(), getLevelOrNull(), getAttributeName());
+ super("attribute(" + attributeName + ")");
+ name = attributeName;
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
index 1afac32d488..d83888b3107 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AttributeValue.java
@@ -6,7 +6,6 @@ package com.yahoo.search.grouping.request;
* named attribute in the input {@link com.yahoo.search.result.Hit}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AttributeValue extends DocumentValue {
@@ -18,17 +17,8 @@ public class AttributeValue extends DocumentValue {
* @param attributeName the attribute name to assign to this.
*/
public AttributeValue(String attributeName) {
- this(null, null, attributeName);
- }
-
- private AttributeValue(String label, Integer level, String attributeName) {
- super(attributeName, label, level);
- this.name = attributeName;
- }
-
- @Override
- public AttributeValue copy() {
- return new AttributeValue(getLabel(), getLevelOrNull(), getAttributeName());
+ super(attributeName);
+ name = attributeName;
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
index bf11da5d2b9..d7e3232ea5f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgAggregator.java
@@ -6,26 +6,15 @@ package com.yahoo.search.grouping.request;
* the contained expression evaluated to over all the inputs.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AvgAggregator extends AggregatorNode {
/**
* Constructs a new instance of this class.
*
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public AvgAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public AvgAggregator(GroupingExpression exp) {
+ super("avg", exp);
}
-
- private AvgAggregator(String label, Integer level, GroupingExpression expression) {
- super("avg", label, level, expression);
- }
-
- @Override
- public AvgAggregator copy() {
- return new AvgAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
index 775f6c48d66..55c4d355589 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/AvgFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a min-function in a {@link GroupingExpression}. It evaluates to a number that equals the
* average of the results of all arguments.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class AvgFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class AvgFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public AvgFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private AvgFunction(String label, Integer level, List<GroupingExpression> args) {
- super("avg", label, level, args);
- }
-
- @Override
- public AvgFunction copy() {
- return new AvgFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private AvgFunction(List<GroupingExpression> args) {
+ super("avg", args);
}
/**
@@ -46,6 +37,6 @@ public class AvgFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new AvgFunction(null, null, args);
+ return new AvgFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
index 32ef3c16d2e..8b8903c9a8d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/BooleanValue.java
@@ -4,8 +4,7 @@ package com.yahoo.search.grouping.request;
/**
* This class represents a constant {@link Boolean} value in a {@link GroupingExpression}.
*
- * @author Ulf Lilleengen
- * @author bratseth
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class BooleanValue extends ConstantValue<Boolean> {
@@ -15,16 +14,6 @@ public class BooleanValue extends ConstantValue<Boolean> {
* @param value The immutable value to assign to this.
*/
public BooleanValue(Boolean value) {
- super(null, null, value);
+ super(value);
}
-
- private BooleanValue(String label, Integer level, Boolean value) {
- super(label, level, value);
- }
-
- @Override
- public BooleanValue copy() {
- return new BooleanValue(getLabel(), getLevelOrNull(), getValue());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
index 392c6386eb7..c73b7199394 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/BucketValue.java
@@ -14,8 +14,8 @@ public class BucketValue extends GroupingExpression implements Comparable<Bucket
private final ConstantValue<?> to;
private final ConstantValueComparator comparator = new ConstantValueComparator();
- protected BucketValue(String label, Integer level, ConstantValue<?> inclusiveFrom, ConstantValue<?> exclusiveTo) {
- super("bucket[" + asImage(inclusiveFrom) + ", " + asImage(exclusiveTo) + ">", label, level);
+ protected BucketValue(ConstantValue<?> inclusiveFrom, ConstantValue<?> exclusiveTo) {
+ super("bucket[" + asImage(inclusiveFrom) + ", " + asImage(exclusiveTo) + ">");
if (comparator.compare(exclusiveTo, inclusiveFrom) < 0) {
throw new IllegalArgumentException("Bucket to-value can not be less than from-value.");
}
@@ -23,11 +23,6 @@ public class BucketValue extends GroupingExpression implements Comparable<Bucket
to = exclusiveTo;
}
- @Override
- public BucketValue copy() {
- return new BucketValue(getLabel(), getLevelOrNull(), getFrom().copy(), getTo().copy());
- }
-
/**
* Returns the inclusive-from value of this bucket.
*
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
index dddc3df0542..5e51c8e35a0 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/CatFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a cat-function in a {@link GroupingExpression}. It evaluates to a byte array that equals the
* concatenation of the binary result of all arguments in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class CatFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class CatFunction extends FunctionNode {
* @param argN The optional arguments.
*/
public CatFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private CatFunction(String label, Integer level, List<GroupingExpression> args) {
- super("cat", label, level, args);
- }
-
- @Override
- public CatFunction copy() {
- return new CatFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private CatFunction(List<GroupingExpression> args) {
+ super("cat", args);
}
/**
@@ -46,6 +37,6 @@ public class CatFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new CatFunction(null, null, args);
+ return new CatFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
index 81712424829..ad8c1ef1cc9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValue.java
@@ -7,24 +7,23 @@ package com.yahoo.search.grouping.request;
* data types are represented as subclasses of this.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
@SuppressWarnings("rawtypes")
public abstract class ConstantValue<T extends Comparable> extends GroupingExpression {
private final T value;
- protected ConstantValue(String label, Integer level, T value) {
- super(asImage(value), label, level);
+ protected ConstantValue(T value) {
+ super(asImage(value));
this.value = value;
}
- @Override
- public abstract ConstantValue copy();
-
- /** Returns the constant value of this */
+ /**
+ * Returns the constant value of this.
+ *
+ * @return The value.
+ */
public T getValue() {
return value;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
index 61118e04784..543a1f495c6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ConstantValueComparator.java
@@ -7,11 +7,10 @@ import java.util.Comparator;
* This class compares two constant values, and takes into account that one of
* the arguments may be the very special infinity value.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
@SuppressWarnings("rawtypes")
public class ConstantValueComparator implements Comparator<ConstantValue> {
-
@SuppressWarnings("unchecked")
@Override
public int compare(ConstantValue lhs, ConstantValue rhs) {
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
index b9d691500ad..19a6c939087 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/CountAggregator.java
@@ -6,22 +6,13 @@ package com.yahoo.search.grouping.request;
* there are in the input.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class CountAggregator extends AggregatorNode {
- /** Constructs a new instance of this class. */
+ /**
+ * Constructs a new instance of this class.
+ */
public CountAggregator() {
- this(null, null);
+ super("count");
}
-
- private CountAggregator(String label, Integer level) {
- super("count", label, level);
- }
-
- @Override
- public CountAggregator copy() {
- return new CountAggregator(getLabel(), getLevelOrNull());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
index 0c2c4928a91..b3a4c451b6b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DateFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.Arrays;
-import java.util.stream.Collectors;
/**
* This class represents a timestamp-formatter function in a {@link GroupingExpression}. It evaluates to a string on the
* form "YYYY-MM-DD" of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DateFunction extends FunctionNode {
@@ -19,18 +17,6 @@ public class DateFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public DateFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.date", Arrays.asList(exp));
}
-
- private DateFunction(String label, Integer level, GroupingExpression exp) {
- super("time.date", label, level, Arrays.asList(exp));
- }
-
- @Override
- public DateFunction copy() {
- return new DateFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
index 62c23804344..5d82a80352b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfMonthFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.Arrays;
-import java.util.stream.Collectors;
/**
* This class represents a day-of-month timestamp-function in a {@link GroupingExpression}. It evaluates to a long that
* equals the day of month (1-31) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DayOfMonthFunction extends FunctionNode {
@@ -19,18 +17,6 @@ public class DayOfMonthFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public DayOfMonthFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.dayofmonth", Arrays.asList(exp));
}
-
- private DayOfMonthFunction(String label, Integer level, GroupingExpression exp) {
- super("time.dayofmonth", label, level, Arrays.asList(exp));
- }
-
- @Override
- public DayOfMonthFunction copy() {
- return new DayOfMonthFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
index 6730db2e8d6..f2135427bf5 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfWeekFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* equals the day of week (0 - 6) of the result of the argument, Monday being 0.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DayOfWeekFunction extends FunctionNode {
@@ -18,18 +17,6 @@ public class DayOfWeekFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public DayOfWeekFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.dayofweek", Arrays.asList(exp));
}
-
- private DayOfWeekFunction(String label, Integer level, GroupingExpression exp) {
- super("time.dayofweek", label, level, Arrays.asList(exp));
- }
-
- @Override
- public DayOfWeekFunction copy() {
- return new DayOfWeekFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
index 9ff59c26fe5..15f158ef2f1 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DayOfYearFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* equals the day of year (0-365) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DayOfYearFunction extends FunctionNode {
@@ -18,18 +17,6 @@ public class DayOfYearFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public DayOfYearFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.dayofyear", Arrays.asList(exp));
}
-
- private DayOfYearFunction(String label, Integer level, GroupingExpression exp) {
- super("time.dayofyear", label, level, Arrays.asList(exp));
- }
-
- @Override
- public DayOfYearFunction copy() {
- return new DayOfYearFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
index 5cad8ea55ec..be0bb66f91f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DebugWaitFunction.java
@@ -2,14 +2,13 @@
package com.yahoo.search.grouping.request;
import java.util.Arrays;
-import java.util.stream.Collectors;
/**
* This class represents debug_wait function in a {@link GroupingExpression}. For each hit evaluated,
* it waits for the time specified as the second argument. The third argument specifies if the wait
* should be a busy-wait or not. The first argument is then evaluated.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class DebugWaitFunction extends FunctionNode {
@@ -21,20 +20,7 @@ public class DebugWaitFunction extends FunctionNode {
* @param arg3 The third compulsory argument, specifying busy wait or not.
*/
public DebugWaitFunction(GroupingExpression arg1, DoubleValue arg2, BooleanValue arg3) {
- this(null, null, arg1, arg2, arg3);
- }
-
- private DebugWaitFunction(String label, Integer level, GroupingExpression arg1, DoubleValue arg2, BooleanValue arg3) {
- super("debugwait", label, level, Arrays.asList(arg1, arg2, arg3));
- }
-
- @Override
- public DebugWaitFunction copy() {
- return new DebugWaitFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy(),
- (DoubleValue)getArg(1).copy(),
- (BooleanValue)getArg(2).copy());
+ super("debugwait", Arrays.asList(arg1, arg2, arg3));
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
index f559d911ff4..f50dcde2d56 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DivFunction.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a div-function in a {@link GroupingExpression}. It evaluates to a number that equals the result
@@ -10,7 +9,6 @@ import java.util.stream.Collectors;
* second, result by third, ...).
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DivFunction extends FunctionNode {
@@ -22,18 +20,11 @@ public class DivFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public DivFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private DivFunction(String label, Integer level, List<GroupingExpression> args) {
- super("div", label, level, args);
- }
-
- @Override
- public DivFunction copy() {
- return new DivFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private DivFunction(List<GroupingExpression> args) {
+ super("div", args);
}
/**
@@ -47,6 +38,6 @@ public class DivFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new DivFunction(null, null, args);
+ return new DivFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
index d9a9daa2db5..188e642e7d7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DocIdNsSpecificValue.java
@@ -6,7 +6,6 @@ package com.yahoo.search.grouping.request;
* specific value of the document id of the input {@link com.yahoo.search.result.Hit}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DocIdNsSpecificValue extends DocumentValue {
@@ -14,16 +13,7 @@ public class DocIdNsSpecificValue extends DocumentValue {
* Constructs a new instance of this class.
*/
public DocIdNsSpecificValue() {
- this(null, null);
- }
-
- private DocIdNsSpecificValue(String label, Integer level) {
- super("docidnsspecific()", label, level);
- }
-
- @Override
- public DocIdNsSpecificValue copy() {
- return new DocIdNsSpecificValue(getLabel(), getLevelOrNull());
+ super("docidnsspecific()");
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
index f8b18e4acd6..f8756b81163 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DocumentValue.java
@@ -9,8 +9,8 @@ package com.yahoo.search.grouping.request;
*/
public abstract class DocumentValue extends GroupingExpression {
- protected DocumentValue(String image, String label, Integer level) {
- super(image, label, level);
+ protected DocumentValue(String image) {
+ super(image);
}
@Override
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
index f0bcfead39a..d71ec8093fd 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleBucket.java
@@ -26,7 +26,7 @@ public class DoubleBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public DoubleBucket(double from, double to) {
- super(null, null, new DoubleValue(from), new DoubleValue(to));
+ super(new DoubleValue(from), new DoubleValue(to));
}
/**
@@ -36,16 +36,6 @@ public class DoubleBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public DoubleBucket(ConstantValue<?> from, ConstantValue<?> to) {
- super(null, null, from, to);
+ super(from, to);
}
-
- private DoubleBucket(String label, Integer level, ConstantValue<?> from, ConstantValue<?> to) {
- super(label, level, from, to);
- }
-
- @Override
- public DoubleBucket copy() {
- return new DoubleBucket(getLabel(), getLevelOrNull(), getFrom().copy(), getTo().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
index 0409709f2a2..d43e8412623 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoublePredefined.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a predefined bucket-function in a {@link GroupingExpression} for expressions that evaluate to a
@@ -20,22 +19,11 @@ public class DoublePredefined extends PredefinedFunction {
* @param argN The optional buckets.
*/
public DoublePredefined(GroupingExpression exp, DoubleBucket arg1, DoubleBucket... argN) {
- this(null, null, exp, asList(arg1, argN));
+ this(exp, asList(arg1, argN));
}
- private DoublePredefined(String label, Integer level, GroupingExpression exp, List<DoubleBucket> args) {
- super(label, level, exp, args);
- }
-
- @Override
- public DoublePredefined copy() {
- return new DoublePredefined(getLabel(),
- getLevelOrNull(),
- getArg(0),
- args().stream().skip(1)
- .map(DoubleBucket.class::cast)
- .map(arg -> arg.copy())
- .collect(Collectors.toList()));
+ private DoublePredefined(GroupingExpression exp, List<DoubleBucket> args) {
+ super(exp, args);
}
@Override
@@ -55,6 +43,6 @@ public class DoublePredefined extends PredefinedFunction {
if (args.isEmpty()) {
throw new IllegalArgumentException("Expected at least one bucket, got none.");
}
- return new DoublePredefined(null, null, exp, args);
+ return new DoublePredefined(exp, args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
index 318cc680f2e..5dad65aaabf 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/DoubleValue.java
@@ -5,7 +5,6 @@ package com.yahoo.search.grouping.request;
* This class represents a constant {@link Double} value in a {@link GroupingExpression}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class DoubleValue extends ConstantValue<Double> {
@@ -15,16 +14,6 @@ public class DoubleValue extends ConstantValue<Double> {
* @param value The immutable value to assign to this.
*/
public DoubleValue(double value) {
- super(null, null, value);
+ super(value);
}
-
- private DoubleValue(String label, Integer level, Double value) {
- super(label, level, value);
- }
-
- @Override
- public DoubleValue copy() {
- return new DoubleValue(getLabel(), getLevelOrNull(), getValue());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
index 2d830fd214e..1a7074a2c6e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/EachOperation.java
@@ -1,16 +1,11 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
/**
* This is a grouping operation that processes each element of the input list separately, as opposed to {@link
* AllOperation} which processes that list as a whole.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class EachOperation extends GroupingOperation {
@@ -18,44 +13,7 @@ public class EachOperation extends GroupingOperation {
* Constructs a new instance of this class.
*/
public EachOperation() {
- super("each", null);
- }
-
- private EachOperation(GroupingOperation parentOfCopy,
- String image,
- String label,
- List<GroupingExpression> orderBy,
- List<GroupingExpression> outputs,
- List<GroupingOperation> children,
- Map<String, GroupingExpression> aliases,
- Set<String> hints,
- GroupingExpression groupBy,
- String where,
- boolean forceSinglePass,
- double accuracy,
- int precision,
- int level,
- int max) {
- super(parentOfCopy, image, label, orderBy, outputs, children, aliases, hints, groupBy, where, forceSinglePass, accuracy, precision, level, max);
- }
-
- @Override
- public EachOperation copy(GroupingOperation parentOfCopy) {
- return new EachOperation(parentOfCopy,
- getImage(),
- getLabel(),
- getOrderBy(),
- getOutputs(),
- getChildren(),
- getAliases(),
- getHints(),
- getGroupBy(),
- getWhere(),
- getForceSinglePass(),
- getAccuracy(),
- getPrecision(),
- getLevel(),
- getMax());
+ super("each");
}
@Override
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
index 89d698694a8..a341bee2568 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ExpressionVisitor.java
@@ -13,8 +13,7 @@ public interface ExpressionVisitor {
/**
* This method is called for every {@link GroupingExpression} object in the targeted {@link GroupingOperation}.
*
- * @param exp the expression being visited.
+ * @param exp The expression being visited.
*/
- void visitExpression(GroupingExpression exp);
-
+ public void visitExpression(GroupingExpression exp);
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
index 3b397634a11..f44394c6193 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/FixedWidthFunction.java
@@ -18,17 +18,7 @@ public class FixedWidthFunction extends FunctionNode {
* @param width The width of each bucket.
*/
public FixedWidthFunction(GroupingExpression exp, Number width) {
- this(null, null, exp,
- width instanceof Double ? new DoubleValue(width.doubleValue()) : new LongValue(width.longValue()));
- }
-
- private FixedWidthFunction(String label, Integer level, GroupingExpression exp, ConstantValue width) {
- super("fixedwidth", label, level, Arrays.asList(exp, width));
- }
-
- @Override
- public FixedWidthFunction copy() {
- return new FixedWidthFunction(getLabel(), getLevelOrNull(), getArg(0).copy(), (ConstantValue)getArg(1).copy());
+ super("fixedwidth", Arrays.asList(exp, width instanceof Double ? new DoubleValue(width.doubleValue()) : new LongValue(width.longValue())));
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
index 9e09baf66ab..1a059d79b1a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/FunctionNode.java
@@ -14,8 +14,8 @@ public abstract class FunctionNode extends GroupingExpression implements Iterabl
private final List<GroupingExpression> args = new ArrayList<>();
- protected FunctionNode(String image, String label, Integer level, List<GroupingExpression> args) {
- super(image + "(" + asString(args) + ")", label, level);
+ protected FunctionNode(String image, List<GroupingExpression> args) {
+ super(image + "(" + asString(args) + ")");
this.args.addAll(args);
}
@@ -39,10 +39,6 @@ public abstract class FunctionNode extends GroupingExpression implements Iterabl
return args.get(i);
}
- /** Returns the arguments of this as a list which cannot be modified */
- // Note: If this is made public the returned list must be immutable
- protected List<GroupingExpression> args() { return args; }
-
@Override
public Iterator<GroupingExpression> iterator() {
return Collections.unmodifiableList(args).iterator();
@@ -79,5 +75,4 @@ public abstract class FunctionNode extends GroupingExpression implements Iterabl
ret.addAll(bar);
return ret;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
index ad97f5519ee..2f7691156e5 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingExpression.java
@@ -15,14 +15,10 @@ public abstract class GroupingExpression extends GroupingNode {
private Integer level = null;
- protected GroupingExpression(String image, String label, Integer level) {
- super(image, label);
- this.level = level;
+ protected GroupingExpression(String image) {
+ super(image);
}
- /** Returns a deep copy of this */
- public abstract GroupingExpression copy();
-
/**
* Resolves the conceptual level of this expression. This level represents the type of data that is consumed by this
* expression, where level 0 is a single hit, level 1 is a group, level 2 is a list of groups, and so forth. This
@@ -43,8 +39,8 @@ public abstract class GroupingExpression extends GroupingNode {
/**
* Returns the conceptual level of this expression.
*
- * @return the level.
- * @throws IllegalArgumentException thrown if the level of this expression has not been resolved.
+ * @return The level.
+ * @throws IllegalArgumentException Thrown if the level of this expression has not been resolved.
* @see #resolveLevel(int)
*/
public int getLevel() {
@@ -54,8 +50,6 @@ public abstract class GroupingExpression extends GroupingNode {
return level;
}
- protected final Integer getLevelOrNull() { return level; }
-
/**
* Recursively calls {@link ExpressionVisitor#visitExpression(GroupingExpression)} for this expression and all of
* its argument expressions.
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
index bd5db3d1fdb..148b4243a4b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingNode.java
@@ -10,11 +10,10 @@ package com.yahoo.search.grouping.request;
public abstract class GroupingNode {
private final String image;
- private String label;
+ private String label = null;
- protected GroupingNode(String image, String label) {
+ protected GroupingNode(String image) {
this.image = image;
- this.label = label;
}
/**
@@ -26,8 +25,6 @@ public abstract class GroupingNode {
return label;
}
- protected String getImage() { return image; }
-
/**
* Assigns a label to this grouping expression. The label is applied to the results of this expression so that they
* can be identified by the caller when processing the output.
@@ -44,5 +41,4 @@ public abstract class GroupingNode {
public String toString() {
return image;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
index 93619913b4f..4c29ca7d98d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/GroupingOperation.java
@@ -23,7 +23,7 @@ public abstract class GroupingOperation extends GroupingNode {
private final List<GroupingExpression> orderBy = new ArrayList<>();
private final List<GroupingExpression> outputs = new ArrayList<>();
private final List<GroupingOperation> children = new ArrayList<>();
- private final Map<String, GroupingExpression> aliases = LazyMap.newHashMap();
+ private final Map<String, GroupingExpression> alias = LazyMap.newHashMap();
private final Set<String> hints = LazySet.newHashSet();
private GroupingExpression groupBy = null;
@@ -35,44 +35,10 @@ public abstract class GroupingOperation extends GroupingNode {
private int level = -1;
private int max = -1;
- protected GroupingOperation(String image, String label) {
- super(image, label);
- }
-
- protected GroupingOperation(GroupingOperation parentOfCopy,
- String image,
- String label,
- List<GroupingExpression> orderBy,
- List<GroupingExpression> outputs,
- List<GroupingOperation> children,
- Map<String, GroupingExpression> aliases,
- Set<String> hints,
- GroupingExpression groupBy,
- String where,
- boolean forceSinglePass,
- double accuracy,
- int precision,
- int level,
- int max) {
- super(image, label);
- this.parent = parentOfCopy;
- orderBy.forEach(item -> this.orderBy.add(item.copy()));
- outputs.forEach(item -> this.outputs.add(item.copy()));
- children.forEach(item -> this.children.add(item.copy(this)));
- aliases.forEach((key, value) -> this.aliases.put(key, value.copy()));
- this.hints.addAll(hints);
- if (groupBy != null) this.groupBy = groupBy.copy();
- this.where = where;
- this.forceSinglePass = forceSinglePass;
- this.accuracy = accuracy;
- this.precision = precision;
- this.level = level;
- this.max = max;
+ protected GroupingOperation(String image) {
+ super(image);
}
- /** Returns a deep copy of this */
- public abstract GroupingOperation copy(GroupingOperation parentOfCopy);
-
/**
* Registers an alias with this operation. An alias is made available to expressions in both this node and all child
* nodes.
@@ -82,7 +48,7 @@ public abstract class GroupingOperation extends GroupingNode {
* @return This, to allow chaining.
*/
public GroupingOperation putAlias(String id, GroupingExpression exp) {
- aliases.put(id, exp);
+ alias.put(id, exp);
return this;
}
@@ -94,8 +60,8 @@ public abstract class GroupingOperation extends GroupingNode {
* @return The expression associated with the id.
*/
public GroupingExpression getAlias(String id) {
- if (aliases.containsKey(id)) {
- return aliases.get(id);
+ if (alias.containsKey(id)) {
+ return alias.get(id);
} else if (parent != null) {
return parent.getAlias(id);
} else {
@@ -103,11 +69,6 @@ public abstract class GroupingOperation extends GroupingNode {
}
}
- /** Returns a direct, mutable copy of the aliases of this, never null */
- protected Map<String, GroupingExpression> getAliases() {
- return aliases;
- }
-
/**
* Adds a hint to this.
*
@@ -264,9 +225,6 @@ public abstract class GroupingOperation extends GroupingNode {
}
}
- /** Returns the parent of this, or null if none */
- protected GroupingOperation getParent() { return parent; }
-
public GroupingOperation setForceSinglePass(boolean forceSinglePass) {
this.forceSinglePass = forceSinglePass;
return this;
@@ -488,7 +446,7 @@ public abstract class GroupingOperation extends GroupingNode {
* @param visitor The visitor to call.
*/
public void visitExpressions(ExpressionVisitor visitor) {
- for (GroupingExpression exp : aliases.values()) {
+ for (GroupingExpression exp : alias.values()) {
exp.visit(visitor);
}
for (GroupingExpression exp : outputs) {
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
index 7adebcbfbdb..faf1c1e0289 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/HourOfDayFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* equals the hour of day (0-23) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class HourOfDayFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class HourOfDayFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public HourOfDayFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.hourofday", Arrays.asList(exp));
}
-
- private HourOfDayFunction(String label, Integer level, GroupingExpression exp) {
- super("time.hourofday", label, level, Arrays.asList(exp));
- }
-
- @Override
- public HourOfDayFunction copy() {
- return new HourOfDayFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java b/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
index 766571914cc..53f5d3256ed 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/Infinite.java
@@ -3,13 +3,12 @@ package com.yahoo.search.grouping.request;
/**
* This class represents an Infinite value that may be used as a bucket
- * size specifier. This is immutable.
+ * size specifier.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
@SuppressWarnings("rawtypes")
public class Infinite implements Comparable {
-
private final boolean negative;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
index dac6259595d..7c2730992df 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/InfiniteValue.java
@@ -4,8 +4,7 @@ package com.yahoo.search.grouping.request;
/**
* This class represents an infinite value in a {@link GroupingExpression}.
*
- * @author Ulf Lilleengen
- * @author bratseth
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class InfiniteValue extends ConstantValue<Infinite> {
@@ -15,16 +14,6 @@ public class InfiniteValue extends ConstantValue<Infinite> {
* @param value The immutable value to assign to this.
*/
public InfiniteValue(Infinite value) {
- super(null, null, value);
+ super(value);
}
-
- private InfiniteValue(String label, Integer level, Infinite value) {
- super(label, level, value);
- }
-
- @Override
- public InfiniteValue copy() {
- return new InfiniteValue(getLabel(), getLevelOrNull(), getValue());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java b/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
index 279434f1df2..dc8b6d68dc3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/InterpolatedLookup.java
@@ -18,37 +18,34 @@ import com.google.common.annotations.Beta;
public class InterpolatedLookup extends DocumentValue {
private final String attributeName;
- private final GroupingExpression lookupArgument;
+ private final GroupingExpression arg2;
/**
* Constructs a new instance of this class.
*
- * @param attributeName the attribute name to assign to this.
- * @param lookupArgument Expression giving a floating-point value for the lookup argument
+ * @param attributeName The attribute name the lookup should happen in
+ * @param lookupArg Expression giving a floating-point value for the lookup argument
*/
- public InterpolatedLookup(String attributeName, GroupingExpression lookupArgument) {
- this(null, null, attributeName, lookupArgument);
- }
-
- private InterpolatedLookup(String label, Integer level, String attributeName, GroupingExpression lookupArgument) {
- super("interpolatedlookup(" + attributeName + ", " + lookupArgument + ")", label, level);
+ public InterpolatedLookup(String attributeName, GroupingExpression lookupArg) {
+ super("interpolatedlookup(" + attributeName + ", " + lookupArg + ")");
this.attributeName = attributeName;
- this.lookupArgument = lookupArgument;
- }
-
- @Override
- public InterpolatedLookup copy() {
- return new InterpolatedLookup(getLabel(), getLevelOrNull(), getAttributeName(), getLookupArgument().copy());
+ this.arg2 = lookupArg;
}
- /** Returns the name of the attribute to retrieve from the input hit */
+ /**
+ * Get the name of the attribute to be retrieved from the input hit.
+ * @return The attribute name.
+ */
public String getAttributeName() {
return attributeName;
}
- /** Return the expression to evaluate before lookup */
+ /**
+ * Get the expression that will be evaluated before lookup.
+ * @return grouping expression argument
+ */
public GroupingExpression getLookupArgument() {
- return lookupArgument;
+ return arg2;
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
index a0fdf8f9526..fd363320033 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongBucket.java
@@ -12,7 +12,7 @@ public class LongBucket extends BucketValue {
* Gives the next distinct long value.
*
* @param value the base value.
- * @return the next value.
+ * @return the nextt value.
*/
public static LongValue nextValue(LongValue value) {
long v = value.getValue();
@@ -26,7 +26,7 @@ public class LongBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public LongBucket(long from, long to) {
- super(null, null, new LongValue(from), new LongValue(to));
+ super(new LongValue(from), new LongValue(to));
}
/**
@@ -37,16 +37,6 @@ public class LongBucket extends BucketValue {
*/
@SuppressWarnings("rawtypes")
public LongBucket(ConstantValue from, ConstantValue to) {
- super(null, null, from, to);
+ super(from, to);
}
-
- private LongBucket(String label, Integer level, ConstantValue<?> from, ConstantValue<?> to) {
- super(label, level, from, to);
- }
-
- @Override
- public LongBucket copy() {
- return new LongBucket(getLabel(), getLevelOrNull(), getFrom().copy(), getTo().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
index fe428d26db7..98acc800ed7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongPredefined.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a predefined bucket-function in a {@link GroupingExpression} for expressions that evaluate to a
* long.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class LongPredefined extends PredefinedFunction {
@@ -21,23 +19,11 @@ public class LongPredefined extends PredefinedFunction {
* @param argN The optional buckets.
*/
public LongPredefined(GroupingExpression exp, LongBucket arg1, LongBucket... argN) {
- this(null, null, exp, asList(arg1, argN));
+ this(exp, asList(arg1, argN));
}
- private LongPredefined(String label, Integer level, GroupingExpression exp, List<LongBucket> args) {
- super(label, level, exp, args);
- }
-
- @Override
- public LongPredefined copy() {
- return new LongPredefined(getLabel(),
- getLevelOrNull(),
- getArg(0),
- args().stream()
- .skip(1)
- .map(LongBucket.class::cast)
- .map(arg -> arg.copy())
- .collect(Collectors.toList()));
+ private LongPredefined(GroupingExpression exp, List<LongBucket> args) {
+ super(exp, args);
}
@Override
@@ -57,6 +43,6 @@ public class LongPredefined extends PredefinedFunction {
if (args.isEmpty()) {
throw new IllegalArgumentException("Expected at least one bucket, got none.");
}
- return new LongPredefined(null, null, exp, args);
+ return new LongPredefined(exp, args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
index 705036af78e..4c4eb1c409d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/LongValue.java
@@ -5,7 +5,6 @@ package com.yahoo.search.grouping.request;
* This class represents a constant {@link Long} value in a {@link GroupingExpression}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class LongValue extends ConstantValue<Long> {
@@ -15,16 +14,7 @@ public class LongValue extends ConstantValue<Long> {
* @param value the immutable value to assign to this.
*/
public LongValue(long value) {
- super(null, null, value);
- }
-
- private LongValue(String label, Integer level, Long value) {
- super(label, level, value);
- }
-
- @Override
- public LongValue copy() {
- return new LongValue(getLabel(), getLevelOrNull(), getValue());
+ super(value);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
index 24ba449e517..58d7275e8eb 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathACosFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathACosFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathACosFunction(String label, Integer level, GroupingExpression exp) {
- super("math.acos", label, level, Arrays.asList(exp));
+ super("math.acos", Arrays.asList(exp));
}
-
- @Override
- public MathACosFunction copy() {
- return new MathACosFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
index 40de58ba0be..eca8fd7ebf7 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathACosHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathACosHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathACosHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathACosHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.acosh", label, level, Arrays.asList(exp));
+ super("math.acosh", Arrays.asList(exp));
}
-
- @Override
- public MathACosHFunction copy() {
- return new MathACosHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
index 48a2641b660..1189bccd5bc 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathASinFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathASinFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathASinFunction(String label, Integer level, GroupingExpression exp) {
- super("math.asin", label, level, Arrays.asList(exp));
+ super("math.asin", Arrays.asList(exp));
}
-
- @Override
- public MathASinFunction copy() {
- return new MathASinFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
index 687bf1c6c34..7619ab4f1b3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathASinHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathASinHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathASinHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathASinHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.asinh", label, level, Arrays.asList(exp));
+ super("math.asinh", Arrays.asList(exp));
}
-
- @Override
- public MathASinHFunction copy() {
- return new MathASinHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
index 6612c9cc70f..114fd24644b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathATanFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathATanFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathATanFunction(String label, Integer level, GroupingExpression exp) {
- super("math.atan", label, level, Arrays.asList(exp));
+ super("math.atan", Arrays.asList(exp));
}
-
- @Override
- public MathATanFunction copy() {
- return new MathATanFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
index fa9844ec17b..08f7956e855 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathATanHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathATanHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathATanHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathATanHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.atanh", label, level, Arrays.asList(exp));
+ super("math.atanh", Arrays.asList(exp));
}
-
- @Override
- public MathATanHFunction copy() {
- return new MathATanHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
index 04595003a03..6978e89ba71 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCbrtFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathCbrtFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathCbrtFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathCbrtFunction(String label, Integer level, GroupingExpression exp) {
- super("math.cbrt", label, level, Arrays.asList(exp));
+ super("math.cbrt", Arrays.asList(exp));
}
-
- @Override
- public MathCbrtFunction copy() {
- return new MathCbrtFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
index 95140ce06d0..846660c2370 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathCosFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathCosFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathCosFunction(String label, Integer level, GroupingExpression exp) {
- super("math.cos", label, level, Arrays.asList(exp));
+ super("math.cos", Arrays.asList(exp));
}
-
- @Override
- public MathCosFunction copy() {
- return new MathCosFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
index f0384666ffe..d370678d3f5 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathCosHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathCosHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathCosHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathCosHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.cosh", label, level, Arrays.asList(exp));
+ super("math.cosh", Arrays.asList(exp));
}
-
- @Override
- public MathCosHFunction copy() {
- return new MathCosHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
index ef2a53d90b0..812fd98faa9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathExpFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathExpFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathExpFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathExpFunction(String label, Integer level, GroupingExpression exp) {
- super("math.exp", label, level, Arrays.asList(exp));
+ super("math.exp", Arrays.asList(exp));
}
-
- @Override
- public MathExpFunction copy() {
- return new MathExpFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
index 64dd931f9e4..31e5e99d974 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFloorFunction.java
@@ -3,30 +3,14 @@ package com.yahoo.search.grouping.request;
import java.util.Arrays;
-/**
- * Represents the math.floor(expression) function
- *
- * @author baldersheim
- * @author bratseth
- */
+/** represents the math.floor(expression) function */
public class MathFloorFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathFloorFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathFloorFunction(String label, Integer level, GroupingExpression exp) {
- super("math.floor", label, level, Arrays.asList(exp));
+ super("math.floor", Arrays.asList(exp));
}
-
- @Override
- public MathFloorFunction copy() {
- return new MathFloorFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
index 5fc806a90fe..6e3e52c9563 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathFunctions.java
@@ -5,7 +5,6 @@ package com.yahoo.search.grouping.request;
* @author baldersheim
*/
public abstract class MathFunctions {
-
/**
* Defines the different types of math functions that are available.
*/
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
index d6062124619..596c7501af6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathHypotFunction.java
@@ -5,10 +5,8 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathHypotFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
@@ -16,16 +14,6 @@ public class MathHypotFunction extends FunctionNode {
* @param y The expression to evaluate for y exponent, double value will be requested.
*/
public MathHypotFunction(GroupingExpression x, GroupingExpression y) {
- this(null, null, x, y);
- }
-
- private MathHypotFunction(String label, Integer level, GroupingExpression x, GroupingExpression y) {
- super("math.hypot", label, level, Arrays.asList(x, y));
+ super("math.hypot", Arrays.asList(x, y));
}
-
- @Override
- public MathHypotFunction copy() {
- return new MathHypotFunction(getLabel(), getLevelOrNull(), getArg(0).copy(), getArg(1).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
index b64e5d03a97..6a19de43f1c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog10Function.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathLog10Function extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathLog10Function(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathLog10Function(String label, Integer level, GroupingExpression exp) {
- super("math.log10", label, level, Arrays.asList(exp));
+ super("math.log10", Arrays.asList(exp));
}
-
- @Override
- public MathLog10Function copy() {
- return new MathLog10Function(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
index 7df97e6b0d5..06fc2424f41 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLog1pFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathLog1pFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathLog1pFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathLog1pFunction(String label, Integer level, GroupingExpression exp) {
- super("math.log1p", label, level, Arrays.asList(exp));
+ super("math.log1p", Arrays.asList(exp));
}
-
- @Override
- public MathLog1pFunction copy() {
- return new MathLog1pFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
index 323a03ad152..0b71ad66bd9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathLogFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathLogFunction extends FunctionNode {
-
- /**
+ /**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathLogFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathLogFunction(String label, Integer level, GroupingExpression exp) {
- super("math.log", label, level, Arrays.asList(exp));
+ super("math.log", Arrays.asList(exp));
}
-
- @Override
- public MathLogFunction copy() {
- return new MathLogFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
index 084fdc82646..ab0d6ba2139 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathPowFunction.java
@@ -5,10 +5,8 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathPowFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
@@ -16,19 +14,6 @@ public class MathPowFunction extends FunctionNode {
* @param y The expression to evaluate for the exponent, double value will be requested.
*/
public MathPowFunction(GroupingExpression x, GroupingExpression y) {
- this(null, null, x, y);
- }
-
- private MathPowFunction(String label, Integer level, GroupingExpression x, GroupingExpression y) {
- super("math.pow", label, level, Arrays.asList(x, y));
+ super("math.pow", Arrays.asList(x,y));
}
-
- @Override
- public MathPowFunction copy() {
- return new MathPowFunction(getLabel(),
- getLevelOrNull(),
- getArg(0).copy(),
- getArg(1).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
index ea9a0d97887..dd914807e7a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathSinFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathSinFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathSinFunction(String label, Integer level, GroupingExpression exp) {
- super("math.sin", label, level, Arrays.asList(exp));
+ super("math.sin", Arrays.asList(exp));
}
-
- @Override
- public MathSinFunction copy() {
- return new MathSinFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
index 3a02de24e6a..b600d947489 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSinHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathSinHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathSinHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathSinHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.sinh", label, level, Arrays.asList(exp));
+ super("math.sinh", Arrays.asList(exp));
}
-
- @Override
- public MathSinHFunction copy() {
- return new MathSinHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
index ee66b71e070..e6a0c04e7ee 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathSqrtFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathSqrtFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathSqrtFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathSqrtFunction(String label, Integer level, GroupingExpression exp) {
- super("math.sqrt", label, level, Arrays.asList(exp));
+ super("math.sqrt", Arrays.asList(exp));
}
-
- @Override
- public MathSqrtFunction copy() {
- return new MathSqrtFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
index 003ef9c6a00..f66492f87ad 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathTanFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathTanFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathTanFunction(String label, Integer level, GroupingExpression exp) {
- super("math.tan", label, level, Arrays.asList(exp));
+ super("math.tan", Arrays.asList(exp));
}
-
- @Override
- public MathTanFunction copy() {
- return new MathTanFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
index 86ccbbdfcf9..93e7c1c1d49 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MathTanHFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class MathTanHFunction extends FunctionNode {
-
- /**
+/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, double value will be requested.
*/
public MathTanHFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private MathTanHFunction(String label, Integer level, GroupingExpression exp) {
- super("math.tanh", label, level, Arrays.asList(exp));
+ super("math.tanh", Arrays.asList(exp));
}
-
- @Override
- public MathTanHFunction copy() {
- return new MathTanHFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
index 513cba8fb19..54dc7c6b3bd 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxAggregator.java
@@ -6,26 +6,15 @@ package com.yahoo.search.grouping.request;
* the contained expression evaluated to over all the inputs.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class MaxAggregator extends AggregatorNode {
/**
* Constructs a new instance of this class.
*
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public MaxAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public MaxAggregator(GroupingExpression exp) {
+ super("max", exp);
}
-
- private MaxAggregator(String label, Integer level, GroupingExpression expression) {
- super("max", label, level, expression);
- }
-
- @Override
- public MaxAggregator copy() {
- return new MaxAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
index bff8cb481b8..731c1c4eba4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MaxFunction.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a max-function in a {@link GroupingExpression}. It evaluates to a number that equals the
@@ -20,18 +19,11 @@ public class MaxFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public MaxFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private MaxFunction(String label, Integer level, List<GroupingExpression> args) {
- super("max", label, level, args);
- }
-
- @Override
- public MaxFunction copy() {
- return new MaxFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private MaxFunction(List<GroupingExpression> args) {
+ super("max", args);
}
/**
@@ -45,7 +37,7 @@ public class MaxFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new MaxFunction(null, null, args);
+ return new MaxFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java b/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
index 1426d141ef7..6ae33b804e9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/Md5Function.java
@@ -18,16 +18,7 @@ public class Md5Function extends FunctionNode {
* @param numBits The number of bits of the md5 to include.
*/
public Md5Function(GroupingExpression exp, int numBits) {
- this(null, null, exp, new LongValue(numBits));
- }
-
- private Md5Function(String label, Integer level, GroupingExpression exp, LongValue numBits) {
- super("md5", label, level, Arrays.asList(exp, numBits));
- }
-
- @Override
- public Md5Function copy() {
- return new Md5Function(getLabel(), getLevelOrNull(), getArg(0).copy(), (LongValue)getArg(1).copy());
+ super("md5", Arrays.asList(exp, new LongValue(numBits)));
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
index 07164ba4053..1a24527dcfc 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinAggregator.java
@@ -6,26 +6,15 @@ package com.yahoo.search.grouping.request;
* the contained expression evaluated to over all the inputs.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class MinAggregator extends AggregatorNode {
/**
* Constructs a new instance of this class.
*
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public MinAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public MinAggregator(GroupingExpression exp) {
+ super("min", exp);
}
-
- private MinAggregator(String label, Integer level, GroupingExpression expression) {
- super("min", label, level, expression);
- }
-
- @Override
- public MinAggregator copy() {
- return new MinAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
index 40fbda5a98a..478684dd73e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinFunction.java
@@ -1,9 +1,7 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
-import java.util.Arrays;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a min-function in a {@link GroupingExpression}. It evaluates to a number that equals the
@@ -21,18 +19,11 @@ public class MinFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public MinFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private MinFunction(String label, Integer level, List<GroupingExpression> args) {
- super("min", label, level, args);
- }
-
- @Override
- public MinFunction copy() {
- return new MinFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private MinFunction(List<GroupingExpression> args) {
+ super("min", args);
}
/**
@@ -46,7 +37,7 @@ public class MinFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new MinFunction(null, null, args);
+ return new MinFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
index 97dfb5b0d37..d2442b8455e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MinuteOfHourFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* that equals the minute of hour (0-59) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class MinuteOfHourFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class MinuteOfHourFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public MinuteOfHourFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.minuteofhour", Arrays.asList(exp));
}
-
- private MinuteOfHourFunction(String label, Integer level, GroupingExpression exp) {
- super("time.minuteofhour", label, level, Arrays.asList(exp));
- }
-
- @Override
- public MinuteOfHourFunction copy() {
- return new MinuteOfHourFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
index 33b5c7bf655..a3fd1041e6e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ModFunction.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a mod-function in a {@link GroupingExpression}. It evaluates to a number that equals the result
@@ -21,18 +20,11 @@ public class ModFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public ModFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private ModFunction(String label, Integer level, List<GroupingExpression> args) {
- super("mod", label, level, args);
- }
-
- @Override
- public ModFunction copy() {
- return new ModFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private ModFunction(List<GroupingExpression> args) {
+ super("mod", args);
}
/**
@@ -46,6 +38,6 @@ public class ModFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new ModFunction(null, null, args);
+ return new ModFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
index c6df8dbd408..96e08562e42 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MonthOfYearFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* equals the month of year (1-12) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class MonthOfYearFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class MonthOfYearFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public MonthOfYearFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.monthofyear", Arrays.asList(exp));
}
-
- private MonthOfYearFunction(String label, Integer level, GroupingExpression exp) {
- super("time.monthofyear", label, level, Arrays.asList(exp));
- }
-
- @Override
- public MonthOfYearFunction copy() {
- return new MonthOfYearFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
index 7af8d22955e..84584270f58 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/MulFunction.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a mul-function in a {@link GroupingExpression}. It evaluates to a number that equals the result
@@ -20,18 +19,11 @@ public class MulFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public MulFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private MulFunction(String label, Integer level, List<GroupingExpression> args) {
- super("mul", label, level, args);
- }
-
- @Override
- public MulFunction copy() {
- return new MulFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private MulFunction(List<GroupingExpression> args) {
+ super("mul", args);
}
/**
@@ -45,6 +37,6 @@ public class MulFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new MulFunction(null, null, args);
+ return new MulFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
index ad3b892970c..7e05b02b59e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NegFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* negative of the results of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class NegFunction extends FunctionNode {
@@ -18,17 +17,7 @@ public class NegFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a number.
*/
public NegFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("neg", Arrays.asList(exp));
}
-
- private NegFunction(String label, Integer level, GroupingExpression exp) {
- super("neg", label, level, Arrays.asList(exp));
- }
-
- @Override
- public NegFunction copy() {
- return new NegFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
index 8bf0a03141a..54a0062e2c9 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NormalizeSubjectFunction.java
@@ -13,17 +13,7 @@ public class NormalizeSubjectFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a string.
*/
public NormalizeSubjectFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("normalizesubject", Arrays.asList(exp));
}
-
- private NormalizeSubjectFunction(String label, Integer level, GroupingExpression exp) {
- super("normalizesubject", label, level, Arrays.asList(exp));
- }
-
- @Override
- public NormalizeSubjectFunction copy() {
- return new NormalizeSubjectFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
index 75715bad37b..24dd888e98d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/NowFunction.java
@@ -1,7 +1,6 @@
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.search.grouping.request;
-import java.util.Arrays;
import java.util.Collections;
/**
@@ -9,7 +8,6 @@ import java.util.Collections;
* of seconds since midnight, January 1, 1970 UTC.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class NowFunction extends FunctionNode {
@@ -17,17 +15,7 @@ public class NowFunction extends FunctionNode {
* Constructs a new instance of this class.
*/
public NowFunction() {
- this(null, null);
+ super("now", Collections.<GroupingExpression>emptyList());
}
-
- private NowFunction(String label, Integer level) {
- super("now", label, level, Collections.emptyList());
- }
-
- @Override
- public NowFunction copy() {
- return new NowFunction(getLabel(), getLevelOrNull());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
index 43456a4f281..ad1809f312f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/OrFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an or-function in a {@link GroupingExpression}. It evaluates to a long that equals the result
* of or'ing the results of all arguments together in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class OrFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class OrFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a long.
*/
public OrFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private OrFunction(String label, Integer level, List<GroupingExpression> args) {
- super("or", label, level, args);
- }
-
- @Override
- public OrFunction copy() {
- return new OrFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private OrFunction(List<GroupingExpression> args) {
+ super("or", args);
}
/**
@@ -46,7 +37,7 @@ public class OrFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new OrFunction(null, null, args);
+ return new OrFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
index 5818c5034b6..ebae4b238b4 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/PredefinedFunction.java
@@ -4,7 +4,6 @@ package com.yahoo.search.grouping.request;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a predefined bucket-function in a {@link GroupingExpression}. It maps the input into one of the
@@ -14,8 +13,8 @@ import java.util.stream.Collectors;
*/
public abstract class PredefinedFunction extends FunctionNode {
- protected PredefinedFunction(String label, Integer level, GroupingExpression exp, List<? extends BucketValue> args) {
- super("predefined", label, level, asList(exp, args));
+ protected PredefinedFunction(GroupingExpression exp, List<? extends BucketValue> args) {
+ super("predefined", asList(exp, args));
Iterator<? extends BucketValue> it = args.iterator();
BucketValue prev = it.next();
while (it.hasNext()) {
@@ -48,12 +47,12 @@ public abstract class PredefinedFunction extends FunctionNode {
return (BucketValue)getArg(i + 1);
}
- private static List<GroupingExpression> asList(GroupingExpression exp, List<? extends BucketValue> args) {
+ private static
+ List<GroupingExpression> asList(GroupingExpression exp, List<? extends BucketValue> args) {
List<GroupingExpression> ret = new LinkedList<>();
ret.add(exp);
ret.addAll(args);
return ret;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
index 415dbe2adff..32be9233445 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBucket.java
@@ -4,7 +4,7 @@ package com.yahoo.search.grouping.request;
/**
* This class represents a {@link RawValue} bucket in a {@link PredefinedFunction}.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class RawBucket extends BucketValue {
@@ -25,7 +25,7 @@ public class RawBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public RawBucket(RawBuffer from, RawBuffer to) {
- super(null, null, new RawValue(from), new RawValue(to));
+ super(new RawValue(from), new RawValue(to));
}
/**
@@ -35,16 +35,6 @@ public class RawBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public RawBucket(ConstantValue<?> from, ConstantValue<?> to) {
- super(null, null, from, to);
+ super(from, to);
}
-
- private RawBucket(String label, Integer level, ConstantValue<?> from, ConstantValue<?> to) {
- super(label, level, from, to);
- }
-
- @Override
- public RawBucket copy() {
- return new RawBucket(getLabel(), getLevelOrNull(), getFrom().copy(), getTo().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
index 9b18d7b374c..460c547f1d6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawBuffer.java
@@ -7,10 +7,9 @@ import java.util.ArrayList;
* This class represents a buffer of byte values to be used as a backing buffer
* for raw buckets.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class RawBuffer implements Comparable<RawBuffer>, Cloneable {
-
private final ArrayList<Byte> buffer;
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
index 567892a0377..7f27a428e74 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawPredefined.java
@@ -2,13 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a predefined bucket-function in a {@link GroupingExpression} for expressions that evaluate to a
* raw.
*
- * @author Ulf Lilleengen
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class RawPredefined extends PredefinedFunction {
@@ -20,23 +19,11 @@ public class RawPredefined extends PredefinedFunction {
* @param argN The optional buckets.
*/
public RawPredefined(GroupingExpression exp, RawBucket arg1, RawBucket... argN) {
- this(null, null, exp, asList(arg1, argN));
+ this(exp, asList(arg1, argN));
}
- private RawPredefined(String label, Integer level, GroupingExpression exp, List<RawBucket> args) {
- super(label, level, exp, args);
- }
-
- @Override
- public RawPredefined copy() {
- return new RawPredefined(getLabel(),
- getLevelOrNull(),
- getArg(0),
- args().stream()
- .skip(1)
- .map(RawBucket.class::cast)
- .map(arg -> arg.copy())
- .collect(Collectors.toList()));
+ private RawPredefined(GroupingExpression exp, List<RawBucket> args) {
+ super(exp, args);
}
@Override
@@ -56,6 +43,6 @@ public class RawPredefined extends PredefinedFunction {
if (args.isEmpty()) {
throw new IllegalArgumentException("Expected at least one bucket, got none.");
}
- return new RawPredefined(null, null, exp, args);
+ return new RawPredefined(exp, args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
index c8215b1b389..f66ee362599 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RawValue.java
@@ -4,8 +4,7 @@ package com.yahoo.search.grouping.request;
/**
* This class represents a raw value in a {@link GroupingExpression}.
*
- * @author Ulf Lilleengen
- * @author bratseth
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class RawValue extends ConstantValue<RawBuffer> {
@@ -15,16 +14,6 @@ public class RawValue extends ConstantValue<RawBuffer> {
* @param value The immutable value to assign to this.
*/
public RawValue(RawBuffer value) {
- super(null, null, value);
+ super(value);
}
-
- private RawValue(String label, Integer level, RawBuffer value) {
- super(label, level, value);
- }
-
- @Override
- public RawValue copy() {
- return new RawValue(getLabel(), getLevelOrNull(), getValue().clone());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
index 30cdf2c6f5c..01735c0bdab 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/RelevanceValue.java
@@ -6,7 +6,6 @@ package com.yahoo.search.grouping.request;
* the input {@link com.yahoo.search.result.Hit}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class RelevanceValue extends DocumentValue {
@@ -14,16 +13,7 @@ public class RelevanceValue extends DocumentValue {
* Constructs a new instance of this class.
*/
public RelevanceValue() {
- this(null, null);
- }
-
- private RelevanceValue(String label, Integer level) {
- super("relevance()", label, level);
- }
-
- @Override
- public RelevanceValue copy() {
- return new RelevanceValue(getLabel(), getLevelOrNull());
+ super("relevance()");
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
index 8937018c28f..8283806b5c1 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ReverseFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* result of the argument, sorted in descending order.
*
* @author baldersheim
- * @author bratseth
*/
public class ReverseFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class ReverseFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a list.
*/
public ReverseFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("reverse", Arrays.asList(exp));
}
-
- private ReverseFunction(String label, Integer level, GroupingExpression exp) {
- super("reverse", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ReverseFunction copy() {
- return new ReverseFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
index 7b01d820d89..b83065af629 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SecondOfMinuteFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* that equals the second of minute (0-59) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class SecondOfMinuteFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class SecondOfMinuteFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public SecondOfMinuteFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.secondofminute", Arrays.asList(exp));
}
-
- private SecondOfMinuteFunction(String label, Integer level, GroupingExpression exp) {
- super("time.secondofminute", label, level, Arrays.asList(exp));
- }
-
- @Override
- public SecondOfMinuteFunction copy() {
- return new SecondOfMinuteFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
index a9deb2b8e64..4b7055ffb89 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SizeFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* number of elements in the result of the argument (e.g. the number of elements in an array).
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class SizeFunction extends FunctionNode {
@@ -18,17 +17,7 @@ public class SizeFunction extends FunctionNode {
* @param exp The expression to evaluate.
*/
public SizeFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("size", Arrays.asList(exp));
}
-
- private SizeFunction(String label, Integer level, GroupingExpression exp) {
- super("size", label, level, Arrays.asList(exp));
- }
-
- @Override
- public SizeFunction copy() {
- return new SizeFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
index 57489b8ee1a..6ee4644344e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SortFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* result of the argument, sorted in ascending order.
*
* @author baldersheim
- * @author bratseth
*/
public class SortFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class SortFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a list.
*/
public SortFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("sort", Arrays.asList(exp));
}
-
- private SortFunction(String label, Integer level, GroupingExpression exp) {
- super("sort", label, level, Arrays.asList(exp));
- }
-
- @Override
- public SortFunction copy() {
- return new SortFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
index d96b840dde9..62bc0085422 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StandardDeviationAggregator.java
@@ -6,26 +6,13 @@ package com.yahoo.search.grouping.request;
* of the values that the contained expression evaluated to over all the inputs.
*
* @author bjorncs
- * @author bratseth
*/
public class StandardDeviationAggregator extends AggregatorNode {
/**
- * Constructs a new instance of this class.
- *
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public StandardDeviationAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public StandardDeviationAggregator(GroupingExpression exp) {
+ super("stddev", exp);
}
-
- private StandardDeviationAggregator(String label, Integer level, GroupingExpression expression) {
- super("stddev", label, level, expression);
- }
-
- @Override
- public StandardDeviationAggregator copy() {
- return new StandardDeviationAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
index 3b266b884bf..97dcc909254 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StrCatFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a strcat-function in a {@link GroupingExpression}. It evaluates to a string that equals the
* contatenation of the string results of all arguments in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class StrCatFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class StrCatFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a string.
*/
public StrCatFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private StrCatFunction(String label, Integer level, List<GroupingExpression> args) {
- super("strcat", label, level, args);
- }
-
- @Override
- public StrCatFunction copy() {
- return new StrCatFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private StrCatFunction(List<GroupingExpression> args) {
+ super("strcat", args);
}
/**
@@ -46,7 +37,7 @@ public class StrCatFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new StrCatFunction(null, null, args);
+ return new StrCatFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
index d784e37b337..e9ca48b3db3 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StrLenFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* number of bytes in the string result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class StrLenFunction extends FunctionNode {
@@ -18,17 +17,7 @@ public class StrLenFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a string.
*/
public StrLenFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("strlen", Arrays.asList(exp));
}
-
- private StrLenFunction(String label, Integer level, GroupingExpression exp) {
- super("strlen", label, level, Arrays.asList(exp));
- }
-
- @Override
- public StrLenFunction copy() {
- return new StrLenFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
index 5558f1443db..80e85ed9e78 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringBucket.java
@@ -25,7 +25,7 @@ public class StringBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public StringBucket(String from, String to) {
- super(null, null, new StringValue(from), new StringValue(to));
+ super(new StringValue(from), new StringValue(to));
}
/**
@@ -35,16 +35,6 @@ public class StringBucket extends BucketValue {
* @param to The to-value to assign to this.
*/
public StringBucket(ConstantValue<?> from, ConstantValue<?> to) {
- super(null, null, from, to);
+ super(from, to);
}
-
- private StringBucket(String label, Integer level, ConstantValue<?> from, ConstantValue<?> to) {
- super(label, level, from, to);
- }
-
- @Override
- public StringBucket copy() {
- return new StringBucket(getLabel(), getLevelOrNull(), getFrom().copy(), getTo().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
index cae9bc113c9..465ff96157d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringPredefined.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a predefined bucket-function in a {@link GroupingExpression} for expressions that evaluate to a
@@ -20,23 +19,11 @@ public class StringPredefined extends PredefinedFunction {
* @param argN The optional buckets.
*/
public StringPredefined(GroupingExpression exp, StringBucket arg1, StringBucket... argN) {
- this(null, null, exp, asList(arg1, argN));
+ this(exp, asList(arg1, argN));
}
- private StringPredefined(String label, Integer level, GroupingExpression exp, List<StringBucket> args) {
- super(label, level, exp, args);
- }
-
- @Override
- public StringPredefined copy() {
- return new StringPredefined(getLabel(),
- getLevelOrNull(),
- getArg(0),
- args().stream()
- .skip(1)
- .map(StringBucket.class::cast)
- .map(arg -> arg.copy())
- .collect(Collectors.toList()));
+ private StringPredefined(GroupingExpression exp, List<StringBucket> args) {
+ super(exp, args);
}
@Override
@@ -56,6 +43,6 @@ public class StringPredefined extends PredefinedFunction {
if (args.isEmpty()) {
throw new IllegalArgumentException("Expected at least one bucket, got none.");
}
- return new StringPredefined(null, null, exp, args);
+ return new StringPredefined(exp, args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
index 473e6b73f95..4fc630c7b1b 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/StringValue.java
@@ -5,7 +5,6 @@ package com.yahoo.search.grouping.request;
* This class represents a constant {@link String} value in a {@link GroupingExpression}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class StringValue extends ConstantValue<String> {
@@ -15,16 +14,6 @@ public class StringValue extends ConstantValue<String> {
* @param value The immutable value to assign to this.
*/
public StringValue(String value) {
- super(null, null, value);
+ super(value);
}
-
- private StringValue(String label, Integer level, String value) {
- super(label, level, value);
- }
-
- @Override
- public StringValue copy() {
- return new StringValue(getLabel(), getLevelOrNull(), getValue());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
index e0fe533e361..1d0456ffcf2 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SubFunction.java
@@ -2,7 +2,6 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents a div-function in a {@link GroupingExpression}. It evaluates to a number that equals the result
@@ -21,18 +20,11 @@ public class SubFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a number.
*/
public SubFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private SubFunction(String label, Integer level, List<GroupingExpression> args) {
- super("sub", label, level, args);
- }
-
- @Override
- public SubFunction copy() {
- return new SubFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private SubFunction(List<GroupingExpression> args) {
+ super("sub", args);
}
/**
@@ -46,6 +38,6 @@ public class SubFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new SubFunction(null, null, args);
+ return new SubFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
index 0b34b0660d5..b50dd84e27e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SumAggregator.java
@@ -6,26 +6,15 @@ package com.yahoo.search.grouping.request;
* the contained expression evaluated to over all the inputs.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class SumAggregator extends AggregatorNode {
/**
* Constructs a new instance of this class.
*
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public SumAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public SumAggregator(GroupingExpression exp) {
+ super("sum", exp);
}
-
- private SumAggregator(String label, Integer level, GroupingExpression expression) {
- super("sum", label, level, expression);
- }
-
- @Override
- public SumAggregator copy() {
- return new SumAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
index 68641d6e6e6..6cdaa3b2e4a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/SummaryValue.java
@@ -15,7 +15,8 @@ public class SummaryValue extends DocumentValue {
* Constructs a new instance of this class, using the default summary class.
*/
public SummaryValue() {
- this(null, null, null);
+ super("summary()");
+ name = null;
}
/**
@@ -24,19 +25,10 @@ public class SummaryValue extends DocumentValue {
* @param summaryName The name of the summary class to assign to this.
*/
public SummaryValue(String summaryName) {
- this(null, null, summaryName);
- }
-
- private SummaryValue(String label, Integer level, String summaryName) {
- super("summary(" + (summaryName == null ? "" : summaryName) + ")", label, level);
+ super("summary(" + summaryName + ")");
name = summaryName;
}
- @Override
- public SummaryValue copy() {
- return new SummaryValue(getLabel(), getLevelOrNull(), getSummaryName());
- }
-
/**
* Returns the name of the summary class used to retrieve the hit from the search node.
*
@@ -45,5 +37,4 @@ public class SummaryValue extends DocumentValue {
public String getSummaryName() {
return name;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
index 8e7490d0cc6..c6816dda621 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToDoubleFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* a double. If the argument can not be converted, this function returns 0.
*
* @author baldersheim
- * @author bratseth
*/
public class ToDoubleFunction extends FunctionNode {
@@ -18,18 +17,6 @@ public class ToDoubleFunction extends FunctionNode {
* @param exp The expression to evaluate.
*/
public ToDoubleFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("todouble", Arrays.asList(exp));
}
-
- private ToDoubleFunction(String label, Integer level, GroupingExpression exp) {
- super("todouble", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ToDoubleFunction copy() {
- return new ToDoubleFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
-
-
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
index 77470487a6e..c513fbd76e6 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToLongFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* long. If the argument can not be converted, this function returns 0.
*
* @author baldersheim
- * @author bratseth
*/
public class ToLongFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class ToLongFunction extends FunctionNode {
* @param exp The expression to evaluate.
*/
public ToLongFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("tolong", Arrays.asList(exp));
}
-
- private ToLongFunction(String label, Integer level, GroupingExpression exp) {
- super("tolong", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ToLongFunction copy() {
- return new ToLongFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
index 2f32b0fe139..3c1c335b8ef 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToRawFunction.java
@@ -8,8 +8,7 @@ import java.util.Arrays;
* converts the result of the argument to a raw type. If the argument can not
* be converted, this function returns null.
*
- * @author Ulf Lilleengen
- * @author bratseth
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class ToRawFunction extends FunctionNode {
@@ -19,16 +18,6 @@ public class ToRawFunction extends FunctionNode {
* @param exp The expression to evaluate.
*/
public ToRawFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("toraw", Arrays.asList(exp));
}
-
- private ToRawFunction(String label, Integer level, GroupingExpression exp) {
- super("toraw", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ToRawFunction copy() {
- return new ToRawFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
index dd7bd0b5250..7f4e48c8d81 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ToStringFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* long. If the argument can not be converted, this function returns 0.
*
* @author baldersheim
- * @author bratseth
*/
public class ToStringFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class ToStringFunction extends FunctionNode {
* @param exp The expression to evaluate.
*/
public ToStringFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("tostring", Arrays.asList(exp));
}
-
- private ToStringFunction(String label, Integer level, GroupingExpression exp) {
- super("tostring", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ToStringFunction copy() {
- return new ToStringFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
index 787d7aa5863..2efecc235ac 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/UcaFunction.java
@@ -2,20 +2,18 @@
package com.yahoo.search.grouping.request;
import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an uca-function in a {@link GroupingExpression}.
*
- * @author Ulf Lilleengen
- * @author bratseth
+ * @author <a href="mailto:lulf@yahoo-inc.com">Ulf Lilleengen</a>
*/
public class UcaFunction extends FunctionNode {
private final String locale;
private final String strength;
+
/**
* Constructs a new instance of this class.
*
@@ -23,7 +21,9 @@ public class UcaFunction extends FunctionNode {
* @param locale The locale to used for sorting.
*/
public UcaFunction(GroupingExpression exp, String locale) {
- this(null, null, Arrays.asList(exp, new StringValue(locale)));
+ super("uca", Arrays.asList(exp, new StringValue(locale)));
+ this.locale = locale;
+ this.strength = "TERTIARY";
}
/**
@@ -34,22 +34,12 @@ public class UcaFunction extends FunctionNode {
* @param strength The strength level to use.
*/
public UcaFunction(GroupingExpression exp, String locale, String strength) {
- this(null, null, Arrays.asList(exp, new StringValue(locale), new StringValue(strength)));
- if ( ! validStrength(strength))
+ super("uca", Arrays.asList(exp, new StringValue(locale), new StringValue(strength)));
+ if (!validStrength(strength)) {
throw new IllegalArgumentException("Not a valid UCA strength: " + strength);
- }
-
- private UcaFunction(String label, Integer level, List<GroupingExpression> args) {
- super("uca", label, level, args);
- this.locale = ((StringValue)args.get(1)).getValue();
- this.strength = args.size() > 2 ? ((StringValue)args.get(1)).getValue() : "TERTIARY";
- }
-
- @Override
- public UcaFunction copy() {
- return new UcaFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ }
+ this.locale = locale;
+ this.strength = strength;
}
private boolean validStrength(String strength) {
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
index e68303b564c..18ce7abd96c 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorAggregator.java
@@ -6,26 +6,15 @@ package com.yahoo.search.grouping.request;
* the contained expression evaluated to over all the inputs.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class XorAggregator extends AggregatorNode {
/**
* Constructs a new instance of this class.
*
- * @param expression the expression to aggregate on.
+ * @param exp The expression to aggregate on.
*/
- public XorAggregator(GroupingExpression expression) {
- this(null, null, expression);
+ public XorAggregator(GroupingExpression exp) {
+ super("xor", exp);
}
-
- private XorAggregator(String label, Integer level, GroupingExpression expression) {
- super("xor", label, level, expression);
- }
-
- @Override
- public XorAggregator copy() {
- return new XorAggregator(getLabel(), getLevelOrNull(), getExpression().copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
index 8fdd2dc5839..2f6061a3aa2 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorBitFunction.java
@@ -2,15 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.Arrays;
-import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an xor-function in a {@link GroupingExpression}. It evaluates to a long that equals the xor of
* 'width' bits over the binary representation of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class XorBitFunction extends FunctionNode {
@@ -21,18 +18,7 @@ public class XorBitFunction extends FunctionNode {
* @param numBits The number of bits of the expression value to xor.
*/
public XorBitFunction(GroupingExpression exp, int numBits) {
- this(null, null, Arrays.asList(exp, new LongValue(numBits)));
- }
-
- private XorBitFunction(String label, Integer level, List<GroupingExpression> exp) {
- super("xorbit", label, level, exp);
- }
-
- @Override
- public XorBitFunction copy() {
- return new XorBitFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ super("xorbit", Arrays.asList(exp, new LongValue(numBits)));
}
/**
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
index a7a1e4d2a8f..c3a5f5d88ad 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/XorFunction.java
@@ -2,14 +2,12 @@
package com.yahoo.search.grouping.request;
import java.util.List;
-import java.util.stream.Collectors;
/**
* This class represents an xor-function in a {@link GroupingExpression}. It evaluates to a long that equals the result
* of and'ing the results of all arguments together in the order they were given to the constructor.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class XorFunction extends FunctionNode {
@@ -21,18 +19,11 @@ public class XorFunction extends FunctionNode {
* @param argN The optional arguments, must evaluate to a long.
*/
public XorFunction(GroupingExpression arg1, GroupingExpression arg2, GroupingExpression... argN) {
- this(null, null, asList(arg1, arg2, argN));
+ this(asList(arg1, arg2, argN));
}
- private XorFunction(String label, Integer level, List<GroupingExpression> args) {
- super("xor", label, level, args);
- }
-
- @Override
- public XorFunction copy() {
- return new XorFunction(getLabel(),
- getLevelOrNull(),
- args().stream().map(arg -> arg.copy()).collect(Collectors.toList()));
+ private XorFunction(List<GroupingExpression> args) {
+ super("xor", args);
}
/**
@@ -46,7 +37,7 @@ public class XorFunction extends FunctionNode {
if (args.size() < 2) {
throw new IllegalArgumentException("Expected 2 or more arguments, got " + args.size() + ".");
}
- return new XorFunction(null, null, args);
+ return new XorFunction(args);
}
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
index 737597a585c..5bda8231929 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/YearFunction.java
@@ -8,7 +8,6 @@ import java.util.Arrays;
* the full year (e.g. 2010) of the result of the argument.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class YearFunction extends FunctionNode {
@@ -18,16 +17,6 @@ public class YearFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long.
*/
public YearFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("time.year", Arrays.asList(exp));
}
-
- private YearFunction(String label, Integer level, GroupingExpression exp) {
- super("time.year", label, level, Arrays.asList(exp));
- }
-
- @Override
- public YearFunction copy() {
- return new YearFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/YmumValue.java b/container-search/src/main/java/com/yahoo/search/grouping/request/YmumValue.java
index 8ca772b9188..c5749c4673d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/YmumValue.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/YmumValue.java
@@ -6,7 +6,6 @@ package com.yahoo.search.grouping.request;
* input {@link com.yahoo.search.result.Hit}.
*
* @author Simon Thoresen Hult
- * @author bratseth
*/
public class YmumValue extends DocumentValue {
@@ -14,17 +13,7 @@ public class YmumValue extends DocumentValue {
* Constructs a new instance of this class.
*/
public YmumValue() {
- this(null, null);
+ super("ymum()");
}
-
- private YmumValue(String label, Integer level) {
- super("ymum()", label, level);
- }
-
- @Override
- public YmumValue copy() {
- return new YmumValue(getLabel(), getLevelOrNull());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
index 5ab057ef8a8..bcd6f2ba71a 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveXFunction.java
@@ -5,26 +5,14 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class ZCurveXFunction extends FunctionNode {
-
/**
* Constructs a new instance of this class.
*
* @param exp The expression to evaluate, must evaluate to a long or long[].
*/
public ZCurveXFunction(GroupingExpression exp) {
- this(null, null, exp);
- }
-
- private ZCurveXFunction(String label, Integer level, GroupingExpression exp) {
- super("zcurve.x", label, level, Arrays.asList(exp));
+ super("zcurve.x", Arrays.asList(exp));
}
-
- @Override
- public ZCurveXFunction copy() {
- return new ZCurveXFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
index fa645eb9141..57c55d41209 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/request/ZCurveYFunction.java
@@ -5,7 +5,6 @@ import java.util.Arrays;
/**
* @author baldersheim
- * @author bratseth
*/
public class ZCurveYFunction extends FunctionNode {
/**
@@ -14,16 +13,6 @@ public class ZCurveYFunction extends FunctionNode {
* @param exp The expression to evaluate, must evaluate to a long or long[].
*/
public ZCurveYFunction(GroupingExpression exp) {
- this(null, null, exp);
+ super("zcurve.y", Arrays.asList(exp));
}
-
- private ZCurveYFunction(String label, Integer level, GroupingExpression exp) {
- super("zcurve.y", label, level, Arrays.asList(exp));
- }
-
- @Override
- public ZCurveYFunction copy() {
- return new ZCurveYFunction(getLabel(), getLevelOrNull(), getArg(0).copy());
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
index 7a12a200f5b..a02b80db16f 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/CompositeContinuation.java
@@ -10,17 +10,10 @@ import java.util.List;
/**
* @author Simon Thoresen Hult
*/
-final class CompositeContinuation extends EncodableContinuation implements Iterable<EncodableContinuation> {
+class CompositeContinuation extends EncodableContinuation implements Iterable<EncodableContinuation> {
private final List<EncodableContinuation> children = new ArrayList<>();
- @Override
- public CompositeContinuation copy() {
- CompositeContinuation copy = new CompositeContinuation();
- this.children.forEach(child -> copy.add(child.copy()));
- return copy;
- }
-
public CompositeContinuation add(EncodableContinuation child) {
children.add(child);
return this;
@@ -55,5 +48,4 @@ final class CompositeContinuation extends EncodableContinuation implements Itera
}
return ret;
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
index df24b7129ff..2ec371475c2 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/EncodableContinuation.java
@@ -11,13 +11,9 @@ abstract class EncodableContinuation extends Continuation {
public abstract void encode(IntegerEncoder out);
@Override
- public abstract EncodableContinuation copy();
-
- @Override
public final String toString() {
IntegerEncoder encoder = new IntegerEncoder();
encode(encoder);
return encoder.toString();
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
index 61856467652..bf7eb8dc12e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/GroupingExecutor.java
@@ -46,8 +46,7 @@ import com.yahoo.vespa.objects.ObjectPredicate;
public class GroupingExecutor extends Searcher {
public final static String COMPONENT_NAME = "GroupingExecutor";
- private final static String GROUPING_LIST = "GroupingList";
- private final static CompoundName PROP_GROUPINGLIST = newCompoundName(GROUPING_LIST);
+ private final static CompoundName PROP_GROUPINGLIST = newCompoundName("GroupingList");
private final static Logger log = Logger.getLogger(GroupingExecutor.class.getName());
/**
@@ -70,19 +69,26 @@ public class GroupingExecutor extends Searcher {
@Override
public Result search(Query query, Execution execution) {
String error = QueryCanonicalizer.canonicalize(query);
- if (error != null) return new Result(query, ErrorMessage.createIllegalQuery(error));
-
+ if (error != null) {
+ return new Result(query, ErrorMessage.createIllegalQuery(error));
+ }
query.prepare();
- if (query.getSelect().getGrouping().isEmpty()) return execution.search(query);
+ // Retrieve grouping requests from query.
+ List<GroupingRequest> reqList = GroupingRequest.getRequests(query);
+ if (reqList.isEmpty()) {
+ return execution.search(query);
+ }
// Convert requests to Vespa style grouping.
Map<Integer, Grouping> groupingMap = new HashMap<>();
List<RequestContext> requestContextList = new LinkedList<>();
- for (int i = 0; i < query.getSelect().getGrouping().size(); i++)
- requestContextList.add(convertRequest(query, query.getSelect().getGrouping().get(i), i, groupingMap));
-
- if (groupingMap.isEmpty()) return execution.search(query);
+ for (GroupingRequest grpRequest : reqList) {
+ requestContextList.add(convertRequest(query, grpRequest, groupingMap));
+ }
+ if (groupingMap.isEmpty()) {
+ return execution.search(query);
+ }
// Perform the necessary passes to execute grouping.
Result result = performSearch(query, execution, groupingMap);
@@ -150,8 +156,8 @@ public class GroupingExecutor extends Searcher {
* @param map The grouping map to write to.
* @return The context required to identify the request results.
*/
- private RequestContext convertRequest(Query query, GroupingRequest req, int requestId, Map<Integer, Grouping> map) {
- RequestBuilder builder = new RequestBuilder(requestId);
+ private RequestContext convertRequest(Query query, GroupingRequest req, Map<Integer, Grouping> map) {
+ RequestBuilder builder = new RequestBuilder(req.getRequestId());
builder.setRootOperation(req.getRootOperation());
builder.setDefaultSummaryName(query.getPresentation().getSummary());
builder.setTimeZone(req.getTimeZone());
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
index 324f3eb0b6e..6adec94132e 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/OffsetContinuation.java
@@ -20,11 +20,6 @@ class OffsetContinuation extends EncodableContinuation {
this.flags = flags;
}
- @Override
- public OffsetContinuation copy() {
- return this; // immutable
- }
-
public ResultId getResultId() {
return resultId;
}
@@ -86,5 +81,4 @@ class OffsetContinuation extends EncodableContinuation {
int flags = in.next();
return new OffsetContinuation(resultId, tag, offset, flags);
}
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
index 82784bcf9dd..0d09e7ab69d 100644
--- a/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
+++ b/container-search/src/main/java/com/yahoo/search/grouping/vespa/ResultId.java
@@ -4,8 +4,6 @@ package com.yahoo.search.grouping.vespa;
import java.util.Arrays;
/**
- * Immutable
- *
* @author Simon Thoresen Hult
*/
class ResultId {
diff --git a/container-search/src/main/java/com/yahoo/search/query/Model.java b/container-search/src/main/java/com/yahoo/search/query/Model.java
index cbc15bf39a1..bd0c229085b 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Model.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Model.java
@@ -237,13 +237,12 @@ public class Model implements Cloneable {
public void setQueryString(String queryString) {
if (queryString == null) queryString="";
this.queryString = queryString;
- clearQueryTree();
+ queryTree = null; // Cause parsing of the new query string next time the tree is accessed
}
/**
* Returns the query string which caused the original query tree of this model to come about.
* Note that changes to the query tree are <b>not</b> reflected in this query string.
- * Note that changes to the query tree are <b>not</b> reflected in this query string.
*
* @return the original (or reassigned) query string - never null
*/
@@ -266,14 +265,6 @@ public class Model implements Cloneable {
}
/**
- * Clears the parsed query such that it will be created anew from the textual representation (a query string or
- * select.where expression) on the next access.
- */
- public void clearQueryTree() {
- queryTree = null;
- }
-
- /**
* Returns the filter string set for this query.
* The filter is included in the query tree at the time the query tree is parsed
*/
@@ -346,25 +337,25 @@ public class Model implements Cloneable {
QueryHelper.combineHash(encoding,filter,language,getQueryTree(),sources,restrict,defaultIndex,type,searchPath);
}
- @Override
+
public Object clone() {
try {
- Model clone = (Model)super.clone();
+ Model clone = (Model) super.clone();
if (queryTree != null)
clone.queryTree = this.queryTree.clone();
- if (sources != null)
+ if (sources !=null)
clone.sources = new LinkedHashSet<>(this.sources);
- if (restrict != null)
+ if (restrict !=null)
clone.restrict = new LinkedHashSet<>(this.restrict);
return clone;
}
catch (CloneNotSupportedException e) {
- throw new RuntimeException("Someone inserted a noncloneable superclass", e);
+ throw new RuntimeException("Someone inserted a noncloneable superclass",e);
}
}
public Model cloneFor(Query q) {
- Model model = (Model)this.clone();
+ Model model = (Model) this.clone();
model.setParent(q);
return model;
}
@@ -374,7 +365,7 @@ public class Model implements Cloneable {
/** Assigns the query owning this */
public void setParent(Query parent) {
- if (parent == null) throw new NullPointerException("A query models owner cannot be null");
+ if (parent==null) throw new NullPointerException("A query models owner cannot be null");
this.parent = parent;
}
@@ -412,7 +403,7 @@ public class Model implements Cloneable {
/** Sets the execution working on this. For internal use. */
public void setExecution(Execution execution) {
- if (execution == this.execution) return;
+ if (execution==this.execution) return;
// If not already coupled, bind the trace of the new execution into the existing execution trace
if (execution.trace().traceNode().isRoot()
@@ -434,7 +425,7 @@ public class Model implements Cloneable {
/** Returns the Execution working on this, or a null execution if none. For internal use. */
public Execution getExecution() { return execution; }
- private void setFromString(String string, Set<String> set) {
+ private void setFromString(String string,Set<String> set) {
set.clear();
for (String item : string.split(","))
set.add(item.trim());
@@ -529,6 +520,7 @@ public class Model implements Cloneable {
return false;
}
+
/**
* Set the YTrace header value to use when transmitting this model to a
* search backend (of some kind).
diff --git a/container-search/src/main/java/com/yahoo/search/query/Select.java b/container-search/src/main/java/com/yahoo/search/query/Select.java
index bbc152c6391..3ffc6bddb24 100644
--- a/container-search/src/main/java/com/yahoo/search/query/Select.java
+++ b/container-search/src/main/java/com/yahoo/search/query/Select.java
@@ -10,11 +10,6 @@ import com.yahoo.search.query.profile.types.FieldDescription;
import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.yql.VespaGroupingStep;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Objects;
/**
@@ -32,75 +27,67 @@ public class Select implements Cloneable {
public static final String WHERE = "where";
public static final String GROUPING = "grouping";
- private final Query parent;
- private final List<GroupingRequest> groupingRequests;
- private String where;
- private String grouping;
+ private static Model model;
+ private Query parent;
+ private String where = "";
+ private String grouping = "";
static {
argumentType = new QueryProfileType(SELECT);
argumentType.setStrict(true);
argumentType.setBuiltin(true);
- argumentType.addField(new FieldDescription(WHERE, "string"));
- argumentType.addField(new FieldDescription(GROUPING, "string"));
+ argumentType.addField(new FieldDescription(WHERE, "string", "where"));
+ argumentType.addField(new FieldDescription(GROUPING, "string", "grouping"));
argumentType.freeze();
- argumentTypeName = new CompoundName(argumentType.getId().getName());
+ argumentTypeName=new CompoundName(argumentType.getId().getName());
}
public static QueryProfileType getArgumentType() { return argumentType; }
- /** Creates an empty select statement */
- public Select(Query query) {
- this("", "", query);
+ public Select(String where, String grouping){
+ this.where = where;
+ this.grouping = grouping;
}
- public Select(String where, String grouping, Query query) {
- this(where, grouping, query, Collections.emptyList());
+ public Select(Query query) {
+ setParent(query);
+ model = query.getModel();
}
- private Select(String where, String grouping, Query query, List<GroupingRequest> groupingRequests) {
- this.where = Objects.requireNonNull(where, "A Select must have a where string (possibly the empty string)");
- this.grouping = Objects.requireNonNull(grouping, "A Select must have a select string (possibly the empty string)");
- this.parent = Objects.requireNonNull(query, "A Select must have a parent query");
- this.groupingRequests = deepCopy(groupingRequests, this);
- }
- private static List<GroupingRequest> deepCopy(List<GroupingRequest> groupingRequests, Select parentOfCopy) {
- List<GroupingRequest> copy = new ArrayList<>(groupingRequests.size());
- for (GroupingRequest request : groupingRequests)
- copy.add(request.copy(parentOfCopy));
- return copy;
+ /** Returns the query owning this, never null */
+ private Query getParent() { return parent; }
+
+
+ /** Assigns the query owning this */
+ public void setParent(Query parent) {
+ if (parent==null) throw new NullPointerException("A query models owner cannot be null");
+ this.parent = parent;
}
- /**
- * Sets the document selection criterion of the query.
- *
- * @param where the documents to select as a JSON string on the format specified in
- * <a href="https://docs.vespa.ai/documentation/reference/select-reference.html">the select reference doc</a>
- */
- public void setWhereString(String where) {
+
+ /** Set the where-clause for the query. Must be a JSON-string, with the format described in the Select Reference doc - https://docs.vespa.ai/documentation/reference/select-reference.html. */
+ public void setWhere(String where) {
this.where = where;
- parent.getModel().setType(SELECT);
+ model.setType(SELECT);
- // This replaces the current query
- parent.getModel().clearQueryTree();
+ // Setting the queryTree to null
+ model.setQueryString(null);
}
- /** Returns the where clause string previously assigned, or an empty string if none */
- public String getWhereString(){ return where; }
+ /** Returns the where-clause in the query */
+ public String getWhereString(){
+ return this.where;
+ }
- /**
- * Sets the grouping operation of the query.
- *
- * @param grouping the grouping to perform as a JSON string on the format specified in
- * <a href="https://docs.vespa.ai/documentation/reference/select-reference.html">the select reference doc</a>
- */
- public void setGroupingString(String grouping) {
- groupingRequests.clear();
+
+ /** Set the grouping-string for the query. Must be a JSON-string, with the format described in the Select Reference doc - https://docs.vespa.ai/documentation/reference/select-reference.html. */
+ public void setGrouping(String grouping){
this.grouping = grouping;
SelectParser parser = (SelectParser) ParserFactory.newInstance(Query.Type.SELECT, new ParserEnvironment());
+
for (VespaGroupingStep step : parser.getGroupingSteps(grouping)) {
GroupingRequest.newInstance(parent)
.setRootOperation(step.getOperation())
@@ -111,28 +98,13 @@ public class Select implements Cloneable {
/** Returns the grouping in the query */
public String getGroupingString(){
- return grouping;
+ return this.grouping;
}
- /**
- * Returns the query's {@link GroupingRequest} as a mutable list. Changing this directly changes the grouping
- * operations which will be performed by this query.
- */
- public List<GroupingRequest> getGrouping() { return groupingRequests; }
-
@Override
public String toString() {
return "where: [" + where + "], grouping: [" + grouping+ "]";
}
- @Override
- public Object clone() {
- return new Select(where, grouping, parent, groupingRequests);
- }
-
- public Select cloneFor(Query parent) {
- return new Select(where, grouping, parent, groupingRequests);
- }
-
}
diff --git a/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java b/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
index 559a7279f83..71002166b11 100644
--- a/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
+++ b/container-search/src/main/java/com/yahoo/search/query/properties/QueryProperties.java
@@ -3,11 +3,10 @@ package com.yahoo.search.query.properties;
import com.yahoo.processing.request.CompoundName;
import com.yahoo.search.Query;
-import com.yahoo.search.grouping.GroupingRequest;
-import com.yahoo.search.grouping.vespa.GroupingExecutor;
import com.yahoo.search.query.*;
import com.yahoo.search.query.profile.compiled.CompiledQueryProfileRegistry;
import com.yahoo.search.query.profile.types.FieldDescription;
+import com.yahoo.search.query.profile.types.QueryProfileFieldType;
import com.yahoo.search.query.profile.types.QueryProfileType;
import com.yahoo.search.query.ranking.Diversity;
import com.yahoo.search.query.ranking.MatchPhase;
@@ -15,11 +14,11 @@ import com.yahoo.search.query.ranking.Matching;
import com.yahoo.search.query.ranking.SoftTimeout;
import com.yahoo.tensor.Tensor;
+import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
-
-
/**
* Maps between the query model and text properties.
* This can be done simpler by using reflection but the performance penalty was not worth it,
@@ -140,9 +139,7 @@ public class QueryProperties extends Properties {
if (key.toString().equals(Model.MODEL)) return query.getModel();
if (key.toString().equals(Ranking.RANKING)) return query.getRanking();
if (key.toString().equals(Presentation.PRESENTATION)) return query.getPresentation();
-
}
-
return super.get(key, context, substitution);
}
@@ -256,9 +253,9 @@ public class QueryProperties extends Properties {
}
else if (key.size()==2 && key.first().equals(Select.SELECT)) {
if (key.last().equals(Select.WHERE)){
- query.getSelect().setWhereString(asString(value, ""));
+ query.getSelect().setWhere(asString(value, ""));
} else if (key.last().equals(Select.GROUPING)) {
- query.getSelect().setGroupingString(asString(value, ""));
+ query.getSelect().setGrouping(asString(value, ""));
}
}
else if (key.first().equals("rankfeature") || key.first().equals("featureoverride") ) { // featureoverride is deprecated
@@ -280,7 +277,8 @@ public class QueryProperties extends Properties {
query.setGroupingSessionCache(asBoolean(value, false));
else
super.set(key,value,context);
- } else
+ }
+ else
super.set(key,value,context);
}
catch (Exception e) { // Make sure error messages are informative. This should be moved out of this properties implementation
diff --git a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
index 58eafef79de..12a775e0a62 100644
--- a/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
+++ b/container-search/src/main/java/com/yahoo/search/querytransform/SortingDegrader.java
@@ -37,6 +37,7 @@ import java.util.Set;
// We are checking if there is a grouping expression, not if there is a raw grouping instruction property,
// so we must run after the property is transferred to a grouping expression
@After(GroupingQueryParser.SELECT_PARAMETER_PARSING)
+
public class SortingDegrader extends Searcher {
/** Set this to false in query.properties to turn off degrading. Default: on */
@@ -55,7 +56,7 @@ public class SortingDegrader extends Searcher {
private boolean shouldBeDegraded(Query query, IndexFacts.Session indexFacts) {
if (query.getRanking().getSorting() == null) return false;
if (query.getRanking().getSorting().fieldOrders().isEmpty()) return false;
- if ( ! query.getSelect().getGrouping().isEmpty()) return false;
+ if ( ! GroupingRequest.getRequests(query).isEmpty()) return false;
if ( ! query.properties().getBoolean(DEGRADING, true)) return false;
Index index = indexFacts.getIndex(query.getRanking().getSorting().fieldOrders().get(0).getFieldName());
diff --git a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
index ac1c2ee4a6c..075df0413b7 100644
--- a/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
+++ b/container-search/src/main/java/com/yahoo/search/yql/VespaSerializer.java
@@ -1164,7 +1164,7 @@ public class VespaSerializer {
public static String serialize(Query query) {
StringBuilder out = new StringBuilder();
serialize(query.getModel().getQueryTree().getRoot(), out);
- for (GroupingRequest request : query.getSelect().getGrouping()) {
+ for (GroupingRequest request : GroupingRequest.getRequests(query)) {
out.append(" | ");
serialize(request, out);
}
diff --git a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
index c9773008e05..ec586e67763 100644
--- a/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/prelude/fastsearch/test/FastSearcherTestCase.java
@@ -491,7 +491,7 @@ public class FastSearcherTestCase {
}
private void assertForceSinglePassIs(boolean expected, Query query) {
- for (GroupingRequest request : query.getSelect().getGrouping())
+ for (GroupingRequest request : GroupingRequest.getRequests(query))
assertForceSinglePassIs(expected, request.getRootOperation());
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
index 90459fe614f..8de704a8a0e 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingQueryParserTestCase.java
@@ -105,6 +105,6 @@ public class GroupingQueryParserTestCase {
query.properties().set(GroupingQueryParser.PARAM_CONTINUE, continuation);
query.properties().set(GroupingQueryParser.PARAM_TIMEZONE, timeZone);
new Execution(new GroupingQueryParser(), Execution.Context.createContextStub()).search(query);
- return query.getSelect().getGrouping();
+ return GroupingRequest.getRequests(query);
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
index 8b1bbb6842e..494602be7b3 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/GroupingRequestTestCase.java
@@ -10,10 +10,8 @@ import com.yahoo.search.result.Hit;
import org.junit.Test;
import java.lang.reflect.Field;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
-import java.util.List;
import static org.junit.Assert.*;
@@ -28,10 +26,7 @@ public class GroupingRequestTestCase {
assertTrue(req.continuations().isEmpty());
Continuation foo = new Continuation() {
- @Override
- public Continuation copy() {
- return null;
- }
+
};
req.continuations().add(foo);
assertEquals(Arrays.asList(foo), req.continuations());
@@ -110,22 +105,32 @@ public class GroupingRequestTestCase {
@Test
public void requireThatGetRequestsReturnsAllRequests() {
Query query = new Query();
- assertEquals(Collections.emptyList(), query.getSelect().getGrouping());
+ assertEquals(Collections.emptyList(), GroupingRequest.getRequests(query));
GroupingRequest foo = GroupingRequest.newInstance(query);
- assertEquals(Arrays.asList(foo), query.getSelect().getGrouping());
+ assertEquals(Arrays.asList(foo), GroupingRequest.getRequests(query));
GroupingRequest bar = GroupingRequest.newInstance(query);
- assertEquals(Arrays.asList(foo, bar), query.getSelect().getGrouping());
+ assertEquals(Arrays.asList(foo, bar), GroupingRequest.getRequests(query));
+ }
+
+ @Test
+ public void requireThatGetRequestThrowsIllegalArgumentOnBadProperty() throws Exception {
+ Query query = new Query();
+ Field propName = GroupingRequest.class.getDeclaredField("PROP_REQUEST");
+ propName.setAccessible(true);
+ query.properties().set((CompoundName)propName.get(null), new Object());
+ try {
+ GroupingRequest.getRequests(query);
+ fail();
+ } catch (IllegalArgumentException e) {
+
+ }
}
-
private static RootGroup newRootGroup(int id) {
return new RootGroup(id, new Continuation() {
- @Override
- public Continuation copy() {
- return null;
- }
+
});
}
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
index 22e5196c0c6..b570adc51c6 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/UniqueGroupingSearcherTestCase.java
@@ -210,7 +210,7 @@ public class UniqueGroupingSearcherTestCase {
Result result = new Result(query);
if (addGroupingData) {
result.hits().add(resultGroup);
- query.getSelect().getGrouping().get(0).setResultGroup(resultGroup);
+ GroupingRequest.getRequests(query).get(0).setResultGroup(resultGroup);
result.setTotalHitCount(totalHitCount);
}
return result;
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
index b8cc25930e2..651321a3b69 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/GroupListTestCase.java
@@ -31,11 +31,5 @@ public class GroupListTestCase {
private static class MyContinuation extends Continuation {
- @Override
- public Continuation copy() {
- return null;
- }
-
}
-
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
index 8203691e11e..05a78b71cac 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitListTestCase.java
@@ -31,11 +31,5 @@ public class HitListTestCase {
private static class MyContinuation extends Continuation {
- @Override
- public Continuation copy() {
- return null;
- }
-
}
-
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
index 657c169720e..85b8ff7a6d5 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/result/HitRendererTestCase.java
@@ -167,15 +167,8 @@ public class HitRendererTestCase {
}
@Override
- public Continuation copy() {
- return null;
- }
-
- @Override
public String toString() {
return str;
}
-
}
-
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
index b9887495940..6a6741ae1b4 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/CompositeContinuationTestCase.java
@@ -109,11 +109,6 @@ public class CompositeContinuationTestCase {
private static class MyContinuation extends EncodableContinuation {
@Override
- public EncodableContinuation copy() {
- return null;
- }
-
- @Override
public void encode(IntegerEncoder out) {
}
diff --git a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
index 161c3a24801..038df42bd28 100644
--- a/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/grouping/vespa/GroupingTransformTestCase.java
@@ -162,10 +162,7 @@ public class GroupingTransformTestCase {
GroupingTransform transform = newTransform();
try {
transform.addContinuation(new Continuation() {
- @Override
- public Continuation copy() {
- return null;
- }
+
});
fail();
} catch (UnsupportedOperationException e) {
diff --git a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
index 726d5cb76be..caad1c76362 100644
--- a/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/rendering/JsonRendererTestCase.java
@@ -790,11 +790,6 @@ public class JsonRendererTestCase {
Result r = newEmptyResult();
RootGroup rg = new RootGroup(0, new Continuation() {
@Override
- public Continuation copy() {
- return null;
- }
-
- @Override
public String toString() {
return "AAAA";
}
@@ -802,22 +797,12 @@ public class JsonRendererTestCase {
GroupList gl = new GroupList("customer");
gl.continuations().put("prev", new Continuation() {
@Override
- public Continuation copy() {
- return null;
- }
-
- @Override
public String toString() {
return "BBBB";
}
});
gl.continuations().put("next", new Continuation() {
@Override
- public Continuation copy() {
- return null;
- }
-
- @Override
public String toString() {
return "CCCC";
}
@@ -875,11 +860,6 @@ public class JsonRendererTestCase {
Result r = newEmptyResult();
RootGroup rg = new RootGroup(0, new Continuation() {
@Override
- public Continuation copy() {
- return null;
- }
-
- @Override
public String toString() {
return "AAAA";
}
diff --git a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
index b23e25e173e..e5dbe10a0e4 100644
--- a/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
+++ b/container-search/src/test/java/com/yahoo/search/yql/MinimalQueryInserterTestCase.java
@@ -329,8 +329,9 @@ public class MinimalQueryInserterTestCase {
private static void assertGrouping(String expected, Query query) {
List<String> actual = new ArrayList<>();
- for (GroupingRequest request : query.getSelect().getGrouping())
+ for (GroupingRequest request : GroupingRequest.getRequests(query)) {
actual.add(request.continuations().toString() + request.getRootOperation());
+ }
assertEquals(expected, actual.toString());
}
diff --git a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java b/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java
index 6871e26b96a..031ba386ad4 100644
--- a/container-search/src/test/java/com/yahoo/select/SelectTestCase.java
+++ b/container-search/src/test/java/com/yahoo/select/SelectParserTestCase.java
@@ -15,14 +15,14 @@ import com.yahoo.prelude.query.WeakAndItem;
import com.yahoo.prelude.query.WordAlternativesItem;
import com.yahoo.prelude.query.WordItem;
import com.yahoo.search.Query;
-import com.yahoo.search.grouping.GroupingRequest;
-import com.yahoo.search.grouping.request.AllOperation;
+import com.yahoo.search.federation.ProviderConfig;
import com.yahoo.search.query.QueryTree;
import com.yahoo.search.query.Select;
import com.yahoo.search.query.SelectParser;
import com.yahoo.search.query.parser.Parsable;
import com.yahoo.search.query.parser.ParserEnvironment;
import com.yahoo.search.yql.VespaGroupingStep;
+import org.apache.http.client.utils.URIBuilder;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
@@ -33,23 +33,24 @@ import java.util.List;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+
/**
- * Tests Query.Select
+ * Specification for the conversion of Select expressions to Vespa search queries.
*
* @author henrhoi
- * @author bratseth
*/
-public class SelectTestCase {
+
+public class SelectParserTestCase {
private final SelectParser parser = new SelectParser(new ParserEnvironment());
- //------------------------------------------------------------------- "where" tests
+
+ /** WHERE TESTS */
@Test
public void test_contains() throws Exception {
@@ -135,6 +136,7 @@ public class SelectTestCase {
"+title:madonna -title:saint");
}
+
@Test
public void testLessThan() throws JSONException {
JSONObject range_json = new JSONObject();
@@ -163,6 +165,7 @@ public class SelectTestCase {
"price:>500");
}
+
@Test
public void testLessThanOrEqual() throws JSONException {
JSONObject range_json = new JSONObject();
@@ -323,6 +326,7 @@ public class SelectTestCase {
assertEquals(3, origin.end);
}
+
@Test
public void testSameElement() {
assertParse("{ \"contains\": [ \"baz\", {\"sameElement\" : [ { \"contains\" : [\"f1\", \"a\"] }, { \"contains\" : [\"f2\", \"b\"] } ]} ] }",
@@ -416,7 +420,7 @@ public class SelectTestCase {
WordItem first = (WordItem)root.getItem(0);
WordItem second = (WordItem)root.getItem(1);
WordItem third = (WordItem)root.getItem(2);
- assertEquals(third, first.getConnectedItem());
+ assertTrue(first.getConnectedItem() == third);
assertEquals(first.getConnectivity(), 7.0d, 1E-6);
assertNull(second.getConnectedItem());
@@ -553,17 +557,17 @@ public class SelectTestCase {
@Test
public void testAffixItems() {
assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true} } }",
- SuffixItem.class);
+ SuffixItem.class);
assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"prefix\": true} } }",
- PrefixItem.class);
+ PrefixItem.class);
assertRootClass("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"substring\": true} } }",
- SubstringItem.class);
+ SubstringItem.class);
assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"prefix\" : true} } }",
- new IllegalArgumentException("Only one of prefix, substring and suffix can be set."));
+ new IllegalArgumentException("Only one of prefix, substring and suffix can be set."));
assertParseFail("{ \"contains\" : { \"children\" : [\"baz\", \"colors\"], \"attributes\" : {\"suffix\": true, \"substring\" : true} } }",
- new IllegalArgumentException("Only one of prefix, substring and suffix can be set."));
+ new IllegalArgumentException("Only one of prefix, substring and suffix can be set."));
}
@Test
@@ -637,7 +641,7 @@ public class SelectTestCase {
checkWordAlternativesContent(alternatives);
}
- //------------------------------------------------------------------- grouping tests
+ /** GROUPING TESTS */
@Test
public void testGrouping(){
@@ -655,7 +659,9 @@ public class SelectTestCase {
assertGrouping(expected, parseGrouping(grouping));
}
- //------------------------------------------------------------------- Other tests
+
+
+ /** OTHER TESTS */
@Test
public void testOverridingOtherQueryTree() {
@@ -663,15 +669,16 @@ public class SelectTestCase {
assertEquals("default:query", query.getModel().getQueryTree().toString());
assertEquals(Query.Type.ALL, query.getModel().getType());
- query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }");
+ query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }");
assertEquals("default:select", query.getModel().getQueryTree().toString());
assertEquals(Query.Type.SELECT, query.getModel().getType());
}
+
@Test
public void testOverridingWhereQueryTree() {
- Query query = new Query("?query=default:query");
- query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }");
+ Query query = new Query();
+ query.getSelect().setWhere("{\"contains\" : [\"default\", \"select\"] }");
assertEquals("default:select", query.getModel().getQueryTree().toString());
assertEquals(Query.Type.SELECT, query.getModel().getType());
@@ -681,44 +688,10 @@ public class SelectTestCase {
assertEquals(Query.Type.ALL, query.getModel().getType());
}
- @Test
- public void testProgrammaticAssignment() {
- Query query = new Query();
- query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.year(a)\", \"each\" : { \"output\" : \"count()\" } } } ]");
- assertEquals(1, query.getSelect().getGrouping().size());
- assertEquals("all(group(time.year(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString());
- // Setting from string resets the grouping expression
- query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]");
- assertEquals(1, query.getSelect().getGrouping().size());
- assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).getRootOperation().toString());
- }
- @Test
- public void testConstructionAndClone() {
- Query query = new Query();
- query.getSelect().setWhereString("{\"contains\" : [\"default\", \"select\"] }");
- query.getSelect().setGroupingString("[ { \"all\" : { \"group\" : \"time.dayofmonth(a)\", \"each\" : { \"output\" : \"count()\" } } } ]");
- GroupingRequest secondRequest = GroupingRequest.newInstance(query);
- assertEquals("default:select", query.getModel().getQueryTree().toString());
- assertEquals(2, query.getSelect().getGrouping().size());
- assertEquals("all(group(time.dayofmonth(a)) each(output(count())))", query.getSelect().getGrouping().get(0).toString());
-
- Query clone = query.clone();
- assertNotSame(query.getSelect(), clone.getSelect());
- assertNotSame(query.getSelect().getGrouping(), clone.getSelect().getGrouping());
- assertNotSame(query.getSelect().getGrouping().get(0), clone.getSelect().getGrouping().get(0));
- assertNotSame(query.getSelect().getGrouping().get(1), clone.getSelect().getGrouping().get(1));
- assertEquals(query.getSelect().getWhereString(), clone.getSelect().getWhereString());
- assertEquals(query.getSelect().getGroupingString(), clone.getSelect().getGroupingString());
- assertEquals(query.getSelect().getGrouping().get(0).toString(), clone.getSelect().getGrouping().get(0).toString());
- assertEquals(query.getSelect().getGrouping().get(1).toString(), clone.getSelect().getGrouping().get(1).toString());
-
-
- }
-
- //------------------------------------------------------------------- Assert methods
+ /** Assert-methods */
private void assertParse(String where, String expectedQueryTree) {
String queryTree = parseWhere(where).toString();
assertEquals(expectedQueryTree, queryTree);
@@ -748,10 +721,13 @@ public class SelectTestCase {
assertEquals(expected, actual.toString());
}
- //------------------------------------------------------------------- Parse methods
+
+
+
+ /** Parse-methods*/
private QueryTree parseWhere(String where) {
- Select select = new Select(where, "", new Query());
+ Select select = new Select(where, "");
return parser.parse(new Parsable().setSelect(select));
}
@@ -761,8 +737,17 @@ public class SelectTestCase {
return parser.getGroupingSteps(grouping);
}
- //------------------------------------------------------------------- Other methods
+ private QueryTree parse(String where, String grouping) {
+ Select select = new Select(where, grouping);
+ return parser.parse(new Parsable().setSelect(select));
+ }
+
+
+
+
+
+ /** Other methods */
private WordItem getRootWord(String yqlQuery) {
Item root = parseWhere(yqlQuery).getRoot();
assertTrue(root instanceof WordItem);
@@ -790,4 +775,5 @@ public class SelectTestCase {
}
}
+
}