Author: thomasm Date: Tue Jun 14 11:48:26 2016 New Revision: 1748390 URL: http://svn.apache.org/viewvc?rev=1748390&view=rev Log: OAK-3574 Query engine: support p=lowercase(x) and other function-based indexes (WIP)
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/FilterTest.java Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java?rev=1748390&r1=1748389&r2=1748390&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java (original) +++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/query/index/FilterImpl.java Tue Jun 14 11:48:26 2016 @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map.Entry; import java.util.Set; +import java.util.TreeMap; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -405,8 +406,9 @@ public class FilterImpl implements Filte buff.append(", path=").append(getPathPlan()); if (!propertyRestrictions.isEmpty()) { buff.append(", property=["); - Iterator<Entry<String, Collection<PropertyRestriction>>> iterator = propertyRestrictions - .asMap().entrySet().iterator(); + Iterator<Entry<String, Collection<PropertyRestriction>>> iterator = + new TreeMap<String, Collection<PropertyRestriction>>(propertyRestrictions + .asMap()).entrySet().iterator(); while (iterator.hasNext()) { Entry<String, Collection<PropertyRestriction>> p = iterator.next(); buff.append(p.getKey()).append("=").append(p.getValue()); Modified: jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/FilterTest.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/FilterTest.java?rev=1748390&r1=1748389&r2=1748390&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/FilterTest.java (original) +++ jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/query/FilterTest.java Tue Jun 14 11:48:26 2016 @@ -82,14 +82,14 @@ public class FilterTest { sql2 = "select [jcr:path] from [nt:base] where length([test]) <= 10"; assertEquals("Filter(query=select [jcr:path] from [nt:base] " + "where length([test]) <= 10, " + - "path=*, property=[test=[is not null], " + - "function*length*@test=[..10]]])", createFilterSQL(sql2).toString()); + "path=*, property=[function*length*@test=[..10]], " + + "test=[is not null]])", createFilterSQL(sql2).toString()); sql2 = "select [jcr:path] from [nt:base] where length([test]) > 2"; assertEquals("Filter(query=select [jcr:path] from [nt:base] " + "where length([test]) > 2, " + - "path=*, property=[test=[is not null], " + - "function*length*@test=[(2..]])", createFilterSQL(sql2).toString()); + "path=*, property=[function*length*@test=[(2..], " + + "test=[is not null]])", createFilterSQL(sql2).toString()); }