You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by al...@apache.org on 2012/06/20 16:15:44 UTC

svn commit: r1352121 - /jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java

Author: alexparvulescu
Date: Wed Jun 20 14:15:43 2012
New Revision: 1352121

URL: http://svn.apache.org/viewvc?rev=1352121&view=rev
Log:
JCR-3347 Searches on properties of type Decimal give unexpected results

Modified:
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java?rev=1352121&r1=1352120&r2=1352121&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/query/SimpleQueryTest.java Wed Jun 20 14:15:43 2012
@@ -20,6 +20,8 @@ import javax.jcr.Node;
 import javax.jcr.Value;
 import javax.jcr.query.Query;
 import javax.jcr.query.QueryResult;
+
+import java.math.BigDecimal;
 import java.util.Calendar;
 
 /**
@@ -138,6 +140,38 @@ public class SimpleQueryTest extends Abs
         checkResult(result, 3);
     }
 
+    public void testBigDecimalField() throws Exception {
+        Node n1 = testRootNode.addNode("node1");
+        n1.setProperty(
+                "value",
+                superuser.getValueFactory().createValue(
+                        new BigDecimal(1.9928375d)));
+        Node n2 = testRootNode.addNode("node2");
+        n2.setProperty("value",
+                superuser.getValueFactory().createValue(new BigDecimal(0.0d)));
+        Node n3 = testRootNode.addNode("node3");
+        n3.setProperty(
+                "value",
+                superuser.getValueFactory().createValue(
+                        new BigDecimal(-1.42982475d)));
+        testRootNode.getSession().save();
+
+        String baseSql2 = "SELECT * FROM [nt:base] WHERE ISCHILDNODE(["
+                + testRoot + "]) AND value";
+        checkResult(qm.createQuery(baseSql2 + " > 0.1", Query.JCR_SQL2)
+                .execute(), new Node[] { n1 });
+        checkResult(
+                qm.createQuery(baseSql2 + " = CAST('0' AS DECIMAL)",
+                        Query.JCR_SQL2).execute(), new Node[] { n2 });
+        checkResult(
+                qm.createQuery(baseSql2 + " = CAST(0 AS DECIMAL)",
+                        Query.JCR_SQL2).execute(), new Node[] { n2 });
+        checkResult(qm.createQuery(baseSql2 + " > -0.1", Query.JCR_SQL2)
+                .execute(), new Node[] { n1, n2 });
+        checkResult(qm.createQuery(baseSql2 + " > -1.5", Query.JCR_SQL2)
+                .execute(), new Node[] { n1, n2, n3 });
+    }
+
     public void testLongField() throws Exception {
         Node n = testRootNode.addNode("node1");
         n.setProperty("value", new Value[]{superuser.getValueFactory().createValue(1)});