From 57938d526901ba0679b23ebdd70329a0a3bf4bfe Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Sat, 14 Apr 2018 10:38:00 +0200 Subject: [PATCH] do not check if we can find values when proposing keys Counting the available values is quite expensive and there are only a few corner cases where this makes sense. One of them is when the query is for a method that is not project specific and therefore no project values can be found. --- .../lang/QueryCompletionPdbLangParser.java | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryCompletionPdbLangParser.java b/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryCompletionPdbLangParser.java index 16662cf..d0c61fb 100644 --- a/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryCompletionPdbLangParser.java +++ b/data-store/src/main/java/org/lucares/pdb/datastore/lang/QueryCompletionPdbLangParser.java @@ -69,8 +69,14 @@ public class QueryCompletionPdbLangParser extends PdbLangParser { return new Proposal(v, newQuery.toString(), false, newQuery.toString(), start + v.length() + 1); }).map(p -> { - - final int count = dataStore.count(p.getProposedQuery()); + int count = 0; + try { + count = dataStore.count(p.getProposedQuery()); + } + catch(SyntaxException e) + { + // ignore: if the query is not valid, then it does not find any results + } return new Proposal(p, count > 0); }).forEach(proposals::add); @@ -131,14 +137,16 @@ public class QueryCompletionPdbLangParser extends PdbLangParser { final int newCaretPosition = newQueryWithMarker.indexOf(CARET_MARKER); final String newQuery = newQueryWithMarker.replace(CARET_MARKER, ""); - return new Proposal(key, String.format(newQueryPattern, key + "=* "), false, newQuery, + return new Proposal(key, String.format(newQueryPattern, key + "=* "), true, newQuery, newCaretPosition); - }).map(p -> { - - final String proposedQuery = p.getProposedQuery(); - final int count = count(proposedQuery); - return new Proposal(p, count > 0); - }).forEach(proposals::add); + }) +// .map(p -> { +// +// final String proposedQuery = p.getProposedQuery(); +// final int count = count(proposedQuery); +// return new Proposal(p, count > 0); +// }) + .forEach(proposals::add); } private int count(final String proposedQuery) {