This is an automated email from the ASF dual-hosted git repository.

cpoerschke pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 3f634f9  SOLR-15606: rename (deprecated) Insanity.java to 
NumericHidingLeafReader.java (#276)
3f634f9 is described below

commit 3f634f97161d719683cbb0f1e8a56481b77979a3
Author: Christine Poerschke <[email protected]>
AuthorDate: Tue Sep 7 14:28:06 2021 +0100

    SOLR-15606: rename (deprecated) Insanity.java to 
NumericHidingLeafReader.java (#276)
---
 solr/CHANGES.txt                                   |  2 +
 .../java/org/apache/solr/request/SimpleFacets.java | 18 ++++----
 ...{Insanity.java => NumericHidingLeafReader.java} | 50 ++++++++++------------
 .../solr/search/function/OrdFieldSource.java       | 10 ++---
 .../search/function/ReverseOrdFieldSource.java     | 10 ++---
 5 files changed, 43 insertions(+), 47 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index b6a4fdc..1d57d02 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -340,6 +340,8 @@ Other Changes
 
 * SOLR-15612: Remove unecessary https8 jetty module (Houston Putman)
 
+* SOLR-15606: Rename (deprecated) Insanity.java to 
NumericHidingLeafReader.java adjusting callers to match. (Christine Poerschke)
+
 Bug Fixes
 ---------------------
 * SOLR-14546: Fix for a relatively hard to hit issue in OverseerTaskProcessor 
that could lead to out of order execution
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java 
b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 48e9425..d98cf79 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -81,7 +81,7 @@ import org.apache.solr.schema.TrieField;
 import org.apache.solr.search.BitDocSet;
 import org.apache.solr.search.DocSet;
 import org.apache.solr.search.Grouping;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
 import org.apache.solr.search.QParser;
 import org.apache.solr.search.QueryParsing;
 import org.apache.solr.search.QueryUtils;
@@ -718,9 +718,9 @@ public class SimpleFacets {
     BytesRef prefixBytesRef = prefix != null ? new BytesRef(prefix) : null;
     final TermGroupFacetCollector collector = 
TermGroupFacetCollector.createTermGroupFacetCollector(groupField, field, 
multiToken, prefixBytesRef, 128);
     
-    Collector groupWrapper = getInsanityWrapper(groupField, collector);
-    Collector fieldWrapper = getInsanityWrapper(field, groupWrapper);
-    // When GroupedFacetCollector can handle numerics we can remove the 
wrapped collectors
+    Collector groupWrapper = getNumericHidingWrapper(groupField, collector);
+    Collector fieldWrapper = getNumericHidingWrapper(field, groupWrapper);
+    // When GroupFacetCollector can handle numerics we can remove the wrapped 
collectors
     searcher.search(base.getTopFilter(), fieldWrapper);
     
     boolean orderByCount = sort.equals(FacetParams.FACET_SORT_COUNT) || 
sort.equals(FacetParams.FACET_SORT_COUNT_LEGACY);
@@ -750,16 +750,16 @@ public class SimpleFacets {
     return facetCounts;
   }
   
-  private Collector getInsanityWrapper(final String field, Collector 
collector) {
+  private Collector getNumericHidingWrapper(final String field, Collector 
collector) {
     SchemaField sf = searcher.getSchema().getFieldOrNull(field);
     if (sf != null && !sf.hasDocValues() && !sf.multiValued() && 
sf.getType().getNumberType() != null) {
-      // it's a single-valued numeric field: we must currently create insanity 
:(
-      // there isn't a GroupedFacetCollector that works on numerics right 
now...
+      // it's a single-valued numeric field: we must hide the numeric because
+      // there isn't a GroupFacetCollector that works on numerics right now...
       return new FilterCollector(collector) {
         @Override
         public LeafCollector getLeafCollector(LeafReaderContext context) 
throws IOException {
-          LeafReader insane = Insanity.wrapInsanity(context.reader(), field);
-          return in.getLeafCollector(insane.getContext());
+          LeafReader leafReader = 
NumericHidingLeafReader.wrap(context.reader(), field);
+          return in.getLeafCollector(leafReader.getContext());
         }
       };
     } else {
diff --git a/solr/core/src/java/org/apache/solr/search/Insanity.java 
b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
similarity index 77%
rename from solr/core/src/java/org/apache/solr/search/Insanity.java
rename to solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
index 076a025..d3c73db 100644
--- a/solr/core/src/java/org/apache/solr/search/Insanity.java
+++ b/solr/core/src/java/org/apache/solr/search/NumericHidingLeafReader.java
@@ -32,39 +32,34 @@ import org.apache.lucene.index.SortedSetDocValues;
 import org.apache.solr.uninverting.UninvertingReader;
 
 /** 
- * Lucene 5.0 removes "accidental" insanity, so you must explicitly
- * create it.
- * <p>
- * This class creates insanity for two specific situations:
+ * This class is useful in two specific situations:
  * <ul>
  *   <li>calling {@code ord} or {@code rord} functions on a single-valued 
numeric field.
  *   <li>doing grouped faceting ({@code group.facet}) on a single-valued 
numeric field.
  * </ul>
  */
 @Deprecated
-public class Insanity {
-  
-  /** 
-   * Returns a view over {@code sane} where {@code insaneField} is a string
-   * instead of a numeric.
-   */
-  public static LeafReader wrapInsanity(LeafReader sane, String insaneField) {
-    return UninvertingReader.wrap(
-        new InsaneReader(sane, insaneField),
-        Collections.singletonMap(insaneField, 
UninvertingReader.Type.SORTED)::get);
-  }
-  
-  /** Hides the proper numeric dv type for the field */
-  private static class InsaneReader extends FilterLeafReader {
-    final String insaneField;
-    final FieldInfos fieldInfos;
+public class NumericHidingLeafReader extends FilterLeafReader {
     
-    InsaneReader(LeafReader in, String insaneField) {
+    /** 
+     * Returns a view over {@code leafReader} where {@code field} is a string
+     * instead of a numeric.
+     */
+    public static LeafReader wrap(LeafReader leafReader, String field) {
+      return UninvertingReader.wrap(
+          new NumericHidingLeafReader(leafReader, field),
+          Collections.singletonMap(field, UninvertingReader.Type.SORTED)::get);
+    }
+    
+    private final String field;
+    private final FieldInfos fieldInfos;
+    
+    private NumericHidingLeafReader(LeafReader in, String field) {
       super(in);
-      this.insaneField = insaneField;
+      this.field = field;
       ArrayList<FieldInfo> filteredInfos = new ArrayList<>();
       for (FieldInfo fi : in.getFieldInfos()) {
-        if (fi.name.equals(insaneField)) {
+        if (fi.name.equals(field)) {
           filteredInfos.add(new FieldInfo(fi.name, fi.number, fi.hasVectors(), 
fi.omitsNorms(),
                                           fi.hasPayloads(), 
fi.getIndexOptions(), DocValuesType.NONE, -1, Collections.emptyMap(),
                                           fi.getPointDimensionCount(), 
fi.getPointIndexDimensionCount(), fi.getPointNumBytes(),
@@ -78,7 +73,7 @@ public class Insanity {
 
     @Override
     public NumericDocValues getNumericDocValues(String field) throws 
IOException {
-      if (insaneField.equals(field)) {
+      if (this.field.equals(field)) {
         return null;
       } else {
         return in.getNumericDocValues(field);
@@ -87,7 +82,7 @@ public class Insanity {
 
     @Override
     public BinaryDocValues getBinaryDocValues(String field) throws IOException 
{
-      if (insaneField.equals(field)) {
+      if (this.field.equals(field)) {
         return null;
       } else {
         return in.getBinaryDocValues(field);
@@ -96,7 +91,7 @@ public class Insanity {
 
     @Override
     public SortedDocValues getSortedDocValues(String field) throws IOException 
{
-      if (insaneField.equals(field)) {
+      if (this.field.equals(field)) {
         return null;
       } else {
         return in.getSortedDocValues(field);
@@ -105,7 +100,7 @@ public class Insanity {
 
     @Override
     public SortedSetDocValues getSortedSetDocValues(String field) throws 
IOException {
-      if (insaneField.equals(field)) {
+      if (this.field.equals(field)) {
         return null;
       } else {
         return in.getSortedSetDocValues(field);
@@ -129,5 +124,4 @@ public class Insanity {
       return in.getReaderCacheHelper();
     }
 
-  }
 }
diff --git 
a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java 
b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
index e07a7f5..88acf7f 100644
--- a/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
+++ b/solr/core/src/java/org/apache/solr/search/function/OrdFieldSource.java
@@ -36,7 +36,7 @@ import org.apache.lucene.util.mutable.MutableValueInt;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.index.SlowCompositeReaderWrapper;
 import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
 import org.apache.solr.search.SolrIndexSearcher;
 
 /**
@@ -83,14 +83,14 @@ public class OrdFieldSource extends ValueSource {
             "ord() is not supported over Points based field " + field);
       }
       if (sf != null && sf.hasDocValues() == false && sf.multiValued() == 
false && sf.getType().getNumberType() != null) {
-        // it's a single-valued numeric field: we must currently create 
insanity :(
+        // it's a single-valued numeric field: we must hide the numeric
         List<LeafReaderContext> leaves = is.getIndexReader().leaves();
-        LeafReader insaneLeaves[] = new LeafReader[leaves.size()];
+        LeafReader hidingLeaves[] = new LeafReader[leaves.size()];
         int upto = 0;
         for (LeafReaderContext raw : leaves) {
-          insaneLeaves[upto++] = Insanity.wrapInsanity(raw.reader(), field);
+          hidingLeaves[upto++] = NumericHidingLeafReader.wrap(raw.reader(), 
field);
         }
-        r = SlowCompositeReaderWrapper.wrap(new MultiReader(insaneLeaves));
+        r = SlowCompositeReaderWrapper.wrap(new MultiReader(hidingLeaves));
       } else {
         // reuse ordinalmap
         r = ((SolrIndexSearcher)o).getSlowAtomicReader();
diff --git 
a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java 
b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
index 0451213..44c3b23 100644
--- 
a/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
+++ 
b/solr/core/src/java/org/apache/solr/search/function/ReverseOrdFieldSource.java
@@ -34,7 +34,7 @@ import org.apache.lucene.search.SortedSetSelector;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.index.SlowCompositeReaderWrapper;
 import org.apache.solr.schema.SchemaField;
-import org.apache.solr.search.Insanity;
+import org.apache.solr.search.NumericHidingLeafReader;
 import org.apache.solr.search.SolrIndexSearcher;
 
 /**
@@ -83,14 +83,14 @@ public class ReverseOrdFieldSource extends ValueSource {
             "rord() is not supported over Points based field " + field);
       }
       if (sf != null && sf.hasDocValues() == false && sf.multiValued() == 
false && sf.getType().getNumberType() != null) {
-        // it's a single-valued numeric field: we must currently create 
insanity :(
+        // it's a single-valued numeric field: we must hide the numeric
         List<LeafReaderContext> leaves = is.getIndexReader().leaves();
-        LeafReader insaneLeaves[] = new LeafReader[leaves.size()];
+        LeafReader hidingLeaves[] = new LeafReader[leaves.size()];
         int upto = 0;
         for (LeafReaderContext raw : leaves) {
-          insaneLeaves[upto++] = Insanity.wrapInsanity(raw.reader(), field);
+          hidingLeaves[upto++] = NumericHidingLeafReader.wrap(raw.reader(), 
field);
         }
-        r = SlowCompositeReaderWrapper.wrap(new MultiReader(insaneLeaves));
+        r = SlowCompositeReaderWrapper.wrap(new MultiReader(hidingLeaves));
       } else {
         // reuse ordinalmap
         r = ((SolrIndexSearcher)o).getSlowAtomicReader();

Reply via email to