From 9ec938f2efff908150107be2fd41e16f8882f00c Mon Sep 17 00:00:00 2001 From: Mike McCandless Date: Fri, 8 Dec 2023 08:14:00 -0500 Subject: [PATCH] Revert "SlowCompositeCodecWrapper: remove redundant FieldInfo lookup in its PointsReader.getValues method" This reverts commit 0aff41379795c85954b4653601a217b619db1e05. --- .../lucene/index/SlowCompositeCodecReaderWrapper.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lucene/core/src/java/org/apache/lucene/index/SlowCompositeCodecReaderWrapper.java b/lucene/core/src/java/org/apache/lucene/index/SlowCompositeCodecReaderWrapper.java index 2753b5f7510..0376f1e6243 100644 --- a/lucene/core/src/java/org/apache/lucene/index/SlowCompositeCodecReaderWrapper.java +++ b/lucene/core/src/java/org/apache/lucene/index/SlowCompositeCodecReaderWrapper.java @@ -565,10 +565,12 @@ final class SlowCompositeCodecReaderWrapper extends CodecReader { private static class SlowCompositePointsReaderWrapper extends PointsReader { + private final CodecReader[] codecReaders; private final PointsReader[] readers; private final int[] docStarts; SlowCompositePointsReaderWrapper(CodecReader[] codecReaders, int[] docStarts) { + this.codecReaders = codecReaders; this.readers = Arrays.stream(codecReaders) .map(CodecReader::getPointsReader) @@ -594,9 +596,12 @@ final class SlowCompositeCodecReaderWrapper extends CodecReader { public PointValues getValues(String field) throws IOException { List values = new ArrayList<>(); for (int i = 0; i < readers.length; ++i) { - if (readers[i] != null) { + FieldInfo fi = codecReaders[i].getFieldInfos().fieldInfo(field); + if (fi != null && fi.getPointDimensionCount() > 0) { PointValues v = readers[i].getValues(field); if (v != null) { + // Apparently FieldInfo can claim a field has points, yet the returned + // PointValues is null values.add(new PointValuesSub(v, docStarts[i])); } }