use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.
the class NativeQueryTest method assertDontTraverseFor.
private void assertDontTraverseFor(String sql) throws ParseException {
QueryImpl query = (QueryImpl) p.parse(sql);
query.setExecutionContext(QUERY_ENGINE.getExecutionContext());
Result result = query.executeQuery();
Iterator<? extends ResultRow> it = result.getRows().iterator();
assertFalse("Zero results expected", it.hasNext());
query = (QueryImpl) p.parse("measure " + sql);
query.setExecutionContext(QUERY_ENGINE.getExecutionContext());
result = query.executeQuery();
it = result.getRows().iterator();
while (it.hasNext()) {
ResultRow row = it.next();
String selector = row.getValue("selector").getValue(Type.STRING);
if ("nt:base".equals(selector)) {
long scanCount = row.getValue("scanCount").getValue(Type.LONG);
// we expect that no was scanned that's it
// - no traversal of the whole respository
assertEquals("Repository's scan count doesn't match", 0, scanCount);
}
}
}
use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.
the class UnionQueryTest method testOrderLimitOffset.
@Test
public void testOrderLimitOffset() throws Exception {
String left = "SELECT [jcr:path] FROM [nt:base] AS a WHERE ISDESCENDANTNODE(a, '/UnionQueryTest')";
String right = "SELECT [jcr:path] FROM [nt:base] AS a WHERE ISDESCENDANTNODE(a, '/UnionQueryTest')";
String order = "ORDER BY [jcr:path]";
String union = String.format("%s UNION %s %s", left, right, order);
final int limit = 3;
final int offset = 2;
String[] expected = { "/UnionQueryTest/a/b/c", "/UnionQueryTest/a/b/c/d", "/UnionQueryTest/a/b/c/d/e" };
Result result = qe.executeQuery(union, QueryEngineImpl.SQL2, limit, offset, QueryEngine.NO_BINDINGS, QueryEngine.NO_MAPPINGS);
List<ResultRow> rows = Lists.newArrayList(result.getRows());
assertEquals(expected.length, rows.size());
int i = 0;
for (ResultRow rr : result.getRows()) {
assertEquals(rr.getPath(), expected[i++]);
}
}
use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.
the class QueryManagerImpl method executeQuery.
public QueryResult executeQuery(String statement, String language, long limit, long offset, HashMap<String, Value> bindVariableMap) throws RepositoryException {
try {
Map<String, PropertyValue> bindMap = convertMap(bindVariableMap);
TimerStats.Context context = queryDuration.time();
Result r = queryEngine.executeQuery(statement, language, limit, offset, bindMap, sessionContext.getSessionLocalMappings());
queryCount.mark();
long millis = TimeUnit.NANOSECONDS.toMillis(context.stop());
queryOpsLogger.debug("Executed query [{}] in [{}] ms", statement, millis);
sessionContext.getStatisticManager().logQueryEvaluationTime(language, statement, millis);
return new QueryResultImpl(sessionContext, r);
} catch (IllegalArgumentException e) {
throw new InvalidQueryException(e);
} catch (ParseException e) {
throw new InvalidQueryException(e);
}
}
use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.
the class PrefetchIteratorTest method testFastSize.
@Test
public void testFastSize() {
Iterable<Integer> s;
PrefetchIterator<Integer> it;
s = seq(0, 21);
it = new PrefetchIterator<Integer>(s.iterator(), new PrefetchOptions() {
{
size = -1;
fastSize = true;
fastSizeCallback = new Result() {
@Override
public String[] getColumnNames() {
return null;
}
@Override
public String[] getColumnSelectorNames() {
return null;
}
@Override
public Iterable<? extends ResultRow> getRows() {
return null;
}
@Override
public String[] getSelectorNames() {
return null;
}
@Override
public long getSize() {
return 100;
}
@Override
public long getSize(SizePrecision precision, long max) {
return 100;
}
};
}
});
assertEquals(21, it.size());
}
use of org.apache.jackrabbit.oak.api.Result in project jackrabbit-oak by apache.
the class LuceneIndexAggregation2Test method excerpt.
@Ignore("OAK-6597")
@Test
public void excerpt() throws Exception {
setTraversalEnabled(false);
final String statement = "select [rep:excerpt] from [test:Page] as page where contains(*, '%s*')";
Tree content = root.getTree("/").addChild("content");
Tree pageContent = createPageStructure(content, "foo");
// contains 'aliq' but not 'tinc'
pageContent.setProperty("bar", "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquet odio varius odio " + "imperdiet, non egestas ex consectetur. Fusce congue ac augue quis finibus. Sed vulputate sollicitudin neque, nec " + "lobortis nisl varius eget.");
// doesn't contain 'aliq' but 'tinc'
pageContent.getParent().setProperty("bar", "Donec lacinia luctus leo, sed rutrum nulla. Sed sed hendrerit turpis. Donec ex quam, " + "bibendum et metus at, tristique tincidunt leo. Nam at elit ligula. Etiam ullamcorper, elit sit amet varius molestie, " + "nisl ex egestas libero, quis elementum enim mi a quam.");
root.commit();
for (String term : new String[] { "tinc", "aliq" }) {
Result result = executeQuery(String.format(statement, term), "JCR-SQL2", NO_BINDINGS);
Iterator<? extends ResultRow> rows = result.getRows().iterator();
assertTrue(rows.hasNext());
ResultRow firstHit = rows.next();
// assert that there is only a single hit
assertFalse(rows.hasNext());
PropertyValue excerptValue = firstHit.getValue("rep:excerpt");
assertNotNull(excerptValue);
assertFalse("Excerpt for '" + term + "' is not supposed to be empty.", "".equals(excerptValue.getValue(STRING)));
}
}
Aggregations