@Override public long getSize(SizePrecision precision, long max) { if (cursor == null) { return -1; } return cursor.getSize(precision, max); }
@Override public long getSize(SizePrecision precision, long max) { return cursor.getSize(precision, max); }
@Override public long getSize(SizePrecision precision, long max) { return cursor.getSize(precision, max); }
@Override public long getSize(SizePrecision precision, long max) { return cursor.getSize(precision, max); }
@Override public long getSize(NodeState rootState, SizePrecision precision, long max) { if (cursor == null) { execute(rootState); } return cursor.getSize(precision, max); }
@Override public long getSize(SizePrecision precision, long max) { // this is the worst case (duplicate entries are counted twice) long total = 0; for (Cursor c : cursors) { long t = c.getSize(precision, max); if (t < 0) { return -1; } total = QueryImpl.saturatedAdd(total, t); } return total; }
@Override public long getSize(Result.SizePrecision precision, long max) { return c.getSize(precision, max); }
@Override public long getSize(NodeState rootState, SizePrecision precision, long max) { if (cursor == null) { execute(rootState); } return cursor.getSize(precision, max); }
@Override public long getSize(SizePrecision precision, long max) { // this is the worst case (duplicate entries are counted twice) long total = 0; for (Cursor c : cursors) { long t = c.getSize(precision, max); if (t < 0) { return -1; } total = QueryImpl.saturatedAdd(total, t); } return total; }
@Override public long getSize(SizePrecision precision, long max) { // this is the worst case (duplicate entries are counted twice) long total = 0; for (Cursor c : cursors) { long t = c.getSize(precision, max); if (t < 0) { return -1; } total = QueryImpl.saturatedAdd(total, t); } return total; }
@Test public void testSize() throws Exception { NodeState root = InitialContentHelper.INITIAL_CONTENT; SelectorImpl selector = newSelector(root, "a"); String sqlQuery = "select [jcr:path], [jcr:score] from [nt:base] as a where" + " contains([jcr:content/*], 'founded')"; SolrServerProvider solrServerProvider = mock(SolrServerProvider.class); OakSolrConfigurationProvider configurationProvider = mock(OakSolrConfigurationProvider.class); OakSolrConfiguration configuration = new DefaultSolrConfiguration() { @Override public boolean useForPropertyRestrictions() { return true; } }; when(configurationProvider.getConfiguration()).thenReturn(configuration); SolrQueryIndex solrQueryIndex = new SolrQueryIndex(null, configurationProvider, solrServerProvider); FilterImpl filter = new FilterImpl(selector, sqlQuery, new QueryEngineSettings()); List<QueryIndex.IndexPlan> plans = solrQueryIndex.getPlans(filter, null, root); for (QueryIndex.IndexPlan p : plans) { Cursor cursor = solrQueryIndex.query(p, root); assertNotNull(cursor); long sizeExact = cursor.getSize(Result.SizePrecision.EXACT, 100000); long sizeApprox = cursor.getSize(Result.SizePrecision.APPROXIMATION, 100000); long sizeFastApprox = cursor.getSize(Result.SizePrecision.FAST_APPROXIMATION, 100000); assertTrue(Math.abs(sizeExact - sizeApprox) < 10); assertTrue(Math.abs(sizeExact - sizeFastApprox) > 10000); } }