diff --git a/pom.xml b/pom.xml index f08fade..a4d9651 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ false 1.9.5 9.5.0 - 7.9.2 + 7.10.2 5.9.0 1.0.258 diff --git a/src/main/java/it/cavallium/dbengine/client/query/QueryUtils.java b/src/main/java/it/cavallium/dbengine/client/query/QueryUtils.java index be7a47b..28294e3 100644 --- a/src/main/java/it/cavallium/dbengine/client/query/QueryUtils.java +++ b/src/main/java/it/cavallium/dbengine/client/query/QueryUtils.java @@ -1,5 +1,7 @@ package it.cavallium.dbengine.client.query; +import static it.cavallium.dbengine.database.LLUtils.mapList; + import it.cavallium.dbengine.client.query.current.data.BooleanQuery; import it.cavallium.dbengine.client.query.current.data.BooleanQueryPart; import it.cavallium.dbengine.client.query.current.data.Occur; @@ -86,11 +88,7 @@ public class QueryUtils { } org.apache.lucene.search.SynonymQuery synonymQuery = (org.apache.lucene.search.SynonymQuery) luceneQuery; return SynonymQuery.of(field, - synonymQuery - .getTerms() - .stream() - .map(term -> TermAndBoost.of(QueryParser.toQueryTerm(term), 1)) - .toList() + mapList(synonymQuery.getTerms(), term -> TermAndBoost.of(QueryParser.toQueryTerm(term), 1)) ); } } diff --git a/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java b/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java index db83960..e17da25 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java +++ b/src/main/java/it/cavallium/dbengine/database/LLMultiLuceneIndex.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine.database; +import static it.cavallium.dbengine.database.LLUtils.mapList; import static it.cavallium.dbengine.lucene.LuceneUtils.getLuceneIndexId; import static it.cavallium.dbengine.utils.StreamUtils.LUCENE_SCHEDULER; import static it.cavallium.dbengine.utils.StreamUtils.collect; @@ -174,11 +175,11 @@ public class LLMultiLuceneIndex implements LLLuceneIndex { @NotNull List queries, @Nullable Query normalizationQuery, BucketParams bucketParams) { - return mergeShards(luceneIndicesSet.stream().map(luceneIndex -> luceneIndex.computeBuckets(snapshot, + return mergeShards(mapList(luceneIndicesSet, luceneIndex -> luceneIndex.computeBuckets(snapshot, queries, normalizationQuery, bucketParams - )).toList()); + ))); } @Override diff --git a/src/main/java/it/cavallium/dbengine/database/LLUtils.java b/src/main/java/it/cavallium/dbengine/database/LLUtils.java index 96e74a4..b745f6a 100644 --- a/src/main/java/it/cavallium/dbengine/database/LLUtils.java +++ b/src/main/java/it/cavallium/dbengine/database/LLUtils.java @@ -513,30 +513,6 @@ public class LLUtils { return Buf.copyOf(array); } - - public static Buf compositeBuffer(Buf buffer) { - return buffer; - } - - @NotNull - public static Buf compositeBuffer(Buf buffer1, Buf buffer2) { - // todo: create a composite buffer without allocating a new array - var out = Buf.create(buffer1.size() + buffer2.size()); - out.addAll(buffer1); - out.addAll(buffer2); - return out; - } - - @NotNull - public static Buf compositeBuffer(Buf buffer1, Buf buffer2, Buf buffer3) { - // todo: create a composite buffer without allocating a new array - var out = Buf.create(buffer1.size() + buffer2.size()); - out.addAll(buffer1); - out.addAll(buffer2); - out.addAll(buffer3); - return out; - } - public static T resolveDelta(Delta delta, UpdateReturnMode updateReturnMode) { return switch (updateReturnMode) { case GET_NEW_VALUE -> delta.current(); @@ -666,9 +642,10 @@ public class LLUtils { } } - public static List mapList(List input, Function mapper) { - //todo: optimize hits mapping - return input.stream().map(mapper).toList(); + public static List mapList(Collection input, Function mapper) { + var result = new ArrayList(input.size()); + input.forEach(t -> result.add(mapper.apply(t))); + return result; } private static class FakeBytesRefBuilder extends BytesRefBuilder { diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java index 844c7e5..f483b31 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalDictionary.java @@ -3,6 +3,7 @@ package it.cavallium.dbengine.database.disk; import static it.cavallium.dbengine.database.LLUtils.ALLOW_STATIC_OPTIONS; import static it.cavallium.dbengine.database.LLUtils.MARKER_ROCKSDB; import static it.cavallium.dbengine.database.LLUtils.isBoundedRange; +import static it.cavallium.dbengine.database.LLUtils.mapList; import static it.cavallium.dbengine.database.LLUtils.toStringSafe; import static it.cavallium.dbengine.database.disk.UpdateAtomicResultMode.DELTA; import static it.cavallium.dbengine.utils.StreamUtils.LUCENE_SCHEDULER; @@ -542,7 +543,7 @@ public class LLLocalDictionary implements LLDictionary { { var readOptions = generateReadOptionsOrStatic(null); try { - var inputs = db.multiGetAsList(readOptions, Lists.transform(keyBufsWindow, Buf::asArray)); + var inputs = db.multiGetAsList(readOptions, mapList(keyBufsWindow, Buf::asArray)); mappedInputs = new ArrayList<>(inputs.size()); for (int i = 0; i < inputs.size(); i++) { var val = inputs.get(i); diff --git a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java index f80e8ac..63f1627 100644 --- a/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java +++ b/src/main/java/it/cavallium/dbengine/database/disk/LLLocalKeyValueDatabase.java @@ -1,6 +1,7 @@ package it.cavallium.dbengine.database.disk; import static it.cavallium.dbengine.database.LLUtils.MARKER_ROCKSDB; +import static it.cavallium.dbengine.database.LLUtils.mapList; import static it.cavallium.dbengine.utils.StreamUtils.collect; import static it.cavallium.dbengine.utils.StreamUtils.iterating; import static java.lang.Boolean.parseBoolean; @@ -276,11 +277,7 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa columnFamilyOptions.setBottommostCompressionType(lastLevelOptions.compressionType); columnFamilyOptions.setBottommostCompressionOptions(lastLevelOptions.compressionOptions); - columnFamilyOptions.setCompressionPerLevel(columnOptions - .levels() - .stream() - .map(v -> v.compression().getType()) - .toList()); + columnFamilyOptions.setCompressionPerLevel(mapList(columnOptions.levels(), v -> v.compression().getType())); } else { columnFamilyOptions.setNumLevels(7); List compressionTypes = new ArrayList<>(7); @@ -932,10 +929,9 @@ public class LLLocalKeyValueDatabase extends Backuppable implements LLKeyValueDa requireNonNull(databasesDirPath); requireNonNull(path.getFileName()); - List paths = convertPaths(databasesDirPath, path.getFileName(), databaseOptions.volumes()) - .stream() - .map(p -> new DbPath(p.path, p.targetSize)) - .toList(); + List paths = mapList(convertPaths(databasesDirPath, path.getFileName(), databaseOptions.volumes()), + p -> new DbPath(p.path, p.targetSize) + ); options.setDbPaths(paths); options.setMaxOpenFiles(databaseOptions.maxOpenFiles().orElse(-1)); if (databaseOptions.spinning()) { diff --git a/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java b/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java index 3af0e54..b4436ac 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java +++ b/src/main/java/it/cavallium/dbengine/lucene/collector/FastFacetsCollectorManager.java @@ -1,5 +1,7 @@ package it.cavallium.dbengine.lucene.collector; +import static it.cavallium.dbengine.database.LLUtils.mapList; + import it.cavallium.dbengine.lucene.IntSmear; import it.unimi.dsi.fastutil.ints.IntHash; import java.io.IOException; @@ -31,10 +33,9 @@ public class FastFacetsCollectorManager implements CollectorManager collectors) throws IOException { - return FacetsCollector.wrap(facetsCollectorManager.reduce(collectors - .stream() - .map(facetsCollector -> facetsCollector.getLuceneFacetsCollector()) - .toList())); + return FacetsCollector.wrap(facetsCollectorManager.reduce(mapList(collectors, + facetsCollector -> facetsCollector.getLuceneFacetsCollector() + ))); } private static class FastFacetsCollector implements FacetsCollector { diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java index 95097f6..b8b4184 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/CountMultiSearcher.java @@ -1,5 +1,7 @@ package it.cavallium.dbengine.lucene.searcher; +import static it.cavallium.dbengine.database.LLUtils.mapList; + import it.cavallium.dbengine.client.query.current.data.TotalHitsCount; import it.cavallium.dbengine.database.LLKeyScore; import it.cavallium.dbengine.database.LLUtils; @@ -39,16 +41,9 @@ public class CountMultiSearcher implements MultiSearcher { "Scored queries are not supported by SimpleUnsortedUnscoredLuceneMultiSearcher"); } - var results = indexSearchers - .llShards() - .stream() - .map(searcher -> this.collect(searcher, - queryParams, - keyFieldName, - transformer, - f -> filterer.apply(f).limit(0) - )) - .toList(); + var results = mapList(indexSearchers.llShards(), + searcher -> this.collect(searcher, queryParams, keyFieldName, transformer, f -> filterer.apply(f).limit(0)) + ); boolean exactTotalHitsCount = true; long totalHitsCountValue = 0; for (LuceneSearchResult result : results) { diff --git a/src/main/java/it/cavallium/dbengine/lucene/searcher/StandardSearcher.java b/src/main/java/it/cavallium/dbengine/lucene/searcher/StandardSearcher.java index d1a6313..50770cc 100644 --- a/src/main/java/it/cavallium/dbengine/lucene/searcher/StandardSearcher.java +++ b/src/main/java/it/cavallium/dbengine/lucene/searcher/StandardSearcher.java @@ -1,5 +1,6 @@ package it.cavallium.dbengine.lucene.searcher; +import static it.cavallium.dbengine.database.LLUtils.mapList; import static it.cavallium.dbengine.utils.StreamUtils.toList; import static java.util.Objects.requireNonNull; @@ -64,7 +65,7 @@ public class StandardSearcher implements MultiSearcher { sharedManager = TopScoreDocCollector.createSharedManager(queryParams.limitInt(), null, totalHitsThreshold); } ; - var collectors = indexSearchers.stream().map(shard -> { + var collectors = mapList(indexSearchers, shard -> { try { TopDocsCollector collector; collector = sharedManager.newCollector(); @@ -77,7 +78,7 @@ public class StandardSearcher implements MultiSearcher { } catch (IOException e) { throw new DBException(e); } - }).toList(); + }); try { if (collectors.size() <= 1) {