diff options
-rw-r--r-- | container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java | 30 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java | 9 |
2 files changed, 30 insertions, 9 deletions
diff --git a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java index ded59413411..35ff203341a 100644 --- a/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java +++ b/container-search/src/main/java/com/yahoo/vespa/streamingvisitors/VdsVisitor.java @@ -127,15 +127,29 @@ class VdsVisitor extends VisitorDataHandler implements Visitor { return Math.max(query.getTraceLevel(), implicitLevel); } - private void setVisitorParameters(String searchCluster, Route route, String documentType) { - String limitDocumentType = documentType + " and "; - if (query.properties().getString(streamingUserid) != null) { - params.setDocumentSelection(limitDocumentType + "id.user==" + query.properties().getString(streamingUserid)); - } else if (query.properties().getString(streamingGroupname) != null) { - params.setDocumentSelection(limitDocumentType + "id.group==\"" + query.properties().getString(streamingGroupname) + "\""); - } else if (query.properties().getString(streamingSelection) != null) { - params.setDocumentSelection(limitDocumentType + query.properties().getString(streamingSelection)); + private static String createSelectionString(String documentType, String selection) { + if (selection == null) return ""; + if (selection.isEmpty()) return documentType; + + StringBuilder sb = new StringBuilder(documentType); + sb.append(" and ").append(selection); + return sb.toString(); + } + + private String createQuerySelectionString() { + String s = query.properties().getString(streamingUserid); + if (s != null) { + return "id.user==" + s; } + s = query.properties().getString(streamingGroupname); + if (s != null) { + return "id.group==\"" + s + "\""; + } + return query.properties().getString(streamingSelection); + } + + private void setVisitorParameters(String searchCluster, Route route, String documentType) { + params.setDocumentSelection(createSelectionString(documentType, createQuerySelectionString())); params.setTimeoutMs(query.getTimeout()); // Per bucket visitor timeout params.setSessionTimeoutMs(query.getTimeout()); params.setVisitorLibrary("searchvisitor"); diff --git a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java index c84088a19bb..11862d84414 100644 --- a/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java +++ b/container-search/src/test/java/com/yahoo/vespa/streamingvisitors/VdsVisitorTestCase.java @@ -232,7 +232,11 @@ public class VdsVisitorTestCase { } else if (qa.groupName != null) { assertEquals(docType + " and id.group==\""+qa.groupName+"\"", params.getDocumentSelection()); } else if (qa.selection != null) { - assertEquals(docType + " and " +qa.selection, params.getDocumentSelection()); + if (qa.selection.isEmpty()) { + assertEquals(docType, params.getDocumentSelection()); + } else { + assertEquals(docType + " and " + qa.selection, params.getDocumentSelection()); + } } else { assertEquals("", params.getDocumentSelection()); } @@ -383,6 +387,9 @@ public class VdsVisitorTestCase { qa.maxBucketsPerVisitor = 0; qa.loadTypeName = null; // default loadTypeName, non-default priority verifyVisitorOk(factory, qa, route, searchCluster); + qa.selection = ""; + + verifyVisitorOk(factory, qa, route, searchCluster); // Userdoc and lots of non-default parameters qa.setNonDefaults(); |