You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ba...@apache.org on 2021/03/09 17:59:01 UTC
svn commit: r1887389 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
Author: baedke
Date: Tue Mar 9 17:59:00 2021
New Revision: 1887389
URL: http://svn.apache.org/viewvc?rev=1887389&view=rev
Log:
OAK-9373: LucenePropertyIndex#createLikeQuery() ingnores escaping
Fixed.
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1887389&r1=1887388&r2=1887389&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java Tue Mar 9 17:59:00 2021
@@ -1152,8 +1152,16 @@ public class LucenePropertyIndex extends
}
private static Query createLikeQuery(String name, String first) {
- first = first.replace('%', WildcardQuery.WILDCARD_STRING);
- first = first.replace('_', WildcardQuery.WILDCARD_CHAR);
+ StringBuilder firstBuilder = new StringBuilder(first);
+ for (int k = 0; k < firstBuilder.length(); k++) {
+ if (firstBuilder.charAt(k) == '%' && !(k > 0 && firstBuilder.charAt(k-1) == '\\')) {
+ firstBuilder.setCharAt(k, WildcardQuery.WILDCARD_STRING);
+ }
+ if (firstBuilder.charAt(k) == '_' && !(k > 0 && firstBuilder.charAt(k-1) == '\\')) {
+ firstBuilder.setCharAt(k, WildcardQuery.WILDCARD_CHAR);
+ }
+ }
+ first = firstBuilder.toString();
int indexOfWS = first.indexOf(WildcardQuery.WILDCARD_STRING);
int indexOfWC = first.indexOf(WildcardQuery.WILDCARD_CHAR);
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1887389&r1=1887388&r2=1887389&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java Tue Mar 9 17:59:00 2021
@@ -1256,7 +1256,6 @@ public class LucenePropertyIndexTest ext
}
@Test
- @Ignore("OAK-9373")
public void likeQueriesWithEscapedChars() throws Exception {
Tree idx = createIndex("test1", of("propa", "propb"));
idx.addChild(PROP_NODE).addChild("propa");