mirror of https://github.com/apache/lucene.git
LUCENE-7232: Fixed InetAddressPoint.newPrefixQuery.
This commit is contained in:
parent
858082c4ca
commit
2724b99b5c
|
@ -90,6 +90,9 @@ Bug Fixes
|
||||||
|
|
||||||
* LUCENE-7209: Fixed explanations of FunctionScoreQuery. (Adrien Grand)
|
* LUCENE-7209: Fixed explanations of FunctionScoreQuery. (Adrien Grand)
|
||||||
|
|
||||||
|
* LUCENE-7232: Fixed InetAddressPoint.newPrefixQuery, which was generating an
|
||||||
|
incorrect query when the prefix length was not a multiple of 8. (Adrien Grand)
|
||||||
|
|
||||||
Documentation
|
Documentation
|
||||||
|
|
||||||
* LUCENE-7223: Improve XXXPoint javadocs to make it clear that you
|
* LUCENE-7223: Improve XXXPoint javadocs to make it clear that you
|
||||||
|
|
|
@ -174,8 +174,9 @@ public class InetAddressPoint extends Field {
|
||||||
byte lower[] = value.getAddress();
|
byte lower[] = value.getAddress();
|
||||||
byte upper[] = value.getAddress();
|
byte upper[] = value.getAddress();
|
||||||
for (int i = prefixLength; i < 8 * lower.length; i++) {
|
for (int i = prefixLength; i < 8 * lower.length; i++) {
|
||||||
lower[i >> 3] &= ~(1 << (i & 7));
|
int m = 1 << (7 - (i & 7));
|
||||||
upper[i >> 3] |= 1 << (i & 7);
|
lower[i >> 3] &= ~m;
|
||||||
|
upper[i >> 3] |= m;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
return newRangeQuery(field, InetAddress.getByAddress(lower), InetAddress.getByAddress(upper));
|
return newRangeQuery(field, InetAddress.getByAddress(lower), InetAddress.getByAddress(upper));
|
||||||
|
|
|
@ -119,4 +119,16 @@ public class TestInetAddressPoint extends LuceneTestCase {
|
||||||
assertEquals(q1.hashCode(), q2.hashCode());
|
assertEquals(q1.hashCode(), q2.hashCode());
|
||||||
assertFalse(q1.equals(InetAddressPoint.newSetQuery("a", InetAddress.getByName("1.2.3.3"), InetAddress.getByName("1.2.3.7"))));
|
assertFalse(q1.equals(InetAddressPoint.newSetQuery("a", InetAddress.getByName("1.2.3.3"), InetAddress.getByName("1.2.3.7"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPrefixQuery() throws Exception {
|
||||||
|
assertEquals(
|
||||||
|
InetAddressPoint.newRangeQuery("a", InetAddress.getByName("1.2.3.0"), InetAddress.getByName("1.2.3.255")),
|
||||||
|
InetAddressPoint.newPrefixQuery("a", InetAddress.getByName("1.2.3.127"), 24));
|
||||||
|
assertEquals(
|
||||||
|
InetAddressPoint.newRangeQuery("a", InetAddress.getByName("1.2.3.128"), InetAddress.getByName("1.2.3.255")),
|
||||||
|
InetAddressPoint.newPrefixQuery("a", InetAddress.getByName("1.2.3.213"), 25));
|
||||||
|
assertEquals(
|
||||||
|
InetAddressPoint.newRangeQuery("a", InetAddress.getByName("2001::a000:0"), InetAddress.getByName("2001::afff:ffff")),
|
||||||
|
InetAddressPoint.newPrefixQuery("a", InetAddress.getByName("2001::a6bd:fc80"), 100));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue