protected List<Long> query( IndexQuery... predicates ) throws Exception { try ( IndexReader reader = accessor.newReader(); ) { SimpleNodeValueClient nodeValueClient = new SimpleNodeValueClient(); reader.query( nodeValueClient, IndexOrder.NONE, false, predicates ); List<Long> list = new LinkedList<>(); while ( nodeValueClient.next() ) { long entityId = nodeValueClient.reference; if ( passesFilter( entityId, predicates ) ) { list.add( entityId ); } } Collections.sort( list ); return list; } }
List<Long> assertClientReturnValuesInOrder( SimpleNodeValueClient client, IndexOrder order ) { List<Long> seenIds = new ArrayList<>(); Value[] prevValues = null; Value[] values; int count = 0; while ( client.next() ) { count++; seenIds.add( client.reference ); values = client.values; if ( order == IndexOrder.ASCENDING ) { assertLessThanOrEqualTo( prevValues, values ); } else if ( order == IndexOrder.DESCENDING ) { assertLessThanOrEqualTo( values, prevValues ); } else { Assert.fail( "Unexpected order " + order ); } prevValues = values; } return seenIds; }
private void exactMatchOnAllValues( List<Value> values ) throws IndexNotApplicableKernelException { try ( IndexReader indexReader = accessor.newReader() ) { SimpleNodeValueClient client = new SimpleNodeValueClient(); for ( Value value : values ) { IndexQuery.ExactPredicate exact = IndexQuery.exact( descriptor.schema().getPropertyId(), value ); indexReader.query( client, IndexOrder.NONE, true, exact ); // then assertTrue( client.next() ); assertEquals( value, client.values[0] ); assertFalse( client.next() ); } } } }
while ( client.next() )
reader.query( entries, IndexOrder.NONE, hasValues, IndexQuery.exists( 0 ) ); referenceReader.query( referenceEntries, IndexOrder.NONE, hasValues, IndexQuery.exists( 0 ) ); while ( referenceEntries.next() ) assertTrue( entries.next() ); assertEquals( referenceEntries.reference, entries.reference ); if ( hasValues ) assertFalse( entries.next() );
reader.query( client, supportedOrder, true, supportedQuery ); int i = 0; while ( client.next() )