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 am...@apache.org on 2020/12/14 10:30:09 UTC

svn commit: r1884412 - in /jackrabbit/oak/trunk: oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/

Author: amrverma
Date: Mon Dec 14 10:30:08 2020
New Revision: 1884412

URL: http://svn.apache.org/viewvc?rev=1884412&view=rev
Log:
OAK-9298 - Date Range queries not working in elastic search index

Modified:
    jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
    jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/PropertyIndexCommonTest.java

Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java?rev=1884412&r1=1884411&r2=1884412&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/query/ElasticRequestHandler.java Mon Dec 14 10:30:08 2020
@@ -757,7 +757,7 @@ public class ElasticRequestHandler {
         QueryBuilder in;
         switch (propType) {
             case PropertyType.DATE: {
-                in = newPropertyRestrictionQuery(field, pr, value -> parse(value.getValue(Type.DATE)).getTime());
+                in = newPropertyRestrictionQuery(field, pr, value -> parse(value.getValue(Type.DATE)).getTimeInMillis());
                 break;
             }
             case PropertyType.DOUBLE: {

Modified: jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/PropertyIndexCommonTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/PropertyIndexCommonTest.java?rev=1884412&r1=1884411&r2=1884412&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/PropertyIndexCommonTest.java (original)
+++ jackrabbit/oak/trunk/oak-search/src/test/java/org/apache/jackrabbit/oak/plugins/index/PropertyIndexCommonTest.java Mon Dec 14 10:30:08 2020
@@ -17,6 +17,8 @@
 package org.apache.jackrabbit.oak.plugins.index;
 
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.search.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.junit.Test;
@@ -24,6 +26,7 @@ import org.junit.Test;
 import java.util.Arrays;
 
 import static java.util.Collections.singletonList;
+import static javax.jcr.PropertyType.TYPENAME_DATE;
 import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROPDEF_PROP_NODE_NAME;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -168,6 +171,37 @@ public abstract class PropertyIndexCommo
                 Arrays.asList("/test/a", "/test/b")));
     }
 
+    @Test
+    public void dateQuery() throws Exception {
+        Tree index = root.getTree("/");
+        Tree indexDefn = createTestIndexNode(index, indexOptions.getIndexType());
+        TestUtil.useV2(indexDefn);
+
+        Tree props = TestUtil.newRulePropTree(indexDefn, "nt:base");
+        Tree prop = TestUtil.enablePropertyIndex(props, "date", false);
+        prop.setProperty(FulltextIndexConstants.PROP_TYPE, TYPENAME_DATE);
+        root.commit();
+
+        Tree test = root.getTree("/").addChild("test");
+        Tree a = test.addChild("a");
+        Tree b = test.addChild("b");
+        Tree c = test.addChild("c");
+        Tree d = test.addChild("d");
+        a.setProperty("date", "2020-12-07T11:45:48.119Z", Type.DATE);
+        b.setProperty("date", "2020-12-07T17:23:33.933Z", Type.DATE);
+        c.setProperty("date", "2020-12-07T22:23:33.933Z", Type.DATE);
+        d.setProperty("date", "2020-12-07T10:23:33.933-09:00", Type.DATE);
+        root.commit();
+
+        assertEventually(() -> assertQuery("select [jcr:path] from [nt:base] where date > CAST('2020-12-06T12:32:35.886Z' AS DATE)",
+                Arrays.asList("/test/a", "/test/b", "/test/c", "/test/d")));
+        assertEventually(() -> assertQuery("select [jcr:path] from [nt:base] where date > CAST('2020-12-07T12:32:35.886Z' AS DATE) " +
+                        "and date < CAST('2020-12-07T20:32:35.886Z' AS DATE)",
+                Arrays.asList("/test/b", "/test/d")));
+        assertEventually(() -> assertQuery("select [jcr:path] from [nt:base] where date < CAST('2020-12-07T11:23:33.933-09:00' AS DATE)",
+                Arrays.asList("/test/a", "/test/b", "/test/d")));
+    }
+
     private String explain(String query) {
         String explain = "explain " + query;
         return executeQuery(explain, "JCR-SQL2").get(0);