diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/labelscan/NativeAllEntriesLabelScanReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/labelscan/NativeAllEntriesLabelScanReader.java index b2804fb1699dc..2380062ce1b17 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/labelscan/NativeAllEntriesLabelScanReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/labelscan/NativeAllEntriesLabelScanReader.java @@ -63,7 +63,7 @@ class NativeAllEntriesLabelScanReader implements AllEntriesLabelScanReader @Override public long maxCount() { - return -1; + return UNKNOWN_MAX_COUNT; } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexSampler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexSampler.java index de72ae9dd0934..e8953424b9301 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexSampler.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexSampler.java @@ -25,11 +25,11 @@ import static org.neo4j.kernel.impl.index.schema.fusion.FusionSchemaIndexProvider.combineSamples; -class FusionIndexSampler implements IndexSampler +public class FusionIndexSampler implements IndexSampler { private final IndexSampler[] samplers; - FusionIndexSampler( IndexSampler... samplers ) + public FusionIndexSampler( IndexSampler... samplers ) { this.samplers = samplers; } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexUtils.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexUtils.java index 08cc296f7b21c..faa275d712c36 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexUtils.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/FusionIndexUtils.java @@ -47,7 +47,7 @@ public abstract class FusionIndexUtils * @param the type of exception anticipated, inferred from the lambda * @throws E if consumption fails with this exception */ - public static void forAll( ThrowingConsumer consumer, Collection subjects ) throws E + public static void forAll( ThrowingConsumer consumer, Iterable subjects ) throws E { E exception = null; for ( T subject : subjects ) @@ -76,7 +76,7 @@ public static void forAll( ThrowingConsumer consum } /** - * See {@link FusionIndexUtils#forAll(ThrowingConsumer, Collection)} + * See {@link FusionIndexUtils#forAll(ThrowingConsumer, Iterable)} */ public static void forAll( ThrowingConsumer consumer, T... subjects ) throws E { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexReader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexReader.java index a141f766a69ac..7a1fd8ed25058 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexReader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexReader.java @@ -90,7 +90,7 @@ private R selectAndRun( ActionableWithResult actionable, Value... values @Override public IndexSampler createSampler() { - return new SpatialFusionIndexSampler( readerMap.values().stream().map( IndexReader::createSampler ).toArray( IndexSampler[]::new ) ); + return new FusionIndexSampler( readerMap.values().stream().map( IndexReader::createSampler ).toArray( IndexSampler[]::new ) ); } @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexSampler.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexSampler.java deleted file mode 100644 index 60310d03fe9d3..0000000000000 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/fusion/SpatialFusionIndexSampler.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2002-2018 "Neo Technology," - * Network Engine for Objects in Lund AB [http://neotechnology.com] - * - * This file is part of Neo4j. - * - * Neo4j is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package org.neo4j.kernel.impl.index.schema.fusion; - -import org.neo4j.kernel.api.exceptions.index.IndexNotFoundKernelException; -import org.neo4j.storageengine.api.schema.IndexSample; -import org.neo4j.storageengine.api.schema.IndexSampler; - -import static org.neo4j.kernel.impl.index.schema.fusion.FusionSchemaIndexProvider.combineSamples; - -class SpatialFusionIndexSampler implements IndexSampler -{ - private final IndexSampler[] samplers; - - SpatialFusionIndexSampler( IndexSampler... samplers ) - { - this.samplers = samplers; - } - - @Override - public IndexSample sampleIndex() throws IndexNotFoundKernelException - { - IndexSample[] samples = new IndexSample[samplers.length]; - for ( int i = 0; i < samplers.length; i++ ) - { - samples[i] = samplers[i].sampleIndex(); - } - return combineSamples( samples ); - } -} diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionSchemaIndexProviderFactory.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionSchemaIndexProviderFactory.java index 38ab04b88aea1..439df6e0deddb 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionSchemaIndexProviderFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionSchemaIndexProviderFactory.java @@ -36,6 +36,7 @@ import org.neo4j.kernel.impl.index.schema.NativeSelector; import org.neo4j.kernel.impl.index.schema.fusion.FusionSchemaIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.SpatialFusionSchemaIndexProvider; +import org.neo4j.kernel.impl.index.schema.temporal.TemporalSchemaIndexProvider; import org.neo4j.kernel.impl.spi.KernelContext; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.Log; @@ -90,12 +91,14 @@ public static FusionSchemaIndexProvider newInstance( PageCache pageCache, File s new NumberSchemaIndexProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly ); SpatialFusionSchemaIndexProvider spatialProvider = new SpatialFusionSchemaIndexProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly ); + TemporalSchemaIndexProvider temporalProvider = + new TemporalSchemaIndexProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly ); LuceneSchemaIndexProvider luceneProvider = LuceneSchemaIndexProviderFactory.create( fs, childDirectoryStructure, monitor, config, operationalMode ); boolean useNativeIndex = config.get( GraphDatabaseSettings.enable_native_schema_index ); int priority = useNativeIndex ? PRIORITY : 0; return new FusionSchemaIndexProvider( nativeProvider, - spatialProvider, luceneProvider, new NativeSelector(), DESCRIPTOR, priority, directoriesByProvider( storeDir ), fs ); + spatialProvider, temporalProvider, luceneProvider, new NativeSelector(), DESCRIPTOR, priority, directoriesByProvider( storeDir ), fs ); } public static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File storeDir ) diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/FusionSchemaIndexProviderCompatibilitySuiteTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/FusionSchemaIndexProviderCompatibilitySuiteTest.java index 32b803d5e40e9..a826a1682a765 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/FusionSchemaIndexProviderCompatibilitySuiteTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/FusionSchemaIndexProviderCompatibilitySuiteTest.java @@ -22,6 +22,7 @@ import java.io.File; import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.helpers.collection.Iterables; import org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.io.pagecache.PageCache; @@ -30,6 +31,7 @@ import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.impl.factory.OperationalMode; +import org.neo4j.values.storable.Value; import static org.neo4j.helpers.collection.MapUtil.stringMap; @@ -44,4 +46,10 @@ protected SchemaIndexProvider createIndexProvider( PageCache pageCache, FileSyst .newInstance( pageCache, graphDbDir, fs, monitor, config, OperationalMode.single, RecoveryCleanupWorkCollector.IMMEDIATE ); } + + @Override + public Iterable getSupportedValues() + { + return Iterables.concat( commonValues, spatialValues, temporalValues ); + } } diff --git a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneSchemaIndexProviderCompatibilitySuiteTest.java b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneSchemaIndexProviderCompatibilitySuiteTest.java index da2c38fb30f1e..71b597c892617 100644 --- a/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneSchemaIndexProviderCompatibilitySuiteTest.java +++ b/community/lucene-index/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneSchemaIndexProviderCompatibilitySuiteTest.java @@ -30,6 +30,7 @@ import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.impl.factory.OperationalMode; +import org.neo4j.values.storable.Value; import static org.neo4j.helpers.collection.MapUtil.stringMap; @@ -44,4 +45,10 @@ protected LuceneSchemaIndexProvider createIndexProvider( PageCache pageCache, Fi OperationalMode mode = OperationalMode.single; return LuceneSchemaIndexProviderFactory.create( fs, graphDbDir, monitor, config, mode ); } + + @Override + public Iterable getSupportedValues() + { + return commonValues; + } }