@Test public void shouldRespectOrderCapabilitiesForWildcard() throws Exception { // given boolean needsValues = false; int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.UNKNOWN ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.exists( prop ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
@Test public void shouldRespectOrderCapabilitiesForSpatial() throws KernelException { // given boolean needsValues = indexProvidesSpatialValues(); int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.GEOMETRY ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.range( prop, CoordinateReferenceSystem.Cartesian ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
@Test public void shouldRespectOrderCapabilitiesForNumbers() throws Exception { // given boolean needsValues = indexProvidesNumericValues(); int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.NUMBER ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.range( prop, 1, true, 42, true ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
@Test public void shouldRespectOrderCapabilitiesForStrings() throws Exception { // given boolean needsValues = indexProvidesStringValues(); int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.TEXT ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.range( prop, "one", true, "two", true ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
@Test public void shouldRespectOrderCapabilitiesForTemporal() throws KernelException { // given boolean needsValues = indexProvidesTemporalValues(); int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.TEMPORAL ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.range( prop, DateValue.date( 1986, 11, 18 ), true, DateValue.date( 1989, 3, 24 ), true ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
@Test public void shouldRespectOrderCapabilitiesForStringArray() throws KernelException { // given boolean needsValues = indexProvidesSpatialValues(); int label = token.nodeLabel( "Node" ); int prop = token.propertyKey( "prop" ); IndexReference index = schemaRead.index( label, prop ); IndexOrder[] orderCapabilities = index.orderCapability( ValueCategory.TEXT_ARRAY ); try ( NodeValueIndexCursor node = cursors.allocateNodeValueIndexCursor() ) { for ( IndexOrder orderCapability : orderCapabilities ) { // when read.nodeIndexSeek( index, node, orderCapability, needsValues, IndexQuery.range( prop, Values.of( new String[]{"first", "second", "third"} ), true, Values.of( new String[]{"fourth", "fifth", "sixth", "seventh"} ), true ) ); // then assertFoundNodesInOrder( node, orderCapability ); } } }
IndexOrder[] order = index.orderCapability( type.valueGroup.category() ); for ( IndexOrder indexOrder : order )