From 111fd77b23baa383a6f92ff4b5a018d9fd91246a Mon Sep 17 00:00:00 2001 From: Chris Vest Date: Thu, 19 Oct 2017 16:52:54 +0200 Subject: [PATCH] Make the native schema number index respect the index sampling configuration No test because I could not find any way to observe a change in behaviour from this. --- .../NativeSchemaNumberIndexAccessor.java | 18 ++++++++++++++---- .../NativeSchemaNumberIndexProvider.java | 9 +++++---- .../schema/NativeSchemaNumberIndexReader.java | 9 +++++---- .../NativeSchemaNumberIndexAccessorTest.java | 11 ++++++++++- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessor.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessor.java index faf28c3030d08..26be93b3d2b10 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessor.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessor.java @@ -37,6 +37,7 @@ import org.neo4j.kernel.api.index.SchemaIndexProvider; import org.neo4j.kernel.api.schema.index.IndexDescriptor; import org.neo4j.kernel.impl.api.index.IndexUpdateMode; +import org.neo4j.kernel.impl.api.index.sampling.IndexSamplingConfig; import org.neo4j.storageengine.api.schema.IndexReader; import static org.neo4j.helpers.collection.Iterators.asResourceIterator; @@ -47,13 +48,22 @@ public class NativeSchemaNumberIndexAccessor implements IndexAccessor { private final NativeSchemaNumberIndexUpdater singleUpdater; + private final IndexSamplingConfig samplingConfig; - NativeSchemaNumberIndexAccessor( PageCache pageCache, FileSystemAbstraction fs, File storeFile, - Layout layout, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, SchemaIndexProvider.Monitor monitor, - IndexDescriptor descriptor, long indexId ) throws IOException + NativeSchemaNumberIndexAccessor( + PageCache pageCache, + FileSystemAbstraction fs, + File storeFile, + Layout layout, + RecoveryCleanupWorkCollector recoveryCleanupWorkCollector, + SchemaIndexProvider.Monitor monitor, + IndexDescriptor descriptor, + long indexId, + IndexSamplingConfig samplingConfig ) throws IOException { super( pageCache, fs, storeFile, layout, monitor, descriptor, indexId ); singleUpdater = new NativeSchemaNumberIndexUpdater<>( layout.newKey(), layout.newValue() ); + this.samplingConfig = samplingConfig; instantiateTree( recoveryCleanupWorkCollector, NO_HEADER_WRITER ); } @@ -95,7 +105,7 @@ public void close() throws IOException public IndexReader newReader() { assertOpen(); - return new NativeSchemaNumberIndexReader<>( tree, layout ); + return new NativeSchemaNumberIndexReader<>( tree, layout, samplingConfig ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexProvider.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexProvider.java index 9835a4ac26c0d..bec76d04fa996 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexProvider.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexProvider.java @@ -89,8 +89,8 @@ public IndexPopulator getPopulator( long indexId, IndexDescriptor descriptor, In } @Override - public IndexAccessor getOnlineAccessor( long indexId, IndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) - throws IOException + public IndexAccessor getOnlineAccessor( + long indexId, IndexDescriptor descriptor, IndexSamplingConfig samplingConfig ) throws IOException { File storeFile = nativeIndexFileFromIndexId( indexId ); NumberLayout layout; @@ -105,8 +105,9 @@ public IndexAccessor getOnlineAccessor( long indexId, IndexDescriptor descriptor default: throw new UnsupportedOperationException( "Can not create index accessor of type " + descriptor.type() ); } - return new NativeSchemaNumberIndexAccessor<>( pageCache, fs, storeFile, layout, recoveryCleanupWorkCollector, monitor, descriptor, - indexId ); + return new NativeSchemaNumberIndexAccessor<>( + pageCache, fs, storeFile, layout, recoveryCleanupWorkCollector, monitor, descriptor, indexId, + samplingConfig ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexReader.java index 0fa63b9f759ec..daddfbc669b43 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexReader.java @@ -35,7 +35,6 @@ import org.neo4j.kernel.api.schema.IndexQuery; import org.neo4j.kernel.api.schema.IndexQuery.ExactPredicate; import org.neo4j.kernel.api.schema.IndexQuery.NumberRangePredicate; -import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.index.sampling.IndexSamplingConfig; import org.neo4j.storageengine.api.schema.IndexReader; import org.neo4j.storageengine.api.schema.IndexSampler; @@ -47,12 +46,15 @@ class NativeSchemaNumberIndexReader tree; private final Layout layout; + private final IndexSamplingConfig samplingConfig; private final Set,IOException>> openSeekers; - NativeSchemaNumberIndexReader( GBPTree tree, Layout layout ) + NativeSchemaNumberIndexReader( + GBPTree tree, Layout layout, IndexSamplingConfig samplingConfig ) { this.tree = tree; this.layout = layout; + this.samplingConfig = samplingConfig; this.openSeekers = new HashSet<>(); } @@ -72,9 +74,8 @@ public IndexSampler createSampler() // non-unique sampler which scans the index and counts (potentially duplicates, of which there will // be none in a unique index). - IndexSamplingConfig indexSamplingConfig = new IndexSamplingConfig( Config.defaults() ); FullScanNonUniqueIndexSampler sampler = - new FullScanNonUniqueIndexSampler<>( tree, layout, indexSamplingConfig ); + new FullScanNonUniqueIndexSampler<>( tree, layout, samplingConfig ); return sampler::result; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java index 89f840aff2034..3b90e74d63a10 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/index/schema/NativeSchemaNumberIndexAccessorTest.java @@ -44,7 +44,9 @@ import org.neo4j.kernel.api.index.IndexUpdater; import org.neo4j.kernel.api.schema.IndexQuery; import org.neo4j.kernel.api.schema.index.IndexDescriptor; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.index.IndexUpdateMode; +import org.neo4j.kernel.impl.api.index.sampling.IndexSamplingConfig; import org.neo4j.storageengine.api.schema.IndexReader; import org.neo4j.storageengine.api.schema.IndexSample; import org.neo4j.storageengine.api.schema.IndexSampler; @@ -86,7 +88,14 @@ public abstract class NativeSchemaNumberIndexAccessorTest( pageCache, fs, indexFile, layout, IMMEDIATE, monitor, indexDescriptor, indexId ); + IndexSamplingConfig samplingConfig = new IndexSamplingConfig( Config.defaults() ); + createAccessorWithSamplingConfig( samplingConfig ); + } + + private void createAccessorWithSamplingConfig( IndexSamplingConfig samplingConfig ) throws IOException + { + accessor = new NativeSchemaNumberIndexAccessor<>( + pageCache, fs, indexFile, layout, IMMEDIATE, monitor, indexDescriptor, indexId, samplingConfig ); } @After