You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by jp...@apache.org on 2017/02/16 14:30:12 UTC

[2/4] lucene-solr:branch_6x: LUCENE-7685: Remove equals/rewrite hacks from block join queries.

LUCENE-7685: Remove equals/rewrite hacks from block join queries.


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/e092d4f3
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/e092d4f3
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/e092d4f3

Branch: refs/heads/branch_6x
Commit: e092d4f344432cf56b0059027a3365d30227a925
Parents: 4a636c4
Author: Adrien Grand <jp...@gmail.com>
Authored: Thu Feb 16 09:37:59 2017 +0100
Committer: Adrien Grand <jp...@gmail.com>
Committed: Thu Feb 16 14:53:55 2017 +0100

----------------------------------------------------------------------
 lucene/CHANGES.txt                              |  4 ++++
 .../search/join/ToChildBlockJoinQuery.java      | 23 +++-----------------
 .../search/join/ToParentBlockJoinQuery.java     | 23 +++-----------------
 3 files changed, 10 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e092d4f3/lucene/CHANGES.txt
----------------------------------------------------------------------
diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt
index 29a5390..4d6cd54 100644
--- a/lucene/CHANGES.txt
+++ b/lucene/CHANGES.txt
@@ -68,6 +68,10 @@ Bug Fixes
 * LUCENE-7692: PatternReplaceCharFilterFactory now implements MultiTermAware.
   (Adrien Grand)
 
+* LUCENE-7685: ToParentBlockJoinQuery and ToChildBlockJoinQuery now use the
+  rewritten child query in their equals and hashCode implementations.
+  (Adrien Grand)
+
 Improvements
 
 * LUCENE-7055: Added Weight#scorerSupplier, which allows to estimate the cost

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e092d4f3/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java b/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
index 830e29b..71771fd 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/ToChildBlockJoinQuery.java
@@ -52,13 +52,6 @@ public class ToChildBlockJoinQuery extends Query {
   private final BitSetProducer parentsFilter;
   private final Query parentQuery;
 
-  // If we are rewritten, this is the original parentQuery we
-  // were passed; we use this for .equals() and
-  // .hashCode().  This makes rewritten query equal the
-  // original, so that user does not have to .rewrite() their
-  // query before searching:
-  private final Query origParentQuery;
-
   /**
    * Create a ToChildBlockJoinQuery.
    * 
@@ -67,14 +60,6 @@ public class ToChildBlockJoinQuery extends Query {
    */
   public ToChildBlockJoinQuery(Query parentQuery, BitSetProducer parentsFilter) {
     super();
-    this.origParentQuery = parentQuery;
-    this.parentQuery = parentQuery;
-    this.parentsFilter = parentsFilter;
-  }
-
-  private ToChildBlockJoinQuery(Query origParentQuery, Query parentQuery, BitSetProducer parentsFilter) {
-    super();
-    this.origParentQuery = origParentQuery;
     this.parentQuery = parentQuery;
     this.parentsFilter = parentsFilter;
   }
@@ -312,9 +297,7 @@ public class ToChildBlockJoinQuery extends Query {
   public Query rewrite(IndexReader reader) throws IOException {
     final Query parentRewrite = parentQuery.rewrite(reader);
     if (parentRewrite != parentQuery) {
-      return new ToChildBlockJoinQuery(parentQuery,
-                                parentRewrite,
-                                parentsFilter);
+      return new ToChildBlockJoinQuery(parentRewrite, parentsFilter);
     } else {
       return super.rewrite(reader);
     }
@@ -332,7 +315,7 @@ public class ToChildBlockJoinQuery extends Query {
   }
 
   private boolean equalsTo(ToChildBlockJoinQuery other) {
-    return origParentQuery.equals(other.origParentQuery) &&
+    return parentQuery.equals(other.parentQuery) &&
            parentsFilter.equals(other.parentsFilter);
   }
 
@@ -340,7 +323,7 @@ public class ToChildBlockJoinQuery extends Query {
   public int hashCode() {
     final int prime = 31;
     int hash = classHash();
-    hash = prime * hash + origParentQuery.hashCode();
+    hash = prime * hash + parentQuery.hashCode();
     hash = prime * hash + parentsFilter.hashCode();
     return hash;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/e092d4f3/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
----------------------------------------------------------------------
diff --git a/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java b/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
index 0e15ac2..5d0c27b 100644
--- a/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
+++ b/lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java
@@ -67,13 +67,6 @@ public class ToParentBlockJoinQuery extends Query {
 
   private final BitSetProducer parentsFilter;
   private final Query childQuery;
-
-  // If we are rewritten, this is the original childQuery we
-  // were passed; we use this for .equals() and
-  // .hashCode().  This makes rewritten query equal the
-  // original, so that user does not have to .rewrite() their
-  // query before searching:
-  private final Query origChildQuery;
   private final ScoreMode scoreMode;
 
   /** Create a ToParentBlockJoinQuery.
@@ -85,15 +78,6 @@ public class ToParentBlockJoinQuery extends Query {
    **/
   public ToParentBlockJoinQuery(Query childQuery, BitSetProducer parentsFilter, ScoreMode scoreMode) {
     super();
-    this.origChildQuery = childQuery;
-    this.childQuery = childQuery;
-    this.parentsFilter = parentsFilter;
-    this.scoreMode = scoreMode;
-  }
-
-  private ToParentBlockJoinQuery(Query origChildQuery, Query childQuery, BitSetProducer parentsFilter, ScoreMode scoreMode) {
-    super();
-    this.origChildQuery = origChildQuery;
     this.childQuery = childQuery;
     this.parentsFilter = parentsFilter;
     this.scoreMode = scoreMode;
@@ -377,8 +361,7 @@ public class ToParentBlockJoinQuery extends Query {
   public Query rewrite(IndexReader reader) throws IOException {
     final Query childRewrite = childQuery.rewrite(reader);
     if (childRewrite != childQuery) {
-      return new ToParentBlockJoinQuery(origChildQuery,
-                                childRewrite,
+      return new ToParentBlockJoinQuery(childRewrite,
                                 parentsFilter,
                                 scoreMode);
     } else {
@@ -398,7 +381,7 @@ public class ToParentBlockJoinQuery extends Query {
   }
 
   private boolean equalsTo(ToParentBlockJoinQuery other) {
-    return origChildQuery.equals(other.origChildQuery) &&
+    return childQuery.equals(other.childQuery) &&
            parentsFilter.equals(other.parentsFilter) &&
            scoreMode == other.scoreMode;
   }
@@ -407,7 +390,7 @@ public class ToParentBlockJoinQuery extends Query {
   public int hashCode() {
     final int prime = 31;
     int hash = classHash();
-    hash = prime * hash + origChildQuery.hashCode();
+    hash = prime * hash + childQuery.hashCode();
     hash = prime * hash + scoreMode.hashCode();
     hash = prime * hash + parentsFilter.hashCode();
     return hash;