summaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/handler
diff options
context:
space:
mode:
authorHenrik <henrik.hoiness@online.no>2018-08-02 10:18:50 +0200
committerHenrik <henrik.hoiness@online.no>2018-08-02 10:18:50 +0200
commit8c4383c1b1f0e06ea31a7b0284b57ca9c48f9d3e (patch)
tree2eef196206ac7c7965206d288ad29b0c2791d8de /container-search/src/main/java/com/yahoo/search/handler
parent0a5e370b59373d8147e2a8e682bc3296eec0d639 (diff)
Created new parameter SELECT with subparameters WHERE and GROUPING. Started on a SelectParser which will parse the SELECT parameters to a QueryTree. Also added a new type for queryies 'SELECT', and will now use the SelectParser when getting the QueryTree. Started on testing the same testcases as in YQLParser, looks promising.
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/handler')
-rw-r--r--container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java16
1 files changed, 16 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
index 3bfaee658f9..d9fa6d8097f 100644
--- a/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
+++ b/container-search/src/main/java/com/yahoo/search/handler/SearchHandler.java
@@ -576,6 +576,18 @@ public class SearchHandler extends LoggingRequestHandler {
// Create request-mapping
Map<String, String> requestMap = new HashMap<>();
createRequestMapping(inspector, requestMap, "");
+
+ // Throws QueryException if query contains both yql- and select-parameter
+ if (requestMap.containsKey("yql") && (requestMap.containsKey("select.where") || requestMap.containsKey("select.grouping")) ) {
+ throw new QueryException("Illegal query: Query contains both yql- and select-parameter");
+ }
+
+ // The query-parameter overrides the select-parameter. Removing them here to prevent further processing of select-parameters.
+ if (requestMap.containsKey("query")) {
+ requestMap.remove("select.where");
+ requestMap.remove("select.grouping");
+ }
+
return new Query(request, requestMap, queryProfile);
@@ -605,6 +617,10 @@ public class SearchHandler extends LoggingRequestHandler {
map.put(qualifiedKey, value.asString());
break;
case OBJECT:
+ if (qualifiedKey.equals("select.where") || qualifiedKey.equals("select.grouping")){
+ map.put(qualifiedKey, value.toString());
+ break;
+ }
createRequestMapping(value, map, qualifiedKey+".");
break;
}