[ 
https://issues.apache.org/jira/browse/LUCENE-7277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15290662#comment-15290662
 ] 

Dawid Weiss commented on LUCENE-7277:
-------------------------------------

Hmm..., try it:
{code}
git co 4bc3477fbf9be688c14bbb07f5982d5f4b615591 
git apply LUCENE-7277-20160518.patch
{code}

results in errors for me:
{code}
error: patch failed: 
lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java:421
error: lucene/core/src/java/org/apache/lucene/search/BooleanQuery.java: patch 
does not apply
error: patch failed: 
lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java:25
error: lucene/core/src/java/org/apache/lucene/search/MatchNoDocsQuery.java: 
patch does not apply
error: patch failed: 
lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java:315
error: lucene/core/src/java/org/apache/lucene/search/PointInSetQuery.java: 
patch does not apply
error: patch failed: 
lucene/core/src/java/org/apache/lucene/search/PointRangeQuery.java:230
error: lucene/core/src/java/org/apache/lucene/search/PointRangeQuery.java: 
patch does not apply
error: patch failed: lucene/core/src/java/org/apache/lucene/search/Query.java:74
error: lucene/core/src/java/org/apache/lucene/search/Query.java: patch does not 
apply
error: patch failed: 
lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java:153
error: lucene/core/src/test/org/apache/lucene/search/JustCompileSearch.java: 
patch does not apply
error: patch failed: 
lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java:102
error: 
lucene/core/src/test/org/apache/lucene/search/spans/JustCompileSearchSpans.java:
 patch does not apply
error: patch failed: 
lucene/join/src/java/org/apache/lucene/search/join/PointInSetIncludingScoreQuery.java:299
error: 
lucene/join/src/java/org/apache/lucene/search/join/PointInSetIncludingScoreQuery.java:
 patch does not apply
error: patch failed: 
lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java:475
error: 
lucene/join/src/java/org/apache/lucene/search/join/ToParentBlockJoinQuery.java: 
patch does not apply
error: patch failed: 
lucene/queryparser/src/java/org/apache/lucene/queryparser/complexPhrase/ComplexPhraseQueryParser.java:420
error: 
lucene/queryparser/src/java/org/apache/lucene/queryparser/complexPhrase/ComplexPhraseQueryParser.java:
 patch does not apply
error: patch failed: 
lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java:67
error: lucene/test-framework/src/java/org/apache/lucene/search/QueryUtils.java: 
patch does not apply
error: patch failed: 
solr/core/src/java/org/apache/solr/search/QueryWrapperFilter.java:89
error: solr/core/src/java/org/apache/solr/search/QueryWrapperFilter.java: patch 
does not apply
{code}

bq. In case replacing getClass().hashCode() by something like 
getClass().getName().hashCode() is preferred for easier testing, it would 
probably be better to add that in a companion method to sameClassAs(), for 
example classHash().

Yep, I agree. Could even be lazily initialized once, much like the hash in 
Boolean query.

bq. As to AssertionError or UOE, do we have a standard for that? I have seen 
UOE in a few places, so I used that.

I don't think there's a standard for such things -- IllegalStateException, UOE, 
RuntimeException, InternalError... all these are used to signal unreachable 
code (or code that "theoretically" shouldn't execute). Not anything specific to 
Lucene, the inconsistency is everywhere, in the JDK too. I prefer new 
AssertionError("Reason") because this is an error (not an exception) and it 
cannot be confused with legitimate exceptions thrown by the java linker (unlike 
UOE)... but it's really my personal call, not a rule

bq. I would not mind rebasing the local branch to update the patch, but I'll 
have very little time the coming days.

I can take over if you make that branch available somewhere (github?).





> Make Query.hashCode and Query.equals abstract
> ---------------------------------------------
>
>                 Key: LUCENE-7277
>                 URL: https://issues.apache.org/jira/browse/LUCENE-7277
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>            Priority: Trivial
>         Attachments: LUCENE-7277-20160518.patch, LUCENE-7277.patch
>
>
> Custom subclasses of the Query class have the default implementation of 
> hashCode/equals that make all instances of the subclass equal. If somebody 
> doesn't know this it can be pretty tricky to debug with IndexSearcher's query 
> cache on. 
> Is there any rationale for declaring it this way instead of making those 
> methods abstract (and enforcing their proper implementation in a subclass)?
> {code}
>   public int hashCode() {
>     return getClass().hashCode();
>   }
>   public boolean equals(Object obj) {
>     if (obj == null)
>       return false;
>     return getClass() == obj.getClass();
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to